Coverage for /pythoncovmergedfiles/medio/medio/usr/local/lib/python3.8/site-packages/c7n_gcp/resources/appengine.py: 87%
114 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
4import re
6from c7n_gcp.provider import resources
7from c7n_gcp.query import QueryResourceManager, TypeInfo, ChildResourceManager, ChildTypeInfo
8from c7n.utils import local_session
11@resources.register('app-engine')
12class AppEngineApp(QueryResourceManager):
13 """GCP resource: https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1/apps
14 """
15 class resource_type(TypeInfo):
16 service = 'appengine'
17 version = 'v1'
18 component = 'apps'
19 enum_spec = ('get', '[@]', None)
20 scope = None
21 id = 'id'
22 name = 'name'
23 default_report_fields = [
24 'id', 'locationId', 'servingStatus', 'authDomain', 'defaultHostname']
25 asset_type = "appengine.googleapis.com/Application"
26 permissions = ('appengine.applications.get',)
27 metric_key = 'resource.labels.module_id'
28 urn_component = "app"
29 urn_region_key = "locationId"
31 @staticmethod
32 def get(client, resource_info):
33 return client.execute_query(
34 'get', {'appsId': re.match('apps/(.*)',
35 resource_info['resourceName']).group(1)})
37 def get_resource_query(self):
38 return {'appsId': local_session(self.session_factory).get_default_project()}
41class AppEngineChildTypeInfo(ChildTypeInfo):
42 service = 'appengine'
43 version = 'v1'
44 scope = None
45 parent_spec = {
46 'resource': 'app-engine',
47 'child_enum_params': {
48 ('id', 'appsId')
49 }
50 }
51 permissions = ('appengine.applications.get',)
53 @classmethod
54 def _get_location(cls, resource):
55 "Get the region from the parent."
56 return cls.get_parent(resource)["locationId"]
59@resources.register('app-engine-certificate')
60class AppEngineCertificate(ChildResourceManager):
61 """GCP resource:
62 https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1/apps.authorizedCertificates
63 """
64 def _get_parent_resource_info(self, child_instance):
65 return {'resourceName': re.match(
66 '(apps/.*?)/authorizedCertificates/.*', child_instance['name']).group(1)}
68 class resource_type(AppEngineChildTypeInfo):
69 component = 'apps.authorizedCertificates'
70 enum_spec = ('list', 'certificates[]', None)
71 name = 'displayName'
72 id = 'id'
73 default_report_fields = ['displayName', 'expireTime']
74 urn_component = "certificate"
76 @staticmethod
77 def get(client, resource_info):
78 apps_id, cert_id = re.match('apps/(.*?)/authorizedCertificates/(.*)',
79 resource_info['resourceName']).groups()
80 return client.execute_query('get', {'appsId': apps_id,
81 'authorizedCertificatesId': cert_id})
84@resources.register('app-engine-domain')
85class AppEngineDomain(ChildResourceManager):
86 """GCP resource:
87 https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1/apps.authorizedDomains/list#AuthorizedDomain
88 """
89 class resource_type(AppEngineChildTypeInfo):
90 component = 'apps.authorizedDomains'
91 enum_spec = ('list', 'domains[]', None)
92 id = 'id'
93 name = "name"
94 default_report_fields = [id, name]
95 urn_component = "domain"
98@resources.register('app-engine-domain-mapping')
99class AppEngineDomainMapping(ChildResourceManager):
100 """GCP resource:
101 https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1/apps.domainMappings
102 """
103 def _get_parent_resource_info(self, child_instance):
104 return {'resourceName': re.match(
105 '(apps/.*?)/domainMappings/.*', child_instance['name']).group(1)}
107 class resource_type(AppEngineChildTypeInfo):
108 component = 'apps.domainMappings'
109 enum_spec = ('list', 'domainMappings[]', None)
110 name = "name"
111 id = 'id'
112 default_report_fields = [id, name]
113 urn_component = "domain-mapping"
115 @staticmethod
116 def get(client, resource_info):
117 apps_id, mapping_id = re.match('apps/(.*?)/domainMappings/(.*)',
118 resource_info['resourceName']).groups()
119 return client.execute_query('get', {'appsId': apps_id,
120 'domainMappingsId': mapping_id})
123@resources.register('app-engine-firewall-ingress-rule')
124class AppEngineFirewallIngressRule(ChildResourceManager):
125 """GCP resource:
126 https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1/apps.firewall.ingressRules
127 """
128 def _get_parent_resource_info(self, child_instance):
129 return {'resourceName': 'apps/%s' %
130 local_session(self.session_factory).get_default_project()}
132 class resource_type(AppEngineChildTypeInfo):
133 component = 'apps.firewall.ingressRules'
134 enum_spec = ('list', 'ingressRules[]', None)
135 name = id = 'priority'
136 default_report_fields = ['priority', 'action', 'sourceRange', 'description']
137 urn_component = "firewall-ingress-rule"
139 @staticmethod
140 def get(client, resource_info):
141 apps_id, ingress_rules_id = re.match('apps/(.*?)/firewall/ingressRules/(.*)',
142 resource_info['resourceName']).groups()
143 return client.execute_query(
144 'get', {'appsId': apps_id,
145 'ingressRulesId': ingress_rules_id})
149@resources.register('app-engine-service')
150class AppEngineService(ChildResourceManager):
151 """GCP resource:
152 https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1/apps.services
153 """
154 def _get_parent_resource_info(self, child_instance):
155 return {'resourceName': re.match(
156 '(apps/.*?)/services/.*', child_instance['name']).group(1)}
158 class resource_type(AppEngineChildTypeInfo):
159 component = 'apps.services'
160 enum_spec = ('list', 'services[]', None)
161 name = 'name'
162 id = 'id'
163 default_report_fields = ['name', 'networkSettings']
164 urn_component = "service"
165 asset_type = "appengine.googleapis.com/Service"
167 @staticmethod
168 def get(client, resource_info):
169 apps_id, service_id = re.match('apps/(.*?)/services/(.*)',
170 resource_info['resourceName']).groups()
171 return client.execute_query('get', {'appsId': apps_id,
172 'servicesId': service_id})
175@resources.register('app-engine-service-version')
176class AppEngineServiceVersion(ChildResourceManager):
177 """GCP Resource
178 https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1/apps.services.versions
179 """
181 class resource_type(AppEngineChildTypeInfo):
182 component = 'apps.services.versions'
183 name = 'name'
184 id = 'id'
185 enum_spec = ('list', 'versions[]', None)
186 default_report_fields = ['name', 'instanceClass', 'runtime', 'runtimeChannel', 'vm']
187 urn_component = "versions"
188 asset_type = "appengine.googleapis.com/Version"
189 parent_spec = {
190 'resource': 'app-engine-service',
191 'child_enum_params': [
192 ('id', 'servicesId'),
193 ('name', 'appsId', 'regex', r'/(.*?)/')
194 ]
195 }