private ProgressEvent preDetachDisk()

in aws-lightsail-instance/src/main/java/software/amazon/lightsail/instance/helpers/handler/DiskHandler.java [157:182]


    private ProgressEvent<ResourceModel, CallbackContext> preDetachDisk(
            final ProgressEvent<ResourceModel, CallbackContext> progress) {
        val instance = new Instance(resourceModel, logger, proxyClient, resourceModelRequest);
        val disk = new Disk(resourceModel, logger, proxyClient, resourceModelRequest);
        logger.log("Executing AWS-Lightsail-Instance::Update::PreDiskDetach...");
        return proxy
                .initiate("AWS-Lightsail-Instance::Update::PreDiskDetach", proxyClient, progress.getResourceModel(),
                        progress.getCallbackContext())
                .translateToServiceRequest(Translator::translateToSdkStopInstanceRequest).backoffDelay(BACKOFF_DELAY)
                .makeServiceCall((awsRequest, client) -> {
                    val needDetach = disk.isDetachDiskNeeded();
                    if (needDetach) {
                        logger.log("Disks need detachment. Stopping Instance...");
                        return instance.stop(awsRequest);
                    } else {
                        logger.log("No disk detachment needed.");
                    }
                    return StopInstanceResponse.builder().build();
                })
                .stabilize((awsRequest, awsResponse, client, model,
                        context) -> this.isStabilized(this.callbackContext, PRE_CHECK_UPDATE_DETACH)
                                || instance.isStabilizedUpdate())
                .handleError((awsRequest, exception, client, model, context) -> handleError(exception, model,
                        callbackContext, ImmutableList.of(), logger, this.getClass().getSimpleName()))
                .progress();
    }