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

1# Copyright The Cloud Custodian Authors. 

2# SPDX-License-Identifier: Apache-2.0 

3import re 

4 

5from c7n_gcp.actions import MethodAction 

6from c7n_gcp.provider import resources 

7from c7n_gcp.query import QueryResourceManager, TypeInfo 

8 

9from c7n.utils import type_schema 

10 

11 

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' 

22 

23 default_report_fields = ['name', 'description', 'insertTime', 'updateTime'] 

24 urn_component = "deployment" 

25 

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']}) 

31 

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 

38 

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 

44 

45 

46@DMDeployment.action_registry.register('delete') 

47class DeleteInstanceGroupManager(MethodAction): 

48 """Deletes a deployment 

49 

50 :Example: 

51 

52 .. code-block:: yaml 

53 

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 

65 

66 https://cloud.google.com/deployment-manager/docs/reference/latest/deployments/delete 

67 """ 

68 

69 schema = type_schema('delete') 

70 method_spec = {'op': 'delete'} 

71 path_param_re = re.compile('.*?/projects/(.*?)/global/deployments/(.*)') 

72 

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}