in aws-panorama-applicationinstance/src/main/java/software/amazon/panorama/applicationinstance/DeleteHandler.java [80:117]
private RemoveApplicationInstanceResponse deleteApplicationInstance(
final RemoveApplicationInstanceRequest removeApplicationInstanceRequest,
final ProxyClient<PanoramaClient> proxyClient
) {
RemoveApplicationInstanceResponse removeApplicationInstanceResponse;
try {
removeApplicationInstanceResponse = proxyClient.injectCredentialsAndInvokeV2(
removeApplicationInstanceRequest, proxyClient.client()::removeApplicationInstance);
}
catch (final PanoramaException e){
if (e instanceof ConflictException) {
// removing an application instance in "Removal_Success" status will throw ConflictException, we need extra handling here
DescribeApplicationInstanceRequest describeApplicationInstanceRequest = DescribeApplicationInstanceRequest.builder()
.applicationInstanceId(removeApplicationInstanceRequest.applicationInstanceId())
.build();
DescribeApplicationInstanceResponse describeApplicationInstanceResponse = proxyClient.injectCredentialsAndInvokeV2(describeApplicationInstanceRequest, proxyClient.client()::describeApplicationInstance);
ApplicationInstanceStatus applicationInstanceStatus = describeApplicationInstanceResponse.status();
if (applicationInstanceStatus.equals(ApplicationInstanceStatus.REMOVAL_SUCCEEDED)) {
logger.info("ApplicationInstanceStatus.REMOVAL_SUCCEEDED! throw CfnNotFoundException");
throw new CfnNotFoundException(ResourceModel.TYPE_NAME, removeApplicationInstanceRequest.applicationInstanceId(), e);
}
}
logger.error(String.format("Exception happened when removing ApplicationInstance. ApplicationInstanceId: %s",
removeApplicationInstanceRequest.applicationInstanceId()));
throw PanoramaExceptionTranslator.translateForAPIException(e,
"RemoveApplicationInstance",
ResourceModel.TYPE_NAME,
removeApplicationInstanceRequest.applicationInstanceId(),
removeApplicationInstanceRequest.toString());
} catch (final AwsServiceException e) {
logger.error(String.format("Exception happened when removing ApplicationInstance. ApplicationInstanceId: %s",
removeApplicationInstanceRequest.applicationInstanceId()));
throw new CfnGeneralServiceException("RemoveApplicationInstance", e);
}
logger.info(String.format("%s successfully removed with ApplicationInstanceId: %s.", ResourceModel.TYPE_NAME, removeApplicationInstanceRequest.applicationInstanceId()));
return removeApplicationInstanceResponse;
}