def _stop_apps_under_domain()

in migration/bring-your-own-role/byor.py [0:0]


def _stop_apps_under_domain(sagemaker_client, sagemaker_domain_id, execute_flag):
    paginator = sagemaker_client.get_paginator('list_apps')
    for page in paginator.paginate(DomainIdEquals=sagemaker_domain_id):
        for app in page['Apps']:
            print(f"Found app {app['AppName']} under Project's SageMaker Domain id: {sagemaker_domain_id}\n")
            if execute_flag:
                try:
                    if app.get('UserProfileName'):
                        sagemaker_client.delete_app(
                            DomainId=sagemaker_domain_id,
                            AppType=app['AppType'],
                            AppName=app['AppName'],
                            UserProfileName=app['UserProfileName']
                        )
                        _wait_for_sagemaker_app_deletion(sagemaker_client, sagemaker_domain_id, app['AppName'], app['AppType'], app['UserProfileName'], None)
                    elif app.get('SpaceName'):
                        sagemaker_client.delete_app(
                            DomainId=sagemaker_domain_id,
                            AppType=app['AppType'],
                            AppName=app['AppName'],
                            SpaceName=app['SpaceName']
                        )
                        _wait_for_sagemaker_app_deletion(sagemaker_client, sagemaker_domain_id, app['AppName'], app['AppType'], None, app['SpaceName'])
                    print(f"Stopped app {app['AppName']} successfully\n")
                except ClientError as e:
                    if e.response['Error']['Code'] == 'ValidationException':
                        print(f"App {app['AppName']} already deleted, skipping...\n")
                    else:
                        raise e
            else:
                print(f"Skipping stop app {app['AppName']}, set --execute flag to True to do the actual update")