Coverage for /pythoncovmergedfiles/medio/medio/usr/local/lib/python3.8/site-packages/c7n_gcp/resources/dataproc.py: 83%
30 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
4from c7n_gcp.filters import IamPolicyFilter
5from c7n_gcp.filters.iampolicy import IamPolicyValueFilter
6from c7n_gcp.query import ChildResourceManager, ChildTypeInfo
7from c7n_gcp.provider import resources
10@resources.register('dataproc-clusters')
11class DataprocClusters(ChildResourceManager):
13 class resource_type(ChildTypeInfo):
14 service = 'dataproc'
15 version = 'v1'
16 component = 'projects.regions.clusters'
17 enum_spec = ('list', 'clusters[]', None)
18 scope_key = 'projectId'
19 name = id = 'clusterName'
20 parent_spec = {
21 'resource': 'region',
22 'child_enum_params': {
23 ('name', 'region')},
24 'use_child_query': True,
25 }
26 default_report_fields = ['clusterName', 'status.state', 'status.stateStartTime']
27 asset_type = "dataproc.googleapis.com/Dataproc"
28 urn_component = "dataproc"
29 urn_id_segments = (-1,)
31 @classmethod
32 def _get_location(cls, resource):
33 return resource['labels']['goog-dataproc-location']
36@DataprocClusters.filter_registry.register('iam-policy')
37class DataprocClustersIamPolicyFilter(IamPolicyFilter):
38 """
39 Overrides the base implementation to process dataproc cluster resources correctly.
40 """
41 permissions = ('dataproc.clusters.getIamPolicy',)
43 def _verb_arguments(self, resource):
44 return {'resource': 'projects/{}/regions/{}/clusters/{}'.format(
45 resource['projectId'],
46 resource['c7n:region']['name'],
47 resource['clusterName'])}
49 def process_resources(self, resources):
50 value_filter = IamPolicyValueFilter(self.data['doc'], self.manager)
51 value_filter._verb_arguments = self._verb_arguments
52 return value_filter.process(resources)