in aws-ecr-repository/src/main/java/software/amazon/ecr/repository/CreateHandler.java [22:81]
protected 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();
// Auto-generate RepositoryName if not supplied
if (StringUtils.isNullOrEmpty(model.getRepositoryName())) {
model.setRepositoryName(
IdentifierUtils.generateResourceIdentifier(
request.getStackId(),
request.getLogicalResourceIdentifier(),
request.getClientRequestToken(),
MAX_REPO_NAME_LENGTH
).toLowerCase()
);
}
try {
final CreateRepositoryResponse response = proxy.injectCredentialsAndInvokeV2(
Translator.createRepositoryRequest(
model,
request.getDesiredResourceTags()),
client::createRepository);
model.setArn(response.repository().repositoryArn());
model.setRepositoryUri(response.repository().repositoryUri());
logger.log(String.format("%s [%s] Created Successfully", ResourceModel.TYPE_NAME, model.getRepositoryName()));
} catch (RepositoryAlreadyExistsException e) {
throw new ResourceAlreadyExistsException(ResourceModel.TYPE_NAME, model.getRepositoryName());
} catch (KmsException e) {
return ProgressEvent.<ResourceModel, CallbackContext>builder()
.resourceModel(model)
.status(OperationStatus.FAILED)
.errorCode(HandlerErrorCode.GeneralServiceException)
.message(e.getMessage())
.build();
}
try {
if (model.getLifecyclePolicy() != null) proxy.injectCredentialsAndInvokeV2(Translator.putLifecyclePolicyRequest(model), client::putLifecyclePolicy);
if (model.getRepositoryPolicyText() != null) proxy.injectCredentialsAndInvokeV2(Translator.setRepositoryPolicyRequest(model), client::setRepositoryPolicy);
} 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();
}