in aws-servicecatalog-serviceactionassociation/src/main/java/software/amazon/servicecatalog/serviceactionassociation/ActionAssociationController.java [107:147]
public UpdateAssociationStatus updateServiceActionAssociation(final ResourceModel previousModel, final ResourceModel desiredModel) {
try {
disassociateServiceAction(previousModel.getProductId(), previousModel.getProvisioningArtifactId(), previousModel.getServiceActionId());
} catch (ResourceNotFoundException e) {
logger.log(String.format(DISASSOCIATE_EXCEPTION, e.getMessage()));
} catch (SdkException e) {
logger.log(String.format(DISASSOCIATE_EXCEPTION, e.getMessage()));
return UpdateAssociationStatus
.builder()
.resourceModel(previousModel)
.errorMessage(e.getMessage())
.status(OperationStatus.FAILED)
.errorCode(HandlerErrorCode.NotStabilized)
.build();
}
try {
associateServiceAction(desiredModel.getProductId(), desiredModel.getProvisioningArtifactId(), desiredModel.getServiceActionId());
return UpdateAssociationStatus
.builder()
.resourceModel(desiredModel)
.status(OperationStatus.SUCCESS)
.build();
} catch (SdkException e) {
logger.log(String.format(ASSOCIATE_EXCEPTION, e.getMessage()));
HandlerErrorCode handlerErrorCode = HandlerErrorCode.NotStabilized;
if (e instanceof ResourceNotFoundException) {
handlerErrorCode = HandlerErrorCode.NotFound;
} else if (e instanceof DuplicateResourceException) {
handlerErrorCode = HandlerErrorCode.AlreadyExists;
} else if (e instanceof LimitExceededException) {
handlerErrorCode = HandlerErrorCode.ServiceLimitExceeded;
}
return UpdateAssociationStatus
.builder()
.resourceModel(ResourceModel.builder().build())
.errorMessage(e.getMessage())
.status(OperationStatus.FAILED)
.errorCode(handlerErrorCode)
.build();
}
}