package com.amazonaws.resiliencehub.resiliencypolicy; import software.amazon.awssdk.services.resiliencehub.ResiliencehubClient; import software.amazon.cloudformation.proxy.AmazonWebServicesClientProxy; import software.amazon.cloudformation.proxy.Logger; import software.amazon.cloudformation.proxy.ProgressEvent; import software.amazon.cloudformation.proxy.ProxyClient; import software.amazon.cloudformation.proxy.ResourceHandlerRequest; public class ReadHandler extends BaseHandlerStd { private Logger logger; public ReadHandler() { super(); } public ReadHandler(final ApiCallsWrapper apiCallsWrapper) { super(apiCallsWrapper); } @Override protected ProgressEvent handleRequest( final AmazonWebServicesClientProxy proxy, final ResourceHandlerRequest request, final CallbackContext callbackContext, final ProxyClient proxyClient, final Logger logger) { this.logger = logger; return ProgressEvent.progress(request.getDesiredResourceState(), callbackContext) .then(progress -> readPolicy(proxy, proxyClient, progress.getCallbackContext(), progress.getResourceModel())) .then(progress -> ProgressEvent.defaultSuccessHandler(progress.getResourceModel())); } private ProgressEvent readPolicy( final AmazonWebServicesClientProxy proxy, final ProxyClient proxyClient, final CallbackContext callbackContext, final ResourceModel model) { return proxy.initiate("AWS-ResilienceHub-ResiliencyPolicy::read-policy", proxyClient, model, callbackContext) .translateToServiceRequest(Translator::translateToReadRequest) .makeServiceCall(apiCallsWrapper::describeResiliencyPolicy) .done(describeResiliencyPolicyResponse -> { final ResourceModel outputModel = Translator.translateFromReadResponse(describeResiliencyPolicyResponse); logger.log(String.format("Successfully read resiliency policy [%s] for resourceType %s. Continuing further..", outputModel.getPolicyName(), ResourceModel.TYPE_NAME)); return ProgressEvent.progress(outputModel, callbackContext); }); } }