in aws-emrcontainers-virtualcluster/src/main/java/software/amazon/emrcontainers/virtualcluster/ResourceStabilizer.java [20:46]
public ProgressEvent<ResourceModel, CallbackContext> stabilizeResource(CallbackContext callbackContext) {
DescribeVirtualClusterRequest describeVirtualClusterRequest =
new DescribeVirtualClusterRequest();
describeVirtualClusterRequest.setId(model.getId());
try {
String state = proxy.injectCredentialsAndInvoke(
describeVirtualClusterRequest, emrContainersClient::describeVirtualCluster)
.getVirtualCluster().getState();
if (VirtualClusterState.TERMINATED.toString().equals(state)) {
return ProgressEvent.defaultSuccessHandler(null);
} else if(VirtualClusterState.TERMINATING.toString().equals(state)) {
return ProgressEvent.defaultInProgressHandler(callbackContext, Constants.CALLBACK_DELAY_SECONDS, model);
} else {
String errorMessage = String.format("Cluster %s failed to stabilize due to internal failure", model.getId());
if (VirtualClusterState.ARRESTED.toString().equals(state)) {
errorMessage = String.format("Cluster %s is in arrested state and failed to stabilize", model.getId());
}
return ProgressEvent.failed(model, callbackContext, HandlerErrorCode.NotStabilized, errorMessage);
}
} catch (InternalServerException e) {
throw new CfnGeneralServiceException("deleteVirtualCluster", e);
} catch (AmazonEMRContainersException e) {
throw new CfnInvalidRequestException(e.getMessage(), e);
}
}