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

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 

6 

7 

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 

27 

28 @staticmethod 

29 def get(client, event): 

30 return client.execute_query( 

31 'get', {'name': jmespath_search( 

32 'protoPayload.response.name', event 

33 )}) 

34 

35 

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" 

54 

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