Coverage for /pythoncovmergedfiles/medio/medio/usr/local/lib/python3.8/site-packages/c7n_gcp/resources/deploymentmanager.py: 69%
36 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
3import re
5from c7n_gcp.actions import MethodAction
6from c7n_gcp.provider import resources
7from c7n_gcp.query import QueryResourceManager, TypeInfo
9from c7n.utils import type_schema
12@resources.register('dm-deployment')
13class DMDeployment(QueryResourceManager):
14 """GCP resource: https://cloud.google.com/deployment-manager/docs/reference/latest/deployments
15 """
16 class resource_type(TypeInfo):
17 service = 'deploymentmanager'
18 version = 'v2'
19 component = 'deployments'
20 enum_spec = ('list', 'deployments[]', None)
21 name = id = 'name'
23 default_report_fields = ['name', 'description', 'insertTime', 'updateTime']
24 urn_component = "deployment"
26 @staticmethod
27 def get(client, resource_info):
28 return client.execute_command(
29 'get', {'project': resource_info['project_id'],
30 'deployment': resource_info['name']})
32 def augment(self, resources):
33 # normalize labels from array to mapping like other gcp resources.
34 for r in resources:
35 if isinstance(r.get('labels'), list):
36 r['labels'] = {l['key']: l['value'] for l in r['labels']}
37 return resources
39 def get_resource(self, resource_info):
40 resource = self.resource_type.get(self.get_client(), resource_info)
41 if resource:
42 self.augment((resource,))
43 return resource
46@DMDeployment.action_registry.register('delete')
47class DeleteInstanceGroupManager(MethodAction):
48 """Deletes a deployment
50 :Example:
52 .. code-block:: yaml
54 policies:
55 - name: delete-deployments
56 description: Delete all deployments
57 resource: gcp.dm-deployment
58 filters:
59 - type: value
60 key: name
61 op: eq
62 value: test-deployment
63 actions:
64 - delete
66 https://cloud.google.com/deployment-manager/docs/reference/latest/deployments/delete
67 """
69 schema = type_schema('delete')
70 method_spec = {'op': 'delete'}
71 path_param_re = re.compile('.*?/projects/(.*?)/global/deployments/(.*)')
73 def get_resource_params(self, m, r):
74 project, name = self.path_param_re.match(r['selfLink']).groups()
75 return {'project': project, 'deployment': name}