From 4cd25358a88a58e120046aaf3619d68faa2cef9c Mon Sep 17 00:00:00 2001 From: Raghav Muddur Date: Thu, 3 Jun 2021 03:39:39 -0700 Subject: [PATCH] Update only ElastiCache tests to use new SDK Update json files in test to use v1.38.52. Used ReplicationGroup for some old tests and updated generator.yaml to potentially match elasticache. --- pkg/generate/code/set_resource_test.go | 773 +++++++++++------- pkg/generate/code/set_sdk_test.go | 248 ++++-- pkg/generate/elasticache_test.go | 120 ++- .../apis/elasticache/0000-00-00/api-2.json | 763 ++++++++++++++++- .../apis/elasticache/0000-00-00/docs-2.json | 650 ++++++++++++--- .../elasticache/0000-00-00/generator.yaml | 115 ++- 6 files changed, 2095 insertions(+), 574 deletions(-) diff --git a/pkg/generate/code/set_resource_test.go b/pkg/generate/code/set_resource_test.go index d338933f..4517a52d 100644 --- a/pkg/generate/code/set_resource_test.go +++ b/pkg/generate/code/set_resource_test.go @@ -706,199 +706,263 @@ func TestSetResource_ECR_Repository_ReadMany(t *testing.T) { ) } -func TestSetResource_Elasticache_CacheCluster_Create(t *testing.T) { +func TestSetResource_Elasticache_ReplicationGroup_Create(t *testing.T) { assert := assert.New(t) require := require.New(t) g := testutil.NewGeneratorForService(t, "elasticache") - crd := testutil.GetCRDByName(t, g, "CacheCluster") + crd := testutil.GetCRDByName(t, g, "ReplicationGroup") require.NotNil(crd) expected := ` if ko.Status.ACKResourceMetadata == nil { ko.Status.ACKResourceMetadata = &ackv1alpha1.ResourceMetadata{} } - if resp.CacheCluster.ARN != nil { - arn := ackv1alpha1.AWSResourceName(*resp.CacheCluster.ARN) + if resp.ReplicationGroup.ARN != nil { + arn := ackv1alpha1.AWSResourceName(*resp.ReplicationGroup.ARN) ko.Status.ACKResourceMetadata.ARN = &arn } - if resp.CacheCluster.AtRestEncryptionEnabled != nil { - ko.Status.AtRestEncryptionEnabled = resp.CacheCluster.AtRestEncryptionEnabled - } else { - ko.Status.AtRestEncryptionEnabled = nil - } - if resp.CacheCluster.AuthTokenEnabled != nil { - ko.Status.AuthTokenEnabled = resp.CacheCluster.AuthTokenEnabled + if resp.ReplicationGroup.AuthTokenEnabled != nil { + ko.Status.AuthTokenEnabled = resp.ReplicationGroup.AuthTokenEnabled } else { ko.Status.AuthTokenEnabled = nil } - if resp.CacheCluster.AuthTokenLastModifiedDate != nil { - ko.Status.AuthTokenLastModifiedDate = &metav1.Time{*resp.CacheCluster.AuthTokenLastModifiedDate} + if resp.ReplicationGroup.AuthTokenLastModifiedDate != nil { + ko.Status.AuthTokenLastModifiedDate = &metav1.Time{*resp.ReplicationGroup.AuthTokenLastModifiedDate} } else { ko.Status.AuthTokenLastModifiedDate = nil } - if resp.CacheCluster.CacheClusterCreateTime != nil { - ko.Status.CacheClusterCreateTime = &metav1.Time{*resp.CacheCluster.CacheClusterCreateTime} + if resp.ReplicationGroup.AutomaticFailover != nil { + ko.Status.AutomaticFailover = resp.ReplicationGroup.AutomaticFailover } else { - ko.Status.CacheClusterCreateTime = nil + ko.Status.AutomaticFailover = nil } - if resp.CacheCluster.CacheClusterStatus != nil { - ko.Status.CacheClusterStatus = resp.CacheCluster.CacheClusterStatus + if resp.ReplicationGroup.ClusterEnabled != nil { + ko.Status.ClusterEnabled = resp.ReplicationGroup.ClusterEnabled } else { - ko.Status.CacheClusterStatus = nil + ko.Status.ClusterEnabled = nil } - if resp.CacheCluster.CacheNodes != nil { - f9 := []*svcapitypes.CacheNode{} - for _, f9iter := range resp.CacheCluster.CacheNodes { - f9elem := &svcapitypes.CacheNode{} - if f9iter.CacheNodeCreateTime != nil { - f9elem.CacheNodeCreateTime = &metav1.Time{*f9iter.CacheNodeCreateTime} - } - if f9iter.CacheNodeId != nil { - f9elem.CacheNodeID = f9iter.CacheNodeId - } - if f9iter.CacheNodeStatus != nil { - f9elem.CacheNodeStatus = f9iter.CacheNodeStatus - } - if f9iter.CustomerAvailabilityZone != nil { - f9elem.CustomerAvailabilityZone = f9iter.CustomerAvailabilityZone - } - if f9iter.Endpoint != nil { - f9elemf4 := &svcapitypes.Endpoint{} - if f9iter.Endpoint.Address != nil { - f9elemf4.Address = f9iter.Endpoint.Address - } - if f9iter.Endpoint.Port != nil { - f9elemf4.Port = f9iter.Endpoint.Port - } - f9elem.Endpoint = f9elemf4 - } - if f9iter.ParameterGroupStatus != nil { - f9elem.ParameterGroupStatus = f9iter.ParameterGroupStatus - } - if f9iter.SourceCacheNodeId != nil { - f9elem.SourceCacheNodeID = f9iter.SourceCacheNodeId - } - f9 = append(f9, f9elem) + if resp.ReplicationGroup.ConfigurationEndpoint != nil { + f7 := &svcapitypes.Endpoint{} + if resp.ReplicationGroup.ConfigurationEndpoint.Address != nil { + f7.Address = resp.ReplicationGroup.ConfigurationEndpoint.Address } - ko.Status.CacheNodes = f9 + if resp.ReplicationGroup.ConfigurationEndpoint.Port != nil { + f7.Port = resp.ReplicationGroup.ConfigurationEndpoint.Port + } + ko.Status.ConfigurationEndpoint = f7 } else { - ko.Status.CacheNodes = nil + ko.Status.ConfigurationEndpoint = nil } - if resp.CacheCluster.CacheParameterGroup != nil { - f10 := &svcapitypes.CacheParameterGroupStatus_SDK{} - if resp.CacheCluster.CacheParameterGroup.CacheNodeIdsToReboot != nil { - f10f0 := []*string{} - for _, f10f0iter := range resp.CacheCluster.CacheParameterGroup.CacheNodeIdsToReboot { - var f10f0elem string - f10f0elem = *f10f0iter - f10f0 = append(f10f0, &f10f0elem) - } - f10.CacheNodeIDsToReboot = f10f0 - } - if resp.CacheCluster.CacheParameterGroup.CacheParameterGroupName != nil { - f10.CacheParameterGroupName = resp.CacheCluster.CacheParameterGroup.CacheParameterGroupName + if resp.ReplicationGroup.Description != nil { + ko.Status.Description = resp.ReplicationGroup.Description + } else { + ko.Status.Description = nil + } + if resp.ReplicationGroup.GlobalReplicationGroupInfo != nil { + f9 := &svcapitypes.GlobalReplicationGroupInfo{} + if resp.ReplicationGroup.GlobalReplicationGroupInfo.GlobalReplicationGroupId != nil { + f9.GlobalReplicationGroupID = resp.ReplicationGroup.GlobalReplicationGroupInfo.GlobalReplicationGroupId } - if resp.CacheCluster.CacheParameterGroup.ParameterApplyStatus != nil { - f10.ParameterApplyStatus = resp.CacheCluster.CacheParameterGroup.ParameterApplyStatus + if resp.ReplicationGroup.GlobalReplicationGroupInfo.GlobalReplicationGroupMemberRole != nil { + f9.GlobalReplicationGroupMemberRole = resp.ReplicationGroup.GlobalReplicationGroupInfo.GlobalReplicationGroupMemberRole } - ko.Status.CacheParameterGroup = f10 + ko.Status.GlobalReplicationGroupInfo = f9 } else { - ko.Status.CacheParameterGroup = nil + ko.Status.GlobalReplicationGroupInfo = nil } - if resp.CacheCluster.CacheSecurityGroups != nil { - f11 := []*svcapitypes.CacheSecurityGroupMembership{} - for _, f11iter := range resp.CacheCluster.CacheSecurityGroups { - f11elem := &svcapitypes.CacheSecurityGroupMembership{} - if f11iter.CacheSecurityGroupName != nil { - f11elem.CacheSecurityGroupName = f11iter.CacheSecurityGroupName - } - if f11iter.Status != nil { - f11elem.Status = f11iter.Status - } - f11 = append(f11, f11elem) + if resp.ReplicationGroup.MemberClusters != nil { + f12 := []*string{} + for _, f12iter := range resp.ReplicationGroup.MemberClusters { + var f12elem string + f12elem = *f12iter + f12 = append(f12, &f12elem) } - ko.Status.CacheSecurityGroups = f11 + ko.Status.MemberClusters = f12 } else { - ko.Status.CacheSecurityGroups = nil + ko.Status.MemberClusters = nil } - if resp.CacheCluster.ClientDownloadLandingPage != nil { - ko.Status.ClientDownloadLandingPage = resp.CacheCluster.ClientDownloadLandingPage + if resp.ReplicationGroup.MemberClustersOutpostArns != nil { + f13 := []*string{} + for _, f13iter := range resp.ReplicationGroup.MemberClustersOutpostArns { + var f13elem string + f13elem = *f13iter + f13 = append(f13, &f13elem) + } + ko.Status.MemberClustersOutpostARNs = f13 } else { - ko.Status.ClientDownloadLandingPage = nil + ko.Status.MemberClustersOutpostARNs = nil } - if resp.CacheCluster.ConfigurationEndpoint != nil { - f14 := &svcapitypes.Endpoint{} - if resp.CacheCluster.ConfigurationEndpoint.Address != nil { - f14.Address = resp.CacheCluster.ConfigurationEndpoint.Address - } - if resp.CacheCluster.ConfigurationEndpoint.Port != nil { - f14.Port = resp.CacheCluster.ConfigurationEndpoint.Port - } - ko.Status.ConfigurationEndpoint = f14 + if resp.ReplicationGroup.MultiAZ != nil { + ko.Status.MultiAZ = resp.ReplicationGroup.MultiAZ } else { - ko.Status.ConfigurationEndpoint = nil + ko.Status.MultiAZ = nil } - if resp.CacheCluster.NotificationConfiguration != nil { - f17 := &svcapitypes.NotificationConfiguration{} - if resp.CacheCluster.NotificationConfiguration.TopicArn != nil { - f17.TopicARN = resp.CacheCluster.NotificationConfiguration.TopicArn - } - if resp.CacheCluster.NotificationConfiguration.TopicStatus != nil { - f17.TopicStatus = resp.CacheCluster.NotificationConfiguration.TopicStatus + if resp.ReplicationGroup.NodeGroups != nil { + f15 := []*svcapitypes.NodeGroup{} + for _, f15iter := range resp.ReplicationGroup.NodeGroups { + f15elem := &svcapitypes.NodeGroup{} + if f15iter.NodeGroupId != nil { + f15elem.NodeGroupID = f15iter.NodeGroupId + } + if f15iter.NodeGroupMembers != nil { + f15elemf1 := []*svcapitypes.NodeGroupMember{} + for _, f15elemf1iter := range f15iter.NodeGroupMembers { + f15elemf1elem := &svcapitypes.NodeGroupMember{} + if f15elemf1iter.CacheClusterId != nil { + f15elemf1elem.CacheClusterID = f15elemf1iter.CacheClusterId + } + if f15elemf1iter.CacheNodeId != nil { + f15elemf1elem.CacheNodeID = f15elemf1iter.CacheNodeId + } + if f15elemf1iter.CurrentRole != nil { + f15elemf1elem.CurrentRole = f15elemf1iter.CurrentRole + } + if f15elemf1iter.PreferredAvailabilityZone != nil { + f15elemf1elem.PreferredAvailabilityZone = f15elemf1iter.PreferredAvailabilityZone + } + if f15elemf1iter.PreferredOutpostArn != nil { + f15elemf1elem.PreferredOutpostARN = f15elemf1iter.PreferredOutpostArn + } + if f15elemf1iter.ReadEndpoint != nil { + f15elemf1elemf5 := &svcapitypes.Endpoint{} + if f15elemf1iter.ReadEndpoint.Address != nil { + f15elemf1elemf5.Address = f15elemf1iter.ReadEndpoint.Address + } + if f15elemf1iter.ReadEndpoint.Port != nil { + f15elemf1elemf5.Port = f15elemf1iter.ReadEndpoint.Port + } + f15elemf1elem.ReadEndpoint = f15elemf1elemf5 + } + f15elemf1 = append(f15elemf1, f15elemf1elem) + } + f15elem.NodeGroupMembers = f15elemf1 + } + if f15iter.PrimaryEndpoint != nil { + f15elemf2 := &svcapitypes.Endpoint{} + if f15iter.PrimaryEndpoint.Address != nil { + f15elemf2.Address = f15iter.PrimaryEndpoint.Address + } + if f15iter.PrimaryEndpoint.Port != nil { + f15elemf2.Port = f15iter.PrimaryEndpoint.Port + } + f15elem.PrimaryEndpoint = f15elemf2 + } + if f15iter.ReaderEndpoint != nil { + f15elemf3 := &svcapitypes.Endpoint{} + if f15iter.ReaderEndpoint.Address != nil { + f15elemf3.Address = f15iter.ReaderEndpoint.Address + } + if f15iter.ReaderEndpoint.Port != nil { + f15elemf3.Port = f15iter.ReaderEndpoint.Port + } + f15elem.ReaderEndpoint = f15elemf3 + } + if f15iter.Slots != nil { + f15elem.Slots = f15iter.Slots + } + if f15iter.Status != nil { + f15elem.Status = f15iter.Status + } + f15 = append(f15, f15elem) } - ko.Status.NotificationConfiguration = f17 + ko.Status.NodeGroups = f15 } else { - ko.Status.NotificationConfiguration = nil + ko.Status.NodeGroups = nil } - if resp.CacheCluster.PendingModifiedValues != nil { - f19 := &svcapitypes.PendingModifiedValues{} - if resp.CacheCluster.PendingModifiedValues.AuthTokenStatus != nil { - f19.AuthTokenStatus = resp.CacheCluster.PendingModifiedValues.AuthTokenStatus + if resp.ReplicationGroup.PendingModifiedValues != nil { + f16 := &svcapitypes.ReplicationGroupPendingModifiedValues{} + if resp.ReplicationGroup.PendingModifiedValues.AuthTokenStatus != nil { + f16.AuthTokenStatus = resp.ReplicationGroup.PendingModifiedValues.AuthTokenStatus } - if resp.CacheCluster.PendingModifiedValues.CacheNodeIdsToRemove != nil { - f19f1 := []*string{} - for _, f19f1iter := range resp.CacheCluster.PendingModifiedValues.CacheNodeIdsToRemove { - var f19f1elem string - f19f1elem = *f19f1iter - f19f1 = append(f19f1, &f19f1elem) - } - f19.CacheNodeIDsToRemove = f19f1 + if resp.ReplicationGroup.PendingModifiedValues.AutomaticFailoverStatus != nil { + f16.AutomaticFailoverStatus = resp.ReplicationGroup.PendingModifiedValues.AutomaticFailoverStatus } - if resp.CacheCluster.PendingModifiedValues.CacheNodeType != nil { - f19.CacheNodeType = resp.CacheCluster.PendingModifiedValues.CacheNodeType + if resp.ReplicationGroup.PendingModifiedValues.LogDeliveryConfigurations != nil { + f16f2 := []*svcapitypes.PendingLogDeliveryConfiguration{} + for _, f16f2iter := range resp.ReplicationGroup.PendingModifiedValues.LogDeliveryConfigurations { + f16f2elem := &svcapitypes.PendingLogDeliveryConfiguration{} + if f16f2iter.DestinationDetails != nil { + f16f2elemf0 := &svcapitypes.DestinationDetails{} + if f16f2iter.DestinationDetails.CloudWatchLogsDetails != nil { + f16f2elemf0f0 := &svcapitypes.CloudWatchLogsDestinationDetails{} + if f16f2iter.DestinationDetails.CloudWatchLogsDetails.LogGroup != nil { + f16f2elemf0f0.LogGroup = f16f2iter.DestinationDetails.CloudWatchLogsDetails.LogGroup + } + f16f2elemf0.CloudWatchLogsDetails = f16f2elemf0f0 + } + if f16f2iter.DestinationDetails.KinesisFirehoseDetails != nil { + f16f2elemf0f1 := &svcapitypes.KinesisFirehoseDestinationDetails{} + if f16f2iter.DestinationDetails.KinesisFirehoseDetails.DeliveryStream != nil { + f16f2elemf0f1.DeliveryStream = f16f2iter.DestinationDetails.KinesisFirehoseDetails.DeliveryStream + } + f16f2elemf0.KinesisFirehoseDetails = f16f2elemf0f1 + } + f16f2elem.DestinationDetails = f16f2elemf0 + } + if f16f2iter.DestinationType != nil { + f16f2elem.DestinationType = f16f2iter.DestinationType + } + if f16f2iter.LogFormat != nil { + f16f2elem.LogFormat = f16f2iter.LogFormat + } + if f16f2iter.LogType != nil { + f16f2elem.LogType = f16f2iter.LogType + } + f16f2 = append(f16f2, f16f2elem) + } + f16.LogDeliveryConfigurations = f16f2 } - if resp.CacheCluster.PendingModifiedValues.EngineVersion != nil { - f19.EngineVersion = resp.CacheCluster.PendingModifiedValues.EngineVersion + if resp.ReplicationGroup.PendingModifiedValues.PrimaryClusterId != nil { + f16.PrimaryClusterID = resp.ReplicationGroup.PendingModifiedValues.PrimaryClusterId } - if resp.CacheCluster.PendingModifiedValues.NumCacheNodes != nil { - f19.NumCacheNodes = resp.CacheCluster.PendingModifiedValues.NumCacheNodes + if resp.ReplicationGroup.PendingModifiedValues.Resharding != nil { + f16f4 := &svcapitypes.ReshardingStatus{} + if resp.ReplicationGroup.PendingModifiedValues.Resharding.SlotMigration != nil { + f16f4f0 := &svcapitypes.SlotMigration{} + if resp.ReplicationGroup.PendingModifiedValues.Resharding.SlotMigration.ProgressPercentage != nil { + f16f4f0.ProgressPercentage = resp.ReplicationGroup.PendingModifiedValues.Resharding.SlotMigration.ProgressPercentage + } + f16f4.SlotMigration = f16f4f0 + } + f16.Resharding = f16f4 + } + if resp.ReplicationGroup.PendingModifiedValues.UserGroups != nil { + f16f5 := &svcapitypes.UserGroupsUpdateStatus{} + if resp.ReplicationGroup.PendingModifiedValues.UserGroups.UserGroupIdsToAdd != nil { + f16f5f0 := []*string{} + for _, f16f5f0iter := range resp.ReplicationGroup.PendingModifiedValues.UserGroups.UserGroupIdsToAdd { + var f16f5f0elem string + f16f5f0elem = *f16f5f0iter + f16f5f0 = append(f16f5f0, &f16f5f0elem) + } + f16f5.UserGroupIDsToAdd = f16f5f0 + } + if resp.ReplicationGroup.PendingModifiedValues.UserGroups.UserGroupIdsToRemove != nil { + f16f5f1 := []*string{} + for _, f16f5f1iter := range resp.ReplicationGroup.PendingModifiedValues.UserGroups.UserGroupIdsToRemove { + var f16f5f1elem string + f16f5f1elem = *f16f5f1iter + f16f5f1 = append(f16f5f1, &f16f5f1elem) + } + f16f5.UserGroupIDsToRemove = f16f5f1 + } + f16.UserGroups = f16f5 } - ko.Status.PendingModifiedValues = f19 + ko.Status.PendingModifiedValues = f16 } else { ko.Status.PendingModifiedValues = nil } - if resp.CacheCluster.SecurityGroups != nil { - f23 := []*svcapitypes.SecurityGroupMembership{} - for _, f23iter := range resp.CacheCluster.SecurityGroups { - f23elem := &svcapitypes.SecurityGroupMembership{} - if f23iter.SecurityGroupId != nil { - f23elem.SecurityGroupID = f23iter.SecurityGroupId - } - if f23iter.Status != nil { - f23elem.Status = f23iter.Status - } - f23 = append(f23, f23elem) - } - ko.Status.SecurityGroups = f23 + if resp.ReplicationGroup.SnapshottingClusterId != nil { + ko.Status.SnapshottingClusterID = resp.ReplicationGroup.SnapshottingClusterId } else { - ko.Status.SecurityGroups = nil + ko.Status.SnapshottingClusterID = nil } - if resp.CacheCluster.TransitEncryptionEnabled != nil { - ko.Status.TransitEncryptionEnabled = resp.CacheCluster.TransitEncryptionEnabled + if resp.ReplicationGroup.Status != nil { + ko.Status.Status = resp.ReplicationGroup.Status } else { - ko.Status.TransitEncryptionEnabled = nil + ko.Status.Status = nil } ` assert.Equal( @@ -907,18 +971,18 @@ func TestSetResource_Elasticache_CacheCluster_Create(t *testing.T) { ) } -func TestSetResource_Elasticache_CacheCluster_ReadMany(t *testing.T) { +func TestSetResource_Elasticache_ReplicationGroup_ReadMany(t *testing.T) { assert := assert.New(t) require := require.New(t) g := testutil.NewGeneratorForService(t, "elasticache") - crd := testutil.GetCRDByName(t, g, "CacheCluster") + crd := testutil.GetCRDByName(t, g, "ReplicationGroup") require.NotNil(crd) expected := ` found := false - for _, elem := range resp.CacheClusters { + for _, elem := range resp.ReplicationGroups { if elem.ARN != nil { if ko.Status.ACKResourceMetadata == nil { ko.Status.ACKResourceMetadata = &ackv1alpha1.ResourceMetadata{} @@ -927,9 +991,9 @@ func TestSetResource_Elasticache_CacheCluster_ReadMany(t *testing.T) { ko.Status.ACKResourceMetadata.ARN = &tmpARN } if elem.AtRestEncryptionEnabled != nil { - ko.Status.AtRestEncryptionEnabled = elem.AtRestEncryptionEnabled + ko.Spec.AtRestEncryptionEnabled = elem.AtRestEncryptionEnabled } else { - ko.Status.AtRestEncryptionEnabled = nil + ko.Spec.AtRestEncryptionEnabled = nil } if elem.AuthTokenEnabled != nil { ko.Status.AuthTokenEnabled = elem.AuthTokenEnabled @@ -941,213 +1005,279 @@ func TestSetResource_Elasticache_CacheCluster_ReadMany(t *testing.T) { } else { ko.Status.AuthTokenLastModifiedDate = nil } - if elem.AutoMinorVersionUpgrade != nil { - ko.Spec.AutoMinorVersionUpgrade = elem.AutoMinorVersionUpgrade + if elem.AutomaticFailover != nil { + ko.Status.AutomaticFailover = elem.AutomaticFailover } else { - ko.Spec.AutoMinorVersionUpgrade = nil + ko.Status.AutomaticFailover = nil } - if elem.CacheClusterCreateTime != nil { - ko.Status.CacheClusterCreateTime = &metav1.Time{*elem.CacheClusterCreateTime} + if elem.CacheNodeType != nil { + ko.Spec.CacheNodeType = elem.CacheNodeType } else { - ko.Status.CacheClusterCreateTime = nil + ko.Spec.CacheNodeType = nil } - if elem.CacheClusterId != nil { - ko.Spec.CacheClusterID = elem.CacheClusterId + if elem.ClusterEnabled != nil { + ko.Status.ClusterEnabled = elem.ClusterEnabled } else { - ko.Spec.CacheClusterID = nil + ko.Status.ClusterEnabled = nil } - if elem.CacheClusterStatus != nil { - ko.Status.CacheClusterStatus = elem.CacheClusterStatus + if elem.ConfigurationEndpoint != nil { + f7 := &svcapitypes.Endpoint{} + if elem.ConfigurationEndpoint.Address != nil { + f7.Address = elem.ConfigurationEndpoint.Address + } + if elem.ConfigurationEndpoint.Port != nil { + f7.Port = elem.ConfigurationEndpoint.Port + } + ko.Status.ConfigurationEndpoint = f7 } else { - ko.Status.CacheClusterStatus = nil + ko.Status.ConfigurationEndpoint = nil } - if elem.CacheNodeType != nil { - ko.Spec.CacheNodeType = elem.CacheNodeType + if elem.Description != nil { + ko.Status.Description = elem.Description } else { - ko.Spec.CacheNodeType = nil + ko.Status.Description = nil } - if elem.CacheNodes != nil { - f9 := []*svcapitypes.CacheNode{} - for _, f9iter := range elem.CacheNodes { - f9elem := &svcapitypes.CacheNode{} - if f9iter.CacheNodeCreateTime != nil { - f9elem.CacheNodeCreateTime = &metav1.Time{*f9iter.CacheNodeCreateTime} - } - if f9iter.CacheNodeId != nil { - f9elem.CacheNodeID = f9iter.CacheNodeId - } - if f9iter.CacheNodeStatus != nil { - f9elem.CacheNodeStatus = f9iter.CacheNodeStatus - } - if f9iter.CustomerAvailabilityZone != nil { - f9elem.CustomerAvailabilityZone = f9iter.CustomerAvailabilityZone - } - if f9iter.Endpoint != nil { - f9elemf4 := &svcapitypes.Endpoint{} - if f9iter.Endpoint.Address != nil { - f9elemf4.Address = f9iter.Endpoint.Address - } - if f9iter.Endpoint.Port != nil { - f9elemf4.Port = f9iter.Endpoint.Port - } - f9elem.Endpoint = f9elemf4 - } - if f9iter.ParameterGroupStatus != nil { - f9elem.ParameterGroupStatus = f9iter.ParameterGroupStatus - } - if f9iter.SourceCacheNodeId != nil { - f9elem.SourceCacheNodeID = f9iter.SourceCacheNodeId - } - f9 = append(f9, f9elem) + if elem.GlobalReplicationGroupInfo != nil { + f9 := &svcapitypes.GlobalReplicationGroupInfo{} + if elem.GlobalReplicationGroupInfo.GlobalReplicationGroupId != nil { + f9.GlobalReplicationGroupID = elem.GlobalReplicationGroupInfo.GlobalReplicationGroupId + } + if elem.GlobalReplicationGroupInfo.GlobalReplicationGroupMemberRole != nil { + f9.GlobalReplicationGroupMemberRole = elem.GlobalReplicationGroupInfo.GlobalReplicationGroupMemberRole } - ko.Status.CacheNodes = f9 + ko.Status.GlobalReplicationGroupInfo = f9 } else { - ko.Status.CacheNodes = nil + ko.Status.GlobalReplicationGroupInfo = nil } - if elem.CacheParameterGroup != nil { - f10 := &svcapitypes.CacheParameterGroupStatus_SDK{} - if elem.CacheParameterGroup.CacheNodeIdsToReboot != nil { - f10f0 := []*string{} - for _, f10f0iter := range elem.CacheParameterGroup.CacheNodeIdsToReboot { - var f10f0elem string - f10f0elem = *f10f0iter - f10f0 = append(f10f0, &f10f0elem) - } - f10.CacheNodeIDsToReboot = f10f0 - } - if elem.CacheParameterGroup.CacheParameterGroupName != nil { - f10.CacheParameterGroupName = elem.CacheParameterGroup.CacheParameterGroupName - } - if elem.CacheParameterGroup.ParameterApplyStatus != nil { - f10.ParameterApplyStatus = elem.CacheParameterGroup.ParameterApplyStatus - } - ko.Status.CacheParameterGroup = f10 + if elem.KmsKeyId != nil { + ko.Spec.KMSKeyID = elem.KmsKeyId } else { - ko.Status.CacheParameterGroup = nil + ko.Spec.KMSKeyID = nil } - if elem.CacheSecurityGroups != nil { - f11 := []*svcapitypes.CacheSecurityGroupMembership{} - for _, f11iter := range elem.CacheSecurityGroups { - f11elem := &svcapitypes.CacheSecurityGroupMembership{} - if f11iter.CacheSecurityGroupName != nil { - f11elem.CacheSecurityGroupName = f11iter.CacheSecurityGroupName + if elem.LogDeliveryConfigurations != nil { + f11 := []*svcapitypes.LogDeliveryConfigurationRequest{} + for _, f11iter := range elem.LogDeliveryConfigurations { + f11elem := &svcapitypes.LogDeliveryConfigurationRequest{} + if f11iter.DestinationDetails != nil { + f11elemf0 := &svcapitypes.DestinationDetails{} + if f11iter.DestinationDetails.CloudWatchLogsDetails != nil { + f11elemf0f0 := &svcapitypes.CloudWatchLogsDestinationDetails{} + if f11iter.DestinationDetails.CloudWatchLogsDetails.LogGroup != nil { + f11elemf0f0.LogGroup = f11iter.DestinationDetails.CloudWatchLogsDetails.LogGroup + } + f11elemf0.CloudWatchLogsDetails = f11elemf0f0 + } + if f11iter.DestinationDetails.KinesisFirehoseDetails != nil { + f11elemf0f1 := &svcapitypes.KinesisFirehoseDestinationDetails{} + if f11iter.DestinationDetails.KinesisFirehoseDetails.DeliveryStream != nil { + f11elemf0f1.DeliveryStream = f11iter.DestinationDetails.KinesisFirehoseDetails.DeliveryStream + } + f11elemf0.KinesisFirehoseDetails = f11elemf0f1 + } + f11elem.DestinationDetails = f11elemf0 } - if f11iter.Status != nil { - f11elem.Status = f11iter.Status + if f11iter.DestinationType != nil { + f11elem.DestinationType = f11iter.DestinationType + } + if f11iter.LogFormat != nil { + f11elem.LogFormat = f11iter.LogFormat + } + if f11iter.LogType != nil { + f11elem.LogType = f11iter.LogType } f11 = append(f11, f11elem) } - ko.Status.CacheSecurityGroups = f11 - } else { - ko.Status.CacheSecurityGroups = nil - } - if elem.CacheSubnetGroupName != nil { - ko.Spec.CacheSubnetGroupName = elem.CacheSubnetGroupName - } else { - ko.Spec.CacheSubnetGroupName = nil - } - if elem.ClientDownloadLandingPage != nil { - ko.Status.ClientDownloadLandingPage = elem.ClientDownloadLandingPage + ko.Spec.LogDeliveryConfigurations = f11 } else { - ko.Status.ClientDownloadLandingPage = nil + ko.Spec.LogDeliveryConfigurations = nil } - if elem.ConfigurationEndpoint != nil { - f14 := &svcapitypes.Endpoint{} - if elem.ConfigurationEndpoint.Address != nil { - f14.Address = elem.ConfigurationEndpoint.Address - } - if elem.ConfigurationEndpoint.Port != nil { - f14.Port = elem.ConfigurationEndpoint.Port + if elem.MemberClusters != nil { + f12 := []*string{} + for _, f12iter := range elem.MemberClusters { + var f12elem string + f12elem = *f12iter + f12 = append(f12, &f12elem) } - ko.Status.ConfigurationEndpoint = f14 + ko.Status.MemberClusters = f12 } else { - ko.Status.ConfigurationEndpoint = nil + ko.Status.MemberClusters = nil } - if elem.Engine != nil { - ko.Spec.Engine = elem.Engine + if elem.MemberClustersOutpostArns != nil { + f13 := []*string{} + for _, f13iter := range elem.MemberClustersOutpostArns { + var f13elem string + f13elem = *f13iter + f13 = append(f13, &f13elem) + } + ko.Status.MemberClustersOutpostARNs = f13 } else { - ko.Spec.Engine = nil + ko.Status.MemberClustersOutpostARNs = nil } - if elem.EngineVersion != nil { - ko.Spec.EngineVersion = elem.EngineVersion + if elem.MultiAZ != nil { + ko.Status.MultiAZ = elem.MultiAZ } else { - ko.Spec.EngineVersion = nil + ko.Status.MultiAZ = nil } - if elem.NotificationConfiguration != nil { - f17 := &svcapitypes.NotificationConfiguration{} - if elem.NotificationConfiguration.TopicArn != nil { - f17.TopicARN = elem.NotificationConfiguration.TopicArn - } - if elem.NotificationConfiguration.TopicStatus != nil { - f17.TopicStatus = elem.NotificationConfiguration.TopicStatus + if elem.NodeGroups != nil { + f15 := []*svcapitypes.NodeGroup{} + for _, f15iter := range elem.NodeGroups { + f15elem := &svcapitypes.NodeGroup{} + if f15iter.NodeGroupId != nil { + f15elem.NodeGroupID = f15iter.NodeGroupId + } + if f15iter.NodeGroupMembers != nil { + f15elemf1 := []*svcapitypes.NodeGroupMember{} + for _, f15elemf1iter := range f15iter.NodeGroupMembers { + f15elemf1elem := &svcapitypes.NodeGroupMember{} + if f15elemf1iter.CacheClusterId != nil { + f15elemf1elem.CacheClusterID = f15elemf1iter.CacheClusterId + } + if f15elemf1iter.CacheNodeId != nil { + f15elemf1elem.CacheNodeID = f15elemf1iter.CacheNodeId + } + if f15elemf1iter.CurrentRole != nil { + f15elemf1elem.CurrentRole = f15elemf1iter.CurrentRole + } + if f15elemf1iter.PreferredAvailabilityZone != nil { + f15elemf1elem.PreferredAvailabilityZone = f15elemf1iter.PreferredAvailabilityZone + } + if f15elemf1iter.PreferredOutpostArn != nil { + f15elemf1elem.PreferredOutpostARN = f15elemf1iter.PreferredOutpostArn + } + if f15elemf1iter.ReadEndpoint != nil { + f15elemf1elemf5 := &svcapitypes.Endpoint{} + if f15elemf1iter.ReadEndpoint.Address != nil { + f15elemf1elemf5.Address = f15elemf1iter.ReadEndpoint.Address + } + if f15elemf1iter.ReadEndpoint.Port != nil { + f15elemf1elemf5.Port = f15elemf1iter.ReadEndpoint.Port + } + f15elemf1elem.ReadEndpoint = f15elemf1elemf5 + } + f15elemf1 = append(f15elemf1, f15elemf1elem) + } + f15elem.NodeGroupMembers = f15elemf1 + } + if f15iter.PrimaryEndpoint != nil { + f15elemf2 := &svcapitypes.Endpoint{} + if f15iter.PrimaryEndpoint.Address != nil { + f15elemf2.Address = f15iter.PrimaryEndpoint.Address + } + if f15iter.PrimaryEndpoint.Port != nil { + f15elemf2.Port = f15iter.PrimaryEndpoint.Port + } + f15elem.PrimaryEndpoint = f15elemf2 + } + if f15iter.ReaderEndpoint != nil { + f15elemf3 := &svcapitypes.Endpoint{} + if f15iter.ReaderEndpoint.Address != nil { + f15elemf3.Address = f15iter.ReaderEndpoint.Address + } + if f15iter.ReaderEndpoint.Port != nil { + f15elemf3.Port = f15iter.ReaderEndpoint.Port + } + f15elem.ReaderEndpoint = f15elemf3 + } + if f15iter.Slots != nil { + f15elem.Slots = f15iter.Slots + } + if f15iter.Status != nil { + f15elem.Status = f15iter.Status + } + f15 = append(f15, f15elem) } - ko.Status.NotificationConfiguration = f17 + ko.Status.NodeGroups = f15 } else { - ko.Status.NotificationConfiguration = nil - } - if elem.NumCacheNodes != nil { - ko.Spec.NumCacheNodes = elem.NumCacheNodes - } else { - ko.Spec.NumCacheNodes = nil + ko.Status.NodeGroups = nil } if elem.PendingModifiedValues != nil { - f19 := &svcapitypes.PendingModifiedValues{} + f16 := &svcapitypes.ReplicationGroupPendingModifiedValues{} if elem.PendingModifiedValues.AuthTokenStatus != nil { - f19.AuthTokenStatus = elem.PendingModifiedValues.AuthTokenStatus - } - if elem.PendingModifiedValues.CacheNodeIdsToRemove != nil { - f19f1 := []*string{} - for _, f19f1iter := range elem.PendingModifiedValues.CacheNodeIdsToRemove { - var f19f1elem string - f19f1elem = *f19f1iter - f19f1 = append(f19f1, &f19f1elem) + f16.AuthTokenStatus = elem.PendingModifiedValues.AuthTokenStatus + } + if elem.PendingModifiedValues.AutomaticFailoverStatus != nil { + f16.AutomaticFailoverStatus = elem.PendingModifiedValues.AutomaticFailoverStatus + } + if elem.PendingModifiedValues.LogDeliveryConfigurations != nil { + f16f2 := []*svcapitypes.PendingLogDeliveryConfiguration{} + for _, f16f2iter := range elem.PendingModifiedValues.LogDeliveryConfigurations { + f16f2elem := &svcapitypes.PendingLogDeliveryConfiguration{} + if f16f2iter.DestinationDetails != nil { + f16f2elemf0 := &svcapitypes.DestinationDetails{} + if f16f2iter.DestinationDetails.CloudWatchLogsDetails != nil { + f16f2elemf0f0 := &svcapitypes.CloudWatchLogsDestinationDetails{} + if f16f2iter.DestinationDetails.CloudWatchLogsDetails.LogGroup != nil { + f16f2elemf0f0.LogGroup = f16f2iter.DestinationDetails.CloudWatchLogsDetails.LogGroup + } + f16f2elemf0.CloudWatchLogsDetails = f16f2elemf0f0 + } + if f16f2iter.DestinationDetails.KinesisFirehoseDetails != nil { + f16f2elemf0f1 := &svcapitypes.KinesisFirehoseDestinationDetails{} + if f16f2iter.DestinationDetails.KinesisFirehoseDetails.DeliveryStream != nil { + f16f2elemf0f1.DeliveryStream = f16f2iter.DestinationDetails.KinesisFirehoseDetails.DeliveryStream + } + f16f2elemf0.KinesisFirehoseDetails = f16f2elemf0f1 + } + f16f2elem.DestinationDetails = f16f2elemf0 + } + if f16f2iter.DestinationType != nil { + f16f2elem.DestinationType = f16f2iter.DestinationType + } + if f16f2iter.LogFormat != nil { + f16f2elem.LogFormat = f16f2iter.LogFormat + } + if f16f2iter.LogType != nil { + f16f2elem.LogType = f16f2iter.LogType + } + f16f2 = append(f16f2, f16f2elem) } - f19.CacheNodeIDsToRemove = f19f1 - } - if elem.PendingModifiedValues.CacheNodeType != nil { - f19.CacheNodeType = elem.PendingModifiedValues.CacheNodeType + f16.LogDeliveryConfigurations = f16f2 } - if elem.PendingModifiedValues.EngineVersion != nil { - f19.EngineVersion = elem.PendingModifiedValues.EngineVersion + if elem.PendingModifiedValues.PrimaryClusterId != nil { + f16.PrimaryClusterID = elem.PendingModifiedValues.PrimaryClusterId } - if elem.PendingModifiedValues.NumCacheNodes != nil { - f19.NumCacheNodes = elem.PendingModifiedValues.NumCacheNodes + if elem.PendingModifiedValues.Resharding != nil { + f16f4 := &svcapitypes.ReshardingStatus{} + if elem.PendingModifiedValues.Resharding.SlotMigration != nil { + f16f4f0 := &svcapitypes.SlotMigration{} + if elem.PendingModifiedValues.Resharding.SlotMigration.ProgressPercentage != nil { + f16f4f0.ProgressPercentage = elem.PendingModifiedValues.Resharding.SlotMigration.ProgressPercentage + } + f16f4.SlotMigration = f16f4f0 + } + f16.Resharding = f16f4 + } + if elem.PendingModifiedValues.UserGroups != nil { + f16f5 := &svcapitypes.UserGroupsUpdateStatus{} + if elem.PendingModifiedValues.UserGroups.UserGroupIdsToAdd != nil { + f16f5f0 := []*string{} + for _, f16f5f0iter := range elem.PendingModifiedValues.UserGroups.UserGroupIdsToAdd { + var f16f5f0elem string + f16f5f0elem = *f16f5f0iter + f16f5f0 = append(f16f5f0, &f16f5f0elem) + } + f16f5.UserGroupIDsToAdd = f16f5f0 + } + if elem.PendingModifiedValues.UserGroups.UserGroupIdsToRemove != nil { + f16f5f1 := []*string{} + for _, f16f5f1iter := range elem.PendingModifiedValues.UserGroups.UserGroupIdsToRemove { + var f16f5f1elem string + f16f5f1elem = *f16f5f1iter + f16f5f1 = append(f16f5f1, &f16f5f1elem) + } + f16f5.UserGroupIDsToRemove = f16f5f1 + } + f16.UserGroups = f16f5 } - ko.Status.PendingModifiedValues = f19 + ko.Status.PendingModifiedValues = f16 } else { ko.Status.PendingModifiedValues = nil } - if elem.PreferredAvailabilityZone != nil { - ko.Spec.PreferredAvailabilityZone = elem.PreferredAvailabilityZone - } else { - ko.Spec.PreferredAvailabilityZone = nil - } - if elem.PreferredMaintenanceWindow != nil { - ko.Spec.PreferredMaintenanceWindow = elem.PreferredMaintenanceWindow - } else { - ko.Spec.PreferredMaintenanceWindow = nil - } if elem.ReplicationGroupId != nil { ko.Spec.ReplicationGroupID = elem.ReplicationGroupId } else { ko.Spec.ReplicationGroupID = nil } - if elem.SecurityGroups != nil { - f23 := []*svcapitypes.SecurityGroupMembership{} - for _, f23iter := range elem.SecurityGroups { - f23elem := &svcapitypes.SecurityGroupMembership{} - if f23iter.SecurityGroupId != nil { - f23elem.SecurityGroupID = f23iter.SecurityGroupId - } - if f23iter.Status != nil { - f23elem.Status = f23iter.Status - } - f23 = append(f23, f23elem) - } - ko.Status.SecurityGroups = f23 - } else { - ko.Status.SecurityGroups = nil - } if elem.SnapshotRetentionLimit != nil { ko.Spec.SnapshotRetentionLimit = elem.SnapshotRetentionLimit } else { @@ -1158,10 +1288,31 @@ func TestSetResource_Elasticache_CacheCluster_ReadMany(t *testing.T) { } else { ko.Spec.SnapshotWindow = nil } + if elem.SnapshottingClusterId != nil { + ko.Status.SnapshottingClusterID = elem.SnapshottingClusterId + } else { + ko.Status.SnapshottingClusterID = nil + } + if elem.Status != nil { + ko.Status.Status = elem.Status + } else { + ko.Status.Status = nil + } if elem.TransitEncryptionEnabled != nil { - ko.Status.TransitEncryptionEnabled = elem.TransitEncryptionEnabled + ko.Spec.TransitEncryptionEnabled = elem.TransitEncryptionEnabled + } else { + ko.Spec.TransitEncryptionEnabled = nil + } + if elem.UserGroupIds != nil { + f23 := []*string{} + for _, f23iter := range elem.UserGroupIds { + var f23elem string + f23elem = *f23iter + f23 = append(f23, &f23elem) + } + ko.Spec.UserGroupIDs = f23 } else { - ko.Status.TransitEncryptionEnabled = nil + ko.Spec.UserGroupIDs = nil } found = true break diff --git a/pkg/generate/code/set_sdk_test.go b/pkg/generate/code/set_sdk_test.go index 28a8e2d0..1c2fa139 100644 --- a/pkg/generate/code/set_sdk_test.go +++ b/pkg/generate/code/set_sdk_test.go @@ -739,27 +739,33 @@ func TestSetSDK_ECR_Repository_Create(t *testing.T) { ) } -func TestSetSDK_Elasticache_CacheCluster_Create(t *testing.T) { +func TestSetSDK_Elasticache_ReplicationGroup_Create(t *testing.T) { assert := assert.New(t) require := require.New(t) g := testutil.NewGeneratorForService(t, "elasticache") - crd := testutil.GetCRDByName(t, g, "CacheCluster") + crd := testutil.GetCRDByName(t, g, "ReplicationGroup") require.NotNil(crd) expected := ` - if r.ko.Spec.AZMode != nil { - res.SetAZMode(*r.ko.Spec.AZMode) + if r.ko.Spec.AtRestEncryptionEnabled != nil { + res.SetAtRestEncryptionEnabled(*r.ko.Spec.AtRestEncryptionEnabled) } if r.ko.Spec.AuthToken != nil { - res.SetAuthToken(*r.ko.Spec.AuthToken) + tmpSecret, err := rm.rr.SecretValueFromReference(ctx, r.ko.Spec.AuthToken) + if err != nil { + return nil, err + } + if tmpSecret != "" { + res.SetAuthToken(tmpSecret) + } } if r.ko.Spec.AutoMinorVersionUpgrade != nil { res.SetAutoMinorVersionUpgrade(*r.ko.Spec.AutoMinorVersionUpgrade) } - if r.ko.Spec.CacheClusterID != nil { - res.SetCacheClusterId(*r.ko.Spec.CacheClusterID) + if r.ko.Spec.AutomaticFailoverEnabled != nil { + res.SetAutomaticFailoverEnabled(*r.ko.Spec.AutomaticFailoverEnabled) } if r.ko.Spec.CacheNodeType != nil { res.SetCacheNodeType(*r.ko.Spec.CacheNodeType) @@ -785,50 +791,144 @@ func TestSetSDK_Elasticache_CacheCluster_Create(t *testing.T) { if r.ko.Spec.EngineVersion != nil { res.SetEngineVersion(*r.ko.Spec.EngineVersion) } + if r.ko.Spec.KMSKeyID != nil { + res.SetKmsKeyId(*r.ko.Spec.KMSKeyID) + } + if r.ko.Spec.LogDeliveryConfigurations != nil { + f11 := []*svcsdk.LogDeliveryConfigurationRequest{} + for _, f11iter := range r.ko.Spec.LogDeliveryConfigurations { + f11elem := &svcsdk.LogDeliveryConfigurationRequest{} + if f11iter.DestinationDetails != nil { + f11elemf0 := &svcsdk.DestinationDetails{} + if f11iter.DestinationDetails.CloudWatchLogsDetails != nil { + f11elemf0f0 := &svcsdk.CloudWatchLogsDestinationDetails{} + if f11iter.DestinationDetails.CloudWatchLogsDetails.LogGroup != nil { + f11elemf0f0.SetLogGroup(*f11iter.DestinationDetails.CloudWatchLogsDetails.LogGroup) + } + f11elemf0.SetCloudWatchLogsDetails(f11elemf0f0) + } + if f11iter.DestinationDetails.KinesisFirehoseDetails != nil { + f11elemf0f1 := &svcsdk.KinesisFirehoseDestinationDetails{} + if f11iter.DestinationDetails.KinesisFirehoseDetails.DeliveryStream != nil { + f11elemf0f1.SetDeliveryStream(*f11iter.DestinationDetails.KinesisFirehoseDetails.DeliveryStream) + } + f11elemf0.SetKinesisFirehoseDetails(f11elemf0f1) + } + f11elem.SetDestinationDetails(f11elemf0) + } + if f11iter.DestinationType != nil { + f11elem.SetDestinationType(*f11iter.DestinationType) + } + if f11iter.Enabled != nil { + f11elem.SetEnabled(*f11iter.Enabled) + } + if f11iter.LogFormat != nil { + f11elem.SetLogFormat(*f11iter.LogFormat) + } + if f11iter.LogType != nil { + f11elem.SetLogType(*f11iter.LogType) + } + f11 = append(f11, f11elem) + } + res.SetLogDeliveryConfigurations(f11) + } + if r.ko.Spec.MultiAZEnabled != nil { + res.SetMultiAZEnabled(*r.ko.Spec.MultiAZEnabled) + } + if r.ko.Spec.NodeGroupConfiguration != nil { + f13 := []*svcsdk.NodeGroupConfiguration{} + for _, f13iter := range r.ko.Spec.NodeGroupConfiguration { + f13elem := &svcsdk.NodeGroupConfiguration{} + if f13iter.NodeGroupID != nil { + f13elem.SetNodeGroupId(*f13iter.NodeGroupID) + } + if f13iter.PrimaryAvailabilityZone != nil { + f13elem.SetPrimaryAvailabilityZone(*f13iter.PrimaryAvailabilityZone) + } + if f13iter.PrimaryOutpostARN != nil { + f13elem.SetPrimaryOutpostArn(*f13iter.PrimaryOutpostARN) + } + if f13iter.ReplicaAvailabilityZones != nil { + f13elemf3 := []*string{} + for _, f13elemf3iter := range f13iter.ReplicaAvailabilityZones { + var f13elemf3elem string + f13elemf3elem = *f13elemf3iter + f13elemf3 = append(f13elemf3, &f13elemf3elem) + } + f13elem.SetReplicaAvailabilityZones(f13elemf3) + } + if f13iter.ReplicaCount != nil { + f13elem.SetReplicaCount(*f13iter.ReplicaCount) + } + if f13iter.ReplicaOutpostARNs != nil { + f13elemf5 := []*string{} + for _, f13elemf5iter := range f13iter.ReplicaOutpostARNs { + var f13elemf5elem string + f13elemf5elem = *f13elemf5iter + f13elemf5 = append(f13elemf5, &f13elemf5elem) + } + f13elem.SetReplicaOutpostArns(f13elemf5) + } + if f13iter.Slots != nil { + f13elem.SetSlots(*f13iter.Slots) + } + f13 = append(f13, f13elem) + } + res.SetNodeGroupConfiguration(f13) + } if r.ko.Spec.NotificationTopicARN != nil { res.SetNotificationTopicArn(*r.ko.Spec.NotificationTopicARN) } - if r.ko.Spec.NumCacheNodes != nil { - res.SetNumCacheNodes(*r.ko.Spec.NumCacheNodes) + if r.ko.Spec.NumCacheClusters != nil { + res.SetNumCacheClusters(*r.ko.Spec.NumCacheClusters) + } + if r.ko.Spec.NumNodeGroups != nil { + res.SetNumNodeGroups(*r.ko.Spec.NumNodeGroups) } if r.ko.Spec.Port != nil { res.SetPort(*r.ko.Spec.Port) } - if r.ko.Spec.PreferredAvailabilityZone != nil { - res.SetPreferredAvailabilityZone(*r.ko.Spec.PreferredAvailabilityZone) - } - if r.ko.Spec.PreferredAvailabilityZones != nil { - f14 := []*string{} - for _, f14iter := range r.ko.Spec.PreferredAvailabilityZones { - var f14elem string - f14elem = *f14iter - f14 = append(f14, &f14elem) + if r.ko.Spec.PreferredCacheClusterAZs != nil { + f18 := []*string{} + for _, f18iter := range r.ko.Spec.PreferredCacheClusterAZs { + var f18elem string + f18elem = *f18iter + f18 = append(f18, &f18elem) } - res.SetPreferredAvailabilityZones(f14) + res.SetPreferredCacheClusterAZs(f18) } if r.ko.Spec.PreferredMaintenanceWindow != nil { res.SetPreferredMaintenanceWindow(*r.ko.Spec.PreferredMaintenanceWindow) } + if r.ko.Spec.PrimaryClusterID != nil { + res.SetPrimaryClusterId(*r.ko.Spec.PrimaryClusterID) + } + if r.ko.Spec.ReplicasPerNodeGroup != nil { + res.SetReplicasPerNodeGroup(*r.ko.Spec.ReplicasPerNodeGroup) + } + if r.ko.Spec.ReplicationGroupDescription != nil { + res.SetReplicationGroupDescription(*r.ko.Spec.ReplicationGroupDescription) + } if r.ko.Spec.ReplicationGroupID != nil { res.SetReplicationGroupId(*r.ko.Spec.ReplicationGroupID) } if r.ko.Spec.SecurityGroupIDs != nil { - f17 := []*string{} - for _, f17iter := range r.ko.Spec.SecurityGroupIDs { - var f17elem string - f17elem = *f17iter - f17 = append(f17, &f17elem) + f24 := []*string{} + for _, f24iter := range r.ko.Spec.SecurityGroupIDs { + var f24elem string + f24elem = *f24iter + f24 = append(f24, &f24elem) } - res.SetSecurityGroupIds(f17) + res.SetSecurityGroupIds(f24) } if r.ko.Spec.SnapshotARNs != nil { - f18 := []*string{} - for _, f18iter := range r.ko.Spec.SnapshotARNs { - var f18elem string - f18elem = *f18iter - f18 = append(f18, &f18elem) + f25 := []*string{} + for _, f25iter := range r.ko.Spec.SnapshotARNs { + var f25elem string + f25elem = *f25iter + f25 = append(f25, &f25elem) } - res.SetSnapshotArns(f18) + res.SetSnapshotArns(f25) } if r.ko.Spec.SnapshotName != nil { res.SetSnapshotName(*r.ko.Spec.SnapshotName) @@ -840,18 +940,30 @@ func TestSetSDK_Elasticache_CacheCluster_Create(t *testing.T) { res.SetSnapshotWindow(*r.ko.Spec.SnapshotWindow) } if r.ko.Spec.Tags != nil { - f22 := []*svcsdk.Tag{} - for _, f22iter := range r.ko.Spec.Tags { - f22elem := &svcsdk.Tag{} - if f22iter.Key != nil { - f22elem.SetKey(*f22iter.Key) + f29 := []*svcsdk.Tag{} + for _, f29iter := range r.ko.Spec.Tags { + f29elem := &svcsdk.Tag{} + if f29iter.Key != nil { + f29elem.SetKey(*f29iter.Key) } - if f22iter.Value != nil { - f22elem.SetValue(*f22iter.Value) + if f29iter.Value != nil { + f29elem.SetValue(*f29iter.Value) } - f22 = append(f22, f22elem) + f29 = append(f29, f29elem) + } + res.SetTags(f29) + } + if r.ko.Spec.TransitEncryptionEnabled != nil { + res.SetTransitEncryptionEnabled(*r.ko.Spec.TransitEncryptionEnabled) + } + if r.ko.Spec.UserGroupIDs != nil { + f31 := []*string{} + for _, f31iter := range r.ko.Spec.UserGroupIDs { + var f31elem string + f31elem = *f31iter + f31 = append(f31, &f31elem) } - res.SetTags(f22) + res.SetUserGroupIds(f31) } ` assert.Equal( @@ -860,13 +972,13 @@ func TestSetSDK_Elasticache_CacheCluster_Create(t *testing.T) { ) } -func TestSetSDK_Elasticache_CacheCluster_ReadMany(t *testing.T) { +func TestSetSDK_Elasticache_ReplicationGroup_ReadMany(t *testing.T) { assert := assert.New(t) require := require.New(t) g := testutil.NewGeneratorForService(t, "elasticache") - crd := testutil.GetCRDByName(t, g, "CacheCluster") + crd := testutil.GetCRDByName(t, g, "ReplicationGroup") require.NotNil(crd) // Elasticache doesn't have a ReadOne operation; only a List/ReadMany @@ -874,8 +986,8 @@ func TestSetSDK_Elasticache_CacheCluster_ReadMany(t *testing.T) { // DescribeCacheClustersInput and processing of the // DescribeCacheClustersOutput shapes is correct. expected := ` - if r.ko.Spec.CacheClusterID != nil { - res.SetCacheClusterId(*r.ko.Spec.CacheClusterID) + if r.ko.Spec.ReplicationGroupID != nil { + res.SetReplicationGroupId(*r.ko.Spec.ReplicationGroupID) } ` assert.Equal( @@ -925,8 +1037,43 @@ func TestSetSDK_Elasticache_ReplicationGroup_Update_Override_Values(t *testing.T } res.SetCacheSecurityGroupNames(f7) } - if r.ko.Spec.EngineVersion != nil { - res.SetEngineVersion(*r.ko.Spec.EngineVersion) + if r.ko.Spec.LogDeliveryConfigurations != nil { + f8 := []*svcsdk.LogDeliveryConfigurationRequest{} + for _, f8iter := range r.ko.Spec.LogDeliveryConfigurations { + f8elem := &svcsdk.LogDeliveryConfigurationRequest{} + if f8iter.DestinationDetails != nil { + f8elemf0 := &svcsdk.DestinationDetails{} + if f8iter.DestinationDetails.CloudWatchLogsDetails != nil { + f8elemf0f0 := &svcsdk.CloudWatchLogsDestinationDetails{} + if f8iter.DestinationDetails.CloudWatchLogsDetails.LogGroup != nil { + f8elemf0f0.SetLogGroup(*f8iter.DestinationDetails.CloudWatchLogsDetails.LogGroup) + } + f8elemf0.SetCloudWatchLogsDetails(f8elemf0f0) + } + if f8iter.DestinationDetails.KinesisFirehoseDetails != nil { + f8elemf0f1 := &svcsdk.KinesisFirehoseDestinationDetails{} + if f8iter.DestinationDetails.KinesisFirehoseDetails.DeliveryStream != nil { + f8elemf0f1.SetDeliveryStream(*f8iter.DestinationDetails.KinesisFirehoseDetails.DeliveryStream) + } + f8elemf0.SetKinesisFirehoseDetails(f8elemf0f1) + } + f8elem.SetDestinationDetails(f8elemf0) + } + if f8iter.DestinationType != nil { + f8elem.SetDestinationType(*f8iter.DestinationType) + } + if f8iter.Enabled != nil { + f8elem.SetEnabled(*f8iter.Enabled) + } + if f8iter.LogFormat != nil { + f8elem.SetLogFormat(*f8iter.LogFormat) + } + if f8iter.LogType != nil { + f8elem.SetLogType(*f8iter.LogType) + } + f8 = append(f8, f8elem) + } + res.SetLogDeliveryConfigurations(f8) } if r.ko.Spec.MultiAZEnabled != nil { res.SetMultiAZEnabled(*r.ko.Spec.MultiAZEnabled) @@ -946,15 +1093,6 @@ func TestSetSDK_Elasticache_ReplicationGroup_Update_Override_Values(t *testing.T if r.ko.Spec.ReplicationGroupID != nil { res.SetReplicationGroupId(*r.ko.Spec.ReplicationGroupID) } - if r.ko.Spec.SecurityGroupIDs != nil { - f17 := []*string{} - for _, f17iter := range r.ko.Spec.SecurityGroupIDs { - var f17elem string - f17elem = *f17iter - f17 = append(f17, &f17elem) - } - res.SetSecurityGroupIds(f17) - } if r.ko.Spec.SnapshotRetentionLimit != nil { res.SetSnapshotRetentionLimit(*r.ko.Spec.SnapshotRetentionLimit) } diff --git a/pkg/generate/elasticache_test.go b/pkg/generate/elasticache_test.go index 45eb7f7a..59c66ab8 100644 --- a/pkg/generate/elasticache_test.go +++ b/pkg/generate/elasticache_test.go @@ -22,7 +22,7 @@ import ( "github.com/aws-controllers-k8s/code-generator/pkg/testutil" ) -func TestElasticache_CacheCluster(t *testing.T) { +func TestElasticache_ReplicationGroup(t *testing.T) { assert := assert.New(t) require := require.New(t) @@ -31,41 +31,41 @@ func TestElasticache_CacheCluster(t *testing.T) { crds, err := g.GetCRDs() require.Nil(err) - crd := getCRDByName("CacheCluster", crds) + crd := getCRDByName("ReplicationGroup", crds) require.NotNil(crd) - assert.Equal("CacheCluster", crd.Names.Camel) - assert.Equal("cacheCluster", crd.Names.CamelLower) - assert.Equal("cache_cluster", crd.Names.Snake) + assert.Equal("ReplicationGroup", crd.Names.Camel) + assert.Equal("replicationGroup", crd.Names.CamelLower) + assert.Equal("replication_group", crd.Names.Snake) // The DescribeCacheClusters operation has the following definition: // - // "DescribeCacheClusters":{ - // "name":"DescribeCacheClusters", - // "http":{ - // "method":"POST", - // "requestUri":"/" - // }, - // "input":{"shape":"DescribeCacheClustersMessage"}, - // "output":{ - // "shape":"CacheClusterMessage", - // "resultWrapper":"DescribeCacheClustersResult" - // }, - // "errors":[ - // {"shape":"CacheClusterNotFoundFault"}, - // {"shape":"InvalidParameterValueException"}, - // {"shape":"InvalidParameterCombinationException"} - // ] - // }, + // "DescribeReplicationGroups":{ + // "name":"DescribeReplicationGroups", + // "http":{ + // "method":"POST", + // "requestUri":"/" + // }, + // "input":{"shape":"DescribeReplicationGroupsMessage"}, + // "output":{ + // "shape":"ReplicationGroupMessage", + // "resultWrapper":"DescribeReplicationGroupsResult" + // }, + // "errors":[ + // {"shape":"ReplicationGroupNotFoundFault"}, + // {"shape":"InvalidParameterValueException"}, + // {"shape":"InvalidParameterCombinationException"} + // ] + // } // - // Where the CacheClusterNotFoundFault shape looks like this: + // Where the ReplicationGroupNotFoundFault shape looks like this: // - // "CacheClusterNotFoundFault":{ + // "ReplicationGroupNotFoundFault":{ // "type":"structure", // "members":{ // }, // "error":{ - // "code":"CacheClusterNotFound", + // "code":"ReplicationGroupNotFoundFault", // "httpStatusCode":404, // "senderFault":true // }, @@ -73,15 +73,15 @@ func TestElasticache_CacheCluster(t *testing.T) { // }, // // Which indicates that the error is a 404 and is our NotFoundException - // error with a "code" value of CacheClusterNotFound - assert.Equal("CacheClusterNotFound", crd.ExceptionCode(404)) + // error with a "code" value of ReplicationGroupNotFoundFault + assert.Equal("ReplicationGroupNotFoundFault", crd.ExceptionCode(404)) - // The Elasticache CacheCluster API has CUD+L operations: + // The Elasticache ReplicationGroup API has CUD+L operations: // - // * CreateCacheCluster - // * DeleteCacheCluster - // * UpdateCacheCluster - // * GetCacheClusters + // * CreateReplicationGroup + // * DeleteReplicationGroup + // * ModifyReplicationGroup + // * DescribeReplicationGroup require.NotNil(crd.Ops) assert.NotNil(crd.Ops.Create) @@ -100,22 +100,29 @@ func TestElasticache_CacheCluster(t *testing.T) { statusFields := crd.StatusFields expSpecFieldCamel := []string{ - "AZMode", + "AtRestEncryptionEnabled", "AuthToken", "AutoMinorVersionUpgrade", - "CacheClusterID", + "AutomaticFailoverEnabled", "CacheNodeType", "CacheParameterGroupName", "CacheSecurityGroupNames", "CacheSubnetGroupName", "Engine", "EngineVersion", + "KMSKeyID", + "LogDeliveryConfigurations", + "MultiAZEnabled", + "NodeGroupConfiguration", "NotificationTopicARN", - "NumCacheNodes", + "NumCacheClusters", + "NumNodeGroups", "Port", - "PreferredAvailabilityZone", - "PreferredAvailabilityZones", + "PreferredCacheClusterAZs", "PreferredMaintenanceWindow", + "PrimaryClusterID", + "ReplicasPerNodeGroup", + "ReplicationGroupDescription", "ReplicationGroupID", "SecurityGroupIDs", "SnapshotARNs", @@ -123,42 +130,33 @@ func TestElasticache_CacheCluster(t *testing.T) { "SnapshotRetentionLimit", "SnapshotWindow", "Tags", + "TransitEncryptionEnabled", + "UserGroupIDs", } assert.Equal(expSpecFieldCamel, attrCamelNames(specFields)) expStatusFieldCamel := []string{ - "AtRestEncryptionEnabled", + "AllowedScaleDownModifications", + "AllowedScaleUpModifications", "AuthTokenEnabled", "AuthTokenLastModifiedDate", - "CacheClusterCreateTime", - "CacheClusterStatus", - "CacheNodes", - "CacheParameterGroup", - "CacheSecurityGroups", - "ClientDownloadLandingPage", + "AutomaticFailover", + "ClusterEnabled", "ConfigurationEndpoint", - "NotificationConfiguration", + "Description", + "Events", + "GlobalReplicationGroupInfo", + "MemberClusters", + "MemberClustersOutpostARNs", + "MultiAZ", + "NodeGroups", "PendingModifiedValues", - "SecurityGroups", - "TransitEncryptionEnabled", + "SnapshottingClusterID", + "Status", } assert.Equal(expStatusFieldCamel, attrCamelNames(statusFields)) } -func TestElasticache_Ignored_Operations(t *testing.T) { - require := require.New(t) - - g := testutil.NewGeneratorForService(t, "elasticache") - - crds, err := g.GetCRDs() - require.Nil(err) - - crd := getCRDByName("Snapshot", crds) - require.NotNil(crd) - require.NotNil(crd.Ops.Create) - require.Nil(crd.Ops.Delete) -} - func TestElasticache_Ignored_Resources(t *testing.T) { require := require.New(t) diff --git a/pkg/generate/testdata/models/apis/elasticache/0000-00-00/api-2.json b/pkg/generate/testdata/models/apis/elasticache/0000-00-00/api-2.json index 9afa90e0..ca011cae 100644 --- a/pkg/generate/testdata/models/apis/elasticache/0000-00-00/api-2.json +++ b/pkg/generate/testdata/models/apis/elasticache/0000-00-00/api-2.json @@ -24,7 +24,15 @@ }, "errors":[ {"shape":"CacheClusterNotFoundFault"}, + {"shape":"CacheParameterGroupNotFoundFault"}, + {"shape":"CacheSecurityGroupNotFoundFault"}, + {"shape":"CacheSubnetGroupNotFoundFault"}, + {"shape":"InvalidReplicationGroupStateFault"}, + {"shape":"ReplicationGroupNotFoundFault"}, + {"shape":"ReservedCacheNodeNotFoundFault"}, {"shape":"SnapshotNotFoundFault"}, + {"shape":"UserNotFoundFault"}, + {"shape":"UserGroupNotFoundFault"}, {"shape":"TagQuotaPerResourceExceeded"}, {"shape":"InvalidARNFault"} ] @@ -113,6 +121,7 @@ {"shape":"SnapshotNotFoundFault"}, {"shape":"SnapshotQuotaExceededFault"}, {"shape":"InvalidSnapshotStateFault"}, + {"shape":"TagQuotaPerResourceExceeded"}, {"shape":"InvalidParameterValueException"}, {"shape":"InvalidParameterCombinationException"} ] @@ -160,6 +169,7 @@ {"shape":"CacheParameterGroupQuotaExceededFault"}, {"shape":"CacheParameterGroupAlreadyExistsFault"}, {"shape":"InvalidCacheParameterGroupStateFault"}, + {"shape":"TagQuotaPerResourceExceeded"}, {"shape":"InvalidParameterValueException"}, {"shape":"InvalidParameterCombinationException"} ] @@ -178,6 +188,7 @@ "errors":[ {"shape":"CacheSecurityGroupAlreadyExistsFault"}, {"shape":"CacheSecurityGroupQuotaExceededFault"}, + {"shape":"TagQuotaPerResourceExceeded"}, {"shape":"InvalidParameterValueException"}, {"shape":"InvalidParameterCombinationException"} ] @@ -197,7 +208,9 @@ {"shape":"CacheSubnetGroupAlreadyExistsFault"}, {"shape":"CacheSubnetGroupQuotaExceededFault"}, {"shape":"CacheSubnetQuotaExceededFault"}, - {"shape":"InvalidSubnet"} + {"shape":"TagQuotaPerResourceExceeded"}, + {"shape":"InvalidSubnet"}, + {"shape":"SubnetNotAllowedFault"} ] }, "CreateGlobalReplicationGroup":{ @@ -234,6 +247,8 @@ {"shape":"CacheClusterNotFoundFault"}, {"shape":"InvalidCacheClusterStateFault"}, {"shape":"ReplicationGroupAlreadyExistsFault"}, + {"shape":"InvalidUserGroupStateFault"}, + {"shape":"UserGroupNotFoundFault"}, {"shape":"InsufficientCacheClusterCapacityFault"}, {"shape":"CacheSecurityGroupNotFoundFault"}, {"shape":"CacheSubnetGroupNotFoundFault"}, @@ -269,10 +284,52 @@ {"shape":"InvalidReplicationGroupStateFault"}, {"shape":"SnapshotQuotaExceededFault"}, {"shape":"SnapshotFeatureNotSupportedFault"}, + {"shape":"TagQuotaPerResourceExceeded"}, {"shape":"InvalidParameterCombinationException"}, {"shape":"InvalidParameterValueException"} ] }, + "CreateUser":{ + "name":"CreateUser", + "http":{ + "method":"POST", + "requestUri":"/" + }, + "input":{"shape":"CreateUserMessage"}, + "output":{ + "shape":"User", + "resultWrapper":"CreateUserResult" + }, + "errors":[ + {"shape":"UserAlreadyExistsFault"}, + {"shape":"UserQuotaExceededFault"}, + {"shape":"DuplicateUserNameFault"}, + {"shape":"InvalidParameterValueException"}, + {"shape":"InvalidParameterCombinationException"}, + {"shape":"TagQuotaPerResourceExceeded"} + ] + }, + "CreateUserGroup":{ + "name":"CreateUserGroup", + "http":{ + "method":"POST", + "requestUri":"/" + }, + "input":{"shape":"CreateUserGroupMessage"}, + "output":{ + "shape":"UserGroup", + "resultWrapper":"CreateUserGroupResult" + }, + "errors":[ + {"shape":"UserNotFoundFault"}, + {"shape":"DuplicateUserNameFault"}, + {"shape":"UserGroupAlreadyExistsFault"}, + {"shape":"DefaultUserRequired"}, + {"shape":"UserGroupQuotaExceededFault"}, + {"shape":"InvalidParameterValueException"}, + {"shape":"TagQuotaPerResourceExceeded"} + ] + }, "DecreaseNodeGroupsInGlobalReplicationGroup":{ "name":"DecreaseNodeGroupsInGlobalReplicationGroup", "http":{ @@ -434,6 +491,41 @@ {"shape":"InvalidParameterCombinationException"} ] }, + "DeleteUser":{ + "name":"DeleteUser", + "http":{ + "method":"POST", + "requestUri":"/" + }, + "input":{"shape":"DeleteUserMessage"}, + "output":{ + "shape":"User", + "resultWrapper":"DeleteUserResult" + }, + "errors":[ + {"shape":"InvalidUserStateFault"}, + {"shape":"UserNotFoundFault"}, + {"shape":"InvalidParameterValueException"}, + {"shape":"DefaultUserAssociatedToUserGroupFault"} + ] + }, + "DeleteUserGroup":{ + "name":"DeleteUserGroup", + "http":{ + "method":"POST", + "requestUri":"/" + }, + "input":{"shape":"DeleteUserGroupMessage"}, + "output":{ + "shape":"UserGroup", + "resultWrapper":"DeleteUserGroupResult" + }, + "errors":[ + {"shape":"UserGroupNotFoundFault"}, + {"shape":"InvalidUserGroupStateFault"}, + {"shape":"InvalidParameterValueException"} + ] + }, "DescribeCacheClusters":{ "name":"DescribeCacheClusters", "http":{ @@ -680,6 +772,38 @@ {"shape":"InvalidParameterCombinationException"} ] }, + "DescribeUserGroups":{ + "name":"DescribeUserGroups", + "http":{ + "method":"POST", + "requestUri":"/" + }, + "input":{"shape":"DescribeUserGroupsMessage"}, + "output":{ + "shape":"DescribeUserGroupsResult", + "resultWrapper":"DescribeUserGroupsResult" + }, + "errors":[ + {"shape":"UserGroupNotFoundFault"}, + {"shape":"InvalidParameterCombinationException"} + ] + }, + "DescribeUsers":{ + "name":"DescribeUsers", + "http":{ + "method":"POST", + "requestUri":"/" + }, + "input":{"shape":"DescribeUsersMessage"}, + "output":{ + "shape":"DescribeUsersResult", + "resultWrapper":"DescribeUsersResult" + }, + "errors":[ + {"shape":"UserNotFoundFault"}, + {"shape":"InvalidParameterCombinationException"} + ] + }, "DisassociateGlobalReplicationGroup":{ "name":"DisassociateGlobalReplicationGroup", "http":{ @@ -790,7 +914,15 @@ }, "errors":[ {"shape":"CacheClusterNotFoundFault"}, + {"shape":"CacheParameterGroupNotFoundFault"}, + {"shape":"CacheSecurityGroupNotFoundFault"}, + {"shape":"CacheSubnetGroupNotFoundFault"}, + {"shape":"InvalidReplicationGroupStateFault"}, + {"shape":"ReplicationGroupNotFoundFault"}, + {"shape":"ReservedCacheNodeNotFoundFault"}, {"shape":"SnapshotNotFoundFault"}, + {"shape":"UserNotFoundFault"}, + {"shape":"UserGroupNotFoundFault"}, {"shape":"InvalidARNFault"} ] }, @@ -853,7 +985,8 @@ {"shape":"CacheSubnetGroupNotFoundFault"}, {"shape":"CacheSubnetQuotaExceededFault"}, {"shape":"SubnetInUse"}, - {"shape":"InvalidSubnet"} + {"shape":"InvalidSubnet"}, + {"shape":"SubnetNotAllowedFault"} ] }, "ModifyGlobalReplicationGroup":{ @@ -887,6 +1020,8 @@ "errors":[ {"shape":"ReplicationGroupNotFoundFault"}, {"shape":"InvalidReplicationGroupStateFault"}, + {"shape":"InvalidUserGroupStateFault"}, + {"shape":"UserGroupNotFoundFault"}, {"shape":"InvalidCacheClusterStateFault"}, {"shape":"InvalidCacheSecurityGroupStateFault"}, {"shape":"InsufficientCacheClusterCapacityFault"}, @@ -925,6 +1060,45 @@ {"shape":"InvalidParameterCombinationException"} ] }, + "ModifyUser":{ + "name":"ModifyUser", + "http":{ + "method":"POST", + "requestUri":"/" + }, + "input":{"shape":"ModifyUserMessage"}, + "output":{ + "shape":"User", + "resultWrapper":"ModifyUserResult" + }, + "errors":[ + {"shape":"UserNotFoundFault"}, + {"shape":"InvalidUserStateFault"}, + {"shape":"InvalidParameterValueException"}, + {"shape":"InvalidParameterCombinationException"} + ] + }, + "ModifyUserGroup":{ + "name":"ModifyUserGroup", + "http":{ + "method":"POST", + "requestUri":"/" + }, + "input":{"shape":"ModifyUserGroupMessage"}, + "output":{ + "shape":"UserGroup", + "resultWrapper":"ModifyUserGroupResult" + }, + "errors":[ + {"shape":"UserGroupNotFoundFault"}, + {"shape":"UserNotFoundFault"}, + {"shape":"DuplicateUserNameFault"}, + {"shape":"DefaultUserRequired"}, + {"shape":"InvalidUserGroupStateFault"}, + {"shape":"InvalidParameterValueException"}, + {"shape":"InvalidParameterCombinationException"} + ] + }, "PurchaseReservedCacheNodesOffering":{ "name":"PurchaseReservedCacheNodesOffering", "http":{ @@ -940,6 +1114,7 @@ {"shape":"ReservedCacheNodesOfferingNotFoundFault"}, {"shape":"ReservedCacheNodeAlreadyExistsFault"}, {"shape":"ReservedCacheNodeQuotaExceededFault"}, + {"shape":"TagQuotaPerResourceExceeded"}, {"shape":"InvalidParameterValueException"}, {"shape":"InvalidParameterCombinationException"} ] @@ -990,7 +1165,15 @@ }, "errors":[ {"shape":"CacheClusterNotFoundFault"}, + {"shape":"CacheParameterGroupNotFoundFault"}, + {"shape":"CacheSecurityGroupNotFoundFault"}, + {"shape":"CacheSubnetGroupNotFoundFault"}, + {"shape":"InvalidReplicationGroupStateFault"}, + {"shape":"ReplicationGroupNotFoundFault"}, + {"shape":"ReservedCacheNodeNotFoundFault"}, {"shape":"SnapshotNotFoundFault"}, + {"shape":"UserNotFoundFault"}, + {"shape":"UserGroupNotFoundFault"}, {"shape":"InvalidARNFault"}, {"shape":"TagNotFoundFault"} ] @@ -1094,6 +1277,10 @@ "cross-az" ] }, + "AccessString":{ + "type":"string", + "pattern":".*\\S.*" + }, "AddTagsToResourceMessage":{ "type":"structure", "required":[ @@ -1129,7 +1316,22 @@ "type":"string", "enum":[ "SET", - "ROTATE" + "ROTATE", + "DELETE" + ] + }, + "Authentication":{ + "type":"structure", + "members":{ + "Type":{"shape":"AuthenticationType"}, + "PasswordCount":{"shape":"IntegerOptional"} + } + }, + "AuthenticationType":{ + "type":"string", + "enum":[ + "password", + "no-password" ] }, "AuthorizationAlreadyExistsFault":{ @@ -1229,6 +1431,7 @@ "CacheClusterStatus":{"shape":"String"}, "NumCacheNodes":{"shape":"IntegerOptional"}, "PreferredAvailabilityZone":{"shape":"String"}, + "PreferredOutpostArn":{"shape":"String"}, "CacheClusterCreateTime":{"shape":"TStamp"}, "PreferredMaintenanceWindow":{"shape":"String"}, "PendingModifiedValues":{"shape":"PendingModifiedValues"}, @@ -1246,7 +1449,9 @@ "AuthTokenLastModifiedDate":{"shape":"TStamp"}, "TransitEncryptionEnabled":{"shape":"BooleanOptional"}, "AtRestEncryptionEnabled":{"shape":"BooleanOptional"}, - "ARN":{"shape":"String"} + "ARN":{"shape":"String"}, + "ReplicationGroupLogDeliveryEnabled":{"shape":"Boolean"}, + "LogDeliveryConfigurations":{"shape":"LogDeliveryConfigurationList"} }, "wrapper":true }, @@ -1324,7 +1529,8 @@ "Endpoint":{"shape":"Endpoint"}, "ParameterGroupStatus":{"shape":"String"}, "SourceCacheNodeId":{"shape":"String"}, - "CustomerAvailabilityZone":{"shape":"String"} + "CustomerAvailabilityZone":{"shape":"String"}, + "CustomerOutpostArn":{"shape":"String"} } }, "CacheNodeIdsList":{ @@ -1642,6 +1848,12 @@ "requires-reboot" ] }, + "CloudWatchLogsDestinationDetails":{ + "type":"structure", + "members":{ + "LogGroup":{"shape":"String"} + } + }, "ClusterIdList":{ "type":"list", "member":{ @@ -1683,7 +1895,8 @@ "members":{ "NodeGroupId":{"shape":"AllowedNodeGroupId"}, "NewReplicaCount":{"shape":"Integer"}, - "PreferredAvailabilityZones":{"shape":"PreferredAvailabilityZoneList"} + "PreferredAvailabilityZones":{"shape":"PreferredAvailabilityZoneList"}, + "PreferredOutpostArns":{"shape":"PreferredOutpostArnList"} } }, "CopySnapshotMessage":{ @@ -1696,7 +1909,8 @@ "SourceSnapshotName":{"shape":"String"}, "TargetSnapshotName":{"shape":"String"}, "TargetBucket":{"shape":"String"}, - "KmsKeyId":{"shape":"String"} + "KmsKeyId":{"shape":"String"}, + "Tags":{"shape":"TagList"} } }, "CopySnapshotResult":{ @@ -1731,7 +1945,11 @@ "AutoMinorVersionUpgrade":{"shape":"BooleanOptional"}, "SnapshotRetentionLimit":{"shape":"IntegerOptional"}, "SnapshotWindow":{"shape":"String"}, - "AuthToken":{"shape":"String"} + "AuthToken":{"shape":"String"}, + "OutpostMode":{"shape":"OutpostMode"}, + "PreferredOutpostArn":{"shape":"String"}, + "PreferredOutpostArns":{"shape":"PreferredOutpostArnList"}, + "LogDeliveryConfigurations":{"shape":"LogDeliveryConfigurationRequestList"} } }, "CreateCacheClusterResult":{ @@ -1750,7 +1968,8 @@ "members":{ "CacheParameterGroupName":{"shape":"String"}, "CacheParameterGroupFamily":{"shape":"String"}, - "Description":{"shape":"String"} + "Description":{"shape":"String"}, + "Tags":{"shape":"TagList"} } }, "CreateCacheParameterGroupResult":{ @@ -1767,7 +1986,8 @@ ], "members":{ "CacheSecurityGroupName":{"shape":"String"}, - "Description":{"shape":"String"} + "Description":{"shape":"String"}, + "Tags":{"shape":"TagList"} } }, "CreateCacheSecurityGroupResult":{ @@ -1786,7 +2006,8 @@ "members":{ "CacheSubnetGroupName":{"shape":"String"}, "CacheSubnetGroupDescription":{"shape":"String"}, - "SubnetIds":{"shape":"SubnetIdentifierList"} + "SubnetIds":{"shape":"SubnetIdentifierList"}, + "Tags":{"shape":"TagList"} } }, "CreateCacheSubnetGroupResult":{ @@ -1850,7 +2071,9 @@ "AuthToken":{"shape":"String"}, "TransitEncryptionEnabled":{"shape":"BooleanOptional"}, "AtRestEncryptionEnabled":{"shape":"BooleanOptional"}, - "KmsKeyId":{"shape":"String"} + "KmsKeyId":{"shape":"String"}, + "UserGroupIds":{"shape":"UserGroupIdListInput"}, + "LogDeliveryConfigurations":{"shape":"LogDeliveryConfigurationRequestList"} } }, "CreateReplicationGroupResult":{ @@ -1866,7 +2089,8 @@ "ReplicationGroupId":{"shape":"String"}, "CacheClusterId":{"shape":"String"}, "SnapshotName":{"shape":"String"}, - "KmsKeyId":{"shape":"String"} + "KmsKeyId":{"shape":"String"}, + "Tags":{"shape":"TagList"} } }, "CreateSnapshotResult":{ @@ -1875,6 +2099,37 @@ "Snapshot":{"shape":"Snapshot"} } }, + "CreateUserGroupMessage":{ + "type":"structure", + "required":[ + "UserGroupId", + "Engine" + ], + "members":{ + "UserGroupId":{"shape":"String"}, + "Engine":{"shape":"EngineType"}, + "UserIds":{"shape":"UserIdListInput"}, + "Tags":{"shape":"TagList"} + } + }, + "CreateUserMessage":{ + "type":"structure", + "required":[ + "UserId", + "UserName", + "Engine", + "AccessString" + ], + "members":{ + "UserId":{"shape":"UserId"}, + "UserName":{"shape":"UserName"}, + "Engine":{"shape":"EngineType"}, + "Passwords":{"shape":"PasswordListInput"}, + "AccessString":{"shape":"AccessString"}, + "NoPasswordRequired":{"shape":"BooleanOptional"}, + "Tags":{"shape":"TagList"} + } + }, "CustomerNodeEndpoint":{ "type":"structure", "members":{ @@ -1927,6 +2182,28 @@ "ReplicationGroup":{"shape":"ReplicationGroup"} } }, + "DefaultUserAssociatedToUserGroupFault":{ + "type":"structure", + "members":{ + }, + "error":{ + "code":"DefaultUserAssociatedToUserGroup", + "httpStatusCode":400, + "senderFault":true + }, + "exception":true + }, + "DefaultUserRequired":{ + "type":"structure", + "members":{ + }, + "error":{ + "code":"DefaultUserRequired", + "httpStatusCode":400, + "senderFault":true + }, + "exception":true + }, "DeleteCacheClusterMessage":{ "type":"structure", "required":["CacheClusterId"], @@ -2007,6 +2284,20 @@ "Snapshot":{"shape":"Snapshot"} } }, + "DeleteUserGroupMessage":{ + "type":"structure", + "required":["UserGroupId"], + "members":{ + "UserGroupId":{"shape":"String"} + } + }, + "DeleteUserMessage":{ + "type":"structure", + "required":["UserId"], + "members":{ + "UserId":{"shape":"UserId"} + } + }, "DescribeCacheClustersMessage":{ "type":"structure", "members":{ @@ -2181,6 +2472,52 @@ "Marker":{"shape":"String"} } }, + "DescribeUserGroupsMessage":{ + "type":"structure", + "members":{ + "UserGroupId":{"shape":"String"}, + "MaxRecords":{"shape":"IntegerOptional"}, + "Marker":{"shape":"String"} + } + }, + "DescribeUserGroupsResult":{ + "type":"structure", + "members":{ + "UserGroups":{"shape":"UserGroupList"}, + "Marker":{"shape":"String"} + } + }, + "DescribeUsersMessage":{ + "type":"structure", + "members":{ + "Engine":{"shape":"EngineType"}, + "UserId":{"shape":"UserId"}, + "Filters":{"shape":"FilterList"}, + "MaxRecords":{"shape":"IntegerOptional"}, + "Marker":{"shape":"String"} + } + }, + "DescribeUsersResult":{ + "type":"structure", + "members":{ + "Users":{"shape":"UserList"}, + "Marker":{"shape":"String"} + } + }, + "DestinationDetails":{ + "type":"structure", + "members":{ + "CloudWatchLogsDetails":{"shape":"CloudWatchLogsDestinationDetails"}, + "KinesisFirehoseDetails":{"shape":"KinesisFirehoseDestinationDetails"} + } + }, + "DestinationType":{ + "type":"string", + "enum":[ + "cloudwatch-logs", + "kinesis-firehose" + ] + }, "DisassociateGlobalReplicationGroupMessage":{ "type":"structure", "required":[ @@ -2201,6 +2538,17 @@ } }, "Double":{"type":"double"}, + "DuplicateUserNameFault":{ + "type":"structure", + "members":{ + }, + "error":{ + "code":"DuplicateUserName", + "httpStatusCode":400, + "senderFault":true + }, + "exception":true + }, "EC2SecurityGroup":{ "type":"structure", "members":{ @@ -2233,6 +2581,10 @@ }, "wrapper":true }, + "EngineType":{ + "type":"string", + "pattern":"[a-zA-Z]*" + }, "Event":{ "type":"structure", "members":{ @@ -2275,6 +2627,34 @@ "GlobalReplicationGroup":{"shape":"GlobalReplicationGroup"} } }, + "Filter":{ + "type":"structure", + "required":[ + "Name", + "Values" + ], + "members":{ + "Name":{"shape":"FilterName"}, + "Values":{"shape":"FilterValueList"} + } + }, + "FilterList":{ + "type":"list", + "member":{"shape":"Filter"} + }, + "FilterName":{ + "type":"string", + "pattern":".*\\S.*" + }, + "FilterValue":{ + "type":"string", + "pattern":".*\\S.*" + }, + "FilterValueList":{ + "type":"list", + "member":{"shape":"FilterValue"}, + "min":1 + }, "GlobalNodeGroup":{ "type":"structure", "members":{ @@ -2546,6 +2926,28 @@ }, "exception":true }, + "InvalidUserGroupStateFault":{ + "type":"structure", + "members":{ + }, + "error":{ + "code":"InvalidUserGroupState", + "httpStatusCode":400, + "senderFault":true + }, + "exception":true + }, + "InvalidUserStateFault":{ + "type":"structure", + "members":{ + }, + "error":{ + "code":"InvalidUserState", + "httpStatusCode":400, + "senderFault":true + }, + "exception":true + }, "InvalidVPCNetworkStateFault":{ "type":"structure", "members":{ @@ -2561,6 +2963,12 @@ "type":"list", "member":{"shape":"String"} }, + "KinesisFirehoseDestinationDetails":{ + "type":"structure", + "members":{ + "DeliveryStream":{"shape":"String"} + } + }, "ListAllowedNodeTypeModificationsMessage":{ "type":"structure", "members":{ @@ -2575,6 +2983,62 @@ "ResourceName":{"shape":"String"} } }, + "LogDeliveryConfiguration":{ + "type":"structure", + "members":{ + "LogType":{"shape":"LogType"}, + "DestinationType":{"shape":"DestinationType"}, + "DestinationDetails":{"shape":"DestinationDetails"}, + "LogFormat":{"shape":"LogFormat"}, + "Status":{"shape":"LogDeliveryConfigurationStatus"}, + "Message":{"shape":"String"} + } + }, + "LogDeliveryConfigurationList":{ + "type":"list", + "member":{ + "shape":"LogDeliveryConfiguration", + "locationName":"LogDeliveryConfiguration" + } + }, + "LogDeliveryConfigurationRequest":{ + "type":"structure", + "members":{ + "LogType":{"shape":"LogType"}, + "DestinationType":{"shape":"DestinationType"}, + "DestinationDetails":{"shape":"DestinationDetails"}, + "LogFormat":{"shape":"LogFormat"}, + "Enabled":{"shape":"BooleanOptional"} + } + }, + "LogDeliveryConfigurationRequestList":{ + "type":"list", + "member":{ + "shape":"LogDeliveryConfigurationRequest", + "locationName":"LogDeliveryConfigurationRequest" + } + }, + "LogDeliveryConfigurationStatus":{ + "type":"string", + "enum":[ + "active", + "enabling", + "modifying", + "disabling", + "error" + ] + }, + "LogFormat":{ + "type":"string", + "enum":[ + "text", + "json" + ] + }, + "LogType":{ + "type":"string", + "enum":["slow-log"] + }, "ModifyCacheClusterMessage":{ "type":"structure", "required":["CacheClusterId"], @@ -2597,7 +3061,8 @@ "SnapshotWindow":{"shape":"String"}, "CacheNodeType":{"shape":"String"}, "AuthToken":{"shape":"String"}, - "AuthTokenUpdateStrategy":{"shape":"AuthTokenUpdateStrategyType"} + "AuthTokenUpdateStrategy":{"shape":"AuthTokenUpdateStrategyType"}, + "LogDeliveryConfigurations":{"shape":"LogDeliveryConfigurationRequestList"} } }, "ModifyCacheClusterResult":{ @@ -2643,6 +3108,7 @@ "ApplyImmediately":{"shape":"Boolean"}, "CacheNodeType":{"shape":"String"}, "EngineVersion":{"shape":"String"}, + "CacheParameterGroupName":{"shape":"String"}, "GlobalReplicationGroupDescription":{"shape":"String"}, "AutomaticFailoverEnabled":{"shape":"BooleanOptional"} } @@ -2680,7 +3146,11 @@ "SnapshotWindow":{"shape":"String"}, "CacheNodeType":{"shape":"String"}, "AuthToken":{"shape":"String"}, - "AuthTokenUpdateStrategy":{"shape":"AuthTokenUpdateStrategyType"} + "AuthTokenUpdateStrategy":{"shape":"AuthTokenUpdateStrategyType"}, + "UserGroupIdsToAdd":{"shape":"UserGroupIdList"}, + "UserGroupIdsToRemove":{"shape":"UserGroupIdList"}, + "RemoveUserGroups":{"shape":"BooleanOptional"}, + "LogDeliveryConfigurations":{"shape":"LogDeliveryConfigurationRequestList"} } }, "ModifyReplicationGroupResult":{ @@ -2711,6 +3181,26 @@ "ReplicationGroup":{"shape":"ReplicationGroup"} } }, + "ModifyUserGroupMessage":{ + "type":"structure", + "required":["UserGroupId"], + "members":{ + "UserGroupId":{"shape":"String"}, + "UserIdsToAdd":{"shape":"UserIdListInput"}, + "UserIdsToRemove":{"shape":"UserIdListInput"} + } + }, + "ModifyUserMessage":{ + "type":"structure", + "required":["UserId"], + "members":{ + "UserId":{"shape":"UserId"}, + "AccessString":{"shape":"AccessString"}, + "AppendAccessString":{"shape":"AccessString"}, + "Passwords":{"shape":"PasswordListInput"}, + "NoPasswordRequired":{"shape":"BooleanOptional"} + } + }, "MultiAZStatus":{ "type":"string", "enum":[ @@ -2747,7 +3237,9 @@ "Slots":{"shape":"String"}, "ReplicaCount":{"shape":"IntegerOptional"}, "PrimaryAvailabilityZone":{"shape":"String"}, - "ReplicaAvailabilityZones":{"shape":"AvailabilityZonesList"} + "ReplicaAvailabilityZones":{"shape":"AvailabilityZonesList"}, + "PrimaryOutpostArn":{"shape":"String"}, + "ReplicaOutpostArns":{"shape":"OutpostArnsList"} } }, "NodeGroupConfigurationList":{ @@ -2771,6 +3263,7 @@ "CacheNodeId":{"shape":"String"}, "ReadEndpoint":{"shape":"Endpoint"}, "PreferredAvailabilityZone":{"shape":"String"}, + "PreferredOutpostArn":{"shape":"String"}, "CurrentRole":{"shape":"String"} } }, @@ -2923,6 +3416,20 @@ "TopicStatus":{"shape":"String"} } }, + "OutpostArnsList":{ + "type":"list", + "member":{ + "shape":"String", + "locationName":"OutpostArn" + } + }, + "OutpostMode":{ + "type":"string", + "enum":[ + "single-outpost", + "cross-outpost" + ] + }, "Parameter":{ "type":"structure", "members":{ @@ -2958,6 +3465,11 @@ "locationName":"Parameter" } }, + "PasswordListInput":{ + "type":"list", + "member":{"shape":"String"}, + "min":1 + }, "PendingAutomaticFailoverStatus":{ "type":"string", "enum":[ @@ -2965,6 +3477,20 @@ "disabled" ] }, + "PendingLogDeliveryConfiguration":{ + "type":"structure", + "members":{ + "LogType":{"shape":"LogType"}, + "DestinationType":{"shape":"DestinationType"}, + "DestinationDetails":{"shape":"DestinationDetails"}, + "LogFormat":{"shape":"LogFormat"} + } + }, + "PendingLogDeliveryConfigurationList":{ + "type":"list", + "member":{"shape":"PendingLogDeliveryConfiguration"}, + "locationName":"PendingLogDeliveryConfiguration" + }, "PendingModifiedValues":{ "type":"structure", "members":{ @@ -2972,7 +3498,8 @@ "CacheNodeIdsToRemove":{"shape":"CacheNodeIdsList"}, "EngineVersion":{"shape":"String"}, "CacheNodeType":{"shape":"String"}, - "AuthTokenStatus":{"shape":"AuthTokenUpdateStatus"} + "AuthTokenStatus":{"shape":"AuthTokenUpdateStatus"}, + "LogDeliveryConfigurations":{"shape":"PendingLogDeliveryConfigurationList"} } }, "PreferredAvailabilityZoneList":{ @@ -2982,6 +3509,13 @@ "locationName":"PreferredAvailabilityZone" } }, + "PreferredOutpostArnList":{ + "type":"list", + "member":{ + "shape":"String", + "locationName":"PreferredOutpostArn" + } + }, "ProcessedUpdateAction":{ "type":"structure", "members":{ @@ -3004,7 +3538,8 @@ "members":{ "ReservedCacheNodesOfferingId":{"shape":"String"}, "ReservedCacheNodeId":{"shape":"String"}, - "CacheNodeCount":{"shape":"IntegerOptional"} + "CacheNodeCount":{"shape":"IntegerOptional"}, + "Tags":{"shape":"TagList"} } }, "PurchaseReservedCacheNodesOfferingResult":{ @@ -3126,8 +3661,11 @@ "AuthTokenLastModifiedDate":{"shape":"TStamp"}, "TransitEncryptionEnabled":{"shape":"BooleanOptional"}, "AtRestEncryptionEnabled":{"shape":"BooleanOptional"}, + "MemberClustersOutpostArns":{"shape":"ReplicationGroupOutpostArnList"}, "KmsKeyId":{"shape":"String"}, - "ARN":{"shape":"String"} + "ARN":{"shape":"String"}, + "UserGroupIds":{"shape":"UserGroupIdList"}, + "LogDeliveryConfigurations":{"shape":"LogDeliveryConfigurationList"} }, "wrapper":true }, @@ -3194,13 +3732,22 @@ }, "exception":true }, + "ReplicationGroupOutpostArnList":{ + "type":"list", + "member":{ + "shape":"String", + "locationName":"ReplicationGroupOutpostArn" + } + }, "ReplicationGroupPendingModifiedValues":{ "type":"structure", "members":{ "PrimaryClusterId":{"shape":"String"}, "AutomaticFailoverStatus":{"shape":"PendingAutomaticFailoverStatus"}, "Resharding":{"shape":"ReshardingStatus"}, - "AuthTokenStatus":{"shape":"AuthTokenUpdateStatus"} + "AuthTokenStatus":{"shape":"AuthTokenUpdateStatus"}, + "UserGroups":{"shape":"UserGroupsUpdateStatus"}, + "LogDeliveryConfigurations":{"shape":"PendingLogDeliveryConfigurationList"} } }, "ReservedCacheNode":{ @@ -3481,6 +4028,7 @@ "EngineVersion":{"shape":"String"}, "NumCacheNodes":{"shape":"IntegerOptional"}, "PreferredAvailabilityZone":{"shape":"String"}, + "PreferredOutpostArn":{"shape":"String"}, "CacheClusterCreateTime":{"shape":"TStamp"}, "PreferredMaintenanceWindow":{"shape":"String"}, "TopicArn":{"shape":"String"}, @@ -3564,7 +4112,9 @@ "cache-parameter-group", "cache-security-group", "cache-subnet-group", - "replication-group" + "replication-group", + "user", + "user-group" ] }, "StartMigrationMessage":{ @@ -3589,7 +4139,8 @@ "type":"structure", "members":{ "SubnetIdentifier":{"shape":"String"}, - "SubnetAvailabilityZone":{"shape":"AvailabilityZone"} + "SubnetAvailabilityZone":{"shape":"AvailabilityZone"}, + "SubnetOutpost":{"shape":"SubnetOutpost"} } }, "SubnetIdentifierList":{ @@ -3617,6 +4168,23 @@ "locationName":"Subnet" } }, + "SubnetNotAllowedFault":{ + "type":"structure", + "members":{ + }, + "error":{ + "code":"SubnetNotAllowedFault", + "httpStatusCode":400, + "senderFault":true + }, + "exception":true + }, + "SubnetOutpost":{ + "type":"structure", + "members":{ + "SubnetOutpostArn":{"shape":"String"} + } + }, "TStamp":{"type":"timestamp"}, "Tag":{ "type":"structure", @@ -3695,6 +4263,10 @@ "EndTime":{"shape":"TStamp"} } }, + "UGReplicationGroupIdList":{ + "type":"list", + "member":{"shape":"String"} + }, "UnprocessedUpdateAction":{ "type":"structure", "members":{ @@ -3773,6 +4345,151 @@ "Marker":{"shape":"String"}, "UpdateActions":{"shape":"UpdateActionList"} } + }, + "User":{ + "type":"structure", + "members":{ + "UserId":{"shape":"String"}, + "UserName":{"shape":"String"}, + "Status":{"shape":"String"}, + "Engine":{"shape":"EngineType"}, + "AccessString":{"shape":"String"}, + "UserGroupIds":{"shape":"UserGroupIdList"}, + "Authentication":{"shape":"Authentication"}, + "ARN":{"shape":"String"} + } + }, + "UserAlreadyExistsFault":{ + "type":"structure", + "members":{ + }, + "error":{ + "code":"UserAlreadyExists", + "httpStatusCode":400, + "senderFault":true + }, + "exception":true + }, + "UserGroup":{ + "type":"structure", + "members":{ + "UserGroupId":{"shape":"String"}, + "Status":{"shape":"String"}, + "Engine":{"shape":"EngineType"}, + "UserIds":{"shape":"UserIdList"}, + "PendingChanges":{"shape":"UserGroupPendingChanges"}, + "ReplicationGroups":{"shape":"UGReplicationGroupIdList"}, + "ARN":{"shape":"String"} + } + }, + "UserGroupAlreadyExistsFault":{ + "type":"structure", + "members":{ + }, + "error":{ + "code":"UserGroupAlreadyExists", + "httpStatusCode":400, + "senderFault":true + }, + "exception":true + }, + "UserGroupId":{ + "type":"string", + "min":1, + "pattern":"[a-zA-Z][a-zA-Z0-9\\-]*" + }, + "UserGroupIdList":{ + "type":"list", + "member":{"shape":"UserGroupId"} + }, + "UserGroupIdListInput":{ + "type":"list", + "member":{"shape":"UserGroupId"}, + "min":1 + }, + "UserGroupList":{ + "type":"list", + "member":{"shape":"UserGroup"} + }, + "UserGroupNotFoundFault":{ + "type":"structure", + "members":{ + }, + "error":{ + "code":"UserGroupNotFound", + "httpStatusCode":404, + "senderFault":true + }, + "exception":true + }, + "UserGroupPendingChanges":{ + "type":"structure", + "members":{ + "UserIdsToRemove":{"shape":"UserIdList"}, + "UserIdsToAdd":{"shape":"UserIdList"} + } + }, + "UserGroupQuotaExceededFault":{ + "type":"structure", + "members":{ + }, + "error":{ + "code":"UserGroupQuotaExceeded", + "httpStatusCode":400, + "senderFault":true + }, + "exception":true + }, + "UserGroupsUpdateStatus":{ + "type":"structure", + "members":{ + "UserGroupIdsToAdd":{"shape":"UserGroupIdList"}, + "UserGroupIdsToRemove":{"shape":"UserGroupIdList"} + } + }, + "UserId":{ + "type":"string", + "min":1, + "pattern":"[a-zA-Z][a-zA-Z0-9\\-]*" + }, + "UserIdList":{ + "type":"list", + "member":{"shape":"UserId"} + }, + "UserIdListInput":{ + "type":"list", + "member":{"shape":"UserId"}, + "min":1 + }, + "UserList":{ + "type":"list", + "member":{"shape":"User"} + }, + "UserName":{ + "type":"string", + "min":1 + }, + "UserNotFoundFault":{ + "type":"structure", + "members":{ + }, + "error":{ + "code":"UserNotFound", + "httpStatusCode":404, + "senderFault":true + }, + "exception":true + }, + "UserQuotaExceededFault":{ + "type":"structure", + "members":{ + }, + "error":{ + "code":"UserQuotaExceeded", + "httpStatusCode":400, + "senderFault":true + }, + "exception":true } } -} +} \ No newline at end of file diff --git a/pkg/generate/testdata/models/apis/elasticache/0000-00-00/docs-2.json b/pkg/generate/testdata/models/apis/elasticache/0000-00-00/docs-2.json index cfab8f50..d4e1c9e4 100644 --- a/pkg/generate/testdata/models/apis/elasticache/0000-00-00/docs-2.json +++ b/pkg/generate/testdata/models/apis/elasticache/0000-00-00/docs-2.json @@ -2,7 +2,7 @@ "version": "2.0", "service": "Amazon ElastiCache

Amazon ElastiCache is a web service that makes it easier to set up, operate, and scale a distributed cache in the cloud.

With ElastiCache, customers get all of the benefits of a high-performance, in-memory cache with less of the administrative burden involved in launching and managing a distributed cache. The service makes setup, scaling, and cluster failure handling much simpler than in a self-managed cache deployment.

In addition, through integration with Amazon CloudWatch, customers get enhanced visibility into the key performance statistics associated with their cache and can receive alarms if a part of their cache runs hot.

", "operations": { - "AddTagsToResource": "

Adds up to 50 cost allocation tags to the named resource. A cost allocation tag is a key-value pair where the key and value are case-sensitive. You can use cost allocation tags to categorize and track your AWS costs.

When you apply tags to your ElastiCache resources, AWS generates a cost allocation report as a comma-separated value (CSV) file with your usage and costs aggregated by your tags. You can apply tags that represent business categories (such as cost centers, application names, or owners) to organize your costs across multiple services. For more information, see Using Cost Allocation Tags in Amazon ElastiCache in the ElastiCache User Guide.

", + "AddTagsToResource": "

A tag is a key-value pair where the key and value are case-sensitive. You can use tags to categorize and track all your ElastiCache resources, with the exception of global replication group. When you add or remove tags on replication groups, those actions will be replicated to all nodes in the replication group. For more information, see Resource-level permissions.

For example, you can use cost-allocation tags to your ElastiCache resources, AWS generates a cost allocation report as a comma-separated value (CSV) file with your usage and costs aggregated by your tags. You can apply tags that represent business categories (such as cost centers, application names, or owners) to organize your costs across multiple services.

For more information, see Using Cost Allocation Tags in Amazon ElastiCache in the ElastiCache User Guide.

", "AuthorizeCacheSecurityGroupIngress": "

Allows network ingress to a cache security group. Applications using ElastiCache must be running on Amazon EC2, and Amazon EC2 security groups are used as the authorization mechanism.

You cannot authorize ingress from an Amazon EC2 security group in one region to an ElastiCache cluster in another region.

", "BatchApplyUpdateAction": "

Apply the service update. For more information on service updates and applying them, see Applying Service Updates.

", "BatchStopUpdateAction": "

Stop the service update. For more information on service updates and stopping them, see Stopping Service Updates.

", @@ -12,18 +12,22 @@ "CreateCacheParameterGroup": "

Creates a new Amazon ElastiCache cache parameter group. An ElastiCache cache parameter group is a collection of parameters and their values that are applied to all of the nodes in any cluster or replication group using the CacheParameterGroup.

A newly created CacheParameterGroup is an exact duplicate of the default parameter group for the CacheParameterGroupFamily. To customize the newly created CacheParameterGroup you can change the values of specific parameters. For more information, see:

", "CreateCacheSecurityGroup": "

Creates a new cache security group. Use a cache security group to control access to one or more clusters.

Cache security groups are only used when you are creating a cluster outside of an Amazon Virtual Private Cloud (Amazon VPC). If you are creating a cluster inside of a VPC, use a cache subnet group instead. For more information, see CreateCacheSubnetGroup.

", "CreateCacheSubnetGroup": "

Creates a new cache subnet group.

Use this parameter only when you are creating a cluster in an Amazon Virtual Private Cloud (Amazon VPC).

", - "CreateGlobalReplicationGroup": "

Global Datastore for Redis offers fully managed, fast, reliable and secure cross-region replication. Using Global Datastore for Redis, you can create cross-region read replica clusters for ElastiCache for Redis to enable low-latency reads and disaster recovery across regions. For more information, see Replication Across Regions Using Global Datastore.

", - "CreateReplicationGroup": "

Creates a Redis (cluster mode disabled) or a Redis (cluster mode enabled) replication group.

This API can be used to create a standalone regional replication group or a secondary replication group associated with a Global Datastore.

A Redis (cluster mode disabled) replication group is a collection of clusters, where one of the clusters is a read/write primary and the others are read-only replicas. Writes to the primary are asynchronously propagated to the replicas.

A Redis (cluster mode enabled) replication group is a collection of 1 to 90 node groups (shards). Each node group (shard) has one read/write primary node and up to 5 read-only replica nodes. Writes to the primary are asynchronously propagated to the replicas. Redis (cluster mode enabled) replication groups partition the data across node groups (shards).

When a Redis (cluster mode disabled) replication group has been successfully created, you can add one or more read replicas to it, up to a total of 5 read replicas. If you need to increase or decrease the number of node groups (console: shards), you can avail yourself of ElastiCache for Redis' scaling. For more information, see Scaling ElastiCache for Redis Clusters in the ElastiCache User Guide.

This operation is valid for Redis only.

", + "CreateGlobalReplicationGroup": "

Global Datastore for Redis offers fully managed, fast, reliable and secure cross-region replication. Using Global Datastore for Redis, you can create cross-region read replica clusters for ElastiCache for Redis to enable low-latency reads and disaster recovery across regions. For more information, see Replication Across Regions Using Global Datastore.

", + "CreateReplicationGroup": "

Creates a Redis (cluster mode disabled) or a Redis (cluster mode enabled) replication group.

This API can be used to create a standalone regional replication group or a secondary replication group associated with a Global datastore.

A Redis (cluster mode disabled) replication group is a collection of clusters, where one of the clusters is a read/write primary and the others are read-only replicas. Writes to the primary are asynchronously propagated to the replicas.

A Redis cluster-mode enabled cluster is comprised of from 1 to 90 shards (API/CLI: node groups). Each shard has a primary node and up to 5 read-only replica nodes. The configuration can range from 90 shards and 0 replicas to 15 shards and 5 replicas, which is the maximum number or replicas allowed.

The node or shard limit can be increased to a maximum of 500 per cluster if the Redis engine version is 5.0.6 or higher. For example, you can choose to configure a 500 node cluster that ranges between 83 shards (one primary and 5 replicas per shard) and 500 shards (single primary and no replicas). Make sure there are enough available IP addresses to accommodate the increase. Common pitfalls include the subnets in the subnet group have too small a CIDR range or the subnets are shared and heavily used by other clusters. For more information, see Creating a Subnet Group. For versions below 5.0.6, the limit is 250 per cluster.

To request a limit increase, see AWS Service Limits and choose the limit type Nodes per cluster per instance type.

When a Redis (cluster mode disabled) replication group has been successfully created, you can add one or more read replicas to it, up to a total of 5 read replicas. If you need to increase or decrease the number of node groups (console: shards), you can avail yourself of ElastiCache for Redis' scaling. For more information, see Scaling ElastiCache for Redis Clusters in the ElastiCache User Guide.

This operation is valid for Redis only.

", "CreateSnapshot": "

Creates a copy of an entire cluster or replication group at a specific moment in time.

This operation is valid for Redis only.

", - "DecreaseNodeGroupsInGlobalReplicationGroup": "

Decreases the number of node groups in a Global Datastore

", + "CreateUser": "

For Redis engine version 6.x onwards: Creates a Redis user. For more information, see Using Role Based Access Control (RBAC).

", + "CreateUserGroup": "

For Redis engine version 6.x onwards: Creates a Redis user group. For more information, see Using Role Based Access Control (RBAC)

", + "DecreaseNodeGroupsInGlobalReplicationGroup": "

Decreases the number of node groups in a Global datastore

", "DecreaseReplicaCount": "

Dynamically decreases the number of replicas in a Redis (cluster mode disabled) replication group or the number of replica nodes in one or more node groups (shards) of a Redis (cluster mode enabled) replication group. This operation is performed with no cluster down time.

", - "DeleteCacheCluster": "

Deletes a previously provisioned cluster. DeleteCacheCluster deletes all associated cache nodes, node endpoints and the cluster itself. When you receive a successful response from this operation, Amazon ElastiCache immediately begins deleting the cluster; you cannot cancel or revert this operation.

This operation is not valid for:

", - "DeleteCacheParameterGroup": "

Deletes the specified cache parameter group. You cannot delete a cache parameter group if it is associated with any cache clusters.

", + "DeleteCacheCluster": "

Deletes a previously provisioned cluster. DeleteCacheCluster deletes all associated cache nodes, node endpoints and the cluster itself. When you receive a successful response from this operation, Amazon ElastiCache immediately begins deleting the cluster; you cannot cancel or revert this operation.

This operation is not valid for:

", + "DeleteCacheParameterGroup": "

Deletes the specified cache parameter group. You cannot delete a cache parameter group if it is associated with any cache clusters. You cannot delete the default cache parameter groups in your account.

", "DeleteCacheSecurityGroup": "

Deletes a cache security group.

You cannot delete a cache security group if it is associated with any clusters.

", - "DeleteCacheSubnetGroup": "

Deletes a cache subnet group.

You cannot delete a cache subnet group if it is associated with any clusters.

", - "DeleteGlobalReplicationGroup": "

Deleting a Global Datastore is a two-step process:

Since the Global Datastore has only a primary cluster, you can delete the Global Datastore while retaining the primary by setting RetainPrimaryCluster=true.

When you receive a successful response from this operation, Amazon ElastiCache immediately begins deleting the selected resources; you cannot cancel or revert this operation.

", + "DeleteCacheSubnetGroup": "

Deletes a cache subnet group.

You cannot delete a default cache subnet group or one that is associated with any clusters.

", + "DeleteGlobalReplicationGroup": "

Deleting a Global datastore is a two-step process:

Since the Global Datastore has only a primary cluster, you can delete the Global Datastore while retaining the primary by setting RetainPrimaryReplicationGroup=true. The primary cluster is never deleted when deleting a Global Datastore. It can only be deleted when it no longer is associated with any Global Datastore.

When you receive a successful response from this operation, Amazon ElastiCache immediately begins deleting the selected resources; you cannot cancel or revert this operation.

", "DeleteReplicationGroup": "

Deletes an existing replication group. By default, this operation deletes the entire replication group, including the primary/primaries and all of the read replicas. If the replication group has only one primary, you can optionally delete only the read replicas, while retaining the primary by setting RetainPrimaryCluster=true.

When you receive a successful response from this operation, Amazon ElastiCache immediately begins deleting the selected resources; you cannot cancel or revert this operation.

This operation is valid for Redis only.

", "DeleteSnapshot": "

Deletes an existing snapshot. When you receive a successful response from this operation, ElastiCache immediately begins deleting the snapshot; you cannot cancel or revert this operation.

This operation is valid for Redis only.

", + "DeleteUser": "

For Redis engine version 6.x onwards: Deletes a user. The user will be removed from all user groups and in turn removed from all replication groups. For more information, see Using Role Based Access Control (RBAC).

", + "DeleteUserGroup": "

For Redis engine version 6.x onwards: Deletes a user group. The user group must first be disassociated from the replication group before it can be deleted. For more information, see Using Role Based Access Control (RBAC).

", "DescribeCacheClusters": "

Returns information about all provisioned clusters if no cluster identifier is specified, or about a specific cache cluster if a cluster identifier is supplied.

By default, abbreviated information about the clusters is returned. You can use the optional ShowCacheNodeInfo flag to retrieve detailed information about the cache nodes associated with the clusters. These details include the DNS address and port for the cache node endpoint.

If the cluster is in the creating state, only cluster-level information is displayed until all of the nodes are successfully provisioned.

If the cluster is in the deleting state, only cluster-level information is displayed.

If cache nodes are currently being added to the cluster, node endpoint information and creation time for the additional nodes are not displayed until they are completely provisioned. When the cluster state is available, the cluster is ready for use.

If cache nodes are currently being removed from the cluster, no endpoint information for the removed nodes is displayed.

", "DescribeCacheEngineVersions": "

Returns a list of the available cache engines and their versions.

", "DescribeCacheParameterGroups": "

Returns a list of cache parameter group descriptions. If a cache parameter group name is specified, the list contains only the descriptions for that group.

", @@ -32,33 +36,37 @@ "DescribeCacheSubnetGroups": "

Returns a list of cache subnet group descriptions. If a subnet group name is specified, the list contains only the description of that group. This is applicable only when you have ElastiCache in VPC setup. All ElastiCache clusters now launch in VPC by default.

", "DescribeEngineDefaultParameters": "

Returns the default engine and system parameter information for the specified cache engine.

", "DescribeEvents": "

Returns events related to clusters, cache security groups, and cache parameter groups. You can obtain events specific to a particular cluster, cache security group, or cache parameter group by providing the name as a parameter.

By default, only the events occurring within the last hour are returned; however, you can retrieve up to 14 days' worth of events if necessary.

", - "DescribeGlobalReplicationGroups": "

Returns information about a particular global replication group. If no identifier is specified, returns information about all Global Datastores.

", + "DescribeGlobalReplicationGroups": "

Returns information about a particular global replication group. If no identifier is specified, returns information about all Global datastores.

", "DescribeReplicationGroups": "

Returns information about a particular replication group. If no identifier is specified, DescribeReplicationGroups returns information about all replication groups.

This operation is valid for Redis only.

", "DescribeReservedCacheNodes": "

Returns information about reserved cache nodes for this account, or about a specified reserved cache node.

", "DescribeReservedCacheNodesOfferings": "

Lists available reserved cache node offerings.

", "DescribeServiceUpdates": "

Returns details of the service updates

", "DescribeSnapshots": "

Returns information about cluster or replication group snapshots. By default, DescribeSnapshots lists all of your snapshots; it can optionally describe a single snapshot, or just the snapshots associated with a particular cache cluster.

This operation is valid for Redis only.

", "DescribeUpdateActions": "

Returns details of the update actions

", - "DisassociateGlobalReplicationGroup": "

Remove a secondary cluster from the Global Datastore using the Global Datastore name. The secondary cluster will no longer receive updates from the primary cluster, but will remain as a standalone cluster in that AWS region.

", + "DescribeUserGroups": "

Returns a list of user groups.

", + "DescribeUsers": "

Returns a list of users.

", + "DisassociateGlobalReplicationGroup": "

Remove a secondary cluster from the Global datastore using the Global datastore name. The secondary cluster will no longer receive updates from the primary cluster, but will remain as a standalone cluster in that AWS region.

", "FailoverGlobalReplicationGroup": "

Used to failover the primary region to a selected secondary region. The selected secondary region will become primary, and all other clusters will become secondary.

", - "IncreaseNodeGroupsInGlobalReplicationGroup": "

Increase the number of node groups in the Global Datastore

", - "IncreaseReplicaCount": "

Dynamically increases the number of replics in a Redis (cluster mode disabled) replication group or the number of replica nodes in one or more node groups (shards) of a Redis (cluster mode enabled) replication group. This operation is performed with no cluster down time.

", + "IncreaseNodeGroupsInGlobalReplicationGroup": "

Increase the number of node groups in the Global datastore

", + "IncreaseReplicaCount": "

Dynamically increases the number of replicas in a Redis (cluster mode disabled) replication group or the number of replica nodes in one or more node groups (shards) of a Redis (cluster mode enabled) replication group. This operation is performed with no cluster down time.

", "ListAllowedNodeTypeModifications": "

Lists all available node types that you can scale your Redis cluster's or replication group's current node type.

When you use the ModifyCacheCluster or ModifyReplicationGroup operations to scale your cluster or replication group, the value of the CacheNodeType parameter must be one of the node types returned by this operation.

", - "ListTagsForResource": "

Lists all cost allocation tags currently on the named resource. A cost allocation tag is a key-value pair where the key is case-sensitive and the value is optional. You can use cost allocation tags to categorize and track your AWS costs.

If the cluster is not in the available state, ListTagsForResource returns an error.

You can have a maximum of 50 cost allocation tags on an ElastiCache resource. For more information, see Monitoring Costs with Tags.

", + "ListTagsForResource": "

Lists all tags currently on a named resource.

A tag is a key-value pair where the key and value are case-sensitive. You can use tags to categorize and track all your ElastiCache resources, with the exception of global replication group. When you add or remove tags on replication groups, those actions will be replicated to all nodes in the replication group. For more information, see Resource-level permissions.

If the cluster is not in the available state, ListTagsForResource returns an error.

", "ModifyCacheCluster": "

Modifies the settings for a cluster. You can use this operation to change one or more cluster configuration parameters by specifying the parameters and the new values.

", "ModifyCacheParameterGroup": "

Modifies the parameters of a cache parameter group. You can modify up to 20 parameters in a single request by submitting a list parameter name and value pairs.

", "ModifyCacheSubnetGroup": "

Modifies an existing cache subnet group.

", - "ModifyGlobalReplicationGroup": "

Modifies the settings for a Global Datastore.

", + "ModifyGlobalReplicationGroup": "

Modifies the settings for a Global datastore.

", "ModifyReplicationGroup": "

Modifies the settings for a replication group.

This operation is valid for Redis only.

", - "ModifyReplicationGroupShardConfiguration": "

Modifies a replication group's shards (node groups) by allowing you to add shards, remove shards, or rebalance the keyspaces among exisiting shards.

", - "PurchaseReservedCacheNodesOffering": "

Allows you to purchase a reserved cache node offering.

", + "ModifyReplicationGroupShardConfiguration": "

Modifies a replication group's shards (node groups) by allowing you to add shards, remove shards, or rebalance the keyspaces among existing shards.

", + "ModifyUser": "

Changes user password(s) and/or access string.

", + "ModifyUserGroup": "

Changes the list of users that belong to the user group.

", + "PurchaseReservedCacheNodesOffering": "

Allows you to purchase a reserved cache node offering. Reserved nodes are not eligible for cancellation and are non-refundable. For more information, see Managing Costs with Reserved Nodes for Redis or Managing Costs with Reserved Nodes for Memcached.

", "RebalanceSlotsInGlobalReplicationGroup": "

Redistribute slots to ensure uniform distribution across existing shards in the cluster.

", "RebootCacheCluster": "

Reboots some, or all, of the cache nodes within a provisioned cluster. This operation applies any modified cache parameter groups to the cluster. The reboot operation takes place as soon as possible, and results in a momentary outage to the cluster. During the reboot, the cluster status is set to REBOOTING.

The reboot causes the contents of the cache (for each cache node being rebooted) to be lost.

When the reboot is complete, a cluster event is created.

Rebooting a cluster is currently supported on Memcached and Redis (cluster mode disabled) clusters. Rebooting is not supported on Redis (cluster mode enabled) clusters.

If you make changes to parameters that require a Redis (cluster mode enabled) cluster reboot for the changes to be applied, see Rebooting a Cluster for an alternate process.

", - "RemoveTagsFromResource": "

Removes the tags identified by the TagKeys list from the named resource.

", + "RemoveTagsFromResource": "

Removes the tags identified by the TagKeys list from the named resource. A tag is a key-value pair where the key and value are case-sensitive. You can use tags to categorize and track all your ElastiCache resources, with the exception of global replication group. When you add or remove tags on replication groups, those actions will be replicated to all nodes in the replication group. For more information, see Resource-level permissions.

", "ResetCacheParameterGroup": "

Modifies the parameters of a cache parameter group to the engine or system default value. You can reset specific parameters by submitting a list of parameter names. To reset the entire cache parameter group, specify the ResetAllParameters and CacheParameterGroupName parameters.

", "RevokeCacheSecurityGroupIngress": "

Revokes ingress from a cache security group. Use this operation to disallow access from an Amazon EC2 security group that had been previously authorized.

", "StartMigration": "

Start the migration of data.

", - "TestFailover": "

Represents the input of a TestFailover operation which test automatic failover on a specified node group (called shard in the console) in a replication group (called cluster in the console).

Note the following

Also see, Testing Multi-AZ in the ElastiCache User Guide.

" + "TestFailover": "

Represents the input of a TestFailover operation which test automatic failover on a specified node group (called shard in the console) in a replication group (called cluster in the console).

Note the following

Also see, Testing Multi-AZ in the ElastiCache User Guide.

" }, "shapes": { "APICallRateForCustomerExceededFault": { @@ -73,6 +81,14 @@ "ModifyCacheClusterMessage$AZMode": "

Specifies whether the new nodes in this Memcached cluster are all created in a single Availability Zone or created across multiple Availability Zones.

Valid values: single-az | cross-az.

This option is only supported for Memcached clusters.

You cannot specify single-az if the Memcached cluster already has cache nodes in different Availability Zones. If cross-az is specified, existing Memcached nodes remain in their current Availability Zone.

Only newly created nodes are located in different Availability Zones.

" } }, + "AccessString": { + "base": null, + "refs": { + "CreateUserMessage$AccessString": "

Access permissions string used for this user.

", + "ModifyUserMessage$AccessString": "

Access permissions string used for this user.

", + "ModifyUserMessage$AppendAccessString": "

Adds additional user permissions to the access string.

" + } + }, "AddTagsToResourceMessage": { "base": "

Represents the input of an AddTagsToResource operation.

", "refs": { @@ -104,8 +120,20 @@ "AuthTokenUpdateStrategyType": { "base": null, "refs": { - "ModifyCacheClusterMessage$AuthTokenUpdateStrategy": "

Specifies the strategy to use to update the AUTH token. This parameter must be specified with the auth-token parameter. Possible values:

For more information, see Authenticating Users with Redis AUTH

", - "ModifyReplicationGroupMessage$AuthTokenUpdateStrategy": "

Specifies the strategy to use to update the AUTH token. This parameter must be specified with the auth-token parameter. Possible values:

For more information, see Authenticating Users with Redis AUTH

" + "ModifyCacheClusterMessage$AuthTokenUpdateStrategy": "

Specifies the strategy to use to update the AUTH token. This parameter must be specified with the auth-token parameter. Possible values:

For more information, see Authenticating Users with Redis AUTH

", + "ModifyReplicationGroupMessage$AuthTokenUpdateStrategy": "

Specifies the strategy to use to update the AUTH token. This parameter must be specified with the auth-token parameter. Possible values:

For more information, see Authenticating Users with Redis AUTH

" + } + }, + "Authentication": { + "base": "

Indicates whether the user requires a password to authenticate.

", + "refs": { + "User$Authentication": "

Denotes whether the user requires a password to authenticate.

" + } + }, + "AuthenticationType": { + "base": null, + "refs": { + "Authentication$Type": "

Indicates whether the user requires a password to authenticate.

" } }, "AuthorizationAlreadyExistsFault": { @@ -171,8 +199,9 @@ "base": null, "refs": { "CacheCluster$AutoMinorVersionUpgrade": "

This parameter is currently disabled.

", + "CacheCluster$ReplicationGroupLogDeliveryEnabled": "

A boolean value indicating whether log delivery is enabled for the replication group.

", "CacheNodeTypeSpecificParameter$IsModifiable": "

Indicates whether (true) or not (false) the parameter can be modified. Some parameters have security or operational implications that prevent them from being changed.

", - "CacheParameterGroup$IsGlobal": "

Indicates whether the parameter group is associated with a Global Datastore

", + "CacheParameterGroup$IsGlobal": "

Indicates whether the parameter group is associated with a Global datastore

", "CompleteMigrationMessage$Force": "

Forces the migration to stop without ensuring that data is in sync. It is recommended to use this option only to abort the migration and not recommended when application wants to continue migration to ElastiCache.

", "DecreaseNodeGroupsInGlobalReplicationGroupMessage$ApplyImmediately": "

Indicates that the shard reconfiguration process begins immediately. At present, the only permitted value for this parameter is true.

", "DecreaseReplicaCountMessage$ApplyImmediately": "

If True, the number of replica nodes is decreased immediately. ApplyImmediately=False is not currently supported.

", @@ -202,21 +231,25 @@ "CreateReplicationGroupMessage$AutoMinorVersionUpgrade": "

This parameter is currently disabled.

", "CreateReplicationGroupMessage$TransitEncryptionEnabled": "

A flag that enables in-transit encryption when set to true.

You cannot modify the value of TransitEncryptionEnabled after the cluster is created. To enable in-transit encryption on a cluster you must set TransitEncryptionEnabled to true when you create a cluster.

This parameter is valid only if the Engine parameter is redis, the EngineVersion parameter is 3.2.6, 4.x or later, and the cluster is being created in an Amazon VPC.

If you enable in-transit encryption, you must also specify a value for CacheSubnetGroup.

Required: Only available when creating a replication group in an Amazon VPC using redis version 3.2.6, 4.x or later.

Default: false

For HIPAA compliance, you must specify TransitEncryptionEnabled as true, an AuthToken, and a CacheSubnetGroup.

", "CreateReplicationGroupMessage$AtRestEncryptionEnabled": "

A flag that enables encryption at rest when set to true.

You cannot modify the value of AtRestEncryptionEnabled after the replication group is created. To enable encryption at rest on a replication group you must set AtRestEncryptionEnabled to true when you create the replication group.

Required: Only available when creating a replication group in an Amazon VPC using redis version 3.2.6, 4.x or later.

Default: false

", + "CreateUserMessage$NoPasswordRequired": "

Indicates a password is not required for this user.

", "DeleteReplicationGroupMessage$RetainPrimaryCluster": "

If set to true, all of the read replicas are deleted, but the primary node is retained.

", "DescribeCacheClustersMessage$ShowCacheNodeInfo": "

An optional flag that can be included in the DescribeCacheCluster request to retrieve information about the individual cache nodes.

", "DescribeCacheClustersMessage$ShowCacheClustersNotInReplicationGroups": "

An optional flag that can be included in the DescribeCacheCluster request to show only nodes (API/CLI: clusters) that are not members of a replication group. In practice, this mean Memcached and single node Redis clusters.

", - "DescribeGlobalReplicationGroupsMessage$ShowMemberInfo": "

Returns the list of members that comprise the Global Datastore.

", + "DescribeGlobalReplicationGroupsMessage$ShowMemberInfo": "

Returns the list of members that comprise the Global datastore.

", "DescribeSnapshotsMessage$ShowNodeGroupConfig": "

A Boolean value which if true, the node group (shard) configuration is included in the snapshot description.

", "DescribeUpdateActionsMessage$ShowNodeLevelUpdateStatus": "

Dictates whether to include node level update status in the response

", - "GlobalReplicationGroup$ClusterEnabled": "

A flag that indicates whether the Global Datastore is cluster enabled.

", + "GlobalReplicationGroup$ClusterEnabled": "

A flag that indicates whether the Global datastore is cluster enabled.

", "GlobalReplicationGroup$AuthTokenEnabled": "

A flag that enables using an AuthToken (password) when issuing Redis commands.

Default: false

", - "GlobalReplicationGroup$TransitEncryptionEnabled": "

A flag that enables in-transit encryption when set to true. You cannot modify the value of TransitEncryptionEnabled after the cluster is created. To enable in-transit encryption on a cluster you must set TransitEncryptionEnabled to true when you create a cluster.

", + "GlobalReplicationGroup$TransitEncryptionEnabled": "

A flag that enables in-transit encryption when set to true. You cannot modify the value of TransitEncryptionEnabled after the cluster is created. To enable in-transit encryption on a cluster you must set TransitEncryptionEnabled to true when you create a cluster.

Required: Only available when creating a replication group in an Amazon VPC using redis version 3.2.6, 4.x or later.

", "GlobalReplicationGroup$AtRestEncryptionEnabled": "

A flag that enables encryption at rest when set to true.

You cannot modify the value of AtRestEncryptionEnabled after the replication group is created. To enable encryption at rest on a replication group you must set AtRestEncryptionEnabled to true when you create the replication group.

Required: Only available when creating a replication group in an Amazon VPC using redis version 3.2.6, 4.x or later.

", + "LogDeliveryConfigurationRequest$Enabled": "

Specify if log delivery is enabled. Default true.

", "ModifyCacheClusterMessage$AutoMinorVersionUpgrade": "

This parameter is currently disabled.

", "ModifyGlobalReplicationGroupMessage$AutomaticFailoverEnabled": "

Determines whether a read replica is automatically promoted to read/write primary if the existing primary encounters a failure.

", "ModifyReplicationGroupMessage$AutomaticFailoverEnabled": "

Determines whether a read replica is automatically promoted to read/write primary if the existing primary encounters a failure.

Valid values: true | false

", - "ModifyReplicationGroupMessage$MultiAZEnabled": "

A flag indicating if you have Multi-AZ enabled to enhance fault tolerance. For more information, see Minimizing Downtime: Multi-AZ.

", + "ModifyReplicationGroupMessage$MultiAZEnabled": "

A list of tags to be added to this resource. A tag is a key-value pair. A tag key must be accompanied by a tag value, although null is accepted.

", "ModifyReplicationGroupMessage$AutoMinorVersionUpgrade": "

This parameter is currently disabled.

", + "ModifyReplicationGroupMessage$RemoveUserGroups": "

Removes the user groups that can access this replication group.

", + "ModifyUserMessage$NoPasswordRequired": "

Indicates no password is required for the user.

", "ReplicationGroup$ClusterEnabled": "

A flag indicating whether or not this replication group is cluster enabled; i.e., whether its data can be partitioned across multiple shards (API/CLI: node groups).

Valid values: true | false

", "ReplicationGroup$AuthTokenEnabled": "

A flag that enables using an AuthToken (password) when issuing Redis commands.

Default: false

", "ReplicationGroup$TransitEncryptionEnabled": "

A flag that enables in-transit encryption when set to true.

You cannot modify the value of TransitEncryptionEnabled after the cluster is created. To enable in-transit encryption on a cluster you must set TransitEncryptionEnabled to true when you create a cluster.

Required: Only available when creating a replication group in an Amazon VPC using redis version 3.2.6, 4.x or later.

Default: false

", @@ -281,7 +314,7 @@ } }, "CacheNode": { - "base": "

Represents an individual cache node within a cluster. Each cache node runs its own instance of the cluster's protocol-compliant caching software - either Memcached or Redis.

The following node types are supported by ElastiCache. Generally speaking, the current generation types provide more memory and computational power at lower cost when compared to their equivalent previous generation counterparts.

Additional node type info

", + "base": "

Represents an individual cache node within a cluster. Each cache node runs its own instance of the cluster's protocol-compliant caching software - either Memcached or Redis.

The following node types are supported by ElastiCache. Generally speaking, the current generation types provide more memory and computational power at lower cost when compared to their equivalent previous generation counterparts.

Additional node type info

", "refs": { "CacheNodeList$member": null } @@ -494,6 +527,12 @@ "Parameter$ChangeType": "

Indicates whether a change to the parameter is applied immediately or requires a reboot for the change to be applied. You can force a reboot or wait until the next maintenance window's reboot. For more information, see Rebooting a Cluster.

" } }, + "CloudWatchLogsDestinationDetails": { + "base": "

The configuration details of the CloudWatch Logs destination.

", + "refs": { + "DestinationDetails$CloudWatchLogsDetails": "

The configuration details of the CloudWatch Logs destination.

" + } + }, "ClusterIdList": { "base": null, "refs": { @@ -601,6 +640,16 @@ "refs": { } }, + "CreateUserGroupMessage": { + "base": null, + "refs": { + } + }, + "CreateUserMessage": { + "base": null, + "refs": { + } + }, "CustomerNodeEndpoint": { "base": "

The endpoint from which data should be migrated.

", "refs": { @@ -633,6 +682,16 @@ "refs": { } }, + "DefaultUserAssociatedToUserGroupFault": { + "base": "

", + "refs": { + } + }, + "DefaultUserRequired": { + "base": "

You must add default user to a user group.

", + "refs": { + } + }, "DeleteCacheClusterMessage": { "base": "

Represents the input of a DeleteCacheCluster operation.

", "refs": { @@ -688,6 +747,16 @@ "refs": { } }, + "DeleteUserGroupMessage": { + "base": null, + "refs": { + } + }, + "DeleteUserMessage": { + "base": null, + "refs": { + } + }, "DescribeCacheClustersMessage": { "base": "

Represents the input of a DescribeCacheClusters operation.

", "refs": { @@ -778,6 +847,42 @@ "refs": { } }, + "DescribeUserGroupsMessage": { + "base": null, + "refs": { + } + }, + "DescribeUserGroupsResult": { + "base": null, + "refs": { + } + }, + "DescribeUsersMessage": { + "base": null, + "refs": { + } + }, + "DescribeUsersResult": { + "base": null, + "refs": { + } + }, + "DestinationDetails": { + "base": "

Configuration details of either a CloudWatch Logs destination or Kinesis Data Firehose destination.

", + "refs": { + "LogDeliveryConfiguration$DestinationDetails": "

Configuration details of either a CloudWatch Logs destination or Kinesis Data Firehose destination.

", + "LogDeliveryConfigurationRequest$DestinationDetails": "

Configuration details of either a CloudWatch Logs destination or Kinesis Data Firehose destination.

", + "PendingLogDeliveryConfiguration$DestinationDetails": "

Configuration details of either a CloudWatch Logs destination or Kinesis Data Firehose destination.

" + } + }, + "DestinationType": { + "base": null, + "refs": { + "LogDeliveryConfiguration$DestinationType": "

Returns the destination type, either cloudwatch-logs or kinesis-firehose.

", + "LogDeliveryConfigurationRequest$DestinationType": "

Specify either cloudwatch-logs or kinesis-firehose as the destination type.

", + "PendingLogDeliveryConfiguration$DestinationType": "

Returns the destination type, either CloudWatch Logs or Kinesis Data Firehose.

" + } + }, "DisassociateGlobalReplicationGroupMessage": { "base": null, "refs": { @@ -799,6 +904,11 @@ "SlotMigration$ProgressPercentage": "

The percentage of the slot migration that is complete.

" } }, + "DuplicateUserNameFault": { + "base": "

A user with this username already exists.

", + "refs": { + } + }, "EC2SecurityGroup": { "base": "

Provides ownership and status information for an Amazon EC2 security group.

", "refs": { @@ -814,7 +924,7 @@ "Endpoint": { "base": "

Represents the information required for client programs to connect to a cache node.

", "refs": { - "CacheCluster$ConfigurationEndpoint": "

Represents a Memcached cluster endpoint which, if Automatic Discovery is enabled on the cluster, can be used by an application to connect to any node in the cluster. The configuration endpoint will always have .cfg in it.

Example: mem-3.9dvc4r.cfg.usw2.cache.amazonaws.com:11211

", + "CacheCluster$ConfigurationEndpoint": "

Represents a Memcached cluster endpoint which can be used by an application to connect to any node in the cluster. The configuration endpoint will always have .cfg in it.

Example: mem-3.9dvc4r.cfg.usw2.cache.amazonaws.com:11211

", "CacheNode$Endpoint": "

The hostname for connecting to this cache node.

", "NodeGroup$PrimaryEndpoint": "

The endpoint of the primary node in this node group (shard).

", "NodeGroup$ReaderEndpoint": "

The endpoint of the replica nodes in this node group (shard).

", @@ -828,6 +938,16 @@ "DescribeEngineDefaultParametersResult$EngineDefaults": null } }, + "EngineType": { + "base": null, + "refs": { + "CreateUserGroupMessage$Engine": "

The current supported value is Redis.

", + "CreateUserMessage$Engine": "

The current supported value is Redis.

", + "DescribeUsersMessage$Engine": "

The Redis engine.

", + "User$Engine": "

The current supported value is Redis.

", + "UserGroup$Engine": "

The current supported value is Redis.

" + } + }, "Event": { "base": "

Represents a single occurrence of something interesting within the system. Some examples of events are creating a cluster, adding or removing a cache node, or rebooting a node.

", "refs": { @@ -855,6 +975,36 @@ "refs": { } }, + "Filter": { + "base": "

Used to streamline results of a search based on the property being filtered.

", + "refs": { + "FilterList$member": null + } + }, + "FilterList": { + "base": null, + "refs": { + "DescribeUsersMessage$Filters": "

Filter to determine the list of User IDs to return.

" + } + }, + "FilterName": { + "base": null, + "refs": { + "Filter$Name": "

The property being filtered. For example, UserId.

" + } + }, + "FilterValue": { + "base": null, + "refs": { + "FilterValueList$member": null + } + }, + "FilterValueList": { + "base": null, + "refs": { + "Filter$Values": "

The property values to filter on. For example, \"user-123\".

" + } + }, "GlobalNodeGroup": { "base": "

Indicates the slot configuration and global identifier for a slice group.

", "refs": { @@ -864,8 +1014,8 @@ "GlobalNodeGroupIdList": { "base": null, "refs": { - "DecreaseNodeGroupsInGlobalReplicationGroupMessage$GlobalNodeGroupsToRemove": "

If the value of NodeGroupCount is less than the current number of node groups (shards), then either NodeGroupsToRemove or NodeGroupsToRetain is required. NodeGroupsToRemove is a list of NodeGroupIds to remove from the cluster. ElastiCache for Redis will attempt to remove all node groups listed by NodeGroupsToRemove from the cluster.

", - "DecreaseNodeGroupsInGlobalReplicationGroupMessage$GlobalNodeGroupsToRetain": "

If the value of NodeGroupCount is less than the current number of node groups (shards), then either NodeGroupsToRemove or NodeGroupsToRetain is required. NodeGroupsToRemove is a list of NodeGroupIds to remove from the cluster. ElastiCache for Redis will attempt to remove all node groups listed by NodeGroupsToRemove from the cluster.

" + "DecreaseNodeGroupsInGlobalReplicationGroupMessage$GlobalNodeGroupsToRemove": "

If the value of NodeGroupCount is less than the current number of node groups (shards), then either NodeGroupsToRemove or NodeGroupsToRetain is required. GlobalNodeGroupsToRemove is a list of NodeGroupIds to remove from the cluster. ElastiCache for Redis will attempt to remove all node groups listed by GlobalNodeGroupsToRemove from the cluster.

", + "DecreaseNodeGroupsInGlobalReplicationGroupMessage$GlobalNodeGroupsToRetain": "

If the value of NodeGroupCount is less than the current number of node groups (shards), then either NodeGroupsToRemove or NodeGroupsToRetain is required. GlobalNodeGroupsToRetain is a list of NodeGroupIds to retain from the cluster. ElastiCache for Redis will attempt to retain all node groups listed by GlobalNodeGroupsToRetain from the cluster.

" } }, "GlobalNodeGroupList": { @@ -875,7 +1025,7 @@ } }, "GlobalReplicationGroup": { - "base": "

Consists of a primary cluster that accepts writes and an associated secondary cluster that resides in a different AWS region. The secondary cluster accepts only reads. The primary cluster automatically replicates updates to the secondary cluster.

", + "base": "

Consists of a primary cluster that accepts writes and an associated secondary cluster that resides in a different AWS region. The secondary cluster accepts only reads. The primary cluster automatically replicates updates to the secondary cluster.

", "refs": { "CreateGlobalReplicationGroupResult$GlobalReplicationGroup": null, "DecreaseNodeGroupsInGlobalReplicationGroupResult$GlobalReplicationGroup": null, @@ -889,14 +1039,14 @@ } }, "GlobalReplicationGroupAlreadyExistsFault": { - "base": "

The Global Datastore name already exists.

", + "base": "

The Global datastore name already exists.

", "refs": { } }, "GlobalReplicationGroupInfo": { - "base": "

The name of the Global Datastore and role of this replication group in the Global Datastore.

", + "base": "

The name of the Global datastore and role of this replication group in the Global datastore.

", "refs": { - "ReplicationGroup$GlobalReplicationGroupInfo": "

The name of the Global Datastore and role of this replication group in the Global Datastore.

" + "ReplicationGroup$GlobalReplicationGroupInfo": "

The name of the Global datastore and role of this replication group in the Global datastore.

" } }, "GlobalReplicationGroupList": { @@ -906,7 +1056,7 @@ } }, "GlobalReplicationGroupMember": { - "base": "

A member of a Global Datastore. It contains the Replication Group Id, the AWS region and the role of the replication group.

", + "base": "

A member of a Global datastore. It contains the Replication Group Id, the AWS region and the role of the replication group.

", "refs": { "GlobalReplicationGroupMemberList$member": null } @@ -914,11 +1064,11 @@ "GlobalReplicationGroupMemberList": { "base": null, "refs": { - "GlobalReplicationGroup$Members": "

The replication groups that comprise the Global Datastore.

" + "GlobalReplicationGroup$Members": "

The replication groups that comprise the Global datastore.

" } }, "GlobalReplicationGroupNotFoundFault": { - "base": "

The Global Datastore does not exist

", + "base": "

The Global datastore does not exist

", "refs": { } }, @@ -963,9 +1113,10 @@ "IntegerOptional": { "base": null, "refs": { - "CacheCluster$NumCacheNodes": "

The number of cache nodes in the cluster.

For clusters running Redis, this value must be 1. For clusters running Memcached, this value must be between 1 and 20.

", + "Authentication$PasswordCount": "

The number of passwords belonging to the user. The maximum is two.

", + "CacheCluster$NumCacheNodes": "

The number of cache nodes in the cluster.

For clusters running Redis, this value must be 1. For clusters running Memcached, this value must be between 1 and 40.

", "CacheCluster$SnapshotRetentionLimit": "

The number of days for which ElastiCache retains automatic cluster snapshots before deleting them. For example, if you set SnapshotRetentionLimit to 5, a snapshot that was taken today is retained for 5 days before being deleted.

If the value of SnapshotRetentionLimit is set to zero (0), backups are turned off.

", - "CreateCacheClusterMessage$NumCacheNodes": "

The initial number of cache nodes that the cluster has.

For clusters running Redis, this value must be 1. For clusters running Memcached, this value must be between 1 and 20.

If you need more than 20 nodes for your Memcached cluster, please fill out the ElastiCache Limit Increase Request form at http://aws.amazon.com/contact-us/elasticache-node-limit-request/.

", + "CreateCacheClusterMessage$NumCacheNodes": "

The initial number of cache nodes that the cluster has.

For clusters running Redis, this value must be 1. For clusters running Memcached, this value must be between 1 and 40.

If you need more than 40 nodes for your Memcached cluster, please fill out the ElastiCache Limit Increase Request form at http://aws.amazon.com/contact-us/elasticache-node-limit-request/.

", "CreateCacheClusterMessage$Port": "

The port number on which each of the cache nodes accepts connections.

", "CreateCacheClusterMessage$SnapshotRetentionLimit": "

The number of days for which ElastiCache retains automatic snapshots before deleting them. For example, if you set SnapshotRetentionLimit to 5, a snapshot taken today is retained for 5 days before being deleted.

This parameter is only valid if the Engine parameter is redis.

Default: 0 (i.e., automatic backups are disabled for this cache cluster).

", "CreateReplicationGroupMessage$NumCacheClusters": "

The number of clusters this replication group initially has.

This parameter is not used if there is more than one node group (shard). You should use ReplicasPerNodeGroup instead.

If AutomaticFailoverEnabled is true, the value of this parameter must be at least 2. If AutomaticFailoverEnabled is false you can omit this parameter (it will default to 1), or you can explicitly set it to a value between 2 and 6.

The maximum permitted value for NumCacheClusters is 6 (1 primary plus 5 replicas).

", @@ -991,15 +1142,17 @@ "DescribeServiceUpdatesMessage$MaxRecords": "

The maximum number of records to include in the response

", "DescribeSnapshotsMessage$MaxRecords": "

The maximum number of records to include in the response. If more records exist than the specified MaxRecords value, a marker is included in the response so that the remaining results can be retrieved.

Default: 50

Constraints: minimum 20; maximum 50.

", "DescribeUpdateActionsMessage$MaxRecords": "

The maximum number of records to include in the response

", + "DescribeUserGroupsMessage$MaxRecords": "

The maximum number of records to include in the response. If more records exist than the specified MaxRecords value, a marker is included in the response so that the remaining results can be retrieved.

", + "DescribeUsersMessage$MaxRecords": "

The maximum number of records to include in the response. If more records exist than the specified MaxRecords value, a marker is included in the response so that the remaining results can be retrieved.

", "IncreaseReplicaCountMessage$NewReplicaCount": "

The number of read replica nodes you want at the completion of this operation. For Redis (cluster mode disabled) replication groups, this is the number of replica nodes in the replication group. For Redis (cluster mode enabled) replication groups, this is the number of replica nodes in each of the replication group's node groups.

", - "ModifyCacheClusterMessage$NumCacheNodes": "

The number of cache nodes that the cluster should have. If the value for NumCacheNodes is greater than the sum of the number of current cache nodes and the number of cache nodes pending creation (which may be zero), more nodes are added. If the value is less than the number of existing cache nodes, nodes are removed. If the value is equal to the number of current cache nodes, any pending add or remove requests are canceled.

If you are removing cache nodes, you must use the CacheNodeIdsToRemove parameter to provide the IDs of the specific cache nodes to remove.

For clusters running Redis, this value must be 1. For clusters running Memcached, this value must be between 1 and 20.

Adding or removing Memcached cache nodes can be applied immediately or as a pending operation (see ApplyImmediately).

A pending operation to modify the number of cache nodes in a cluster during its maintenance window, whether by adding or removing nodes in accordance with the scale out architecture, is not queued. The customer's latest request to add or remove nodes to the cluster overrides any previous pending operations to modify the number of cache nodes in the cluster. For example, a request to remove 2 nodes would override a previous pending operation to remove 3 nodes. Similarly, a request to add 2 nodes would override a previous pending operation to remove 3 nodes and vice versa. As Memcached cache nodes may now be provisioned in different Availability Zones with flexible cache node placement, a request to add nodes does not automatically override a previous pending operation to add nodes. The customer can modify the previous pending operation to add more nodes or explicitly cancel the pending request and retry the new request. To cancel pending operations to modify the number of cache nodes in a cluster, use the ModifyCacheCluster request and set NumCacheNodes equal to the number of cache nodes currently in the cluster.

", + "ModifyCacheClusterMessage$NumCacheNodes": "

The number of cache nodes that the cluster should have. If the value for NumCacheNodes is greater than the sum of the number of current cache nodes and the number of cache nodes pending creation (which may be zero), more nodes are added. If the value is less than the number of existing cache nodes, nodes are removed. If the value is equal to the number of current cache nodes, any pending add or remove requests are canceled.

If you are removing cache nodes, you must use the CacheNodeIdsToRemove parameter to provide the IDs of the specific cache nodes to remove.

For clusters running Redis, this value must be 1. For clusters running Memcached, this value must be between 1 and 40.

Adding or removing Memcached cache nodes can be applied immediately or as a pending operation (see ApplyImmediately).

A pending operation to modify the number of cache nodes in a cluster during its maintenance window, whether by adding or removing nodes in accordance with the scale out architecture, is not queued. The customer's latest request to add or remove nodes to the cluster overrides any previous pending operations to modify the number of cache nodes in the cluster. For example, a request to remove 2 nodes would override a previous pending operation to remove 3 nodes. Similarly, a request to add 2 nodes would override a previous pending operation to remove 3 nodes and vice versa. As Memcached cache nodes may now be provisioned in different Availability Zones with flexible cache node placement, a request to add nodes does not automatically override a previous pending operation to add nodes. The customer can modify the previous pending operation to add more nodes or explicitly cancel the pending request and retry the new request. To cancel pending operations to modify the number of cache nodes in a cluster, use the ModifyCacheCluster request and set NumCacheNodes equal to the number of cache nodes currently in the cluster.

", "ModifyCacheClusterMessage$SnapshotRetentionLimit": "

The number of days for which ElastiCache retains automatic cluster snapshots before deleting them. For example, if you set SnapshotRetentionLimit to 5, a snapshot that was taken today is retained for 5 days before being deleted.

If the value of SnapshotRetentionLimit is set to zero (0), backups are turned off.

", "ModifyReplicationGroupMessage$SnapshotRetentionLimit": "

The number of days for which ElastiCache retains automatic node group (shard) snapshots before deleting them. For example, if you set SnapshotRetentionLimit to 5, a snapshot that was taken today is retained for 5 days before being deleted.

Important If the value of SnapshotRetentionLimit is set to zero (0), backups are turned off.

", "NodeGroupConfiguration$ReplicaCount": "

The number of read replica nodes in this node group (shard).

", - "PendingModifiedValues$NumCacheNodes": "

The new number of cache nodes for the cluster.

For clusters running Redis, this value must be 1. For clusters running Memcached, this value must be between 1 and 20.

", + "PendingModifiedValues$NumCacheNodes": "

The new number of cache nodes for the cluster.

For clusters running Redis, this value must be 1. For clusters running Memcached, this value must be between 1 and 40.

", "PurchaseReservedCacheNodesOfferingMessage$CacheNodeCount": "

The number of cache node instances to reserve.

Default: 1

", "ReplicationGroup$SnapshotRetentionLimit": "

The number of days for which ElastiCache retains automatic cluster snapshots before deleting them. For example, if you set SnapshotRetentionLimit to 5, a snapshot that was taken today is retained for 5 days before being deleted.

If the value of SnapshotRetentionLimit is set to zero (0), backups are turned off.

", - "Snapshot$NumCacheNodes": "

The number of cache nodes in the source cluster.

For clusters running Redis, this value must be 1. For clusters running Memcached, this value must be between 1 and 20.

", + "Snapshot$NumCacheNodes": "

The number of cache nodes in the source cluster.

For clusters running Redis, this value must be 1. For clusters running Memcached, this value must be between 1 and 40.

", "Snapshot$Port": "

The port number used by each cache nodes in the source cluster.

", "Snapshot$SnapshotRetentionLimit": "

For an automatic snapshot, the number of days for which ElastiCache retains the snapshot before deleting it.

For manual snapshots, this field reflects the SnapshotRetentionLimit for the source cluster when the snapshot was created. This field is otherwise ignored: Manual snapshots do not expire, and can only be deleted using the DeleteSnapshot operation.

Important If the value of SnapshotRetentionLimit is set to zero (0), backups are turned off.

", "Snapshot$NumNodeGroups": "

The number of node groups (shards) in this snapshot. When restoring from a snapshot, the number of node groups (shards) in the snapshot and in the restored replication group must be the same.

" @@ -1026,7 +1179,7 @@ } }, "InvalidGlobalReplicationGroupStateFault": { - "base": "

The Global Datastore is not available or in primary-only state.

", + "base": "

The Global datastore is not available or in primary-only state.

", "refs": { } }, @@ -1060,6 +1213,16 @@ "refs": { } }, + "InvalidUserGroupStateFault": { + "base": "

The user group is not in an active state.

", + "refs": { + } + }, + "InvalidUserStateFault": { + "base": "

The user is not in active state.

", + "refs": { + } + }, "InvalidVPCNetworkStateFault": { "base": "

The VPC network is in an invalid state.

", "refs": { @@ -1071,6 +1234,12 @@ "RemoveTagsFromResourceMessage$TagKeys": "

A list of TagKeys identifying the tags you want removed from the named resource.

" } }, + "KinesisFirehoseDestinationDetails": { + "base": "

The configuration details of the Kinesis Data Firehose destination.

", + "refs": { + "DestinationDetails$KinesisFirehoseDetails": "

The configuration details of the Kinesis Data Firehose destination.

" + } + }, "ListAllowedNodeTypeModificationsMessage": { "base": "

The input parameters for the ListAllowedNodeTypeModifications operation.

", "refs": { @@ -1081,6 +1250,56 @@ "refs": { } }, + "LogDeliveryConfiguration": { + "base": "

Returns the destination, format and type of the logs.

", + "refs": { + "LogDeliveryConfigurationList$member": null + } + }, + "LogDeliveryConfigurationList": { + "base": null, + "refs": { + "CacheCluster$LogDeliveryConfigurations": "

Returns the destination, format and type of the logs.

", + "ReplicationGroup$LogDeliveryConfigurations": "

Returns the destination, format and type of the logs.

" + } + }, + "LogDeliveryConfigurationRequest": { + "base": "

Specifies the destination, format and type of the logs.

", + "refs": { + "LogDeliveryConfigurationRequestList$member": null + } + }, + "LogDeliveryConfigurationRequestList": { + "base": null, + "refs": { + "CreateCacheClusterMessage$LogDeliveryConfigurations": "

Specifies the destination, format and type of the logs.

", + "CreateReplicationGroupMessage$LogDeliveryConfigurations": "

Specifies the destination, format and type of the logs.

", + "ModifyCacheClusterMessage$LogDeliveryConfigurations": "

Specifies the destination, format and type of the logs.

", + "ModifyReplicationGroupMessage$LogDeliveryConfigurations": "

Specifies the destination, format and type of the logs.

" + } + }, + "LogDeliveryConfigurationStatus": { + "base": null, + "refs": { + "LogDeliveryConfiguration$Status": "

Returns the log delivery configuration status. Values are one of enabling | disabling | modifying | active | error

" + } + }, + "LogFormat": { + "base": null, + "refs": { + "LogDeliveryConfiguration$LogFormat": "

Returns the log format, either JSON or TEXT.

", + "LogDeliveryConfigurationRequest$LogFormat": "

Specifies either JSON or TEXT

", + "PendingLogDeliveryConfiguration$LogFormat": "

Returns the log format, either JSON or TEXT

" + } + }, + "LogType": { + "base": null, + "refs": { + "LogDeliveryConfiguration$LogType": "

Refers to slow-log.

", + "LogDeliveryConfigurationRequest$LogType": "

Refers to slow-log.

", + "PendingLogDeliveryConfiguration$LogType": "

Refers to slow-log.

" + } + }, "ModifyCacheClusterMessage": { "base": "

Represents the input of a ModifyCacheCluster operation.

", "refs": { @@ -1136,6 +1355,16 @@ "refs": { } }, + "ModifyUserGroupMessage": { + "base": null, + "refs": { + } + }, + "ModifyUserMessage": { + "base": null, + "refs": { + } + }, "MultiAZStatus": { "base": null, "refs": { @@ -1279,6 +1508,18 @@ "CacheCluster$NotificationConfiguration": "

Describes a notification topic and its status. Notification topics are used for publishing ElastiCache events to subscribers using Amazon Simple Notification Service (SNS).

" } }, + "OutpostArnsList": { + "base": null, + "refs": { + "NodeGroupConfiguration$ReplicaOutpostArns": "

The outpost ARN of the node replicas.

" + } + }, + "OutpostMode": { + "base": null, + "refs": { + "CreateCacheClusterMessage$OutpostMode": "

Specifies whether the nodes in the cluster are created in a single outpost or across multiple outposts.

" + } + }, "Parameter": { "base": "

Describes an individual setting that controls some aspect of ElastiCache behavior.

", "refs": { @@ -1305,12 +1546,32 @@ "EngineDefaults$Parameters": "

Contains a list of engine default parameters.

" } }, + "PasswordListInput": { + "base": null, + "refs": { + "CreateUserMessage$Passwords": "

Passwords used for this user. You can create up to two passwords for each user.

", + "ModifyUserMessage$Passwords": "

The passwords belonging to the user. You are allowed up to two.

" + } + }, "PendingAutomaticFailoverStatus": { "base": null, "refs": { "ReplicationGroupPendingModifiedValues$AutomaticFailoverStatus": "

Indicates the status of automatic failover for this Redis replication group.

" } }, + "PendingLogDeliveryConfiguration": { + "base": "

The log delivery configurations being modified

", + "refs": { + "PendingLogDeliveryConfigurationList$member": null + } + }, + "PendingLogDeliveryConfigurationList": { + "base": null, + "refs": { + "PendingModifiedValues$LogDeliveryConfigurations": "

The log delivery configurations being modified

", + "ReplicationGroupPendingModifiedValues$LogDeliveryConfigurations": "

The log delivery configurations being modified

" + } + }, "PendingModifiedValues": { "base": "

A group of settings that are applied to the cluster in the future, or that are currently being applied.

", "refs": { @@ -1322,7 +1583,14 @@ "refs": { "ConfigureShard$PreferredAvailabilityZones": "

A list of PreferredAvailabilityZone strings that specify which availability zones the replication group's nodes are to be in. The nummber of PreferredAvailabilityZone values must equal the value of NewReplicaCount plus 1 to account for the primary node. If this member of ReplicaConfiguration is omitted, ElastiCache for Redis selects the availability zone for each of the replicas.

", "CreateCacheClusterMessage$PreferredAvailabilityZones": "

A list of the Availability Zones in which cache nodes are created. The order of the zones in the list is not important.

This option is only supported on Memcached.

If you are creating your cluster in an Amazon VPC (recommended) you can only locate nodes in Availability Zones that are associated with the subnets in the selected subnet group.

The number of Availability Zones listed must equal the value of NumCacheNodes.

If you want all the nodes in the same Availability Zone, use PreferredAvailabilityZone instead, or repeat the Availability Zone multiple times in the list.

Default: System chosen Availability Zones.

", - "ModifyCacheClusterMessage$NewAvailabilityZones": "

The list of Availability Zones where the new Memcached cache nodes are created.

This parameter is only valid when NumCacheNodes in the request is greater than the sum of the number of active cache nodes and the number of cache nodes pending creation (which may be zero). The number of Availability Zones supplied in this list must match the cache nodes being added in this request.

This option is only supported on Memcached clusters.

Scenarios:

The Availability Zone placement of nodes pending creation cannot be modified. If you wish to cancel any nodes pending creation, add 0 nodes by setting NumCacheNodes to the number of current nodes.

If cross-az is specified, existing Memcached nodes remain in their current Availability Zone. Only newly created nodes can be located in different Availability Zones. For guidance on how to move existing Memcached nodes to different Availability Zones, see the Availability Zone Considerations section of Cache Node Considerations for Memcached.

Impact of new add/remove requests upon pending requests

" + "ModifyCacheClusterMessage$NewAvailabilityZones": "

This option is only supported on Memcached clusters.

The list of Availability Zones where the new Memcached cache nodes are created.

This parameter is only valid when NumCacheNodes in the request is greater than the sum of the number of active cache nodes and the number of cache nodes pending creation (which may be zero). The number of Availability Zones supplied in this list must match the cache nodes being added in this request.

Scenarios:

The Availability Zone placement of nodes pending creation cannot be modified. If you wish to cancel any nodes pending creation, add 0 nodes by setting NumCacheNodes to the number of current nodes.

If cross-az is specified, existing Memcached nodes remain in their current Availability Zone. Only newly created nodes can be located in different Availability Zones. For guidance on how to move existing Memcached nodes to different Availability Zones, see the Availability Zone Considerations section of Cache Node Considerations for Memcached.

Impact of new add/remove requests upon pending requests

" + } + }, + "PreferredOutpostArnList": { + "base": null, + "refs": { + "ConfigureShard$PreferredOutpostArns": "

The outpost ARNs in which the cache cluster is created.

", + "CreateCacheClusterMessage$PreferredOutpostArns": "

The outpost ARNs in which the cache cluster is created.

" } }, "ProcessedUpdateAction": { @@ -1389,7 +1657,7 @@ "RegionalConfigurationList": { "base": null, "refs": { - "IncreaseNodeGroupsInGlobalReplicationGroupMessage$RegionalConfigurations": "

Describes the replication group IDs, the AWS regions where they are stored and the shard configuration for each that comprise the Global Datastore

" + "IncreaseNodeGroupsInGlobalReplicationGroupMessage$RegionalConfigurations": "

Describes the replication group IDs, the AWS regions where they are stored and the shard configuration for each that comprise the Global datastore

" } }, "RemoveReplicasList": { @@ -1464,6 +1732,12 @@ "refs": { } }, + "ReplicationGroupOutpostArnList": { + "base": null, + "refs": { + "ReplicationGroup$MemberClustersOutpostArns": "

The outpost ARNs of the replication group's member clusters.

" + } + }, "ReplicationGroupPendingModifiedValues": { "base": "

The settings to be applied to the Redis replication group, either immediately or during the next maintenance window.

", "refs": { @@ -1720,11 +1994,12 @@ "BatchStopUpdateActionMessage$ServiceUpdateName": "

The unique ID of the service update

", "CacheCluster$CacheClusterId": "

The user-supplied identifier of the cluster. This identifier is a unique key that identifies a cluster.

", "CacheCluster$ClientDownloadLandingPage": "

The URL of the web page where you can download the latest ElastiCache client library.

", - "CacheCluster$CacheNodeType": "

The name of the compute and memory capacity node type for the cluster.

The following node types are supported by ElastiCache. Generally speaking, the current generation types provide more memory and computational power at lower cost when compared to their equivalent previous generation counterparts.

Additional node type info

", + "CacheCluster$CacheNodeType": "

The name of the compute and memory capacity node type for the cluster.

The following node types are supported by ElastiCache. Generally speaking, the current generation types provide more memory and computational power at lower cost when compared to their equivalent previous generation counterparts.

Additional node type info

", "CacheCluster$Engine": "

The name of the cache engine (memcached or redis) to be used for this cluster.

", "CacheCluster$EngineVersion": "

The version of the cache engine that is used in this cluster.

", "CacheCluster$CacheClusterStatus": "

The current state of this cluster, one of the following values: available, creating, deleted, deleting, incompatible-network, modifying, rebooting cluster nodes, restore-failed, or snapshotting.

", "CacheCluster$PreferredAvailabilityZone": "

The name of the Availability Zone in which the cluster is located or \"Multiple\" if the cache nodes are located in different Availability Zones.

", + "CacheCluster$PreferredOutpostArn": "

The outpost ARN in which the cache cluster is created.

", "CacheCluster$PreferredMaintenanceWindow": "

Specifies the weekly time range during which maintenance on the cluster is performed. It is specified as a range in the format ddd:hh24:mi-ddd:hh24:mi (24H Clock UTC). The minimum maintenance window is a 60 minute period.

Valid values for ddd are:

Example: sun:23:00-mon:01:30

", "CacheCluster$CacheSubnetGroupName": "

The name of the cache subnet group associated with the cluster.

", "CacheCluster$ReplicationGroupId": "

The replication group to which this cluster belongs. If this field is empty, the cluster is not associated with any replication group.

", @@ -1734,7 +2009,7 @@ "CacheClusterMessage$Marker": "

Provides an identifier to allow retrieval of paginated results.

", "CacheEngineVersion$Engine": "

The name of the cache engine.

", "CacheEngineVersion$EngineVersion": "

The version number of the cache engine.

", - "CacheEngineVersion$CacheParameterGroupFamily": "

The name of the cache parameter group family associated with this cache engine.

Valid values are: memcached1.4 | memcached1.5 | redis2.6 | redis2.8 | redis3.2 | redis4.0 | redis5.0 |

", + "CacheEngineVersion$CacheParameterGroupFamily": "

The name of the cache parameter group family associated with this cache engine.

Valid values are: memcached1.4 | memcached1.5 | memcached1.6 | redis2.6 | redis2.8 | redis3.2 | redis4.0 | redis5.0 | redis6.x |

", "CacheEngineVersion$CacheEngineDescription": "

The description of the cache engine.

", "CacheEngineVersion$CacheEngineVersionDescription": "

The description of the cache engine version.

", "CacheEngineVersionMessage$Marker": "

Provides an identifier to allow retrieval of paginated results.

", @@ -1743,6 +2018,7 @@ "CacheNode$ParameterGroupStatus": "

The status of the parameter group applied to this cache node.

", "CacheNode$SourceCacheNodeId": "

The ID of the primary node to which this read replica node is synchronized. If this field is empty, this node is not associated with a primary cluster.

", "CacheNode$CustomerAvailabilityZone": "

The Availability Zone where this node was created and now resides.

", + "CacheNode$CustomerOutpostArn": "

The customer outpost ARN of the cache node.

", "CacheNodeIdsList$member": null, "CacheNodeTypeSpecificParameter$ParameterName": "

The name of the parameter.

", "CacheNodeTypeSpecificParameter$Description": "

A description of the parameter.

", @@ -1754,7 +2030,7 @@ "CacheNodeTypeSpecificValue$Value": "

The value for the cache node type.

", "CacheNodeUpdateStatus$CacheNodeId": "

The node ID of the cache cluster

", "CacheParameterGroup$CacheParameterGroupName": "

The name of the cache parameter group.

", - "CacheParameterGroup$CacheParameterGroupFamily": "

The name of the cache parameter group family that this cache parameter group is compatible with.

Valid values are: memcached1.4 | memcached1.5 | redis2.6 | redis2.8 | redis3.2 | redis4.0 | redis5.0 |

", + "CacheParameterGroup$CacheParameterGroupFamily": "

The name of the cache parameter group family that this cache parameter group is compatible with.

Valid values are: memcached1.4 | memcached1.5 | memcached1.6 | redis2.6 | redis2.8 | redis3.2 | redis4.0 | redis5.0 | redis6.x |

", "CacheParameterGroup$Description": "

The description for this cache parameter group.

", "CacheParameterGroup$ARN": "

The ARN (Amazon Resource Name) of the cache parameter group.

", "CacheParameterGroupDetails$Marker": "

Provides an identifier to allow retrieval of paginated results.

", @@ -1765,7 +2041,7 @@ "CacheSecurityGroup$OwnerId": "

The AWS account ID of the cache security group owner.

", "CacheSecurityGroup$CacheSecurityGroupName": "

The name of the cache security group.

", "CacheSecurityGroup$Description": "

The description of the cache security group.

", - "CacheSecurityGroup$ARN": "

The ARN (Amazon Resource Name) of the cache security group.

", + "CacheSecurityGroup$ARN": "

The ARN of the cache security group,

", "CacheSecurityGroupMembership$CacheSecurityGroupName": "

The name of the cache security group.

", "CacheSecurityGroupMembership$Status": "

The membership status in the cache security group. The status changes when a cache security group is modified, or when the cache security groups assigned to a cluster are modified.

", "CacheSecurityGroupMessage$Marker": "

Provides an identifier to allow retrieval of paginated results.

", @@ -1775,43 +2051,45 @@ "CacheSubnetGroup$VpcId": "

The Amazon Virtual Private Cloud identifier (VPC ID) of the cache subnet group.

", "CacheSubnetGroup$ARN": "

The ARN (Amazon Resource Name) of the cache subnet group.

", "CacheSubnetGroupMessage$Marker": "

Provides an identifier to allow retrieval of paginated results.

", + "CloudWatchLogsDestinationDetails$LogGroup": "

The name of the CloudWatch Logs log group.

", "ClusterIdList$member": null, "CompleteMigrationMessage$ReplicationGroupId": "

The ID of the replication group to which data is being migrated.

", "CopySnapshotMessage$SourceSnapshotName": "

The name of an existing snapshot from which to make a copy.

", "CopySnapshotMessage$TargetSnapshotName": "

A name for the snapshot copy. ElastiCache does not permit overwriting a snapshot, therefore this name must be unique within its context - ElastiCache or an Amazon S3 bucket if exporting.

", - "CopySnapshotMessage$TargetBucket": "

The Amazon S3 bucket to which the snapshot is exported. This parameter is used only when exporting a snapshot for external access.

When using this parameter to export a snapshot, be sure Amazon ElastiCache has the needed permissions to this S3 bucket. For more information, see Step 2: Grant ElastiCache Access to Your Amazon S3 Bucket in the Amazon ElastiCache User Guide.

For more information, see Exporting a Snapshot in the Amazon ElastiCache User Guide.

", + "CopySnapshotMessage$TargetBucket": "

The Amazon S3 bucket to which the snapshot is exported. This parameter is used only when exporting a snapshot for external access.

When using this parameter to export a snapshot, be sure Amazon ElastiCache has the needed permissions to this S3 bucket. For more information, see Step 2: Grant ElastiCache Access to Your Amazon S3 Bucket in the Amazon ElastiCache User Guide.

For more information, see Exporting a Snapshot in the Amazon ElastiCache User Guide.

", "CopySnapshotMessage$KmsKeyId": "

The ID of the KMS key used to encrypt the target snapshot.

", "CreateCacheClusterMessage$CacheClusterId": "

The node group (shard) identifier. This parameter is stored as a lowercase string.

Constraints:

", "CreateCacheClusterMessage$ReplicationGroupId": "

The ID of the replication group to which this cluster should belong. If this parameter is specified, the cluster is added to the specified replication group as a read replica; otherwise, the cluster is a standalone primary that is not part of any replication group.

If the specified replication group is Multi-AZ enabled and the Availability Zone is not specified, the cluster is created in Availability Zones that provide the best spread of read replicas across Availability Zones.

This parameter is only valid if the Engine parameter is redis.

", "CreateCacheClusterMessage$PreferredAvailabilityZone": "

The EC2 Availability Zone in which the cluster is created.

All nodes belonging to this cluster are placed in the preferred Availability Zone. If you want to create your nodes across multiple Availability Zones, use PreferredAvailabilityZones.

Default: System chosen Availability Zone.

", - "CreateCacheClusterMessage$CacheNodeType": "

The compute and memory capacity of the nodes in the node group (shard).

The following node types are supported by ElastiCache. Generally speaking, the current generation types provide more memory and computational power at lower cost when compared to their equivalent previous generation counterparts.

Additional node type info

", + "CreateCacheClusterMessage$CacheNodeType": "

The compute and memory capacity of the nodes in the node group (shard).

The following node types are supported by ElastiCache. Generally speaking, the current generation types provide more memory and computational power at lower cost when compared to their equivalent previous generation counterparts.

Additional node type info

", "CreateCacheClusterMessage$Engine": "

The name of the cache engine to be used for this cluster.

Valid values for this parameter are: memcached | redis

", "CreateCacheClusterMessage$EngineVersion": "

The version number of the cache engine to be used for this cluster. To view the supported cache engine versions, use the DescribeCacheEngineVersions operation.

Important: You can upgrade to a newer engine version (see Selecting a Cache Engine and Version), but you cannot downgrade to an earlier engine version. If you want to use an earlier engine version, you must delete the existing cluster or replication group and create it anew with the earlier engine version.

", "CreateCacheClusterMessage$CacheParameterGroupName": "

The name of the parameter group to associate with this cluster. If this argument is omitted, the default parameter group for the specified engine is used. You cannot use any parameter group which has cluster-enabled='yes' when creating a cluster.

", "CreateCacheClusterMessage$CacheSubnetGroupName": "

The name of the subnet group to be used for the cluster.

Use this parameter only when you are creating a cluster in an Amazon Virtual Private Cloud (Amazon VPC).

If you're going to launch your cluster in an Amazon VPC, you need to create a subnet group before you start creating a cluster. For more information, see Subnets and Subnet Groups.

", "CreateCacheClusterMessage$SnapshotName": "

The name of a Redis snapshot from which to restore data into the new node group (shard). The snapshot status changes to restoring while the new node group (shard) is being created.

This parameter is only valid if the Engine parameter is redis.

", - "CreateCacheClusterMessage$PreferredMaintenanceWindow": "

Specifies the weekly time range during which maintenance on the cluster is performed. It is specified as a range in the format ddd:hh24:mi-ddd:hh24:mi (24H Clock UTC). The minimum maintenance window is a 60 minute period. Valid values for ddd are:

Specifies the weekly time range during which maintenance on the cluster is performed. It is specified as a range in the format ddd:hh24:mi-ddd:hh24:mi (24H Clock UTC). The minimum maintenance window is a 60 minute period.

Valid values for ddd are:

Example: sun:23:00-mon:01:30

", + "CreateCacheClusterMessage$PreferredMaintenanceWindow": "

Specifies the weekly time range during which maintenance on the cluster is performed. It is specified as a range in the format ddd:hh24:mi-ddd:hh24:mi (24H Clock UTC). The minimum maintenance window is a 60 minute period. Valid values for ddd are:

", "CreateCacheClusterMessage$NotificationTopicArn": "

The Amazon Resource Name (ARN) of the Amazon Simple Notification Service (SNS) topic to which notifications are sent.

The Amazon SNS topic owner must be the same as the cluster owner.

", "CreateCacheClusterMessage$SnapshotWindow": "

The daily time range (in UTC) during which ElastiCache begins taking a daily snapshot of your node group (shard).

Example: 05:00-09:00

If you do not specify this parameter, ElastiCache automatically chooses an appropriate time range.

This parameter is only valid if the Engine parameter is redis.

", "CreateCacheClusterMessage$AuthToken": "

Reserved parameter. The password used to access a password protected server.

Password constraints:

For more information, see AUTH password at http://redis.io/commands/AUTH.

", + "CreateCacheClusterMessage$PreferredOutpostArn": "

The outpost ARN in which the cache cluster is created.

", "CreateCacheParameterGroupMessage$CacheParameterGroupName": "

A user-specified name for the cache parameter group.

", - "CreateCacheParameterGroupMessage$CacheParameterGroupFamily": "

The name of the cache parameter group family that the cache parameter group can be used with.

Valid values are: memcached1.4 | memcached1.5 | redis2.6 | redis2.8 | redis3.2 | redis4.0 | redis5.0 |

", + "CreateCacheParameterGroupMessage$CacheParameterGroupFamily": "

The name of the cache parameter group family that the cache parameter group can be used with.

Valid values are: memcached1.4 | memcached1.5 | memcached1.6 | redis2.6 | redis2.8 | redis3.2 | redis4.0 | redis5.0 | redis6.x |

", "CreateCacheParameterGroupMessage$Description": "

A user-specified description for the cache parameter group.

", "CreateCacheSecurityGroupMessage$CacheSecurityGroupName": "

A name for the cache security group. This value is stored as a lowercase string.

Constraints: Must contain no more than 255 alphanumeric characters. Cannot be the word \"Default\".

Example: mysecuritygroup

", "CreateCacheSecurityGroupMessage$Description": "

A description for the cache security group.

", "CreateCacheSubnetGroupMessage$CacheSubnetGroupName": "

A name for the cache subnet group. This value is stored as a lowercase string.

Constraints: Must contain no more than 255 alphanumeric characters or hyphens.

Example: mysubnetgroup

", "CreateCacheSubnetGroupMessage$CacheSubnetGroupDescription": "

A description for the cache subnet group.

", - "CreateGlobalReplicationGroupMessage$GlobalReplicationGroupIdSuffix": "

The suffix name of a Global Datastore. The suffix guarantees uniqueness of the Global Datastore name across multiple regions.

", - "CreateGlobalReplicationGroupMessage$GlobalReplicationGroupDescription": "

Provides details of the Global Datastore

", + "CreateGlobalReplicationGroupMessage$GlobalReplicationGroupIdSuffix": "

The suffix name of a Global datastore. Amazon ElastiCache automatically applies a prefix to the Global datastore ID when it is created. Each AWS Region has its own prefix. For instance, a Global datastore ID created in the US-West-1 region will begin with \"dsdfu\" along with the suffix name you provide. The suffix, combined with the auto-generated prefix, guarantees uniqueness of the Global datastore name across multiple regions.

For a full list of AWS Regions and their respective Global datastore iD prefixes, see Using the AWS CLI with Global datastores .

", + "CreateGlobalReplicationGroupMessage$GlobalReplicationGroupDescription": "

Provides details of the Global datastore

", "CreateGlobalReplicationGroupMessage$PrimaryReplicationGroupId": "

The name of the primary cluster that accepts writes and will replicate updates to the secondary cluster.

", "CreateReplicationGroupMessage$ReplicationGroupId": "

The replication group identifier. This parameter is stored as a lowercase string.

Constraints:

", "CreateReplicationGroupMessage$ReplicationGroupDescription": "

A user-created description for the replication group.

", - "CreateReplicationGroupMessage$GlobalReplicationGroupId": "

The name of the Global Datastore

", + "CreateReplicationGroupMessage$GlobalReplicationGroupId": "

The name of the Global datastore

", "CreateReplicationGroupMessage$PrimaryClusterId": "

The identifier of the cluster that serves as the primary for this replication group. This cluster must already exist and have a status of available.

This parameter is not required if NumCacheClusters, NumNodeGroups, or ReplicasPerNodeGroup is specified.

", - "CreateReplicationGroupMessage$CacheNodeType": "

The compute and memory capacity of the nodes in the node group (shard).

The following node types are supported by ElastiCache. Generally speaking, the current generation types provide more memory and computational power at lower cost when compared to their equivalent previous generation counterparts.

Additional node type info

", - "CreateReplicationGroupMessage$Engine": "

The name of the cache engine to be used for the clusters in this replication group.

", + "CreateReplicationGroupMessage$CacheNodeType": "

The compute and memory capacity of the nodes in the node group (shard).

The following node types are supported by ElastiCache. Generally speaking, the current generation types provide more memory and computational power at lower cost when compared to their equivalent previous generation counterparts.

Additional node type info

", + "CreateReplicationGroupMessage$Engine": "

The name of the cache engine to be used for the clusters in this replication group. Must be Redis.

", "CreateReplicationGroupMessage$EngineVersion": "

The version number of the cache engine to be used for the clusters in this replication group. To view the supported cache engine versions, use the DescribeCacheEngineVersions operation.

Important: You can upgrade to a newer engine version (see Selecting a Cache Engine and Version) in the ElastiCache User Guide, but you cannot downgrade to an earlier engine version. If you want to use an earlier engine version, you must delete the existing cluster or replication group and create it anew with the earlier engine version.

", - "CreateReplicationGroupMessage$CacheParameterGroupName": "

The name of the parameter group to associate with this replication group. If this argument is omitted, the default cache parameter group for the specified engine is used.

If you are restoring to an engine version that is different than the original, you must specify the default version of that version. For example, CacheParameterGroupName=default.redis4.0.

If you are running Redis version 3.2.4 or later, only one node group (shard), and want to use a default parameter group, we recommend that you specify the parameter group by name.

", + "CreateReplicationGroupMessage$CacheParameterGroupName": "

The name of the parameter group to associate with this replication group. If this argument is omitted, the default cache parameter group for the specified engine is used.

If you are running Redis version 3.2.4 or later, only one node group (shard), and want to use a default parameter group, we recommend that you specify the parameter group by name.

", "CreateReplicationGroupMessage$CacheSubnetGroupName": "

The name of the cache subnet group to be used for the replication group.

If you're going to launch your cluster in an Amazon VPC, you need to create a subnet group before you start creating a cluster. For more information, see Subnets and Subnet Groups.

", "CreateReplicationGroupMessage$SnapshotName": "

The name of a snapshot from which to restore data into the new replication group. The snapshot status changes to restoring while the new replication group is being created.

", "CreateReplicationGroupMessage$PreferredMaintenanceWindow": "

Specifies the weekly time range during which maintenance on the cluster is performed. It is specified as a range in the format ddd:hh24:mi-ddd:hh24:mi (24H Clock UTC). The minimum maintenance window is a 60 minute period. Valid values for ddd are:

Specifies the weekly time range during which maintenance on the cluster is performed. It is specified as a range in the format ddd:hh24:mi-ddd:hh24:mi (24H Clock UTC). The minimum maintenance window is a 60 minute period.

Valid values for ddd are:

Example: sun:23:00-mon:01:30

", @@ -1823,23 +2101,25 @@ "CreateSnapshotMessage$CacheClusterId": "

The identifier of an existing cluster. The snapshot is created from this cluster.

", "CreateSnapshotMessage$SnapshotName": "

A name for the snapshot being created.

", "CreateSnapshotMessage$KmsKeyId": "

The ID of the KMS key used to encrypt the snapshot.

", + "CreateUserGroupMessage$UserGroupId": "

The ID of the user group.

", "CustomerNodeEndpoint$Address": "

The address of the node endpoint

", - "DecreaseNodeGroupsInGlobalReplicationGroupMessage$GlobalReplicationGroupId": "

The name of the Global Datastore

", + "DecreaseNodeGroupsInGlobalReplicationGroupMessage$GlobalReplicationGroupId": "

The name of the Global datastore

", "DecreaseReplicaCountMessage$ReplicationGroupId": "

The id of the replication group from which you want to remove replica nodes.

", "DeleteCacheClusterMessage$CacheClusterId": "

The cluster identifier for the cluster to be deleted. This parameter is not case sensitive.

", "DeleteCacheClusterMessage$FinalSnapshotIdentifier": "

The user-supplied name of a final cluster snapshot. This is the unique name that identifies the snapshot. ElastiCache creates the snapshot, and then deletes the cluster immediately afterward.

", "DeleteCacheParameterGroupMessage$CacheParameterGroupName": "

The name of the cache parameter group to delete.

The specified cache security group must not be associated with any clusters.

", "DeleteCacheSecurityGroupMessage$CacheSecurityGroupName": "

The name of the cache security group to delete.

You cannot delete the default security group.

", "DeleteCacheSubnetGroupMessage$CacheSubnetGroupName": "

The name of the cache subnet group to delete.

Constraints: Must contain no more than 255 alphanumeric characters or hyphens.

", - "DeleteGlobalReplicationGroupMessage$GlobalReplicationGroupId": "

The name of the Global Datastore

", + "DeleteGlobalReplicationGroupMessage$GlobalReplicationGroupId": "

The name of the Global datastore

", "DeleteReplicationGroupMessage$ReplicationGroupId": "

The identifier for the cluster to be deleted. This parameter is not case sensitive.

", "DeleteReplicationGroupMessage$FinalSnapshotIdentifier": "

The name of a final node group (shard) snapshot. ElastiCache creates the snapshot from the primary node in the cluster, rather than one of the replicas; this is to ensure that it captures the freshest data. After the final snapshot is taken, the replication group is immediately deleted.

", "DeleteSnapshotMessage$SnapshotName": "

The name of the snapshot to be deleted.

", + "DeleteUserGroupMessage$UserGroupId": "

The ID of the user group.

", "DescribeCacheClustersMessage$CacheClusterId": "

The user-supplied cluster identifier. If this parameter is specified, only information about that specific cluster is returned. This parameter isn't case sensitive.

", "DescribeCacheClustersMessage$Marker": "

An optional marker returned from a prior request. Use this marker for pagination of results from this operation. If this parameter is specified, the response includes only records beyond the marker, up to the value specified by MaxRecords.

", "DescribeCacheEngineVersionsMessage$Engine": "

The cache engine to return. Valid values: memcached | redis

", "DescribeCacheEngineVersionsMessage$EngineVersion": "

The cache engine version to return.

Example: 1.4.14

", - "DescribeCacheEngineVersionsMessage$CacheParameterGroupFamily": "

The name of a specific cache parameter group family to return details for.

Valid values are: memcached1.4 | memcached1.5 | redis2.6 | redis2.8 | redis3.2 | redis4.0 | redis5.0 |

Constraints:

", + "DescribeCacheEngineVersionsMessage$CacheParameterGroupFamily": "

The name of a specific cache parameter group family to return details for.

Valid values are: memcached1.4 | memcached1.5 | memcached1.6 | redis2.6 | redis2.8 | redis3.2 | redis4.0 | redis5.0 | redis6.x |

Constraints:

", "DescribeCacheEngineVersionsMessage$Marker": "

An optional marker returned from a prior request. Use this marker for pagination of results from this operation. If this parameter is specified, the response includes only records beyond the marker, up to the value specified by MaxRecords.

", "DescribeCacheParameterGroupsMessage$CacheParameterGroupName": "

The name of a specific cache parameter group to return details for.

", "DescribeCacheParameterGroupsMessage$Marker": "

An optional marker returned from a prior request. Use this marker for pagination of results from this operation. If this parameter is specified, the response includes only records beyond the marker, up to the value specified by MaxRecords.

", @@ -1850,27 +2130,27 @@ "DescribeCacheSecurityGroupsMessage$Marker": "

An optional marker returned from a prior request. Use this marker for pagination of results from this operation. If this parameter is specified, the response includes only records beyond the marker, up to the value specified by MaxRecords.

", "DescribeCacheSubnetGroupsMessage$CacheSubnetGroupName": "

The name of the cache subnet group to return details for.

", "DescribeCacheSubnetGroupsMessage$Marker": "

An optional marker returned from a prior request. Use this marker for pagination of results from this operation. If this parameter is specified, the response includes only records beyond the marker, up to the value specified by MaxRecords.

", - "DescribeEngineDefaultParametersMessage$CacheParameterGroupFamily": "

The name of the cache parameter group family.

Valid values are: memcached1.4 | memcached1.5 | redis2.6 | redis2.8 | redis3.2 | redis4.0 | redis5.0 |

", + "DescribeEngineDefaultParametersMessage$CacheParameterGroupFamily": "

The name of the cache parameter group family.

Valid values are: memcached1.4 | memcached1.5 | memcached1.6 | redis2.6 | redis2.8 | redis3.2 | redis4.0 | redis5.0 | redis6.x |

", "DescribeEngineDefaultParametersMessage$Marker": "

An optional marker returned from a prior request. Use this marker for pagination of results from this operation. If this parameter is specified, the response includes only records beyond the marker, up to the value specified by MaxRecords.

", "DescribeEventsMessage$SourceIdentifier": "

The identifier of the event source for which events are returned. If not specified, all sources are included in the response.

", "DescribeEventsMessage$Marker": "

An optional marker returned from a prior request. Use this marker for pagination of results from this operation. If this parameter is specified, the response includes only records beyond the marker, up to the value specified by MaxRecords.

", - "DescribeGlobalReplicationGroupsMessage$GlobalReplicationGroupId": "

The name of the Global Datastore

", + "DescribeGlobalReplicationGroupsMessage$GlobalReplicationGroupId": "

The name of the Global datastore

", "DescribeGlobalReplicationGroupsMessage$Marker": "

An optional marker returned from a prior request. Use this marker for pagination of results from this operation. If this parameter is specified, the response includes only records beyond the marker, up to the value specified by MaxRecords.

", "DescribeGlobalReplicationGroupsResult$Marker": "

An optional marker returned from a prior request. Use this marker for pagination of results from this operation. If this parameter is specified, the response includes only records beyond the marker, up to the value specified by MaxRecords. >

", "DescribeReplicationGroupsMessage$ReplicationGroupId": "

The identifier for the replication group to be described. This parameter is not case sensitive.

If you do not specify this parameter, information about all replication groups is returned.

", "DescribeReplicationGroupsMessage$Marker": "

An optional marker returned from a prior request. Use this marker for pagination of results from this operation. If this parameter is specified, the response includes only records beyond the marker, up to the value specified by MaxRecords.

", "DescribeReservedCacheNodesMessage$ReservedCacheNodeId": "

The reserved cache node identifier filter value. Use this parameter to show only the reservation that matches the specified reservation ID.

", "DescribeReservedCacheNodesMessage$ReservedCacheNodesOfferingId": "

The offering identifier filter value. Use this parameter to show only purchased reservations matching the specified offering identifier.

", - "DescribeReservedCacheNodesMessage$CacheNodeType": "

The cache node type filter value. Use this parameter to show only those reservations matching the specified cache node type.

The following node types are supported by ElastiCache. Generally speaking, the current generation types provide more memory and computational power at lower cost when compared to their equivalent previous generation counterparts.

Additional node type info

", + "DescribeReservedCacheNodesMessage$CacheNodeType": "

The cache node type filter value. Use this parameter to show only those reservations matching the specified cache node type.

The following node types are supported by ElastiCache. Generally speaking, the current generation types provide more memory and computational power at lower cost when compared to their equivalent previous generation counterparts.

Additional node type info

", "DescribeReservedCacheNodesMessage$Duration": "

The duration filter value, specified in years or seconds. Use this parameter to show only reservations for this duration.

Valid Values: 1 | 3 | 31536000 | 94608000

", "DescribeReservedCacheNodesMessage$ProductDescription": "

The product description filter value. Use this parameter to show only those reservations matching the specified product description.

", - "DescribeReservedCacheNodesMessage$OfferingType": "

The offering type filter value. Use this parameter to show only the available offerings matching the specified offering type.

Valid values: \"Light Utilization\"|\"Medium Utilization\"|\"Heavy Utilization\"

", + "DescribeReservedCacheNodesMessage$OfferingType": "

The offering type filter value. Use this parameter to show only the available offerings matching the specified offering type.

Valid values: \"Light Utilization\"|\"Medium Utilization\"|\"Heavy Utilization\"|\"All Upfront\"|\"Partial Upfront\"| \"No Upfront\"

", "DescribeReservedCacheNodesMessage$Marker": "

An optional marker returned from a prior request. Use this marker for pagination of results from this operation. If this parameter is specified, the response includes only records beyond the marker, up to the value specified by MaxRecords.

", "DescribeReservedCacheNodesOfferingsMessage$ReservedCacheNodesOfferingId": "

The offering identifier filter value. Use this parameter to show only the available offering that matches the specified reservation identifier.

Example: 438012d3-4052-4cc7-b2e3-8d3372e0e706

", - "DescribeReservedCacheNodesOfferingsMessage$CacheNodeType": "

The cache node type filter value. Use this parameter to show only the available offerings matching the specified cache node type.

The following node types are supported by ElastiCache. Generally speaking, the current generation types provide more memory and computational power at lower cost when compared to their equivalent previous generation counterparts.

Additional node type info

", + "DescribeReservedCacheNodesOfferingsMessage$CacheNodeType": "

The cache node type filter value. Use this parameter to show only the available offerings matching the specified cache node type.

The following node types are supported by ElastiCache. Generally speaking, the current generation types provide more memory and computational power at lower cost when compared to their equivalent previous generation counterparts.

Additional node type info

", "DescribeReservedCacheNodesOfferingsMessage$Duration": "

Duration filter value, specified in years or seconds. Use this parameter to show only reservations for a given duration.

Valid Values: 1 | 3 | 31536000 | 94608000

", "DescribeReservedCacheNodesOfferingsMessage$ProductDescription": "

The product description filter value. Use this parameter to show only the available offerings matching the specified product description.

", - "DescribeReservedCacheNodesOfferingsMessage$OfferingType": "

The offering type filter value. Use this parameter to show only the available offerings matching the specified offering type.

Valid Values: \"Light Utilization\"|\"Medium Utilization\"|\"Heavy Utilization\"

", + "DescribeReservedCacheNodesOfferingsMessage$OfferingType": "

The offering type filter value. Use this parameter to show only the available offerings matching the specified offering type.

Valid Values: \"Light Utilization\"|\"Medium Utilization\"|\"Heavy Utilization\" |\"All Upfront\"|\"Partial Upfront\"| \"No Upfront\"

", "DescribeReservedCacheNodesOfferingsMessage$Marker": "

An optional marker returned from a prior request. Use this marker for pagination of results from this operation. If this parameter is specified, the response includes only records beyond the marker, up to the value specified by MaxRecords.

", "DescribeServiceUpdatesMessage$ServiceUpdateName": "

The unique ID of the service update

", "DescribeServiceUpdatesMessage$Marker": "

An optional marker returned from a prior request. Use this marker for pagination of results from this operation. If this parameter is specified, the response includes only records beyond the marker, up to the value specified by MaxRecords.

", @@ -1883,43 +2163,50 @@ "DescribeUpdateActionsMessage$ServiceUpdateName": "

The unique ID of the service update

", "DescribeUpdateActionsMessage$Engine": "

The Elasticache engine to which the update applies. Either Redis or Memcached

", "DescribeUpdateActionsMessage$Marker": "

An optional marker returned from a prior request. Use this marker for pagination of results from this operation. If this parameter is specified, the response includes only records beyond the marker, up to the value specified by MaxRecords.

", - "DisassociateGlobalReplicationGroupMessage$GlobalReplicationGroupId": "

The name of the Global Datastore

", - "DisassociateGlobalReplicationGroupMessage$ReplicationGroupId": "

The name of the secondary cluster you wish to remove from the Global Datastore

", - "DisassociateGlobalReplicationGroupMessage$ReplicationGroupRegion": "

The AWS region of secondary cluster you wish to remove from the Global Datastore

", + "DescribeUserGroupsMessage$UserGroupId": "

The ID of the user group.

", + "DescribeUserGroupsMessage$Marker": "

An optional marker returned from a prior request. Use this marker for pagination of results from this operation. If this parameter is specified, the response includes only records beyond the marker, up to the value specified by MaxRecords. >

", + "DescribeUserGroupsResult$Marker": "

An optional marker returned from a prior request. Use this marker for pagination of results from this operation. If this parameter is specified, the response includes only records beyond the marker, up to the value specified by MaxRecords. >

", + "DescribeUsersMessage$Marker": "

An optional marker returned from a prior request. Use this marker for pagination of results from this operation. If this parameter is specified, the response includes only records beyond the marker, up to the value specified by MaxRecords. >

", + "DescribeUsersResult$Marker": "

An optional marker returned from a prior request. Use this marker for pagination of results from this operation. If this parameter is specified, the response includes only records beyond the marker, up to the value specified by MaxRecords. >

", + "DisassociateGlobalReplicationGroupMessage$GlobalReplicationGroupId": "

The name of the Global datastore

", + "DisassociateGlobalReplicationGroupMessage$ReplicationGroupId": "

The name of the secondary cluster you wish to remove from the Global datastore

", + "DisassociateGlobalReplicationGroupMessage$ReplicationGroupRegion": "

The AWS region of secondary cluster you wish to remove from the Global datastore

", "EC2SecurityGroup$Status": "

The status of the Amazon EC2 security group.

", "EC2SecurityGroup$EC2SecurityGroupName": "

The name of the Amazon EC2 security group.

", "EC2SecurityGroup$EC2SecurityGroupOwnerId": "

The AWS account ID of the Amazon EC2 security group owner.

", "Endpoint$Address": "

The DNS hostname of the cache node.

", - "EngineDefaults$CacheParameterGroupFamily": "

Specifies the name of the cache parameter group family to which the engine default parameters apply.

Valid values are: memcached1.4 | memcached1.5 | redis2.6 | redis2.8 | redis3.2 | redis4.0 | redis5.0 |

", + "EngineDefaults$CacheParameterGroupFamily": "

Specifies the name of the cache parameter group family to which the engine default parameters apply.

Valid values are: memcached1.4 | memcached1.5 | memcached1.6 | redis2.6 | redis2.8 | redis3.2 | redis4.0 | redis5.0 | redis6.x |

", "EngineDefaults$Marker": "

Provides an identifier to allow retrieval of paginated results.

", "Event$SourceIdentifier": "

The identifier for the source of the event. For example, if the event occurred at the cluster level, the identifier would be the name of the cluster.

", "Event$Message": "

The text of the event.

", "EventsMessage$Marker": "

Provides an identifier to allow retrieval of paginated results.

", - "FailoverGlobalReplicationGroupMessage$GlobalReplicationGroupId": "

The name of the Global Datastore

", - "FailoverGlobalReplicationGroupMessage$PrimaryRegion": "

The AWS region of the primary cluster of the Global Datastore

", + "FailoverGlobalReplicationGroupMessage$GlobalReplicationGroupId": "

The name of the Global datastore

", + "FailoverGlobalReplicationGroupMessage$PrimaryRegion": "

The AWS region of the primary cluster of the Global datastore

", "FailoverGlobalReplicationGroupMessage$PrimaryReplicationGroupId": "

The name of the primary replication group

", "GlobalNodeGroup$GlobalNodeGroupId": "

The name of the global node group

", "GlobalNodeGroup$Slots": "

The keyspace for this node group

", "GlobalNodeGroupIdList$member": null, - "GlobalReplicationGroup$GlobalReplicationGroupId": "

The name of the Global Datastore

", - "GlobalReplicationGroup$GlobalReplicationGroupDescription": "

The optional description of the Global Datastore

", - "GlobalReplicationGroup$Status": "

The status of the Global Datastore

", - "GlobalReplicationGroup$CacheNodeType": "

The cache node type of the Global Datastore

", + "GlobalReplicationGroup$GlobalReplicationGroupId": "

The name of the Global datastore

", + "GlobalReplicationGroup$GlobalReplicationGroupDescription": "

The optional description of the Global datastore

", + "GlobalReplicationGroup$Status": "

The status of the Global datastore

", + "GlobalReplicationGroup$CacheNodeType": "

The cache node type of the Global datastore

", "GlobalReplicationGroup$Engine": "

The Elasticache engine. For Redis only.

", - "GlobalReplicationGroup$EngineVersion": "

The Elasticache Redis engine version. For preview, it is Redis version 5.0.5 only.

", + "GlobalReplicationGroup$EngineVersion": "

The Elasticache Redis engine version.

", "GlobalReplicationGroup$ARN": "

The ARN (Amazon Resource Name) of the global replication group.

", - "GlobalReplicationGroupInfo$GlobalReplicationGroupId": "

The name of the Global Datastore

", - "GlobalReplicationGroupInfo$GlobalReplicationGroupMemberRole": "

The role of the replication group in a Global Datastore. Can be primary or secondary.

", - "GlobalReplicationGroupMember$ReplicationGroupId": "

The replication group id of the Global Datastore member.

", - "GlobalReplicationGroupMember$ReplicationGroupRegion": "

The AWS region of the Global Datastore member.

", + "GlobalReplicationGroupInfo$GlobalReplicationGroupId": "

The name of the Global datastore

", + "GlobalReplicationGroupInfo$GlobalReplicationGroupMemberRole": "

The role of the replication group in a Global datastore. Can be primary or secondary.

", + "GlobalReplicationGroupMember$ReplicationGroupId": "

The replication group id of the Global datastore member.

", + "GlobalReplicationGroupMember$ReplicationGroupRegion": "

The AWS region of the Global datastore member.

", "GlobalReplicationGroupMember$Role": "

Indicates the role of the replication group, primary or secondary.

", "GlobalReplicationGroupMember$Status": "

The status of the membership of the replication group.

", - "IncreaseNodeGroupsInGlobalReplicationGroupMessage$GlobalReplicationGroupId": "

The name of the Global Datastore

", + "IncreaseNodeGroupsInGlobalReplicationGroupMessage$GlobalReplicationGroupId": "

The name of the Global datastore

", "IncreaseReplicaCountMessage$ReplicationGroupId": "

The id of the replication group to which you want to add replica nodes.

", "KeyList$member": null, + "KinesisFirehoseDestinationDetails$DeliveryStream": "

The name of the Kinesis Data Firehose delivery stream.

", "ListAllowedNodeTypeModificationsMessage$CacheClusterId": "

The name of the cluster you want to scale up to a larger node instanced type. ElastiCache uses the cluster id to identify the current node type of this cluster and from that to create a list of node types you can scale up to.

You must provide a value for either the CacheClusterId or the ReplicationGroupId.

", "ListAllowedNodeTypeModificationsMessage$ReplicationGroupId": "

The name of the replication group want to scale up to a larger node type. ElastiCache uses the replication group id to identify the current node type being used by this replication group, and from that to create a list of node types you can scale up to.

You must provide a value for either the CacheClusterId or the ReplicationGroupId.

", "ListTagsForResourceMessage$ResourceName": "

The Amazon Resource Name (ARN) of the resource for which you want the list of tags, for example arn:aws:elasticache:us-west-2:0123456789:cluster:myCluster or arn:aws:elasticache:us-west-2:0123456789:snapshot:mySnapshot.

For more information about ARNs, see Amazon Resource Names (ARNs) and AWS Service Namespaces.

", + "LogDeliveryConfiguration$Message": "

Returns an error message for the log delivery configuration.

", "ModifyCacheClusterMessage$CacheClusterId": "

The cluster identifier. This value is stored as a lowercase string.

", "ModifyCacheClusterMessage$PreferredMaintenanceWindow": "

Specifies the weekly time range during which maintenance on the cluster is performed. It is specified as a range in the format ddd:hh24:mi-ddd:hh24:mi (24H Clock UTC). The minimum maintenance window is a 60 minute period.

Valid values for ddd are:

Example: sun:23:00-mon:01:30

", "ModifyCacheClusterMessage$NotificationTopicArn": "

The Amazon Resource Name (ARN) of the Amazon SNS topic to which notifications are sent.

The Amazon SNS topic owner must be same as the cluster owner.

", @@ -1932,10 +2219,11 @@ "ModifyCacheParameterGroupMessage$CacheParameterGroupName": "

The name of the cache parameter group to modify.

", "ModifyCacheSubnetGroupMessage$CacheSubnetGroupName": "

The name for the cache subnet group. This value is stored as a lowercase string.

Constraints: Must contain no more than 255 alphanumeric characters or hyphens.

Example: mysubnetgroup

", "ModifyCacheSubnetGroupMessage$CacheSubnetGroupDescription": "

A description of the cache subnet group.

", - "ModifyGlobalReplicationGroupMessage$GlobalReplicationGroupId": "

The name of the Global Datastore

", - "ModifyGlobalReplicationGroupMessage$CacheNodeType": "

A valid cache node type that you want to scale this Global Datastore to.

", - "ModifyGlobalReplicationGroupMessage$EngineVersion": "

The upgraded version of the cache engine to be run on the clusters in the Global Datastore.

", - "ModifyGlobalReplicationGroupMessage$GlobalReplicationGroupDescription": "

A description of the Global Datastore

", + "ModifyGlobalReplicationGroupMessage$GlobalReplicationGroupId": "

The name of the Global datastore

", + "ModifyGlobalReplicationGroupMessage$CacheNodeType": "

A valid cache node type that you want to scale this Global datastore to.

", + "ModifyGlobalReplicationGroupMessage$EngineVersion": "

The upgraded version of the cache engine to be run on the clusters in the Global datastore.

", + "ModifyGlobalReplicationGroupMessage$CacheParameterGroupName": "

The name of the cache parameter group to use with the Global datastore. It must be compatible with the major engine version used by the Global datastore.

", + "ModifyGlobalReplicationGroupMessage$GlobalReplicationGroupDescription": "

A description of the Global datastore

", "ModifyReplicationGroupMessage$ReplicationGroupId": "

The identifier of the replication group to modify.

", "ModifyReplicationGroupMessage$ReplicationGroupDescription": "

A description for the replication group. Maximum length is 255 characters.

", "ModifyReplicationGroupMessage$PrimaryClusterId": "

For replication groups with a single primary, if this parameter is specified, ElastiCache promotes the specified cluster in the specified replication group to the primary role. The nodes of all other clusters in the replication group are read replicas.

", @@ -1950,14 +2238,17 @@ "ModifyReplicationGroupMessage$CacheNodeType": "

A valid cache node type that you want to scale this replication group to.

", "ModifyReplicationGroupMessage$AuthToken": "

Reserved parameter. The password used to access a password protected server. This parameter must be specified with the auth-token-update-strategy parameter. Password constraints:

For more information, see AUTH password at AUTH.

", "ModifyReplicationGroupShardConfigurationMessage$ReplicationGroupId": "

The name of the Redis (cluster mode enabled) cluster (replication group) on which the shards are to be configured.

", + "ModifyUserGroupMessage$UserGroupId": "

The ID of the user group.

", "NodeGroup$NodeGroupId": "

The identifier for the node group (shard). A Redis (cluster mode disabled) replication group contains only 1 node group; therefore, the node group ID is 0001. A Redis (cluster mode enabled) replication group contains 1 to 90 node groups numbered 0001 to 0090. Optionally, the user can provide the id for a node group.

", "NodeGroup$Status": "

The current state of this replication group - creating, available, modifying, deleting.

", "NodeGroup$Slots": "

The keyspace for this node group (shard).

", "NodeGroupConfiguration$Slots": "

A string that specifies the keyspace for a particular node group. Keyspaces range from 0 to 16,383. The string is in the format startkey-endkey.

Example: \"0-3999\"

", "NodeGroupConfiguration$PrimaryAvailabilityZone": "

The Availability Zone where the primary node of this node group (shard) is launched.

", + "NodeGroupConfiguration$PrimaryOutpostArn": "

The outpost ARN of the primary node.

", "NodeGroupMember$CacheClusterId": "

The ID of the cluster to which the node belongs.

", "NodeGroupMember$CacheNodeId": "

The ID of the node within its cluster. A node ID is a numeric identifier (0001, 0002, etc.).

", "NodeGroupMember$PreferredAvailabilityZone": "

The name of the Availability Zone in which the node is located.

", + "NodeGroupMember$PreferredOutpostArn": "

The outpost ARN of the node group member.

", "NodeGroupMember$CurrentRole": "

The role that is currently assigned to the node - primary or replica. This member is only applicable for Redis (cluster mode disabled) replication groups.

", "NodeGroupMemberUpdateStatus$CacheClusterId": "

The cache cluster ID

", "NodeGroupMemberUpdateStatus$CacheNodeId": "

The node ID of the cache cluster

", @@ -1969,6 +2260,7 @@ "NodeTypeList$member": null, "NotificationConfiguration$TopicArn": "

The Amazon Resource Name (ARN) that identifies the topic.

", "NotificationConfiguration$TopicStatus": "

The current state of the topic.

", + "OutpostArnsList$member": null, "Parameter$ParameterName": "

The name of the parameter.

", "Parameter$ParameterValue": "

The value of the parameter.

", "Parameter$Description": "

A description of the parameter.

", @@ -1978,15 +2270,17 @@ "Parameter$MinimumEngineVersion": "

The earliest cache engine version to which the parameter can apply.

", "ParameterNameValue$ParameterName": "

The name of the parameter.

", "ParameterNameValue$ParameterValue": "

The value of the parameter.

", + "PasswordListInput$member": null, "PendingModifiedValues$EngineVersion": "

The new cache engine version that the cluster runs.

", "PendingModifiedValues$CacheNodeType": "

The cache node type that this cluster or replication group is scaled to.

", "PreferredAvailabilityZoneList$member": null, + "PreferredOutpostArnList$member": null, "ProcessedUpdateAction$ReplicationGroupId": "

The ID of the replication group

", "ProcessedUpdateAction$CacheClusterId": "

The ID of the cache cluster

", "ProcessedUpdateAction$ServiceUpdateName": "

The unique ID of the service update

", "PurchaseReservedCacheNodesOfferingMessage$ReservedCacheNodesOfferingId": "

The ID of the reserved cache node offering to purchase.

Example: 438012d3-4052-4cc7-b2e3-8d3372e0e706

", "PurchaseReservedCacheNodesOfferingMessage$ReservedCacheNodeId": "

A customer-specified identifier to track this reservation.

The Reserved Cache Node ID is an unique customer-specified identifier to track this reservation. If this parameter is not specified, ElastiCache automatically generates an identifier for the reservation.

Example: myreservationID

", - "RebalanceSlotsInGlobalReplicationGroupMessage$GlobalReplicationGroupId": "

The name of the Global Datastore

", + "RebalanceSlotsInGlobalReplicationGroupMessage$GlobalReplicationGroupId": "

The name of the Global datastore

", "RebootCacheClusterMessage$CacheClusterId": "

The cluster identifier. This parameter is stored as a lowercase string.

", "RecurringCharge$RecurringChargeFrequency": "

The frequency of the recurring charge.

", "RegionalConfiguration$ReplicationGroupId": "

The name of the secondary cluster

", @@ -2003,17 +2297,18 @@ "ReplicationGroup$ARN": "

The ARN (Amazon Resource Name) of the replication group.

", "ReplicationGroupIdList$member": null, "ReplicationGroupMessage$Marker": "

Provides an identifier to allow retrieval of paginated results.

", + "ReplicationGroupOutpostArnList$member": null, "ReplicationGroupPendingModifiedValues$PrimaryClusterId": "

The primary cluster ID that is applied immediately (if --apply-immediately was specified), or during the next maintenance window.

", "ReservedCacheNode$ReservedCacheNodeId": "

The unique identifier for the reservation.

", "ReservedCacheNode$ReservedCacheNodesOfferingId": "

The offering identifier.

", - "ReservedCacheNode$CacheNodeType": "

The cache node type for the reserved cache nodes.

The following node types are supported by ElastiCache. Generally speaking, the current generation types provide more memory and computational power at lower cost when compared to their equivalent previous generation counterparts.

Additional node type info

", + "ReservedCacheNode$CacheNodeType": "

The cache node type for the reserved cache nodes.

The following node types are supported by ElastiCache. Generally speaking, the current generation types provide more memory and computational power at lower cost when compared to their equivalent previous generation counterparts.

Additional node type info

", "ReservedCacheNode$ProductDescription": "

The description of the reserved cache node.

", "ReservedCacheNode$OfferingType": "

The offering type of this reserved cache node.

", "ReservedCacheNode$State": "

The state of the reserved cache node.

", "ReservedCacheNode$ReservationARN": "

The Amazon Resource Name (ARN) of the reserved cache node.

Example: arn:aws:elasticache:us-east-1:123456789012:reserved-instance:ri-2017-03-27-08-33-25-582

", "ReservedCacheNodeMessage$Marker": "

Provides an identifier to allow retrieval of paginated results.

", "ReservedCacheNodesOffering$ReservedCacheNodesOfferingId": "

A unique identifier for the reserved cache node offering.

", - "ReservedCacheNodesOffering$CacheNodeType": "

The cache node type for the reserved cache node.

The following node types are supported by ElastiCache. Generally speaking, the current generation types provide more memory and computational power at lower cost when compared to their equivalent previous generation counterparts.

Additional node type info

", + "ReservedCacheNodesOffering$CacheNodeType": "

The cache node type for the reserved cache node.

The following node types are supported by ElastiCache. Generally speaking, the current generation types provide more memory and computational power at lower cost when compared to their equivalent previous generation counterparts.

Additional node type info

", "ReservedCacheNodesOffering$ProductDescription": "

The cache engine used by the offering.

", "ReservedCacheNodesOffering$OfferingType": "

The offering type.

", "ReservedCacheNodesOfferingMessage$Marker": "

Provides an identifier to allow retrieval of paginated results.

", @@ -2036,10 +2331,11 @@ "Snapshot$CacheClusterId": "

The user-supplied identifier of the source cluster.

", "Snapshot$SnapshotStatus": "

The status of the snapshot. Valid values: creating | available | restoring | copying | deleting.

", "Snapshot$SnapshotSource": "

Indicates whether the snapshot is from an automatic backup (automated) or was created manually (manual).

", - "Snapshot$CacheNodeType": "

The name of the compute and memory capacity node type for the source cluster.

The following node types are supported by ElastiCache. Generally speaking, the current generation types provide more memory and computational power at lower cost when compared to their equivalent previous generation counterparts.

Additional node type info

", + "Snapshot$CacheNodeType": "

The name of the compute and memory capacity node type for the source cluster.

The following node types are supported by ElastiCache. Generally speaking, the current generation types provide more memory and computational power at lower cost when compared to their equivalent previous generation counterparts.

Additional node type info

", "Snapshot$Engine": "

The name of the cache engine (memcached or redis) used by the source cluster.

", "Snapshot$EngineVersion": "

The version of the cache engine version that is used by the source cluster.

", "Snapshot$PreferredAvailabilityZone": "

The name of the Availability Zone in which the source cluster is located.

", + "Snapshot$PreferredOutpostArn": "

The ARN (Amazon Resource Name) of the preferred outpost.

", "Snapshot$PreferredMaintenanceWindow": "

Specifies the weekly time range during which maintenance on the cluster is performed. It is specified as a range in the format ddd:hh24:mi-ddd:hh24:mi (24H Clock UTC). The minimum maintenance window is a 60 minute period.

Valid values for ddd are:

Example: sun:23:00-mon:01:30

", "Snapshot$TopicArn": "

The Amazon Resource Name (ARN) for the topic used by the source cluster for publishing notifications.

", "Snapshot$CacheParameterGroupName": "

The cache parameter group that is associated with the source cluster.

", @@ -2052,9 +2348,11 @@ "StartMigrationMessage$ReplicationGroupId": "

The ID of the replication group to which data should be migrated.

", "Subnet$SubnetIdentifier": "

The unique identifier for the subnet.

", "SubnetIdentifierList$member": null, + "SubnetOutpost$SubnetOutpostArn": "

The outpost ARN of the subnet.

", "Tag$Key": "

The key for the tag. May not be null.

", "Tag$Value": "

The tag's value. May be null.

", "TestFailoverMessage$ReplicationGroupId": "

The name of the replication group (console: cluster) whose automatic failover is being tested by this operation.

", + "UGReplicationGroupIdList$member": null, "UnprocessedUpdateAction$ReplicationGroupId": "

The replication group ID

", "UnprocessedUpdateAction$CacheClusterId": "

The ID of the cache cluster

", "UnprocessedUpdateAction$ServiceUpdateName": "

The unique ID of the service update

", @@ -2066,7 +2364,15 @@ "UpdateAction$NodesUpdated": "

The progress of the service update on the replication group

", "UpdateAction$EstimatedUpdateTime": "

The estimated length of time for the update to complete

", "UpdateAction$Engine": "

The Elasticache engine to which the update applies. Either Redis or Memcached

", - "UpdateActionsMessage$Marker": "

An optional marker returned from a prior request. Use this marker for pagination of results from this operation. If this parameter is specified, the response includes only records beyond the marker, up to the value specified by MaxRecords.

" + "UpdateActionsMessage$Marker": "

An optional marker returned from a prior request. Use this marker for pagination of results from this operation. If this parameter is specified, the response includes only records beyond the marker, up to the value specified by MaxRecords.

", + "User$UserId": "

The ID of the user.

", + "User$UserName": "

The username of the user.

", + "User$Status": "

Indicates the user status. Can be \"active\", \"modifying\" or \"deleting\".

", + "User$AccessString": "

Access permissions string used for this user.

", + "User$ARN": "

The Amazon Resource Name (ARN) of the user.

", + "UserGroup$UserGroupId": "

The ID of the user group.

", + "UserGroup$Status": "

Indicates user group status. Can be \"creating\", \"active\", \"modifying\", \"deleting\".

", + "UserGroup$ARN": "

The Amazon Resource Name (ARN) of the user group.

" } }, "Subnet": { @@ -2093,6 +2399,17 @@ "CacheSubnetGroup$Subnets": "

A list of subnets associated with the cache subnet group.

" } }, + "SubnetNotAllowedFault": { + "base": "

At least one subnet ID does not match the other subnet IDs. This mismatch typically occurs when a user sets one subnet ID to a regional Availability Zone and a different one to an outpost. Or when a user sets the subnet ID to an Outpost when not subscribed on this service.

", + "refs": { + } + }, + "SubnetOutpost": { + "base": "

The ID of the outpost subnet.

", + "refs": { + "Subnet$SubnetOutpost": "

The outpost ARN of the subnet.

" + } + }, "TStamp": { "base": null, "refs": { @@ -2129,7 +2446,7 @@ } }, "Tag": { - "base": "

A cost allocation Tag that can be added to an ElastiCache cluster or replication group. Tags are composed of a Key/Value pair. A tag with a null Value is permitted.

", + "base": "

A tag that can be added to an ElastiCache cluster or replication group. Tags are composed of a Key/Value pair. You can use tags to categorize and track all your ElastiCache resources, with the exception of global replication group. When you add or remove tags on replication groups, those actions will be replicated to all nodes in the replication group. A tag with a null Value is permitted.

", "refs": { "TagList$member": null } @@ -2137,10 +2454,18 @@ "TagList": { "base": null, "refs": { - "AddTagsToResourceMessage$Tags": "

A list of cost allocation tags to be added to this resource. A tag is a key-value pair. A tag key must be accompanied by a tag value.

", - "CreateCacheClusterMessage$Tags": "

A list of cost allocation tags to be added to this resource.

", - "CreateReplicationGroupMessage$Tags": "

A list of cost allocation tags to be added to this resource. Tags are comma-separated key,value pairs (e.g. Key=myKey, Value=myKeyValue. You can include multiple tags as shown following: Key=myKey, Value=myKeyValue Key=mySecondKey, Value=mySecondKeyValue.

", - "TagListMessage$TagList": "

A list of cost allocation tags as key-value pairs.

" + "AddTagsToResourceMessage$Tags": "

A list of tags to be added to this resource. A tag is a key-value pair. A tag key must be accompanied by a tag value, although null is accepted.

", + "CopySnapshotMessage$Tags": "

A list of tags to be added to this resource. A tag is a key-value pair. A tag key must be accompanied by a tag value, although null is accepted.

", + "CreateCacheClusterMessage$Tags": "

A list of tags to be added to this resource.

", + "CreateCacheParameterGroupMessage$Tags": "

A list of tags to be added to this resource. A tag is a key-value pair. A tag key must be accompanied by a tag value, although null is accepted.

", + "CreateCacheSecurityGroupMessage$Tags": "

A list of tags to be added to this resource. A tag is a key-value pair. A tag key must be accompanied by a tag value, although null is accepted.

", + "CreateCacheSubnetGroupMessage$Tags": "

A list of tags to be added to this resource. A tag is a key-value pair. A tag key must be accompanied by a tag value, although null is accepted.

", + "CreateReplicationGroupMessage$Tags": "

A list of tags to be added to this resource. Tags are comma-separated key,value pairs (e.g. Key=myKey, Value=myKeyValue. You can include multiple tags as shown following: Key=myKey, Value=myKeyValue Key=mySecondKey, Value=mySecondKeyValue. Tags on replication groups will be replicated to all nodes.

", + "CreateSnapshotMessage$Tags": "

A list of tags to be added to this resource. A tag is a key-value pair. A tag key must be accompanied by a tag value, although null is accepted.

", + "CreateUserGroupMessage$Tags": "

A list of tags to be added to this resource. A tag is a key-value pair. A tag key must be accompanied by a tag value, although null is accepted.

", + "CreateUserMessage$Tags": "

A list of tags to be added to this resource. A tag is a key-value pair. A tag key must be accompanied by a tag value, although null is accepted.

", + "PurchaseReservedCacheNodesOfferingMessage$Tags": "

A list of tags to be added to this resource. A tag is a key-value pair. A tag key must be accompanied by a tag value, although null is accepted.

", + "TagListMessage$TagList": "

A list of tags as key-value pairs.

" } }, "TagListMessage": { @@ -2179,6 +2504,12 @@ "DescribeUpdateActionsMessage$ServiceUpdateTimeRange": "

The range of time specified to search for service updates that are in available status

" } }, + "UGReplicationGroupIdList": { + "base": null, + "refs": { + "UserGroup$ReplicationGroups": "

A list of replication groups that the user group can access.

" + } + }, "UnprocessedUpdateAction": { "base": "

Update action that has failed to be processed for the corresponding apply/stop request

", "refs": { @@ -2226,6 +2557,129 @@ "base": null, "refs": { } + }, + "User": { + "base": null, + "refs": { + "UserList$member": null + } + }, + "UserAlreadyExistsFault": { + "base": "

A user with this ID already exists.

", + "refs": { + } + }, + "UserGroup": { + "base": null, + "refs": { + "UserGroupList$member": null + } + }, + "UserGroupAlreadyExistsFault": { + "base": "

The user group with this ID already exists.

", + "refs": { + } + }, + "UserGroupId": { + "base": null, + "refs": { + "UserGroupIdList$member": null, + "UserGroupIdListInput$member": null + } + }, + "UserGroupIdList": { + "base": null, + "refs": { + "ModifyReplicationGroupMessage$UserGroupIdsToAdd": "

The user group you are associating with the replication group.

", + "ModifyReplicationGroupMessage$UserGroupIdsToRemove": "

The user group to remove, meaning the users in the group no longer can access the replication group.

", + "ReplicationGroup$UserGroupIds": "

The list of user group IDs that have access to the replication group.

", + "User$UserGroupIds": "

Returns a list of the user group IDs the user belongs to.

", + "UserGroupsUpdateStatus$UserGroupIdsToAdd": "

The list of user group IDs to add.

", + "UserGroupsUpdateStatus$UserGroupIdsToRemove": "

The list of user group IDs to remove.

" + } + }, + "UserGroupIdListInput": { + "base": null, + "refs": { + "CreateReplicationGroupMessage$UserGroupIds": "

The user group to associate with the replication group.

" + } + }, + "UserGroupList": { + "base": null, + "refs": { + "DescribeUserGroupsResult$UserGroups": "

Returns a list of user groups.

" + } + }, + "UserGroupNotFoundFault": { + "base": "

The user group was not found or does not exist

", + "refs": { + } + }, + "UserGroupPendingChanges": { + "base": "

Returns the updates being applied to the user group.

", + "refs": { + "UserGroup$PendingChanges": "

A list of updates being applied to the user groups.

" + } + }, + "UserGroupQuotaExceededFault": { + "base": "

The number of users exceeds the user group limit.

", + "refs": { + } + }, + "UserGroupsUpdateStatus": { + "base": "

The status of the user group update.

", + "refs": { + "ReplicationGroupPendingModifiedValues$UserGroups": "

The user groups being modified.

" + } + }, + "UserId": { + "base": null, + "refs": { + "CreateUserMessage$UserId": "

The ID of the user.

", + "DeleteUserMessage$UserId": "

The ID of the user.

", + "DescribeUsersMessage$UserId": "

The ID of the user.

", + "ModifyUserMessage$UserId": "

The ID of the user.

", + "UserIdList$member": null, + "UserIdListInput$member": null + } + }, + "UserIdList": { + "base": null, + "refs": { + "UserGroup$UserIds": "

The list of user IDs that belong to the user group.

", + "UserGroupPendingChanges$UserIdsToRemove": "

The list of user IDs to remove.

", + "UserGroupPendingChanges$UserIdsToAdd": "

The list of user IDs to add.

" + } + }, + "UserIdListInput": { + "base": null, + "refs": { + "CreateUserGroupMessage$UserIds": "

The list of user IDs that belong to the user group.

", + "ModifyUserGroupMessage$UserIdsToAdd": "

The list of user IDs to add to the user group.

", + "ModifyUserGroupMessage$UserIdsToRemove": "

The list of user IDs to remove from the user group.

" + } + }, + "UserList": { + "base": null, + "refs": { + "DescribeUsersResult$Users": "

A list of users.

" + } + }, + "UserName": { + "base": null, + "refs": { + "CreateUserMessage$UserName": "

The username of the user.

" + } + }, + "UserNotFoundFault": { + "base": "

The user does not exist or could not be found.

", + "refs": { + } + }, + "UserQuotaExceededFault": { + "base": "

The quota of users has been exceeded.

", + "refs": { + } } } -} +} \ No newline at end of file diff --git a/pkg/generate/testdata/models/apis/elasticache/0000-00-00/generator.yaml b/pkg/generate/testdata/models/apis/elasticache/0000-00-00/generator.yaml index 011c9f25..5aeb9063 100644 --- a/pkg/generate/testdata/models/apis/elasticache/0000-00-00/generator.yaml +++ b/pkg/generate/testdata/models/apis/elasticache/0000-00-00/generator.yaml @@ -1,20 +1,79 @@ resources: CacheSubnetGroup: exceptions: - codes: - 404: CacheSubnetGroupNotFoundFault + errors: + 404: + code: CacheSubnetGroupNotFoundFault + terminal_codes: + - CacheSubnetGroupQuotaExceeded + - CacheSubnetQuotaExceededFault + - SubnetInUse + - InvalidSubnet + - InvalidParameter + - InvalidParameterValue + - InvalidParameterCombination + fields: + Events: + is_read_only: true + from: + operation: DescribeEvents + path: Events + ReplicationGroup: + update_conditions_custom_method_name: CustomUpdateConditions + exceptions: + terminal_codes: + - InvalidParameter + - InvalidParameterValue + - InvalidParameterCombination + - InsufficientCacheClusterCapacity + - CacheSecurityGroupNotFound + - CacheSubnetGroupNotFoundFault + - ClusterQuotaForCustomerExceeded + - NodeQuotaForClusterExceeded + - NodeQuotaForCustomerExceeded + - InvalidVPCNetworkStateFault + - TagQuotaPerResourceExceeded + - NodeGroupsPerReplicationGroupQuotaExceeded + - InvalidCacheSecurityGroupState + - CacheParameterGroupNotFound + - InvalidKMSKeyFault fields: + AllowedScaleUpModifications: + is_read_only: true + from: + operation: ListAllowedNodeTypeModifications + path: ScaleUpModifications + AllowedScaleDownModifications: + is_read_only: true + from: + operation: ListAllowedNodeTypeModifications + path: ScaleDownModifications Events: is_read_only: true from: operation: DescribeEvents path: Events + AuthToken: + is_secret: true Snapshot: + update_conditions_custom_method_name: CustomUpdateConditions + exceptions: + terminal_codes: + - InvalidParameter + - InvalidParameterValue + - InvalidParameterCombination + - SnapshotAlreadyExistsFault + - CacheClusterNotFound + - ReplicationGroupNotFoundFault + - SnapshotQuotaExceededFault + - SnapshotFeatureNotSupportedFault fields: SourceSnapshotName: from: operation: CopySnapshot path: SourceSnapshotName + update_operation: + custom_method_name: customUpdateSnapshot CacheParameterGroup: exceptions: terminal_codes: @@ -41,34 +100,38 @@ resources: path: Events update_operation: custom_method_name: customUpdateCacheParameterGroup - ReplicationGroup: - fields: - AllowedScaleUpModifications: - is_read_only: true - from: - operation: ListAllowedNodeTypeModifications - path: ScaleUpModifications - AllowedScaleDownModifications: - is_read_only: true - from: - operation: ListAllowedNodeTypeModifications - path: ScaleDownModifications - Events: - is_read_only: true - from: - operation: DescribeEvents - path: Events - AuthToken: - is_secret: true operations: + DescribeCacheSubnetGroups: + set_output_custom_method_name: CustomDescribeCacheSubnetGroupsSetOutput + DescribeReplicationGroups: + set_output_custom_method_name: CustomDescribeReplicationGroupsSetOutput + CreateReplicationGroup: + set_output_custom_method_name: CustomCreateReplicationGroupSetOutput ModifyReplicationGroup: + custom_implementation: CustomModifyReplicationGroup + set_output_custom_method_name: CustomModifyReplicationGroupSetOutput override_values: ApplyImmediately: true - ModifyCacheCluster: - override_values: - ApplyImmediately: true + CreateSnapshot: + custom_implementation: CustomCreateSnapshot + set_output_custom_method_name: CustomCreateSnapshotSetOutput + DescribeSnapshots: + set_output_custom_method_name: CustomDescribeSnapshotSetOutput + CreateCacheParameterGroup: + set_output_custom_method_name: CustomCreateCacheParameterGroupSetOutput + DescribeCacheParameterGroups: + set_output_custom_method_name: CustomDescribeCacheParameterGroupsSetOutput ignore: - operations: - - DeleteSnapshot resource_names: - GlobalReplicationGroup + - CacheCluster + - CacheSecurityGroup + - User + - UserGroup + field_paths: + - DescribeSnapshotsInput.CacheClusterId + - DescribeSnapshotsInput.ReplicationGroupId + - DescribeSnapshotsInput.SnapshotSource + - ModifyReplicationGroupInput.SecurityGroupIds + - ModifyReplicationGroupInput.EngineVersion + - CreateReplicationGroupInput.GlobalReplicationGroupId