in common/src/main/java/software/amazon/kms/common/CreatableKeyHandlerHelper.java [31:57]
public ProgressEvent<M, C> createKey(
final AmazonWebServicesClientProxy proxy,
final ProxyClient<KmsClient> proxyClient,
final M model,
final C callbackContext,
final Map<String, String> tags
) {
return proxy.initiate("kms::create-key", proxyClient, model, callbackContext)
.translateToServiceRequest(m -> keyTranslator.createKeyRequest(model, tags))
.makeServiceCall(keyApiHelper::createKey)
.done(createKeyResponse -> {
if (!StringUtils.isNullOrEmpty(keyTranslator.getKeyId(model))) {
return ProgressEvent.progress(model, callbackContext);
}
// We only want to update the metadata that we have set as read only,
// since updating writable metadata at this point would only
// overwrite the properties supplied in the CFN template.
keyTranslator.setReadOnlyKeyMetadata(model, createKeyResponse.keyMetadata());
// Wait for key state to propagate to other hosts
return ProgressEvent
.defaultInProgressHandler(callbackContext,
EventualConsistencyHandlerHelper.EVENTUAL_CONSISTENCY_DELAY_SECONDS,
model);
});
}