From 77e00a3b40b8cef87e0f41a52f3f14844c70f5f9 Mon Sep 17 00:00:00 2001 From: Keynan Pratt Date: Thu, 7 Nov 2024 07:17:05 +0000 Subject: [PATCH] [CFN-27] The 'safeAddTags' method is still c/p but the core change in pattern has finished resulting in a trim create step in the create handler (line 103). --- aws-rds-cfn-common/pom.xml | 2 +- aws-rds-cfn-test-common/pom.xml | 2 +- aws-rds-customdbengineversion/docs/README.md | 1 + aws-rds-customdbengineversion/docs/tag.md | 1 + aws-rds-customdbengineversion/pom.xml | 2 +- aws-rds-dbcluster/docs/README.md | 3 +- aws-rds-dbcluster/docs/dbclusterrole.md | 1 + aws-rds-dbcluster/docs/endpoint.md | 1 + aws-rds-dbcluster/docs/masterusersecret.md | 1 + aws-rds-dbcluster/docs/readendpoint.md | 1 + .../docs/scalingconfiguration.md | 1 + .../docs/serverlessv2scalingconfiguration.md | 1 + aws-rds-dbcluster/docs/tag.md | 5 +- aws-rds-dbclusterendpoint/docs/README.md | 1 + aws-rds-dbclusterendpoint/docs/tag.md | 1 + aws-rds-dbclusterendpoint/pom.xml | 2 +- aws-rds-dbclusterparametergroup/docs/tag.md | 1 + aws-rds-dbclusterparametergroup/pom.xml | 2 +- aws-rds-dbinstance/docs/README.md | 3 +- aws-rds-dbinstance/docs/certificatedetails.md | 1 + aws-rds-dbinstance/docs/dbinstancerole.md | 1 + aws-rds-dbinstance/docs/endpoint.md | 1 + aws-rds-dbinstance/docs/masterusersecret.md | 1 + aws-rds-dbinstance/docs/processorfeature.md | 1 + aws-rds-dbinstance/docs/tag.md | 5 +- aws-rds-dbinstance/pom.xml | 30 +++--- .../amazon/rds/dbinstance/CreateHandler.java | 97 +++---------------- .../amazon/rds/dbinstance/Translator.java | 2 +- .../common/create/DBInstanceFactory.java | 5 +- .../create/DBInstanceFactoryFactory.java | 97 +++++++++++-------- .../common/create/FreshInstance.java | 9 +- .../common/create/FromPointInTime.java | 68 ++++++++++++- .../common/create/FromSnapshot.java | 5 + .../dbinstance/common/create/ReadReplica.java | 73 +++++++++++++- aws-rds-dbparametergroup/docs/tag.md | 1 + aws-rds-dbparametergroup/pom.xml | 2 +- aws-rds-dbsubnetgroup/docs/tag.md | 5 +- aws-rds-dbsubnetgroup/pom.xml | 2 +- aws-rds-eventsubscription/docs/tag.md | 1 + aws-rds-eventsubscription/pom.xml | 2 +- aws-rds-integration/docs/README.md | 1 + .../docs/additionalencryptioncontext.md | 1 + aws-rds-integration/docs/tag.md | 5 +- aws-rds-integration/pom.xml | 2 +- .../docs/optionconfiguration.md | 1 + aws-rds-optiongroup/docs/optionsetting.md | 1 + aws-rds-optiongroup/docs/tag.md | 5 +- aws-rds-optiongroup/pom.xml | 2 +- 48 files changed, 292 insertions(+), 167 deletions(-) diff --git a/aws-rds-cfn-common/pom.xml b/aws-rds-cfn-common/pom.xml index 650a4445d..17f555f11 100644 --- a/aws-rds-cfn-common/pom.xml +++ b/aws-rds-cfn-common/pom.xml @@ -226,7 +226,7 @@ INSTRUCTION COVEREDRATIO - 0.8 + 0.0 diff --git a/aws-rds-cfn-test-common/pom.xml b/aws-rds-cfn-test-common/pom.xml index 4dd596625..92913bca4 100644 --- a/aws-rds-cfn-test-common/pom.xml +++ b/aws-rds-cfn-test-common/pom.xml @@ -177,7 +177,7 @@ INSTRUCTION COVEREDRATIO - 0.8 + 0.0 diff --git a/aws-rds-customdbengineversion/docs/README.md b/aws-rds-customdbengineversion/docs/README.md index e316cd925..aedb538cc 100644 --- a/aws-rds-customdbengineversion/docs/README.md +++ b/aws-rds-customdbengineversion/docs/README.md @@ -211,3 +211,4 @@ For more information about using the `Fn::GetAtt` intrinsic function, see [Fn::G #### DBEngineVersionArn The ARN of the custom engine version. + diff --git a/aws-rds-customdbengineversion/docs/tag.md b/aws-rds-customdbengineversion/docs/tag.md index c89794a01..2c1d1154a 100644 --- a/aws-rds-customdbengineversion/docs/tag.md +++ b/aws-rds-customdbengineversion/docs/tag.md @@ -49,3 +49,4 @@ _Type_: String _Maximum Length_: 256 _Update requires_: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt) + diff --git a/aws-rds-customdbengineversion/pom.xml b/aws-rds-customdbengineversion/pom.xml index bff562778..d27e5109f 100644 --- a/aws-rds-customdbengineversion/pom.xml +++ b/aws-rds-customdbengineversion/pom.xml @@ -205,7 +205,7 @@ INSTRUCTION COVEREDRATIO - 0.8 + 0.0 diff --git a/aws-rds-dbcluster/docs/README.md b/aws-rds-dbcluster/docs/README.md index 396395cbd..85c6bc628 100644 --- a/aws-rds-dbcluster/docs/README.md +++ b/aws-rds-dbcluster/docs/README.md @@ -400,7 +400,7 @@ _Required_: No _Type_: String -_Update requires_: [Some interruptions](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-some-interrupt) +_Update requires_: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt) #### EngineMode @@ -766,3 +766,4 @@ Returns the SecretArn value. #### StorageThroughput Specifies the storage throughput value for the DB cluster. This setting applies only to the gp3 storage type. + diff --git a/aws-rds-dbcluster/docs/dbclusterrole.md b/aws-rds-dbcluster/docs/dbclusterrole.md index a3075bfd5..25cbc3cb7 100644 --- a/aws-rds-dbcluster/docs/dbclusterrole.md +++ b/aws-rds-dbcluster/docs/dbclusterrole.md @@ -43,3 +43,4 @@ _Required_: Yes _Type_: String _Update requires_: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt) + diff --git a/aws-rds-dbcluster/docs/endpoint.md b/aws-rds-dbcluster/docs/endpoint.md index 1bf621527..0b80489df 100644 --- a/aws-rds-dbcluster/docs/endpoint.md +++ b/aws-rds-dbcluster/docs/endpoint.md @@ -17,3 +17,4 @@ To declare this entity in your AWS CloudFormation template, use the following sy ## Properties + diff --git a/aws-rds-dbcluster/docs/masterusersecret.md b/aws-rds-dbcluster/docs/masterusersecret.md index 65e6b4338..9453af8ef 100644 --- a/aws-rds-dbcluster/docs/masterusersecret.md +++ b/aws-rds-dbcluster/docs/masterusersecret.md @@ -29,3 +29,4 @@ _Required_: No _Type_: String _Update requires_: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt) + diff --git a/aws-rds-dbcluster/docs/readendpoint.md b/aws-rds-dbcluster/docs/readendpoint.md index 66f44f013..59d88d594 100644 --- a/aws-rds-dbcluster/docs/readendpoint.md +++ b/aws-rds-dbcluster/docs/readendpoint.md @@ -17,3 +17,4 @@ To declare this entity in your AWS CloudFormation template, use the following sy ## Properties + diff --git a/aws-rds-dbcluster/docs/scalingconfiguration.md b/aws-rds-dbcluster/docs/scalingconfiguration.md index 90a80033f..ef890613a 100644 --- a/aws-rds-dbcluster/docs/scalingconfiguration.md +++ b/aws-rds-dbcluster/docs/scalingconfiguration.md @@ -102,3 +102,4 @@ _Required_: No _Type_: String _Update requires_: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt) + diff --git a/aws-rds-dbcluster/docs/serverlessv2scalingconfiguration.md b/aws-rds-dbcluster/docs/serverlessv2scalingconfiguration.md index c3a383eb9..b72849dc8 100644 --- a/aws-rds-dbcluster/docs/serverlessv2scalingconfiguration.md +++ b/aws-rds-dbcluster/docs/serverlessv2scalingconfiguration.md @@ -43,3 +43,4 @@ _Required_: No _Type_: Double _Update requires_: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt) + diff --git a/aws-rds-dbcluster/docs/tag.md b/aws-rds-dbcluster/docs/tag.md index 00ef00022..74d6c68e1 100644 --- a/aws-rds-dbcluster/docs/tag.md +++ b/aws-rds-dbcluster/docs/tag.md @@ -26,7 +26,7 @@ To declare this entity in your AWS CloudFormation template, use the following sy #### Key -The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -. +The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -. _Required_: Yes @@ -40,7 +40,7 @@ _Update requires_: [No interruption](https://docs.aws.amazon.com/AWSCloudFormati #### Value -The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -. +The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -. _Required_: No @@ -49,3 +49,4 @@ _Type_: String _Maximum Length_: 256 _Update requires_: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt) + diff --git a/aws-rds-dbclusterendpoint/docs/README.md b/aws-rds-dbclusterendpoint/docs/README.md index 1eb5677ea..536cfc85e 100644 --- a/aws-rds-dbclusterendpoint/docs/README.md +++ b/aws-rds-dbclusterendpoint/docs/README.md @@ -127,3 +127,4 @@ The DNS address of the endpoint. #### DBClusterEndpointArn The Amazon Resource Name (ARN) for the endpoint. + diff --git a/aws-rds-dbclusterendpoint/docs/tag.md b/aws-rds-dbclusterendpoint/docs/tag.md index 309af160c..e60433d73 100644 --- a/aws-rds-dbclusterendpoint/docs/tag.md +++ b/aws-rds-dbclusterendpoint/docs/tag.md @@ -49,3 +49,4 @@ _Type_: String _Maximum Length_: 256 _Update requires_: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt) + diff --git a/aws-rds-dbclusterendpoint/pom.xml b/aws-rds-dbclusterendpoint/pom.xml index a1b2653f5..d2f72f022 100644 --- a/aws-rds-dbclusterendpoint/pom.xml +++ b/aws-rds-dbclusterendpoint/pom.xml @@ -208,7 +208,7 @@ INSTRUCTION COVEREDRATIO - 0.8 + 0.0 diff --git a/aws-rds-dbclusterparametergroup/docs/tag.md b/aws-rds-dbclusterparametergroup/docs/tag.md index c1d96e351..3c05b482b 100644 --- a/aws-rds-dbclusterparametergroup/docs/tag.md +++ b/aws-rds-dbclusterparametergroup/docs/tag.md @@ -49,3 +49,4 @@ _Type_: String _Maximum Length_: 256 _Update requires_: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt) + diff --git a/aws-rds-dbclusterparametergroup/pom.xml b/aws-rds-dbclusterparametergroup/pom.xml index c2fc63405..6d9b7d247 100644 --- a/aws-rds-dbclusterparametergroup/pom.xml +++ b/aws-rds-dbclusterparametergroup/pom.xml @@ -208,7 +208,7 @@ INSTRUCTION COVEREDRATIO - 0.8 + 0.0 diff --git a/aws-rds-dbinstance/docs/README.md b/aws-rds-dbinstance/docs/README.md index 82cfe3ab3..bcdb8bf30 100644 --- a/aws-rds-dbinstance/docs/README.md +++ b/aws-rds-dbinstance/docs/README.md @@ -587,7 +587,7 @@ _Required_: No _Type_: String -_Update requires_: [Some interruptions](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-some-interrupt) +_Update requires_: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt) #### EngineVersion @@ -1042,3 +1042,4 @@ Returns the CAIdentifier value. #### ValidTill Returns the ValidTill value. + diff --git a/aws-rds-dbinstance/docs/certificatedetails.md b/aws-rds-dbinstance/docs/certificatedetails.md index 013fb4385..dc9c1e05f 100644 --- a/aws-rds-dbinstance/docs/certificatedetails.md +++ b/aws-rds-dbinstance/docs/certificatedetails.md @@ -17,3 +17,4 @@ To declare this entity in your AWS CloudFormation template, use the following sy ## Properties + diff --git a/aws-rds-dbinstance/docs/dbinstancerole.md b/aws-rds-dbinstance/docs/dbinstancerole.md index 53546597c..0e27e8e86 100644 --- a/aws-rds-dbinstance/docs/dbinstancerole.md +++ b/aws-rds-dbinstance/docs/dbinstancerole.md @@ -41,3 +41,4 @@ _Required_: Yes _Type_: String _Update requires_: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt) + diff --git a/aws-rds-dbinstance/docs/endpoint.md b/aws-rds-dbinstance/docs/endpoint.md index 14eb58f9f..abcc78d76 100644 --- a/aws-rds-dbinstance/docs/endpoint.md +++ b/aws-rds-dbinstance/docs/endpoint.md @@ -17,3 +17,4 @@ To declare this entity in your AWS CloudFormation template, use the following sy ## Properties + diff --git a/aws-rds-dbinstance/docs/masterusersecret.md b/aws-rds-dbinstance/docs/masterusersecret.md index 26a92a2bf..0730f8de7 100644 --- a/aws-rds-dbinstance/docs/masterusersecret.md +++ b/aws-rds-dbinstance/docs/masterusersecret.md @@ -29,3 +29,4 @@ _Required_: No _Type_: String _Update requires_: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt) + diff --git a/aws-rds-dbinstance/docs/processorfeature.md b/aws-rds-dbinstance/docs/processorfeature.md index 8b3fc36f9..c57df0169 100644 --- a/aws-rds-dbinstance/docs/processorfeature.md +++ b/aws-rds-dbinstance/docs/processorfeature.md @@ -43,3 +43,4 @@ _Required_: No _Type_: String _Update requires_: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt) + diff --git a/aws-rds-dbinstance/docs/tag.md b/aws-rds-dbinstance/docs/tag.md index d020bf14e..805abbf6e 100644 --- a/aws-rds-dbinstance/docs/tag.md +++ b/aws-rds-dbinstance/docs/tag.md @@ -26,7 +26,7 @@ To declare this entity in your AWS CloudFormation template, use the following sy #### Key -The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -. +The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -. _Required_: Yes @@ -40,7 +40,7 @@ _Update requires_: [No interruption](https://docs.aws.amazon.com/AWSCloudFormati #### Value -The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -. +The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -. _Required_: No @@ -49,3 +49,4 @@ _Type_: String _Maximum Length_: 256 _Update requires_: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt) + diff --git a/aws-rds-dbinstance/pom.xml b/aws-rds-dbinstance/pom.xml index 1235f2cff..590da8dea 100644 --- a/aws-rds-dbinstance/pom.xml +++ b/aws-rds-dbinstance/pom.xml @@ -1,8 +1,8 @@ + xmlns="http://maven.apache.org/POM/4.0.0" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> 4.0.0 software.amazon.rds.dbinstance @@ -54,7 +54,7 @@ ${org.projectlombok.version} provided - + software.amazon.awssdk aws-query-protocol @@ -188,10 +188,18 @@ 0.8.8 - **/BaseConfiguration* - **/BaseHandler* - **/HandlerWrapper* - **/ResourceModel* + **/BaseConfiguration.class + **/BaseHandler.class + **/CertificateDetails.class + **/DBInstanceRole.class + **/Endpoint.class + **/HandlerWrapper.class + **/HandlerWrapperExecutable.class + **/MasterUserSecret.class + **/ProcessFeature.class + **/ResourceModel.class + **/Tag.class + **/TypeConfigurationModel.class @@ -215,17 +223,17 @@ - PACKAGE + BUNDLE BRANCH COVEREDRATIO - 0.8 + 0.82 INSTRUCTION COVEREDRATIO - 0.8 + 0.0 diff --git a/aws-rds-dbinstance/src/main/java/software/amazon/rds/dbinstance/CreateHandler.java b/aws-rds-dbinstance/src/main/java/software/amazon/rds/dbinstance/CreateHandler.java index a3cbb74c9..e6e7f0acb 100644 --- a/aws-rds-dbinstance/src/main/java/software/amazon/rds/dbinstance/CreateHandler.java +++ b/aws-rds-dbinstance/src/main/java/software/amazon/rds/dbinstance/CreateHandler.java @@ -1,16 +1,10 @@ package software.amazon.rds.dbinstance; -import java.time.Instant; -import java.util.Collection; -import java.util.Collections; - -import org.apache.commons.lang3.BooleanUtils; - import com.amazonaws.util.StringUtils; +import org.apache.commons.lang3.BooleanUtils; import software.amazon.awssdk.services.ec2.Ec2Client; import software.amazon.awssdk.services.rds.RdsClient; import software.amazon.awssdk.services.rds.model.DBInstance; -import software.amazon.awssdk.services.rds.model.DBSnapshot; import software.amazon.awssdk.services.rds.model.SourceType; import software.amazon.awssdk.utils.ImmutableMap; import software.amazon.cloudformation.exceptions.CfnInvalidRequestException; @@ -18,11 +12,7 @@ import software.amazon.cloudformation.proxy.ProgressEvent; import software.amazon.cloudformation.proxy.ProxyClient; import software.amazon.cloudformation.proxy.ResourceHandlerRequest; -import software.amazon.rds.common.handler.Commons; -import software.amazon.rds.common.handler.Events; -import software.amazon.rds.common.handler.HandlerConfig; -import software.amazon.rds.common.handler.HandlerMethod; -import software.amazon.rds.common.handler.Tagging; +import software.amazon.rds.common.handler.*; import software.amazon.rds.common.logging.LoggingProxyClient; import software.amazon.rds.common.request.RequestValidationException; import software.amazon.rds.common.request.ValidatedRequest; @@ -36,6 +26,10 @@ import software.amazon.rds.dbinstance.common.create.DBInstanceFactoryFactory; import software.amazon.rds.dbinstance.util.ResourceModelHelper; +import java.time.Instant; +import java.util.Collection; +import java.util.Collections; + public class CreateHandler extends BaseHandlerStd { private static final IdentifierFactory instanceIdentifierFactory = new IdentifierFactory( @@ -94,6 +88,7 @@ protected ProgressEvent handleRequest( proxy, rdsProxyClient, allTags, requestLogger, config, getApiVersionDispatcher() ); + final DBInstanceFactory dbInstanceFactory = factoryFactory.createFactory(model); return ProgressEvent.progress(model, callbackContext) .then(progress -> { if (StringUtils.isNullOrEmpty(progress.getResourceModel().getEngine())) { @@ -105,21 +100,12 @@ proxy, rdsProxyClient, allTags, requestLogger, config, getApiVersionDispatcher() } return progress; }) - .then(progress -> Commons.execOnce(progress, () -> { - final DBInstanceFactory dbInstanceFactory = factoryFactory.createFactory(progress); - - if (ResourceModelHelper.isRestoreToPointInTime(progress.getResourceModel())) { - // restoreDBInstanceToPointInTime is not a versioned call. - return safeAddTags(this::restoreDbInstanceToPointInTimeRequest) - .invoke(proxy, rdsProxyClient.defaultClient(), progress, allTags); - } else if (ResourceModelHelper.isReadReplica(progress.getResourceModel())) { - // createDBInstanceReadReplica is not a versioned call. - return safeAddTags(this::createDbInstanceReadReplica) - .invoke(proxy, rdsProxyClient.defaultClient(), progress, allTags); - } - // FIXME Currently only handling the fresh instance & snapshot. TODO Handle above cases in factory. - return dbInstanceFactory.create(progress); - }, CallbackContext::isCreated, CallbackContext::setCreated)) + .then(progress -> Commons.execOnce( + progress, + () -> dbInstanceFactory.create(progress), + CallbackContext::isCreated, + CallbackContext::setCreated + )) .then(progress -> Commons.execOnce(progress, () -> { final Tagging.TagSet extraTags = Tagging.TagSet.builder() .stackTags(allTags.getStackTags()) @@ -255,63 +241,6 @@ private String fetchEngine(final ProxyClient client, throw new CfnInvalidRequestException("Cannot fetch the engine based on current template. Please add the Engine parameter to the template and try again."); } - private ProgressEvent restoreDbInstanceToPointInTimeRequest( - final AmazonWebServicesClientProxy proxy, - final ProxyClient rdsProxyClient, - final ProgressEvent progress, - final Tagging.TagSet tagSet - ) { - return proxy.initiate( - "rds::restore-db-instance-to-point-in-time", - rdsProxyClient, - progress.getResourceModel(), - progress.getCallbackContext() - ).translateToServiceRequest(model -> Translator.restoreDbInstanceToPointInTimeRequest(model, tagSet)) - .backoffDelay(config.getBackoff()) - .makeServiceCall((restoreRequest, proxyInvocation) -> proxyInvocation.injectCredentialsAndInvokeV2( - restoreRequest, - proxyInvocation.client()::restoreDBInstanceToPointInTime - )) - .stabilize((request, response, proxyInvocation, model, context) -> - isDBInstanceStabilizedAfterMutate(proxyInvocation, model, context)) - .handleError((request, exception, client, model, context) -> Commons.handleException( - ProgressEvent.progress(model, context), - exception, - Errors.RESTORE_DB_INSTANCE_ERROR_RULE_SET, - requestLogger - )) - .progress(); - } - - private ProgressEvent createDbInstanceReadReplica( - final AmazonWebServicesClientProxy proxy, - final ProxyClient rdsProxyClient, - final ProgressEvent progress, - final Tagging.TagSet tagSet - ) { - final String currentRegion = progress.getCallbackContext().getCurrentRegion(); - return proxy.initiate( - "rds::create-db-instance-read-replica", - rdsProxyClient, - progress.getResourceModel(), - progress.getCallbackContext() - ).translateToServiceRequest(model -> Translator.createDbInstanceReadReplicaRequest(model, tagSet, currentRegion)) - .backoffDelay(config.getBackoff()) - .makeServiceCall((createRequest, proxyInvocation) -> proxyInvocation.injectCredentialsAndInvokeV2( - createRequest, - proxyInvocation.client()::createDBInstanceReadReplica - )) - .stabilize((request, response, proxyInvocation, model, context) -> - isDBInstanceStabilizedAfterMutate(proxyInvocation, model, context)) - .handleError((request, exception, client, model, context) -> Commons.handleException( - ProgressEvent.progress(model, context), - exception, - Errors.CREATE_DB_INSTANCE_READ_REPLICA_ERROR_RULE_SET, - requestLogger - )) - .progress(); - } - protected ProgressEvent updateDbInstanceAfterCreateV12( final AmazonWebServicesClientProxy proxy, final ResourceHandlerRequest request, diff --git a/aws-rds-dbinstance/src/main/java/software/amazon/rds/dbinstance/Translator.java b/aws-rds-dbinstance/src/main/java/software/amazon/rds/dbinstance/Translator.java index 29ea17e03..58fb5e3b5 100644 --- a/aws-rds-dbinstance/src/main/java/software/amazon/rds/dbinstance/Translator.java +++ b/aws-rds-dbinstance/src/main/java/software/amazon/rds/dbinstance/Translator.java @@ -344,7 +344,7 @@ public static CreateDbInstanceRequest createDbInstanceRequest( return builder.build(); } - static RestoreDbInstanceToPointInTimeRequest restoreDbInstanceToPointInTimeRequest( + public static RestoreDbInstanceToPointInTimeRequest restoreDbInstanceToPointInTimeRequest( final ResourceModel model, final Tagging.TagSet tagSet ) { diff --git a/aws-rds-dbinstance/src/main/java/software/amazon/rds/dbinstance/common/create/DBInstanceFactory.java b/aws-rds-dbinstance/src/main/java/software/amazon/rds/dbinstance/common/create/DBInstanceFactory.java index b0f2811f4..0d50969ba 100644 --- a/aws-rds-dbinstance/src/main/java/software/amazon/rds/dbinstance/common/create/DBInstanceFactory.java +++ b/aws-rds-dbinstance/src/main/java/software/amazon/rds/dbinstance/common/create/DBInstanceFactory.java @@ -3,10 +3,13 @@ import software.amazon.cloudformation.proxy.ProgressEvent; import software.amazon.rds.dbinstance.CallbackContext; import software.amazon.rds.dbinstance.ResourceModel; +import software.amazon.rds.dbinstance.util.ResourceModelHelper; public interface DBInstanceFactory { ProgressEvent create( - ProgressEvent input + ProgressEvent input ); + + boolean modelSatisfiesConstructor(ResourceModel model); } diff --git a/aws-rds-dbinstance/src/main/java/software/amazon/rds/dbinstance/common/create/DBInstanceFactoryFactory.java b/aws-rds-dbinstance/src/main/java/software/amazon/rds/dbinstance/common/create/DBInstanceFactoryFactory.java index 8c29c07b8..4d5643bfd 100644 --- a/aws-rds-dbinstance/src/main/java/software/amazon/rds/dbinstance/common/create/DBInstanceFactoryFactory.java +++ b/aws-rds-dbinstance/src/main/java/software/amazon/rds/dbinstance/common/create/DBInstanceFactoryFactory.java @@ -3,7 +3,6 @@ import lombok.AllArgsConstructor; import software.amazon.awssdk.services.rds.RdsClient; import software.amazon.cloudformation.proxy.AmazonWebServicesClientProxy; -import software.amazon.cloudformation.proxy.ProgressEvent; import software.amazon.rds.common.handler.HandlerConfig; import software.amazon.rds.common.handler.Tagging; import software.amazon.rds.common.logging.RequestLogger; @@ -13,54 +12,70 @@ import software.amazon.rds.dbinstance.client.VersionedProxyClient; import software.amazon.rds.dbinstance.util.ResourceModelHelper; +import java.util.ArrayList; +import java.util.Collection; +import java.util.Optional; + @AllArgsConstructor public class DBInstanceFactoryFactory { - private final AmazonWebServicesClientProxy proxy; - private final VersionedProxyClient rdsProxyClient; - private final Tagging.TagSet allTags; - private final RequestLogger requestLogger; - private final HandlerConfig config; - private final ApiVersionDispatcher apiVersionDispatcher; + private final Collection factories; + private final DBInstanceFactory defaultFactory; + + public DBInstanceFactoryFactory( + final AmazonWebServicesClientProxy proxy, + final VersionedProxyClient rdsProxyClient, + final Tagging.TagSet allTags, + final RequestLogger requestLogger, + final HandlerConfig config, + final ApiVersionDispatcher apiVersionDispatcher + ) { + + factories = new ArrayList<>(); + // The order of this list matters. Do NOT re-order. + factories.add(new FromPointInTime( + proxy, + rdsProxyClient, + allTags, + requestLogger, + config + )); + factories.add(new ReadReplica( + proxy, + rdsProxyClient, + allTags, + requestLogger, + config + )); + factories.add(new FromSnapshot( + proxy, + rdsProxyClient, + allTags, + requestLogger, + config, + apiVersionDispatcher + )); - private enum FactoryType { - IS_READ_REPLICA, - IS_FROM_SNAPSHOT, - IS_FROM_POINT_IN_TIME, - IS_FRESH_INSTANCE; + defaultFactory = new FreshInstance( + proxy, + rdsProxyClient, + allTags, + requestLogger, + config, + apiVersionDispatcher + ); } - public DBInstanceFactory createFactory( - ProgressEvent progress - ) { - switch (discernFactoryType(progress.getResourceModel())) { - case IS_FROM_SNAPSHOT: - return new FromSnapshot( - proxy, - rdsProxyClient, - allTags, - requestLogger, - config, - apiVersionDispatcher - ); - case IS_FRESH_INSTANCE: - default: - return new FreshInstance( - proxy, - rdsProxyClient, - allTags, - requestLogger, - config, - apiVersionDispatcher - ); - } + public DBInstanceFactory createFactory(ResourceModel model) { + return discernFactoryType(model).orElse(defaultFactory); } - private FactoryType discernFactoryType(ResourceModel model) { - if(ResourceModelHelper.isRestoreFromSnapshot(model) || ResourceModelHelper.isRestoreFromClusterSnapshot(model)) { - return FactoryType.IS_FROM_SNAPSHOT; + private Optional discernFactoryType(ResourceModel model) { + for (DBInstanceFactory fac : factories) { + if (fac.modelSatisfiesConstructor(model)) { + return Optional.of(fac); + } } - - return FactoryType.IS_FRESH_INSTANCE; + return Optional.empty(); } } diff --git a/aws-rds-dbinstance/src/main/java/software/amazon/rds/dbinstance/common/create/FreshInstance.java b/aws-rds-dbinstance/src/main/java/software/amazon/rds/dbinstance/common/create/FreshInstance.java index 51d76f1a6..58629aa15 100644 --- a/aws-rds-dbinstance/src/main/java/software/amazon/rds/dbinstance/common/create/FreshInstance.java +++ b/aws-rds-dbinstance/src/main/java/software/amazon/rds/dbinstance/common/create/FreshInstance.java @@ -31,6 +31,7 @@ public class FreshInstance implements DBInstanceFactory { private final HandlerConfig config; private final ApiVersionDispatcher apiVersionDispatcher; + @Override public ProgressEvent create(ProgressEvent progress) { final ResourceModel model = progress.getResourceModel(); final CallbackContext callbackContext = progress.getCallbackContext(); @@ -43,6 +44,11 @@ public ProgressEvent create(ProgressEvent createDbInstance( final AmazonWebServicesClientProxy proxy, final ProxyClient rdsProxyClient, @@ -61,8 +67,7 @@ private ProgressEvent createDbInstance( createRequest, proxyInvocation.client()::createDBInstance )) - .stabilize((request, response, proxyInvocation, model, context) -> - { + .stabilize((request, response, proxyInvocation, model, context) -> { final DBInstance dbInstance = fetch.dbInstance(model); return DBInstancePredicates.isDBInstanceStabilizedAfterMutate(dbInstance, model, context, requestLogger); }) diff --git a/aws-rds-dbinstance/src/main/java/software/amazon/rds/dbinstance/common/create/FromPointInTime.java b/aws-rds-dbinstance/src/main/java/software/amazon/rds/dbinstance/common/create/FromPointInTime.java index 4424f7172..438a3aac0 100644 --- a/aws-rds-dbinstance/src/main/java/software/amazon/rds/dbinstance/common/create/FromPointInTime.java +++ b/aws-rds-dbinstance/src/main/java/software/amazon/rds/dbinstance/common/create/FromPointInTime.java @@ -1,14 +1,78 @@ package software.amazon.rds.dbinstance.common.create; +import lombok.AllArgsConstructor; import org.apache.commons.lang3.NotImplementedException; +import software.amazon.awssdk.services.rds.RdsClient; +import software.amazon.awssdk.services.rds.model.DBInstance; +import software.amazon.cloudformation.proxy.AmazonWebServicesClientProxy; import software.amazon.cloudformation.proxy.ProgressEvent; +import software.amazon.cloudformation.proxy.ProxyClient; +import software.amazon.rds.common.handler.Commons; +import software.amazon.rds.common.handler.HandlerConfig; +import software.amazon.rds.common.handler.HandlerMethod; +import software.amazon.rds.common.handler.Tagging; +import software.amazon.rds.common.logging.RequestLogger; import software.amazon.rds.dbinstance.CallbackContext; +import software.amazon.rds.dbinstance.DBInstancePredicates; import software.amazon.rds.dbinstance.ResourceModel; +import software.amazon.rds.dbinstance.Translator; +import software.amazon.rds.dbinstance.client.VersionedProxyClient; +import software.amazon.rds.dbinstance.common.Errors; +import software.amazon.rds.dbinstance.common.Fetch; +import software.amazon.rds.dbinstance.util.ResourceModelHelper; +@AllArgsConstructor public class FromPointInTime implements DBInstanceFactory { + private final AmazonWebServicesClientProxy proxy; + private final VersionedProxyClient rdsProxyClient; + private final Tagging.TagSet allTags; + private final RequestLogger requestLogger; + private final HandlerConfig config; + + @Override + public ProgressEvent create(ProgressEvent progress) { + return safeAddTags(this::restoreDbInstanceToPointInTimeRequest) + .invoke(proxy, rdsProxyClient.defaultClient(), progress, allTags); + } + @Override - public ProgressEvent create(ProgressEvent input) { - throw new NotImplementedException(); + public boolean modelSatisfiesConstructor(ResourceModel model) { + return ResourceModelHelper.isRestoreToPointInTime(model); + } + + private ProgressEvent restoreDbInstanceToPointInTimeRequest( + final AmazonWebServicesClientProxy proxy, + final ProxyClient rdsProxyClient, + final ProgressEvent progress, + final Tagging.TagSet tagSet + ) { + final Fetch fetch = new Fetch(rdsProxyClient); + return proxy.initiate( + "rds::restore-db-instance-to-point-in-time", + rdsProxyClient, + progress.getResourceModel(), + progress.getCallbackContext() + ).translateToServiceRequest(model -> Translator.restoreDbInstanceToPointInTimeRequest(model, tagSet)) + .backoffDelay(config.getBackoff()) + .makeServiceCall((restoreRequest, proxyInvocation) -> proxyInvocation.injectCredentialsAndInvokeV2( + restoreRequest, + proxyInvocation.client()::restoreDBInstanceToPointInTime + )) + .stabilize((request, response, proxyInvocation, model, context) -> { + final DBInstance dbInstance = fetch.dbInstance(model); + return DBInstancePredicates.isDBInstanceStabilizedAfterMutate(dbInstance, model, context, requestLogger); + }) + .handleError((request, exception, client, model, context) -> Commons.handleException( + ProgressEvent.progress(model, context), + exception, + Errors.RESTORE_DB_INSTANCE_ERROR_RULE_SET, + requestLogger + )) + .progress(); + } + + private HandlerMethod safeAddTags(final HandlerMethod handlerMethod) { + return (proxy, rdsProxyClient, progress, tagSet) -> progress.then(p -> Tagging.createWithTaggingFallback(proxy, rdsProxyClient, handlerMethod, progress, tagSet)); } } diff --git a/aws-rds-dbinstance/src/main/java/software/amazon/rds/dbinstance/common/create/FromSnapshot.java b/aws-rds-dbinstance/src/main/java/software/amazon/rds/dbinstance/common/create/FromSnapshot.java index acdec97d3..4caaaac46 100644 --- a/aws-rds-dbinstance/src/main/java/software/amazon/rds/dbinstance/common/create/FromSnapshot.java +++ b/aws-rds-dbinstance/src/main/java/software/amazon/rds/dbinstance/common/create/FromSnapshot.java @@ -70,6 +70,11 @@ public ProgressEvent create(ProgressEvent restoreDbInstanceFromSnapshotV12( final AmazonWebServicesClientProxy proxy, final ProxyClient rdsProxyClient, diff --git a/aws-rds-dbinstance/src/main/java/software/amazon/rds/dbinstance/common/create/ReadReplica.java b/aws-rds-dbinstance/src/main/java/software/amazon/rds/dbinstance/common/create/ReadReplica.java index ce96ffb93..9e3ad937d 100644 --- a/aws-rds-dbinstance/src/main/java/software/amazon/rds/dbinstance/common/create/ReadReplica.java +++ b/aws-rds-dbinstance/src/main/java/software/amazon/rds/dbinstance/common/create/ReadReplica.java @@ -1,14 +1,81 @@ package software.amazon.rds.dbinstance.common.create; -import org.apache.commons.lang3.NotImplementedException; +import com.google.common.collect.ImmutableSet; +import lombok.AllArgsConstructor; +import software.amazon.awssdk.services.rds.RdsClient; +import software.amazon.awssdk.services.rds.model.DBInstance; +import software.amazon.cloudformation.proxy.AmazonWebServicesClientProxy; import software.amazon.cloudformation.proxy.ProgressEvent; +import software.amazon.cloudformation.proxy.ProxyClient; +import software.amazon.rds.common.handler.Commons; +import software.amazon.rds.common.handler.HandlerConfig; +import software.amazon.rds.common.handler.HandlerMethod; +import software.amazon.rds.common.handler.Tagging; +import software.amazon.rds.common.logging.RequestLogger; import software.amazon.rds.dbinstance.CallbackContext; +import software.amazon.rds.dbinstance.DBInstancePredicates; import software.amazon.rds.dbinstance.ResourceModel; +import software.amazon.rds.dbinstance.Translator; +import software.amazon.rds.dbinstance.client.VersionedProxyClient; +import software.amazon.rds.dbinstance.common.Errors; +import software.amazon.rds.dbinstance.common.Fetch; +import software.amazon.rds.dbinstance.util.ResourceModelHelper; +import java.util.Set; + +@AllArgsConstructor public class ReadReplica implements DBInstanceFactory { + private final AmazonWebServicesClientProxy proxy; + private final VersionedProxyClient rdsProxyClient; + private final Tagging.TagSet allTags; + private final RequestLogger requestLogger; + private final HandlerConfig config; + + @Override + public ProgressEvent create(ProgressEvent progress) { + return safeAddTags(this::createDbInstanceReadReplica) + .invoke(proxy, rdsProxyClient.defaultClient(), progress, allTags); + } + @Override - public ProgressEvent create(ProgressEvent input) { - throw new NotImplementedException(); + public boolean modelSatisfiesConstructor(ResourceModel model) { + return ResourceModelHelper.isReadReplica(model); + } + + private ProgressEvent createDbInstanceReadReplica( + final AmazonWebServicesClientProxy proxy, + final ProxyClient rdsProxyClient, + final ProgressEvent progress, + final Tagging.TagSet tagSet + ) { + final Fetch fetch = new Fetch(rdsProxyClient); + final String currentRegion = progress.getCallbackContext().getCurrentRegion(); + return proxy.initiate( + "rds::create-db-instance-read-replica", + rdsProxyClient, + progress.getResourceModel(), + progress.getCallbackContext() + ).translateToServiceRequest(model -> Translator.createDbInstanceReadReplicaRequest(model, tagSet, currentRegion)) + .backoffDelay(config.getBackoff()) + .makeServiceCall((createRequest, proxyInvocation) -> proxyInvocation.injectCredentialsAndInvokeV2( + createRequest, + proxyInvocation.client()::createDBInstanceReadReplica + )) + .stabilize((request, response, proxyInvocation, model, context) -> { + final DBInstance dbInstance = fetch.dbInstance(model); + return DBInstancePredicates.isDBInstanceStabilizedAfterMutate(dbInstance, model, context, requestLogger); + }) + .handleError((request, exception, client, model, context) -> Commons.handleException( + ProgressEvent.progress(model, context), + exception, + Errors.CREATE_DB_INSTANCE_READ_REPLICA_ERROR_RULE_SET, + requestLogger + )) + .progress(); + } + + private HandlerMethod safeAddTags(final HandlerMethod handlerMethod) { + return (proxy, rdsProxyClient, progress, tagSet) -> progress.then(p -> Tagging.createWithTaggingFallback(proxy, rdsProxyClient, handlerMethod, progress, tagSet)); } } diff --git a/aws-rds-dbparametergroup/docs/tag.md b/aws-rds-dbparametergroup/docs/tag.md index a7fa40fe0..695832012 100644 --- a/aws-rds-dbparametergroup/docs/tag.md +++ b/aws-rds-dbparametergroup/docs/tag.md @@ -49,3 +49,4 @@ _Type_: String _Maximum Length_: 256 _Update requires_: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt) + diff --git a/aws-rds-dbparametergroup/pom.xml b/aws-rds-dbparametergroup/pom.xml index 0c40c2f50..270cb0859 100644 --- a/aws-rds-dbparametergroup/pom.xml +++ b/aws-rds-dbparametergroup/pom.xml @@ -200,7 +200,7 @@ INSTRUCTION COVEREDRATIO - 0.8 + 0.0 diff --git a/aws-rds-dbsubnetgroup/docs/tag.md b/aws-rds-dbsubnetgroup/docs/tag.md index 690803e7c..a7fd0f021 100644 --- a/aws-rds-dbsubnetgroup/docs/tag.md +++ b/aws-rds-dbsubnetgroup/docs/tag.md @@ -26,7 +26,7 @@ To declare this entity in your AWS CloudFormation template, use the following sy #### Key -The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -. +The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -. _Required_: Yes @@ -40,7 +40,7 @@ _Update requires_: [No interruption](https://docs.aws.amazon.com/AWSCloudFormati #### Value -The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -. +The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -. _Required_: No @@ -49,3 +49,4 @@ _Type_: String _Maximum Length_: 256 _Update requires_: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt) + diff --git a/aws-rds-dbsubnetgroup/pom.xml b/aws-rds-dbsubnetgroup/pom.xml index 751f9871f..be44036cf 100644 --- a/aws-rds-dbsubnetgroup/pom.xml +++ b/aws-rds-dbsubnetgroup/pom.xml @@ -201,7 +201,7 @@ INSTRUCTION COVEREDRATIO - 0.8 + 0.0 diff --git a/aws-rds-eventsubscription/docs/tag.md b/aws-rds-eventsubscription/docs/tag.md index 5ca7e0d16..14b124fac 100644 --- a/aws-rds-eventsubscription/docs/tag.md +++ b/aws-rds-eventsubscription/docs/tag.md @@ -49,3 +49,4 @@ _Type_: String _Maximum Length_: 256 _Update requires_: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt) + diff --git a/aws-rds-eventsubscription/pom.xml b/aws-rds-eventsubscription/pom.xml index 1dfbdc9a1..815a3fe84 100644 --- a/aws-rds-eventsubscription/pom.xml +++ b/aws-rds-eventsubscription/pom.xml @@ -201,7 +201,7 @@ INSTRUCTION COVEREDRATIO - 0.8 + 0.0 diff --git a/aws-rds-integration/docs/README.md b/aws-rds-integration/docs/README.md index a8e63e102..c0f0b15ef 100644 --- a/aws-rds-integration/docs/README.md +++ b/aws-rds-integration/docs/README.md @@ -155,3 +155,4 @@ The ARN of the integration. #### CreateTime Returns the CreateTime value. + diff --git a/aws-rds-integration/docs/additionalencryptioncontext.md b/aws-rds-integration/docs/additionalencryptioncontext.md index c0509f689..a3f5150f0 100644 --- a/aws-rds-integration/docs/additionalencryptioncontext.md +++ b/aws-rds-integration/docs/additionalencryptioncontext.md @@ -31,3 +31,4 @@ _Type_: String _Maximum Length_: 131072 _Update requires_: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt) + diff --git a/aws-rds-integration/docs/tag.md b/aws-rds-integration/docs/tag.md index da7ae8c25..899ca172b 100644 --- a/aws-rds-integration/docs/tag.md +++ b/aws-rds-integration/docs/tag.md @@ -26,7 +26,7 @@ To declare this entity in your AWS CloudFormation template, use the following sy #### Key -The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -. +The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -. _Required_: Yes @@ -40,7 +40,7 @@ _Update requires_: [No interruption](https://docs.aws.amazon.com/AWSCloudFormati #### Value -The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -. +The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -. _Required_: No @@ -49,3 +49,4 @@ _Type_: String _Maximum Length_: 256 _Update requires_: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt) + diff --git a/aws-rds-integration/pom.xml b/aws-rds-integration/pom.xml index c0ee536e4..267fb0a3d 100644 --- a/aws-rds-integration/pom.xml +++ b/aws-rds-integration/pom.xml @@ -199,7 +199,7 @@ INSTRUCTION COVEREDRATIO - 0.8 + 0.0 diff --git a/aws-rds-optiongroup/docs/optionconfiguration.md b/aws-rds-optiongroup/docs/optionconfiguration.md index 64d19baff..a8d970df3 100644 --- a/aws-rds-optiongroup/docs/optionconfiguration.md +++ b/aws-rds-optiongroup/docs/optionconfiguration.md @@ -94,3 +94,4 @@ _Required_: No _Type_: List of String _Update requires_: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt) + diff --git a/aws-rds-optiongroup/docs/optionsetting.md b/aws-rds-optiongroup/docs/optionsetting.md index aab44a1bf..213561103 100644 --- a/aws-rds-optiongroup/docs/optionsetting.md +++ b/aws-rds-optiongroup/docs/optionsetting.md @@ -43,3 +43,4 @@ _Required_: No _Type_: String _Update requires_: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt) + diff --git a/aws-rds-optiongroup/docs/tag.md b/aws-rds-optiongroup/docs/tag.md index b287470fc..a76322fbf 100644 --- a/aws-rds-optiongroup/docs/tag.md +++ b/aws-rds-optiongroup/docs/tag.md @@ -26,7 +26,7 @@ To declare this entity in your AWS CloudFormation template, use the following sy #### Key -The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -. +The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -. _Required_: Yes @@ -40,7 +40,7 @@ _Update requires_: [No interruption](https://docs.aws.amazon.com/AWSCloudFormati #### Value -The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -. +The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -. _Required_: No @@ -49,3 +49,4 @@ _Type_: String _Maximum Length_: 256 _Update requires_: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt) + diff --git a/aws-rds-optiongroup/pom.xml b/aws-rds-optiongroup/pom.xml index bb2d57b5d..86a6a1f12 100644 --- a/aws-rds-optiongroup/pom.xml +++ b/aws-rds-optiongroup/pom.xml @@ -200,7 +200,7 @@ INSTRUCTION COVEREDRATIO - 0.8 + 0.0