public ProgressEvent enableKeyIfNecessary()

in common/src/main/java/software/amazon/kms/common/KeyHandlerHelper.java [160:186]


    public ProgressEvent<M, C> enableKeyIfNecessary(
        final AmazonWebServicesClientProxy proxy,
        final ProxyClient<KmsClient> proxyClient,
        final M previousModel,
        final M model,
        final C callbackContext,
        final boolean useEventualConsistencyDelay
    ) {
        final boolean shouldBeEnabled = keyTranslator.getKeyEnabled(model);
        final boolean wasEnabled =
            previousModel == null || keyTranslator.getKeyEnabled(previousModel);

        if (!wasEnabled && shouldBeEnabled && !callbackContext.isKeyEnabled()) {
            callbackContext.setKeyEnabled(true);
            return proxy.initiate("kms::enable-key", proxyClient, model, callbackContext)
                .translateToServiceRequest(keyTranslator::enableKeyRequest)
                .makeServiceCall(keyApiHelper::enableKey)
                // Changing key status from disabled -> enabled might affect rotation update since
                // it's only allowed on enabled keys. If enabled state hasn't been propagated then
                // the rotation update might hit invalid state exception. Wait 1 min to make sure
                // the changes propagate.
                .progress(useEventualConsistencyDelay ?
                    EventualConsistencyHandlerHelper.EVENTUAL_CONSISTENCY_DELAY_SECONDS : 0);
        }

        return ProgressEvent.progress(model, callbackContext);
    }