Coverage for /pythoncovmergedfiles/medio/medio/usr/local/lib/python3.8/site-packages/c7n/resources/ml.py: 71%
35 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 botocore.exceptions import ClientError
5from c7n.actions import BaseAction
6from c7n.manager import resources
7from c7n.query import QueryResourceManager, TypeInfo
8from c7n.utils import local_session, type_schema
11@resources.register('ml-model')
12class MLModel(QueryResourceManager):
14 class resource_type(TypeInfo):
15 service = 'machinelearning'
16 enum_spec = ('describe_ml_models', 'Results', None)
17 id = 'MLModelId'
18 name = 'Name'
19 date = 'CreatedAt'
20 # need to specify request-mode dimension as well
21 # dimension = 'MLModelId'
22 arn_type = "mlmodel"
23 permissions_enum = ('machinelearning:DescribeMLModels',)
25 def resources(self, query=None, augment=True):
26 try:
27 return super().resources(query, augment)
28 except ClientError as e:
29 # ml not available to new accounts, use sagemaker.
30 if 'no longer available' in str(e):
31 return []
32 raise
35@MLModel.action_registry.register('delete')
36class DeleteMLModel(BaseAction):
37 """Action to delete machine learning model
39 It is recommended to use a filter to avoid unwanted deletion of models
41 :example:
43 .. code-block:: yaml
45 policies:
46 - name: ml-model-delete
47 resource: ml-model
48 actions:
49 - delete
50 """
52 schema = type_schema('delete')
53 permissions = ("machinelearning:DeleteMLModel",)
55 def process(self, models):
56 with self.executor_factory(max_workers=2) as w:
57 list(w.map(self.process_model, models))
59 def process_model(self, model):
60 client = local_session(
61 self.manager.session_factory).client('machinelearning')
62 try:
63 client.delete_ml_model(MLModelId=model['MLModelId'])
64 except ClientError as e:
65 self.log.exception(
66 "Exception deleting ML model:\n %s" % e)