Coverage for /pythoncovmergedfiles/medio/medio/usr/local/lib/python3.8/site-packages/c7n_gcp/resources/cloudrun.py: 87%
61 statements
« prev ^ index » next coverage.py v7.3.2, created at 2023-12-08 06:51 +0000
« prev ^ index » next coverage.py v7.3.2, created at 2023-12-08 06:51 +0000
1# Copyright The Cloud Custodian Authors.
2# SPDX-License-Identifier: Apache-2.0
3from c7n_gcp.provider import resources
4from c7n_gcp.query import QueryResourceManager, TypeInfo
5from c7n_gcp.filters import IamPolicyFilter
6from c7n_gcp.filters.iampolicy import IamPolicyValueFilter
7from c7n.utils import local_session
9@resources.register("cloud-run-service")
10class CloudRunService(QueryResourceManager):
11 """GCP resource: https://cloud.google.com/run/docs/reference/rest/v1/namespaces.services"""
13 class resource_type(TypeInfo):
14 service = "run"
15 version = "v1"
16 component = "projects.locations.services"
17 enum_spec = ("list", "items[]", None)
18 scope = "project"
19 scope_key = "parent"
20 scope_template = "projects/{}/locations/-"
21 name = "metadata.name"
22 id = "metadata.selfLink"
23 default_report_fields = ["metadata.name", "metadata.creationTimestamp"]
24 asset_type = "run.googleapis.com/Service"
27@CloudRunService.filter_registry.register("iam-policy")
28class CloudRunServiceIamPolicyFilter(IamPolicyFilter):
29 """
30 Overrides the base implementation to process cloudrun resources correctly.
31 """
32 permissions = ("run.services.getIamPolicy",)
34 def _verb_arguments(self, resource):
35 session = local_session(self.manager.session_factory)
36 project = session.get_default_project()
37 location = resource["metadata"]["labels"]["cloud.googleapis.com/location"]
38 verb_arguments = {
39 "resource": f'projects/{project}/locations/{location}/services/' +
40 f'{resource["metadata"]["name"]}'
41 }
42 return verb_arguments
44 def process_resources(self, resources):
45 value_filter = IamPolicyValueFilter(self.data["doc"], self.manager)
46 value_filter._verb_arguments = self._verb_arguments
47 return value_filter.process(resources)
49@resources.register("cloud-run-job")
50class CloudRunJob(QueryResourceManager):
51 """GCP resource: https://cloud.google.com/run/docs/reference/rest/v2/projects.locations.jobs"""
53 class resource_type(TypeInfo):
54 service = "run"
55 version = "v1"
56 component = "namespaces.jobs"
57 enum_spec = ("list", "items[]", None)
58 scope = "project"
59 scope_key = "parent"
60 scope_template = "namespaces/{}"
61 name = "metadata.name"
62 id = "metadata.selfLink"
63 default_report_fields = ["metadata.name", "metadata.creationTimestamp"]
64 asset_type = "run.googleapis.com/Job"
67@resources.register("cloud-run-revision")
68class CloudRunRevision(QueryResourceManager):
69 """GCP resource: https://cloud.google.com/run/docs/reference/rest/v2/projects.locations.services.revisions"""
71 class resource_type(TypeInfo):
72 service = "run"
73 version = "v1"
74 component = "namespaces.revisions"
75 enum_spec = ("list", "items[]", None)
76 scope_key = "parent"
77 scope_template = "namespaces/{}"
78 name = "metadata.name"
79 id = "metadata.selfLink"
80 default_report_fields = ["metadata.name", "metadata.creationTimestamp"]
81 asset_type = "run.googleapis.com/Revision"
82 urn_component = "revision"
83 urn_id_segments = (-1,)