package software.amazon.vpclattice.accesslogsubscription; import software.amazon.awssdk.services.vpclattice.VpcLatticeClient; 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; import software.amazon.vpclattice.common.ExceptionHandler; import javax.annotation.Nonnull; public class CreateHandler extends BaseHandlerStd { @Override protected ProgressEvent handleRequest( @Nonnull final AmazonWebServicesClientProxy proxy, @Nonnull final ResourceHandlerRequest request, @Nonnull final CallbackContext callbackContext, @Nonnull final ProxyClient proxyClient, @Nonnull final Logger logger) { return ProgressEvent.progress(request.getDesiredResourceState(), callbackContext) .then((progress) -> this.createAccessLogSubscription(progress, proxy, request, proxyClient)) .then((progress) -> new ReadHandler().handleRequest(proxy, request.toBuilder().desiredResourceState(progress.getResourceModel()).build(), null, logger)); } protected ProgressEvent createAccessLogSubscription( @Nonnull final ProgressEvent progress, @Nonnull final AmazonWebServicesClientProxy proxy, @Nonnull final ResourceHandlerRequest request, @Nonnull final ProxyClient proxyClient) { if (progress.getCallbackContext().hasCalledCreate) { return progress; } return proxy.initiate( "AWS::VpcLattice::AccessLogSubscription::CreateAccessLogSubscription", proxyClient, progress.getResourceModel(), progress.getCallbackContext() ) .translateToServiceRequest((_model) -> Translator.createCreateAccessLogSubscriptionRequest(request)) .makeServiceCall(((createAccessLogSubscriptionRequest, client) -> client.injectCredentialsAndInvokeV2(createAccessLogSubscriptionRequest, client.client()::createAccessLogSubscription))) .handleError(ExceptionHandler::handleError) .done((createAccessLogSubscriptionResponse) -> { final var model = progress.getResourceModel(); model.setArn(createAccessLogSubscriptionResponse.arn()); progress.getCallbackContext().setHasCalledCreate(true); return ProgressEvent.defaultInProgressHandler(progress.getCallbackContext(), 2, model); }); } }