public ProgressEvent stabilizeResource()

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);
        }
    }