in migration/bring-your-own-role/byor.py [0:0]
def _wait_for_sagemaker_app_deletion(sagemaker,
domain_id,
app_name,
app_type,
user_profile_name=None,
space_name=None,
max_attempts=30,
delay_seconds=5):
"""
Wait for SageMaker App to be deleted
"""
for attempt in range(max_attempts):
try:
if user_profile_name:
response = sagemaker.describe_app(
DomainId=domain_id,
AppType=app_type,
AppName=app_name,
UserProfileName=user_profile_name
)
elif space_name:
response = sagemaker.describe_app(
DomainId=domain_id,
AppType=app_type,
AppName=app_name,
SpaceName=space_name
)
else:
raise ValueError("Either UserProfileName or SpaceName must be passed for DescribeApp operation.")
status = response.get('Status')
if status == 'Deleted':
print(f"Deleted SageMaker App `{app_name}` deleted successfully")
return
print(f"Deletion of SageMaker App `{app_name}` in progress. Current status: {status}. Attempt {attempt + 1}/{max_attempts}")
time.sleep(delay_seconds)
except ClientError as e:
if e.response['Error']['Code'] == 'ResourceNotFoundException':
print(f"Deleted SageMaker App `{app_name}` deleted successfully")
return
raise e
raise TimeoutError(f"Deletion of SageMaker App `{app_name}` did not complete after {max_attempts} attempts")