Coverage for /pythoncovmergedfiles/medio/medio/usr/local/lib/python3.8/site-packages/c7n_gcp/resources/mlengine.py: 95%
38 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.utils import jmespath_search
8@resources.register('ml-model')
9class MLModel(QueryResourceManager):
10 """GCP Resource
11 https://cloud.google.com/ai-platform/prediction/docs/reference/rest/v1/projects.models
12 """
13 class resource_type(TypeInfo):
14 service = 'ml'
15 version = 'v1'
16 component = 'projects.models'
17 enum_spec = ('list', 'models[]', None)
18 scope = 'project'
19 scope_key = 'parent'
20 scope_template = 'projects/{}'
21 name = id = 'name'
22 default_report_fields = [
23 id, name, "description", "onlinePredictionLogging"]
24 get_requires_event = True
25 urn_component = "model"
26 urn_id_segments = (-1,) # Just use the last segment of the id in the URN
28 @staticmethod
29 def get(client, event):
30 return client.execute_query(
31 'get', {'name': jmespath_search(
32 'protoPayload.response.name', event
33 )})
36@resources.register('ml-job')
37class MLJob(QueryResourceManager):
38 """GCP Resource
39 https://cloud.google.com/ai-platform/prediction/docs/reference/rest/v1/projects.jobs
40 """
41 class resource_type(TypeInfo):
42 service = 'ml'
43 version = 'v1'
44 component = 'projects.jobs'
45 enum_spec = ('list', 'jobs[]', None)
46 scope = 'project'
47 scope_key = 'parent'
48 scope_template = 'projects/{}'
49 name = id = 'jobId'
50 default_report_fields = [
51 "jobId", "state", "createTime", "endTime"]
52 get_requires_event = True
53 urn_component = "job"
55 @staticmethod
56 def get(client, event):
57 return client.execute_query(
58 'get', {'name': 'projects/{}/jobs/{}'.format(
59 jmespath_search('resource.labels.project_id', event),
60 jmespath_search('protoPayload.response.jobId', event))})