in aws-cloudformation-resourceversion/src/main/java/software/amazon/cloudformation/resourceversion/CreateHandler.java [17:50]
protected ProgressEvent<ResourceModel, CallbackContext> handleRequest(
final AmazonWebServicesClientProxy proxy,
final ResourceHandlerRequest<ResourceModel> request,
final CallbackContext callbackContext,
final ProxyClient<CloudFormationClient> proxyClient,
final Logger logger) {
ResourceModel resourceModel = request.getDesiredResourceState();
return ProgressEvent.progress(resourceModel, callbackContext)
.then(progress ->
proxy.initiate("AWS-CloudFormation-ResourceVersion::Create", proxyClient, resourceModel, callbackContext)
.translateToServiceRequest(Translator::translateToCreateRequest)
.makeServiceCall((awsRequest, sdkProxyClient) -> sdkProxyClient.injectCredentialsAndInvokeV2(awsRequest, sdkProxyClient.client()::registerType))
.done((registerTypeRequest, registerTypeResponse, sdkProxyClient, model, cc) -> {
logger.log(String.format("The resource registered successfully. The registrationToken for the Type [%s] is %s", ResourceModel.TYPE_NAME, registerTypeResponse.registrationToken()));
cc.setRegistrationToken(registerTypeResponse.registrationToken());
DescribeTypeRegistrationResponse describeTypeRegistrationResponse =
proxy.injectCredentialsAndInvokeV2(Translator
.translateToDescribeTypeRegistration(cc.getRegistrationToken()),
proxyClient.client()::describeTypeRegistration);
if (describeTypeRegistrationResponse == null) {
logger.log(String.format("Failed to describe registration status, invalid response, resource=%s arn=%s",
model.getTypeName(), model.getArn()));
throw new CfnInternalFailureException();
}
logger.log(String.format("Fetching the TypeVersionArn [%s] from the DescribeTypeRegistrationResponse [%s]", describeTypeRegistrationResponse.typeVersionArn(), describeTypeRegistrationResponse));
model.setArn(describeTypeRegistrationResponse.typeVersionArn());
return ProgressEvent.progress(model, cc);
}
)
)
.then(progress -> stabilizeOnCreate(progress, proxy, proxyClient))
.then(progress -> new ReadHandler().handleRequest(proxy, request, progress.getCallbackContext(), proxyClient, logger));
}