in src/lookoutequipment/dataset.py [0:0]
def delete_dataset(dataset_name, delete_children=False, verbose=False):
"""
This method hierarchically delete a dataset and all the associated
children: models and schedulers.
Parameters:
dataset_name (string):
Name of the dataset to delete
delete_children (boolean):
If True, will delete all the children resource (Default: False)
verbose (boolean):
If True, will print messages about the resource deleted
(Default: False)
"""
client = boto3.client('lookoutequipment')
response = client.list_datasets(DatasetNameBeginsWith=dataset_name)
num_datasets = len(response['DatasetSummaries'])
if num_datasets > 0:
response = client.list_models(DatasetNameBeginsWith=dataset_name)
num_models = len(response['ModelSummaries'])
print(f'{num_models} model(s) found for this dataset')
if (num_models > 0) and (delete_children == True):
for model_summaries in response['ModelSummaries']:
model_name = model_summaries['ModelName']
if verbose:
print(f'- Model {model_name}: DELETING')
response = client.list_inference_schedulers(ModelName=model_name)
num_schedulers = len(response['InferenceSchedulerSummaries'])
if num_schedulers > 0:
# Stopping and deleting all the schedulers:
for scheduler_summary in response['InferenceSchedulerSummaries']:
scheduler_name = scheduler_summary['InferenceSchedulerName']
scheduler_arn = scheduler_summary['InferenceSchedulerArn']
if verbose:
print(f'- Scheduler {scheduler_name}: DELETING')
client.stop_inference_scheduler(InferenceSchedulerName=scheduler_name)
status = ''
while status != 'STOPPED':
response = client.describe_inference_scheduler(InferenceSchedulerName=scheduler_name)
status = response['Status']
time.sleep(10)
client.delete_inference_scheduler(InferenceSchedulerName=scheduler_name)
# Waiting loop until all the schedulers are gone:
while num_schedulers > 0:
response = client.list_inference_schedulers(ModelName=model_name)
num_schedulers = len(response['InferenceSchedulerSummaries'])
time.sleep(10)
client.delete_model(ModelName=model_name)
elif (num_models > 0) and (delete_children == False) and (verbose):
print((
'Some models have been trained with this dataset. '
'You need to delete them before you can safely '
'delete this dataset'
))
# Waiting for all models to be deleted before moving forward with dataset deletion:
while num_models > 0:
response = client.list_models(DatasetNameBeginsWith=dataset_name)
num_models = len(response['ModelSummaries'])
time.sleep(10)
if verbose:
print(f'- Dataset: DELETING')
client.delete_dataset(DatasetName=dataset_name)
time.sleep(2)
if verbose:
print('Done')
else:
print(f'No dataset with this name ({dataset_name}) found.')