public ProgressEvent handleRequest()

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