in aws-ecr-replicationconfiguration/src/main/java/software/amazon/ecr/replicationconfiguration/CreateHandler.java [20:63]
public ProgressEvent<ResourceModel, CallbackContext> handleRequest(
final AmazonWebServicesClientProxy proxy,
final ResourceHandlerRequest<ResourceModel> request,
final CallbackContext callbackContext,
final ProxyClient<EcrClient> proxyClient,
final Logger logger) {
final ResourceModel model = request.getDesiredResourceState();
final EcrClient client = proxyClient.client();
try {
// Set primary id for the requested resource.
model.setRegistryId(request.getAwsAccountId());
// Ensure resource does NOT exist on the ECR Registry.
if (hasExistingResource(describeRegistryResource(proxy, client))) {
throw new ResourceAlreadyExistsException(ResourceModel.TYPE_NAME, model.getRegistryId());
}
final PutReplicationConfigurationResponse response = proxy.injectCredentialsAndInvokeV2(
Translator.putReplicationConfiguration(model),
client::putReplicationConfiguration);
logger.log(String.format("%s [%s] Created Successfully", ResourceModel.TYPE_NAME, response.replicationConfiguration()));
} catch (InvalidParameterException | ValidationException e) {
return ProgressEvent.<ResourceModel, CallbackContext>builder()
.resourceModel(model)
.status(OperationStatus.FAILED)
.errorCode(HandlerErrorCode.InvalidRequest)
.message(e.getMessage())
.build();
} catch (AwsServiceException e) {
return ProgressEvent.<ResourceModel, CallbackContext>builder()
.resourceModel(model)
.status(OperationStatus.FAILED)
.errorCode(HandlerErrorCode.GeneralServiceException)
.message(e.getMessage())
.build();
}
return ProgressEvent.<ResourceModel, CallbackContext>builder()
.resourceModel(model)
.status(OperationStatus.SUCCESS)
.build();
}