def delete_dataset()

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.')