Skip to content

Commit c552c04

Browse files
author
Chuyang Deng
committed
Update README docstring and predictor delete model error handling.
1 parent c89b8f5 commit c552c04

File tree

3 files changed

+19
-4
lines changed

3 files changed

+19
-4
lines changed

README.rst

+2-2
Original file line numberDiff line numberDiff line change
@@ -192,7 +192,7 @@ Here is an end to end example of how to use a SageMaker Estimator:
192192
# Tears down the SageMaker endpoint and endpoint configuration
193193
mxnet_predictor.delete_endpoint()
194194
195-
# Deletes SageMaker model
195+
# Deletes the SageMaker model
196196
mxnet_predictor.delete_model()
197197
198198
The example above will eventually delete both the SageMaker endpoint and endpoint configuration through `delete_endpoint()`. If you want to keep your SageMaker endpoint configuration, use the value False for the `delete_endpoint_config` parameter, as shown below.
@@ -232,7 +232,7 @@ For more `information <https://boto3.amazonaws.com/v1/documentation/api/latest/r
232232
# Tears down the SageMaker endpoint and endpoint configuration
233233
mxnet_predictor.delete_endpoint()
234234
235-
# Deletes SageMaker model
235+
# Deletes the SageMaker model
236236
mxnet_predictor.delete_model()
237237
238238
Training Metrics

src/sagemaker/predictor.py

+5-2
Original file line numberDiff line numberDiff line change
@@ -132,8 +132,11 @@ def delete_model(self):
132132
"""Deletes the Amazon SageMaker models backing this predictor.
133133
134134
"""
135-
for model_name in self._model_names:
136-
self.sagemaker_session.delete_model(model_name)
135+
try:
136+
for model_name in self._model_names:
137+
self.sagemaker_session.delete_model(model_name)
138+
except Exception:
139+
raise Exception('One or more models cannot be deleted, the deletion is incomplete.')
137140

138141
def _get_endpoint_config_name(self):
139142
endpoint_desc = self.sagemaker_session.sagemaker_client.describe_endpoint(EndpointName=self.endpoint)

tests/unit/test_predictor.py

+12
Original file line numberDiff line numberDiff line change
@@ -499,3 +499,15 @@ def test_delete_model():
499499
expected_call_args_list = [call('model-1'), call('model-2')]
500500
assert sagemaker_session.delete_model.call_count == expected_call_count
501501
assert sagemaker_session.delete_model.call_args_list == expected_call_args_list
502+
503+
504+
def test_delete_model_fail():
505+
sagemaker_session = empty_sagemaker_session()
506+
sagemaker_session.sagemaker_client.delete_model = Mock(side_effect='Could not find model.')
507+
expected_error_message = 'One or more models cannot be deleted, the deletion is incomplete.'
508+
509+
predictor = RealTimePredictor(ENDPOINT, sagemaker_session=sagemaker_session)
510+
511+
with pytest.raises(Exception) as exception:
512+
predictor.delete_model()
513+
assert str(exception.val) == expected_error_message

0 commit comments

Comments
 (0)