in aws-sagemaker-app/src/main/java/software/amazon/sagemaker/app/DeleteHandler.java [58:93]
private DeleteAppResponse deleteResource(
final DescribeAppRequest describeRequest,
final DeleteAppRequest deleteRequest,
final ProxyClient<SageMakerClient> proxyClient) {
AppStatus appStatus = null;
try {
appStatus = proxyClient.injectCredentialsAndInvokeV2(describeRequest, proxyClient.client()::describeApp).status();
} catch (final AwsServiceException e) {
Translator.throwCfnException(Action.READ.toString(), ResourceModel.TYPE_NAME,
deleteRequest.appName(), e);
}
// Deleted Apps stay present for 24 hours with a Deleted status.
// Deleted resources are expected to throw CfnNotFoundException.
if (appStatus.equals(AppStatus.DELETED) || appStatus.equals(AppStatus.FAILED)) {
throw new CfnNotFoundException(ResourceModel.TYPE_NAME, deleteRequest.appName());
}
DeleteAppResponse response = null;
try {
response = proxyClient.injectCredentialsAndInvokeV2(deleteRequest, proxyClient.client()::deleteApp);
} catch (final ResourceInUseException riue) {
// ResourceInUseException is handled differently for deletes
final String primaryIdentifier = String.format("%s|%s|%s|%s",
deleteRequest.appName(),
deleteRequest.appType(),
deleteRequest.domainId(),
deleteRequest.userProfileName());
throw new CfnResourceConflictException(ResourceModel.TYPE_NAME, primaryIdentifier, riue.getMessage(), riue);
} catch (final AwsServiceException e) {
Translator.throwCfnException(Action.DELETE.toString(), ResourceModel.TYPE_NAME,
deleteRequest.appName(), e);
}
return response;
}