in deliverystream/src/main/java/com/amazonaws/kinesisfirehose/deliverystream/CreateHandler.java [32:70]
public ProgressEvent<ResourceModel, CallbackContext> handleRequest(
final AmazonWebServicesClientProxy proxy,
final ResourceHandlerRequest<ResourceModel> request,
final CallbackContext callbackContext,
final Logger logger) {
final ResourceModel model = request.getDesiredResourceState();
val firehoseAPIWrapper = FirehoseAPIWrapper.builder().firehoseClient(firehoseClient)
.clientProxy(proxy)
.build();
logger.log(String.format("Create Handler called with deliveryStreamName %s", model.getDeliveryStreamName()));
final CallbackContext currentContext = callbackContext == null
? CallbackContext.builder()
.stabilizationRetriesRemaining(NUMBER_OF_STATUS_POLL_RETRIES)
.build()
: callbackContext;
if (callbackContext == null && HandlerUtils.doesDeliveryStreamExistWithName(model.getDeliveryStreamName(),
firehoseAPIWrapper)) {
final Exception e = ResourceInUseException.builder()
.message("Firehose already exists with the name: " + model.getDeliveryStreamName())
.build();
return ProgressEvent.defaultFailureHandler(e, ExceptionMapper.mapToHandlerErrorCode(e, HandlerType.CREATE));
}
if (StringUtils.isNullOrEmpty(model.getDeliveryStreamName())) {
model.setDeliveryStreamName(
generateName(request)
);
}
if (request.getDesiredResourceTags() != null && !request.getDesiredResourceTags().isEmpty()) {
val modelTags = new ArrayList<Tag>();
request.getDesiredResourceTags().forEach((key, val) -> modelTags.add(new Tag(key, val)));
model.setTags(modelTags);
}
// This Lambda will continually be re-invoked with the current state of the instance, finally succeeding when state stabilizes.
return createDeliveryStreamAndUpdateProgress(firehoseAPIWrapper, model, currentContext, logger);
}