diff --git a/aws-rds-globalcluster/aws-rds-globalcluster.json b/aws-rds-globalcluster/aws-rds-globalcluster.json index abd295996..53efb0963 100644 --- a/aws-rds-globalcluster/aws-rds-globalcluster.json +++ b/aws-rds-globalcluster/aws-rds-globalcluster.json @@ -12,6 +12,16 @@ "aurora-postgresql" ] }, + "Tags": { + "type": "array", + "maxItems": 50, + "uniqueItems": true, + "insertionOrder": false, + "description": "An array of key-value pairs to apply to this resource.", + "items": { + "$ref": "#/definitions/Tag" + } + }, "EngineLifecycleSupport": { "description": "The life cycle type of the global cluster. You can use this setting to enroll your global cluster into Amazon RDS Extended Support.", "type": "string" @@ -46,6 +56,30 @@ "type": "boolean" } }, + "definitions": { + "Tag": { + "description": "A key-value pair to associate with a resource.", + "type": "object", + "additionalProperties": false, + "properties": { + "Key": { + "type": "string", + "description": "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 -. ", + "minLength": 1, + "maxLength": 128 + }, + "Value": { + "type": "string", + "description": "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 -. ", + "minLength": 0, + "maxLength": 256 + } + }, + "required": [ + "Key" + ] + } + }, "oneOf": [ { "required": [ @@ -87,7 +121,9 @@ "update": { "permissions": [ "rds:ModifyGlobalCluster", - "rds:DescribeGlobalClusters" + "rds:DescribeGlobalClusters", + "rds:AddTagsToResource", + "rds:RemoveTagsFromResource" ] }, "delete": { @@ -105,6 +141,6 @@ } }, "tagging": { - "taggable": false + "taggable": true } } diff --git a/aws-rds-globalcluster/src/main/java/software/amazon/rds/globalcluster/BaseHandlerStd.java b/aws-rds-globalcluster/src/main/java/software/amazon/rds/globalcluster/BaseHandlerStd.java index f3544bba1..c779c7576 100644 --- a/aws-rds-globalcluster/src/main/java/software/amazon/rds/globalcluster/BaseHandlerStd.java +++ b/aws-rds-globalcluster/src/main/java/software/amazon/rds/globalcluster/BaseHandlerStd.java @@ -199,7 +199,7 @@ protected ProgressEvent createGlobalClusterWithS .done((describeDbClusterRequest, describeDbClusterResponse, proxyClient2, resourceModel, callbackContext) -> { final String arn = describeDbClusterResponse.dbClusters().get(0).dbClusterArn(); try { - proxyClient2.injectCredentialsAndInvokeV2(Translator.createGlobalClusterRequest(resourceModel, arn), proxyClient2.client()::createGlobalCluster); + proxyClient2.injectCredentialsAndInvokeV2(Translator.createGlobalClusterRequest(resourceModel, arn, Tagging.TagSet.emptySet()), proxyClient2.client()::createGlobalCluster); callbackContext.setGlobalClusterCreated(true); } catch (GlobalClusterAlreadyExistsException e) { throw new CfnAlreadyExistsException(e); diff --git a/aws-rds-globalcluster/src/main/java/software/amazon/rds/globalcluster/Translator.java b/aws-rds-globalcluster/src/main/java/software/amazon/rds/globalcluster/Translator.java index 15c8f7f7c..7bacf3adc 100644 --- a/aws-rds-globalcluster/src/main/java/software/amazon/rds/globalcluster/Translator.java +++ b/aws-rds-globalcluster/src/main/java/software/amazon/rds/globalcluster/Translator.java @@ -21,10 +21,10 @@ public class Translator { static CreateGlobalClusterRequest createGlobalClusterRequest(final ResourceModel model) { - return createGlobalClusterRequest(model, null); + return createGlobalClusterRequest(model, null, Tagging.TagSet.emptySet()); } - static CreateGlobalClusterRequest createGlobalClusterRequest(final ResourceModel model, String dbClusterArn) { + static CreateGlobalClusterRequest createGlobalClusterRequest(final ResourceModel model, String dbClusterArn, final Tagging.TagSet tagSet) { return CreateGlobalClusterRequest.builder() .engine(model.getEngine()) .engineVersion(model.getEngineVersion()) @@ -33,6 +33,7 @@ static CreateGlobalClusterRequest createGlobalClusterRequest(final ResourceModel .sourceDBClusterIdentifier(StringUtils.isBlank(dbClusterArn) ? model.getSourceDBClusterIdentifier() : dbClusterArn) .storageEncrypted(model.getStorageEncrypted()) .engineLifecycleSupport(model.getEngineLifecycleSupport()) + .tags(Tagging.translateTagsToSdk(tagSet)) .build(); }