/*******************************************************************************
* Copyright 2012-2019 Amazon.com, Inc. or its affiliates. All Rights Reserved.
* Licensed under the Apache License, Version 2.0 (the "License"). You may not use
* this file except in compliance with the License. A copy of the License is located at
*
* http://aws.amazon.com/apache2.0
*
* or in the "license" file accompanying this file.
* This file is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
* CONDITIONS OF ANY KIND, either express or implied. See the License for the
* specific language governing permissions and limitations under the License.
* *****************************************************************************
*
* AWS Tools for Windows (TM) PowerShell (TM)
*
*/
using System;
using System.Collections.Generic;
using System.Linq;
using System.Management.Automation;
using System.Text;
using Amazon.PowerShell.Common;
using Amazon.Runtime;
using Amazon.ElastiCache;
using Amazon.ElastiCache.Model;
namespace Amazon.PowerShell.Cmdlets.EC
{
///
/// Creates a cluster. All nodes in the cluster run the same protocol-compliant cache
/// engine software, either Memcached or Redis.
///
///
///
/// This operation is not supported for Redis (cluster mode enabled) clusters.
///
///
[Cmdlet("New", "ECCacheCluster", SupportsShouldProcess = true, ConfirmImpact = ConfirmImpact.Medium)]
[OutputType("Amazon.ElastiCache.Model.CacheCluster")]
[AWSCmdlet("Calls the Amazon ElastiCache CreateCacheCluster API operation.", Operation = new[] {"CreateCacheCluster"}, SelectReturnType = typeof(Amazon.ElastiCache.Model.CreateCacheClusterResponse))]
[AWSCmdletOutput("Amazon.ElastiCache.Model.CacheCluster or Amazon.ElastiCache.Model.CreateCacheClusterResponse",
"This cmdlet returns an Amazon.ElastiCache.Model.CacheCluster object.",
"The service call response (type Amazon.ElastiCache.Model.CreateCacheClusterResponse) can also be referenced from properties attached to the cmdlet entry in the $AWSHistory stack."
)]
public partial class NewECCacheClusterCmdlet : AmazonElastiCacheClientCmdlet, IExecutor
{
#region Parameter AuthToken
///
///
/// Reserved parameter. The password used to access a password protected server.Password constraints:- Must be only printable ASCII characters.
- Must be at least 16 characters and no more than 128 characters in length.
- The only permitted printable special characters are !, &, #, $, ^, <, >,
/// and -. Other printable special characters cannot be used in the AUTH token.
For more information, see AUTH password
/// at http://redis.io/commands/AUTH.
///
///
[System.Management.Automation.Parameter(ValueFromPipelineByPropertyName = true)]
public System.String AuthToken { get; set; }
#endregion
#region Parameter AutoMinorVersionUpgrade
///
///
/// If you are running Redis engine version 6.0 or later, set this parameter to yes if
/// you want to opt-in to the next auto minor version upgrade campaign. This parameter
/// is disabled for previous versions.
///
///
[System.Management.Automation.Parameter(ValueFromPipelineByPropertyName = true)]
public System.Boolean? AutoMinorVersionUpgrade { get; set; }
#endregion
#region Parameter AZMode
///
///
/// Specifies whether the nodes in this Memcached cluster are created in a single Availability
/// Zone or created across multiple Availability Zones in the cluster's region.This parameter is only supported for Memcached clusters.If the AZMode
and PreferredAvailabilityZones
are not specified,
/// ElastiCache assumes single-az
mode.
///
///
[System.Management.Automation.Parameter(ValueFromPipelineByPropertyName = true)]
[AWSConstantClassSource("Amazon.ElastiCache.AZMode")]
public Amazon.ElastiCache.AZMode AZMode { get; set; }
#endregion
#region Parameter CacheClusterId
///
///
/// The node group (shard) identifier. This parameter is stored as a lowercase string.Constraints:- A name must contain from 1 to 50 alphanumeric characters or hyphens.
- The first character must be a letter.
- A name cannot end with a hyphen or contain two consecutive hyphens.
///
///
#if !MODULAR
[System.Management.Automation.Parameter(Position = 0, ValueFromPipelineByPropertyName = true, ValueFromPipeline = true)]
#else
[System.Management.Automation.Parameter(Position = 0, ValueFromPipelineByPropertyName = true, ValueFromPipeline = true, Mandatory = true)]
[System.Management.Automation.AllowEmptyString]
[System.Management.Automation.AllowNull]
#endif
[Amazon.PowerShell.Common.AWSRequiredParameter]
public System.String CacheClusterId { get; set; }
#endregion
#region Parameter 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.- General purpose:
- Current generation: M6g node types (available only for Redis engine version 5.0.6 onward and for
/// Memcached engine version 1.5.16 onward):
cache.m6g.large
, cache.m6g.xlarge
,
/// cache.m6g.2xlarge
, cache.m6g.4xlarge
, cache.m6g.8xlarge
,
/// cache.m6g.12xlarge
, cache.m6g.16xlarge
For region availability, see Supported
/// Node TypesM5 node types:cache.m5.large
, cache.m5.xlarge
,
/// cache.m5.2xlarge
, cache.m5.4xlarge
, cache.m5.12xlarge
,
/// cache.m5.24xlarge
M4 node types:cache.m4.large
, cache.m4.xlarge
,
/// cache.m4.2xlarge
, cache.m4.4xlarge
, cache.m4.10xlarge
T4g node types (available only for Redis engine version 5.0.6 onward and Memcached
/// engine version 1.5.16 onward): cache.t4g.micro
, cache.t4g.small
,
/// cache.t4g.medium
T3 node types:cache.t3.micro
, cache.t3.small
, cache.t3.medium
T2 node types:cache.t2.micro
, cache.t2.small
, cache.t2.medium
- Previous generation: (not recommended. Existing clusters are still supported but creation
/// of new clusters is not supported for these types.)T1 node types:
cache.t1.micro
M1 node types:cache.m1.small
, cache.m1.medium
,
/// cache.m1.large
, cache.m1.xlarge
M3 node types:cache.m3.medium
, cache.m3.large
,
/// cache.m3.xlarge
, cache.m3.2xlarge
- Compute optimized:
- Previous generation: (not recommended. Existing clusters are still supported but creation
/// of new clusters is not supported for these types.)C1 node types:
cache.c1.xlarge
- Memory optimized:
- Current generation: R6g node types (available only for Redis engine version 5.0.6 onward and for
/// Memcached engine version 1.5.16 onward).
cache.r6g.large
, cache.r6g.xlarge
, cache.r6g.2xlarge
,
/// cache.r6g.4xlarge
, cache.r6g.8xlarge
, cache.r6g.12xlarge
,
/// cache.r6g.16xlarge
For region availability, see Supported
/// Node TypesR5 node types:cache.r5.large
, cache.r5.xlarge
,
/// cache.r5.2xlarge
, cache.r5.4xlarge
, cache.r5.12xlarge
,
/// cache.r5.24xlarge
R4 node types:cache.r4.large
, cache.r4.xlarge
,
/// cache.r4.2xlarge
, cache.r4.4xlarge
, cache.r4.8xlarge
,
/// cache.r4.16xlarge
- Previous generation: (not recommended. Existing clusters are still supported but creation
/// of new clusters is not supported for these types.)M2 node types:
cache.m2.xlarge
, cache.m2.2xlarge
,
/// cache.m2.4xlarge
R3 node types:cache.r3.large
, cache.r3.xlarge
,
/// cache.r3.2xlarge
, cache.r3.4xlarge
, cache.r3.8xlarge
Additional node type info- All current generation instance types are created in Amazon VPC by default.
- Redis append-only files (AOF) are not supported for T1 or T2 instances.
- Redis Multi-AZ with automatic failover is not supported on T1 instances.
- Redis configuration variables
appendonly
and appendfsync
/// are not supported on Redis version 2.8.22 and later.
///
///
[System.Management.Automation.Parameter(ValueFromPipelineByPropertyName = true)]
public System.String CacheNodeType { get; set; }
#endregion
#region Parameter 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.
///
///
[System.Management.Automation.Parameter(ValueFromPipelineByPropertyName = true)]
public System.String CacheParameterGroupName { get; set; }
#endregion
#region Parameter CacheSecurityGroupName
///
///
/// A list of security group names to associate with this cluster.Use this parameter only when you are creating a cluster outside of an Amazon Virtual
/// Private Cloud (Amazon VPC).
///
///
[System.Management.Automation.Parameter(ValueFromPipelineByPropertyName = true)]
[Alias("CacheSecurityGroupNames")]
public System.String[] CacheSecurityGroupName { get; set; }
#endregion
#region Parameter 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.
///
///
[System.Management.Automation.Parameter(ValueFromPipelineByPropertyName = true)]
public System.String CacheSubnetGroupName { get; set; }
#endregion
#region Parameter Engine
///
///
/// The name of the cache engine to be used for this cluster.Valid values for this parameter are: memcached
| redis
///
///
[System.Management.Automation.Parameter(ValueFromPipelineByPropertyName = true)]
public System.String Engine { get; set; }
#endregion
#region Parameter 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.
///
///
[System.Management.Automation.Parameter(ValueFromPipelineByPropertyName = true)]
public System.String EngineVersion { get; set; }
#endregion
#region Parameter IpDiscovery
///
///
/// The network type you choose when modifying a cluster, either ipv4
| ipv6
.
/// IPv6 is supported for workloads using Redis engine version 6.2 onward or Memcached
/// engine version 1.6.6 on all instances built on the Nitro
/// system.
///
///
[System.Management.Automation.Parameter(ValueFromPipelineByPropertyName = true)]
[AWSConstantClassSource("Amazon.ElastiCache.IpDiscovery")]
public Amazon.ElastiCache.IpDiscovery IpDiscovery { get; set; }
#endregion
#region Parameter LogDeliveryConfiguration
///
///
/// Specifies the destination, format and type of the logs.
///
///
[System.Management.Automation.Parameter(ValueFromPipelineByPropertyName = true)]
[Alias("LogDeliveryConfigurations")]
public Amazon.ElastiCache.Model.LogDeliveryConfigurationRequest[] LogDeliveryConfiguration { get; set; }
#endregion
#region Parameter NetworkType
///
///
/// Must be either ipv4
| ipv6
| dual_stack
. IPv6
/// is supported for workloads using Redis engine version 6.2 onward or Memcached engine
/// version 1.6.6 on all instances built on the Nitro
/// system.
///
///
[System.Management.Automation.Parameter(ValueFromPipelineByPropertyName = true)]
[AWSConstantClassSource("Amazon.ElastiCache.NetworkType")]
public Amazon.ElastiCache.NetworkType NetworkType { get; set; }
#endregion
#region Parameter 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.
///
///
[System.Management.Automation.Parameter(ValueFromPipelineByPropertyName = true)]
public System.String NotificationTopicArn { get; set; }
#endregion
#region Parameter NumCacheNode
///
///
/// 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/.
///
///
[System.Management.Automation.Parameter(ValueFromPipelineByPropertyName = true)]
[Alias("NumCacheNodes")]
public System.Int32? NumCacheNode { get; set; }
#endregion
#region Parameter OutpostMode
///
///
/// Specifies whether the nodes in the cluster are created in a single outpost or across
/// multiple outposts.
///
///
[System.Management.Automation.Parameter(ValueFromPipelineByPropertyName = true)]
[AWSConstantClassSource("Amazon.ElastiCache.OutpostMode")]
public Amazon.ElastiCache.OutpostMode OutpostMode { get; set; }
#endregion
#region Parameter Port
///
///
/// The port number on which each of the cache nodes accepts connections.
///
///
[System.Management.Automation.Parameter(ValueFromPipelineByPropertyName = true)]
public System.Int32? Port { get; set; }
#endregion
#region Parameter 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.
///
///
[System.Management.Automation.Parameter(ValueFromPipelineByPropertyName = true)]
public System.String PreferredAvailabilityZone { get; set; }
#endregion
#region Parameter PreferredAvailabilityZoneSet
///
///
/// 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.
///
///
[System.Management.Automation.Parameter(ValueFromPipelineByPropertyName = true)]
[Alias("PreferredAvailabilityZones")]
public System.String[] PreferredAvailabilityZoneSet { get; set; }
#endregion
#region Parameter 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.
///
///
[System.Management.Automation.Parameter(ValueFromPipelineByPropertyName = true)]
public System.String PreferredMaintenanceWindow { get; set; }
#endregion
#region Parameter PreferredOutpostArn
///
///
/// The outpost ARN in which the cache cluster is created.
///
///
[System.Management.Automation.Parameter(ValueFromPipelineByPropertyName = true)]
public System.String PreferredOutpostArn { get; set; }
#endregion
#region Parameter PreferredOutpostArnSet
///
///
/// The outpost ARNs in which the cache cluster is created.
///
///
[System.Management.Automation.Parameter(ValueFromPipelineByPropertyName = true)]
[Alias("PreferredOutpostArns")]
public System.String[] PreferredOutpostArnSet { get; set; }
#endregion
#region Parameter 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
.
///
///
[System.Management.Automation.Parameter(ValueFromPipelineByPropertyName = true)]
public System.String ReplicationGroupId { get; set; }
#endregion
#region Parameter SecurityGroupId
///
///
/// One or more VPC security groups associated with the cluster.Use this parameter only when you are creating a cluster in an Amazon Virtual Private
/// Cloud (Amazon VPC).
///
///
[System.Management.Automation.Parameter(ValueFromPipelineByPropertyName = true)]
[Alias("SecurityGroupIds")]
public System.String[] SecurityGroupId { get; set; }
#endregion
#region Parameter SnapshotArn
///
///
/// A single-element string list containing an Amazon Resource Name (ARN) that uniquely
/// identifies a Redis RDB snapshot file stored in Amazon S3. The snapshot file is used
/// to populate the node group (shard). The Amazon S3 object name in the ARN cannot contain
/// any commas.This parameter is only valid if the Engine
parameter is redis
.Example of an Amazon S3 ARN: arn:aws:s3:::my_bucket/snapshot1.rdb
///
///
[System.Management.Automation.Parameter(ValueFromPipelineByPropertyName = true)]
[Alias("SnapshotArns")]
public System.String[] SnapshotArn { get; set; }
#endregion
#region Parameter 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
.
///
///
[System.Management.Automation.Parameter(ValueFromPipelineByPropertyName = true)]
public System.String SnapshotName { get; set; }
#endregion
#region Parameter 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).
///
///
[System.Management.Automation.Parameter(ValueFromPipelineByPropertyName = true)]
public System.Int32? SnapshotRetentionLimit { get; set; }
#endregion
#region Parameter 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
.
///
///
[System.Management.Automation.Parameter(ValueFromPipelineByPropertyName = true)]
public System.String SnapshotWindow { get; set; }
#endregion
#region Parameter Tag
///
///
/// A list of tags to be added to this resource.
///
///
[System.Management.Automation.Parameter(ValueFromPipelineByPropertyName = true)]
[Alias("Tags")]
public Amazon.ElastiCache.Model.Tag[] Tag { get; set; }
#endregion
#region Parameter TransitEncryptionEnabled
///
///
/// A flag that enables in-transit encryption when set to true.
///
///
[System.Management.Automation.Parameter(ValueFromPipelineByPropertyName = true)]
public System.Boolean? TransitEncryptionEnabled { get; set; }
#endregion
#region Parameter Select
///
/// Use the -Select parameter to control the cmdlet output. The default value is 'CacheCluster'.
/// Specifying -Select '*' will result in the cmdlet returning the whole service response (Amazon.ElastiCache.Model.CreateCacheClusterResponse).
/// Specifying the name of a property of type Amazon.ElastiCache.Model.CreateCacheClusterResponse will result in that property being returned.
/// Specifying -Select '^ParameterName' will result in the cmdlet returning the selected cmdlet parameter value.
///
[System.Management.Automation.Parameter(ValueFromPipelineByPropertyName = true)]
public string Select { get; set; } = "CacheCluster";
#endregion
#region Parameter PassThru
///
/// Changes the cmdlet behavior to return the value passed to the CacheClusterId parameter.
/// The -PassThru parameter is deprecated, use -Select '^CacheClusterId' instead. This parameter will be removed in a future version.
///
[System.Obsolete("The -PassThru parameter is deprecated, use -Select '^CacheClusterId' instead. This parameter will be removed in a future version.")]
[System.Management.Automation.Parameter(ValueFromPipelineByPropertyName = true)]
public SwitchParameter PassThru { get; set; }
#endregion
#region Parameter Force
///
/// This parameter overrides confirmation prompts to force
/// the cmdlet to continue its operation. This parameter should always
/// be used with caution.
///
[System.Management.Automation.Parameter(ValueFromPipelineByPropertyName = true)]
public SwitchParameter Force { get; set; }
#endregion
protected override void ProcessRecord()
{
this._AWSSignerType = "v4";
base.ProcessRecord();
var resourceIdentifiersText = FormatParameterValuesForConfirmationMsg(nameof(this.CacheClusterId), MyInvocation.BoundParameters);
if (!ConfirmShouldProceed(this.Force.IsPresent, resourceIdentifiersText, "New-ECCacheCluster (CreateCacheCluster)"))
{
return;
}
var context = new CmdletContext();
// allow for manipulation of parameters prior to loading into context
PreExecutionContextLoad(context);
#pragma warning disable CS0618, CS0612 //A class member was marked with the Obsolete attribute
if (ParameterWasBound(nameof(this.Select)))
{
context.Select = CreateSelectDelegate(Select) ??
throw new System.ArgumentException("Invalid value for -Select parameter.", nameof(this.Select));
if (this.PassThru.IsPresent)
{
throw new System.ArgumentException("-PassThru cannot be used when -Select is specified.", nameof(this.Select));
}
}
else if (this.PassThru.IsPresent)
{
context.Select = (response, cmdlet) => this.CacheClusterId;
}
#pragma warning restore CS0618, CS0612 //A class member was marked with the Obsolete attribute
context.AuthToken = this.AuthToken;
context.AutoMinorVersionUpgrade = this.AutoMinorVersionUpgrade;
context.AZMode = this.AZMode;
context.CacheClusterId = this.CacheClusterId;
#if MODULAR
if (this.CacheClusterId == null && ParameterWasBound(nameof(this.CacheClusterId)))
{
WriteWarning("You are passing $null as a value for parameter CacheClusterId which is marked as required. In case you believe this parameter was incorrectly marked as required, report this by opening an issue at https://github.com/aws/aws-tools-for-powershell/issues.");
}
#endif
context.CacheNodeType = this.CacheNodeType;
context.CacheParameterGroupName = this.CacheParameterGroupName;
if (this.CacheSecurityGroupName != null)
{
context.CacheSecurityGroupName = new List(this.CacheSecurityGroupName);
}
context.CacheSubnetGroupName = this.CacheSubnetGroupName;
context.Engine = this.Engine;
context.EngineVersion = this.EngineVersion;
context.IpDiscovery = this.IpDiscovery;
if (this.LogDeliveryConfiguration != null)
{
context.LogDeliveryConfiguration = new List(this.LogDeliveryConfiguration);
}
context.NetworkType = this.NetworkType;
context.NotificationTopicArn = this.NotificationTopicArn;
context.NumCacheNode = this.NumCacheNode;
context.OutpostMode = this.OutpostMode;
context.Port = this.Port;
context.PreferredAvailabilityZone = this.PreferredAvailabilityZone;
if (this.PreferredAvailabilityZoneSet != null)
{
context.PreferredAvailabilityZoneSet = new List(this.PreferredAvailabilityZoneSet);
}
context.PreferredMaintenanceWindow = this.PreferredMaintenanceWindow;
context.PreferredOutpostArn = this.PreferredOutpostArn;
if (this.PreferredOutpostArnSet != null)
{
context.PreferredOutpostArnSet = new List(this.PreferredOutpostArnSet);
}
context.ReplicationGroupId = this.ReplicationGroupId;
if (this.SecurityGroupId != null)
{
context.SecurityGroupId = new List(this.SecurityGroupId);
}
if (this.SnapshotArn != null)
{
context.SnapshotArn = new List(this.SnapshotArn);
}
context.SnapshotName = this.SnapshotName;
context.SnapshotRetentionLimit = this.SnapshotRetentionLimit;
context.SnapshotWindow = this.SnapshotWindow;
if (this.Tag != null)
{
context.Tag = new List(this.Tag);
}
context.TransitEncryptionEnabled = this.TransitEncryptionEnabled;
// allow further manipulation of loaded context prior to processing
PostExecutionContextLoad(context);
var output = Execute(context) as CmdletOutput;
ProcessOutput(output);
}
#region IExecutor Members
public object Execute(ExecutorContext context)
{
var cmdletContext = context as CmdletContext;
// create request
var request = new Amazon.ElastiCache.Model.CreateCacheClusterRequest();
if (cmdletContext.AuthToken != null)
{
request.AuthToken = cmdletContext.AuthToken;
}
if (cmdletContext.AutoMinorVersionUpgrade != null)
{
request.AutoMinorVersionUpgrade = cmdletContext.AutoMinorVersionUpgrade.Value;
}
if (cmdletContext.AZMode != null)
{
request.AZMode = cmdletContext.AZMode;
}
if (cmdletContext.CacheClusterId != null)
{
request.CacheClusterId = cmdletContext.CacheClusterId;
}
if (cmdletContext.CacheNodeType != null)
{
request.CacheNodeType = cmdletContext.CacheNodeType;
}
if (cmdletContext.CacheParameterGroupName != null)
{
request.CacheParameterGroupName = cmdletContext.CacheParameterGroupName;
}
if (cmdletContext.CacheSecurityGroupName != null)
{
request.CacheSecurityGroupNames = cmdletContext.CacheSecurityGroupName;
}
if (cmdletContext.CacheSubnetGroupName != null)
{
request.CacheSubnetGroupName = cmdletContext.CacheSubnetGroupName;
}
if (cmdletContext.Engine != null)
{
request.Engine = cmdletContext.Engine;
}
if (cmdletContext.EngineVersion != null)
{
request.EngineVersion = cmdletContext.EngineVersion;
}
if (cmdletContext.IpDiscovery != null)
{
request.IpDiscovery = cmdletContext.IpDiscovery;
}
if (cmdletContext.LogDeliveryConfiguration != null)
{
request.LogDeliveryConfigurations = cmdletContext.LogDeliveryConfiguration;
}
if (cmdletContext.NetworkType != null)
{
request.NetworkType = cmdletContext.NetworkType;
}
if (cmdletContext.NotificationTopicArn != null)
{
request.NotificationTopicArn = cmdletContext.NotificationTopicArn;
}
if (cmdletContext.NumCacheNode != null)
{
request.NumCacheNodes = cmdletContext.NumCacheNode.Value;
}
if (cmdletContext.OutpostMode != null)
{
request.OutpostMode = cmdletContext.OutpostMode;
}
if (cmdletContext.Port != null)
{
request.Port = cmdletContext.Port.Value;
}
if (cmdletContext.PreferredAvailabilityZone != null)
{
request.PreferredAvailabilityZone = cmdletContext.PreferredAvailabilityZone;
}
if (cmdletContext.PreferredAvailabilityZoneSet != null)
{
request.PreferredAvailabilityZones = cmdletContext.PreferredAvailabilityZoneSet;
}
if (cmdletContext.PreferredMaintenanceWindow != null)
{
request.PreferredMaintenanceWindow = cmdletContext.PreferredMaintenanceWindow;
}
if (cmdletContext.PreferredOutpostArn != null)
{
request.PreferredOutpostArn = cmdletContext.PreferredOutpostArn;
}
if (cmdletContext.PreferredOutpostArnSet != null)
{
request.PreferredOutpostArns = cmdletContext.PreferredOutpostArnSet;
}
if (cmdletContext.ReplicationGroupId != null)
{
request.ReplicationGroupId = cmdletContext.ReplicationGroupId;
}
if (cmdletContext.SecurityGroupId != null)
{
request.SecurityGroupIds = cmdletContext.SecurityGroupId;
}
if (cmdletContext.SnapshotArn != null)
{
request.SnapshotArns = cmdletContext.SnapshotArn;
}
if (cmdletContext.SnapshotName != null)
{
request.SnapshotName = cmdletContext.SnapshotName;
}
if (cmdletContext.SnapshotRetentionLimit != null)
{
request.SnapshotRetentionLimit = cmdletContext.SnapshotRetentionLimit.Value;
}
if (cmdletContext.SnapshotWindow != null)
{
request.SnapshotWindow = cmdletContext.SnapshotWindow;
}
if (cmdletContext.Tag != null)
{
request.Tags = cmdletContext.Tag;
}
if (cmdletContext.TransitEncryptionEnabled != null)
{
request.TransitEncryptionEnabled = cmdletContext.TransitEncryptionEnabled.Value;
}
CmdletOutput output;
// issue call
var client = Client ?? CreateClient(_CurrentCredentials, _RegionEndpoint);
try
{
var response = CallAWSServiceOperation(client, request);
object pipelineOutput = null;
pipelineOutput = cmdletContext.Select(response, this);
output = new CmdletOutput
{
PipelineOutput = pipelineOutput,
ServiceResponse = response
};
}
catch (Exception e)
{
output = new CmdletOutput { ErrorResponse = e };
}
return output;
}
public ExecutorContext CreateContext()
{
return new CmdletContext();
}
#endregion
#region AWS Service Operation Call
private Amazon.ElastiCache.Model.CreateCacheClusterResponse CallAWSServiceOperation(IAmazonElastiCache client, Amazon.ElastiCache.Model.CreateCacheClusterRequest request)
{
Utils.Common.WriteVerboseEndpointMessage(this, client.Config, "Amazon ElastiCache", "CreateCacheCluster");
try
{
#if DESKTOP
return client.CreateCacheCluster(request);
#elif CORECLR
return client.CreateCacheClusterAsync(request).GetAwaiter().GetResult();
#else
#error "Unknown build edition"
#endif
}
catch (AmazonServiceException exc)
{
var webException = exc.InnerException as System.Net.WebException;
if (webException != null)
{
throw new Exception(Utils.Common.FormatNameResolutionFailureMessage(client.Config, webException.Message), webException);
}
throw;
}
}
#endregion
internal partial class CmdletContext : ExecutorContext
{
public System.String AuthToken { get; set; }
public System.Boolean? AutoMinorVersionUpgrade { get; set; }
public Amazon.ElastiCache.AZMode AZMode { get; set; }
public System.String CacheClusterId { get; set; }
public System.String CacheNodeType { get; set; }
public System.String CacheParameterGroupName { get; set; }
public List CacheSecurityGroupName { get; set; }
public System.String CacheSubnetGroupName { get; set; }
public System.String Engine { get; set; }
public System.String EngineVersion { get; set; }
public Amazon.ElastiCache.IpDiscovery IpDiscovery { get; set; }
public List LogDeliveryConfiguration { get; set; }
public Amazon.ElastiCache.NetworkType NetworkType { get; set; }
public System.String NotificationTopicArn { get; set; }
public System.Int32? NumCacheNode { get; set; }
public Amazon.ElastiCache.OutpostMode OutpostMode { get; set; }
public System.Int32? Port { get; set; }
public System.String PreferredAvailabilityZone { get; set; }
public List PreferredAvailabilityZoneSet { get; set; }
public System.String PreferredMaintenanceWindow { get; set; }
public System.String PreferredOutpostArn { get; set; }
public List PreferredOutpostArnSet { get; set; }
public System.String ReplicationGroupId { get; set; }
public List SecurityGroupId { get; set; }
public List SnapshotArn { get; set; }
public System.String SnapshotName { get; set; }
public System.Int32? SnapshotRetentionLimit { get; set; }
public System.String SnapshotWindow { get; set; }
public List Tag { get; set; }
public System.Boolean? TransitEncryptionEnabled { get; set; }
public System.Func Select { get; set; } =
(response, cmdlet) => response.CacheCluster;
}
}
}