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