/******************************************************************************* * 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.RDS; using Amazon.RDS.Model; namespace Amazon.PowerShell.Cmdlets.RDS { /// /// Restores a DB cluster to an arbitrary point in time. Users can restore to any point /// in time before LatestRestorableTime for up to BackupRetentionPeriod /// days. The target DB cluster is created from the source DB cluster with the same configuration /// as the original DB cluster, except that the new DB cluster is created with the default /// DB security group. /// /// /// For Aurora, this action only restores the DB cluster, not the DB instances for that /// DB cluster. You must invoke the CreateDBInstance action to create DB /// instances for the restored DB cluster, specifying the identifier of the restored DB /// cluster in DBClusterIdentifier. You can create DB instances only after /// the RestoreDBClusterToPointInTime action has completed and the DB cluster /// is available. /// /// For more information on Amazon Aurora DB clusters, see /// What is Amazon Aurora? in the Amazon Aurora User Guide. /// /// For more information on Multi-AZ DB clusters, see /// Multi-AZ DB cluster deployments in the Amazon RDS User Guide. /// [Cmdlet("Restore", "RDSDBClusterToPointInTime", SupportsShouldProcess = true, ConfirmImpact = ConfirmImpact.Medium)] [OutputType("Amazon.RDS.Model.DBCluster")] [AWSCmdlet("Calls the Amazon Relational Database Service RestoreDBClusterToPointInTime API operation.", Operation = new[] {"RestoreDBClusterToPointInTime"}, SelectReturnType = typeof(Amazon.RDS.Model.RestoreDBClusterToPointInTimeResponse))] [AWSCmdletOutput("Amazon.RDS.Model.DBCluster or Amazon.RDS.Model.RestoreDBClusterToPointInTimeResponse", "This cmdlet returns an Amazon.RDS.Model.DBCluster object.", "The service call response (type Amazon.RDS.Model.RestoreDBClusterToPointInTimeResponse) can also be referenced from properties attached to the cmdlet entry in the $AWSHistory stack." )] public partial class RestoreRDSDBClusterToPointInTimeCmdlet : AmazonRDSClientCmdlet, IExecutor { #region Parameter ScalingConfiguration_AutoPause /// /// /// A value that indicates whether to allow or disallow automatic pause for an Aurora /// DB cluster in serverless DB engine mode. A DB cluster can be paused only /// when it's idle (it has no connections).If a DB cluster is paused for more than seven days, the DB cluster might be backed /// up with a snapshot. In this case, the DB cluster is restored when there is a request /// to connect to it. /// /// [System.Management.Automation.Parameter(ValueFromPipelineByPropertyName = true)] public System.Boolean? ScalingConfiguration_AutoPause { get; set; } #endregion #region Parameter BacktrackWindow /// /// /// The target backtrack window, in seconds. To disable backtracking, set this value to /// 0.Default: 0Constraints:Valid for: Aurora MySQL DB clusters only /// /// [System.Management.Automation.Parameter(ValueFromPipelineByPropertyName = true)] public System.Int64? BacktrackWindow { get; set; } #endregion #region Parameter CopyTagsToSnapshot /// /// /// A value that indicates whether to copy all tags from the restored DB cluster to snapshots /// of the restored DB cluster. The default is not to copy them.Valid for: Aurora DB clusters and Multi-AZ DB clusters /// /// [System.Management.Automation.Parameter(ValueFromPipelineByPropertyName = true)] public System.Boolean? CopyTagsToSnapshot { get; set; } #endregion #region Parameter DBClusterIdentifier /// /// /// The name of the new DB cluster to be created.Constraints:Valid for: Aurora DB clusters and Multi-AZ DB clusters /// /// #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 DBClusterIdentifier { get; set; } #endregion #region Parameter DBClusterInstanceClass /// /// /// The compute and memory capacity of the each DB instance in the Multi-AZ DB cluster, /// for example db.m6gd.xlarge. Not all DB instance classes are available in all Amazon /// Web Services Regions, or for all database engines.For the full list of DB instance classes, and availability for your engine, see DB /// instance class in the Amazon RDS User Guide.Valid for: Multi-AZ DB clusters only /// /// [System.Management.Automation.Parameter(ValueFromPipelineByPropertyName = true)] public System.String DBClusterInstanceClass { get; set; } #endregion #region Parameter DBClusterParameterGroupName /// /// /// The name of the DB cluster parameter group to associate with this DB cluster. If this /// argument is omitted, the default DB cluster parameter group for the specified engine /// is used.Constraints:Valid for: Aurora DB clusters and Multi-AZ DB clusters /// /// [System.Management.Automation.Parameter(ValueFromPipelineByPropertyName = true)] public System.String DBClusterParameterGroupName { get; set; } #endregion #region Parameter DBSubnetGroupName /// /// /// The DB subnet group name to use for the new DB cluster.Constraints: If supplied, must match the name of an existing DBSubnetGroup.Example: mydbsubnetgroupValid for: Aurora DB clusters and Multi-AZ DB clusters /// /// [System.Management.Automation.Parameter(ValueFromPipelineByPropertyName = true)] public System.String DBSubnetGroupName { get; set; } #endregion #region Parameter DeletionProtection /// /// /// A value that indicates whether the DB cluster has deletion protection enabled. The /// database can't be deleted when deletion protection is enabled. By default, deletion /// protection isn't enabled.Valid for: Aurora DB clusters and Multi-AZ DB clusters /// /// [System.Management.Automation.Parameter(ValueFromPipelineByPropertyName = true)] public System.Boolean? DeletionProtection { get; set; } #endregion #region Parameter Domain /// /// /// Specify the Active Directory directory ID to restore the DB cluster in. The domain /// must be created prior to this operation.For Amazon Aurora DB clusters, Amazon RDS can use Kerberos Authentication to authenticate /// users that connect to the DB cluster. For more information, see Kerberos /// Authentication in the Amazon Aurora User Guide.Valid for: Aurora DB clusters only /// /// [System.Management.Automation.Parameter(ValueFromPipelineByPropertyName = true)] public System.String Domain { get; set; } #endregion #region Parameter DomainIAMRoleName /// /// /// Specify the name of the IAM role to be used when making API calls to the Directory /// Service.Valid for: Aurora DB clusters only /// /// [System.Management.Automation.Parameter(ValueFromPipelineByPropertyName = true)] public System.String DomainIAMRoleName { get; set; } #endregion #region Parameter EnableCloudwatchLogsExport /// /// /// The list of logs that the restored DB cluster is to export to CloudWatch Logs. The /// values in the list depend on the DB engine being used.RDS for MySQLPossible values are error, general, and slowquery.RDS for PostgreSQLPossible values are postgresql and upgrade.Aurora MySQLPossible values are audit, error, general, /// and slowquery.Aurora PostgreSQLPossible value is postgresql.For more information about exporting CloudWatch Logs for Amazon RDS, see Publishing /// Database Logs to Amazon CloudWatch Logs in the Amazon RDS User Guide.For more information about exporting CloudWatch Logs for Amazon Aurora, see Publishing /// Database Logs to Amazon CloudWatch Logs in the Amazon Aurora User Guide.Valid for: Aurora DB clusters and Multi-AZ DB clusters /// /// [System.Management.Automation.Parameter(ValueFromPipelineByPropertyName = true)] [Alias("EnableCloudwatchLogsExports")] public System.String[] EnableCloudwatchLogsExport { get; set; } #endregion #region Parameter EnableIAMDatabaseAuthentication /// /// /// A value that indicates whether to enable mapping of Amazon Web Services Identity and /// Access Management (IAM) accounts to database accounts. By default, mapping isn't enabled.For more information, see /// IAM Database Authentication in the Amazon Aurora User Guide.Valid for: Aurora DB clusters only /// /// [System.Management.Automation.Parameter(ValueFromPipelineByPropertyName = true)] public System.Boolean? EnableIAMDatabaseAuthentication { get; set; } #endregion #region Parameter EngineMode /// /// /// The engine mode of the new cluster. Specify provisioned or serverless, /// depending on the type of the cluster you are creating. You can create an Aurora Serverless /// v1 clone from a provisioned cluster, or a provisioned clone from an Aurora Serverless /// v1 cluster. To create a clone that is an Aurora Serverless v1 cluster, the original /// cluster must be an Aurora Serverless v1 cluster or an encrypted provisioned cluster.Valid for: Aurora DB clusters only /// /// [System.Management.Automation.Parameter(ValueFromPipelineByPropertyName = true)] public System.String EngineMode { get; set; } #endregion #region Parameter Iops /// /// /// The amount of Provisioned IOPS (input/output operations per second) to be initially /// allocated for each DB instance in the Multi-AZ DB cluster.For information about valid IOPS values, see Amazon /// RDS Provisioned IOPS storage in the Amazon RDS User Guide.Constraints: Must be a multiple between .5 and 50 of the storage amount for the DB /// instance.Valid for: Multi-AZ DB clusters only /// /// [System.Management.Automation.Parameter(ValueFromPipelineByPropertyName = true)] public System.Int32? Iops { get; set; } #endregion #region Parameter KmsKeyId /// /// /// The Amazon Web Services KMS key identifier to use when restoring an encrypted DB cluster /// from an encrypted DB cluster.The Amazon Web Services KMS key identifier is the key ARN, key ID, alias ARN, or alias /// name for the KMS key. To use a KMS key in a different Amazon Web Services account, /// specify the key ARN or alias ARN.You can restore to a new DB cluster and encrypt the new DB cluster with a KMS key /// that is different from the KMS key used to encrypt the source DB cluster. The new /// DB cluster is encrypted with the KMS key identified by the KmsKeyId parameter.If you don't specify a value for the KmsKeyId parameter, then the following /// occurs:If DBClusterIdentifier refers to a DB cluster that isn't encrypted, then /// the restore request is rejected.Valid for: Aurora DB clusters and Multi-AZ DB clusters /// /// [System.Management.Automation.Parameter(ValueFromPipelineByPropertyName = true)] public System.String KmsKeyId { get; set; } #endregion #region Parameter ScalingConfiguration_MaxCapacity /// /// /// The maximum capacity for an Aurora DB cluster in serverless DB engine /// mode.For Aurora MySQL, valid capacity values are 1, 2, 4, /// 8, 16, 32, 64, 128, /// and 256.For Aurora PostgreSQL, valid capacity values are 2, 4, 8, /// 16, 32, 64, 192, and 384.The maximum capacity must be greater than or equal to the minimum capacity. /// /// [System.Management.Automation.Parameter(ValueFromPipelineByPropertyName = true)] public System.Int32? ScalingConfiguration_MaxCapacity { get; set; } #endregion #region Parameter ServerlessV2ScalingConfiguration_MaxCapacity /// /// /// The maximum number of Aurora capacity units (ACUs) for a DB instance in an Aurora /// Serverless v2 cluster. You can specify ACU values in half-step increments, such as /// 40, 40.5, 41, and so on. The largest value that you can use is 128. /// /// [System.Management.Automation.Parameter(ValueFromPipelineByPropertyName = true)] public System.Double? ServerlessV2ScalingConfiguration_MaxCapacity { get; set; } #endregion #region Parameter ScalingConfiguration_MinCapacity /// /// /// The minimum capacity for an Aurora DB cluster in serverless DB engine /// mode.For Aurora MySQL, valid capacity values are 1, 2, 4, /// 8, 16, 32, 64, 128, /// and 256.For Aurora PostgreSQL, valid capacity values are 2, 4, 8, /// 16, 32, 64, 192, and 384.The minimum capacity must be less than or equal to the maximum capacity. /// /// [System.Management.Automation.Parameter(ValueFromPipelineByPropertyName = true)] public System.Int32? ScalingConfiguration_MinCapacity { get; set; } #endregion #region Parameter ServerlessV2ScalingConfiguration_MinCapacity /// /// /// The minimum number of Aurora capacity units (ACUs) for a DB instance in an Aurora /// Serverless v2 cluster. You can specify ACU values in half-step increments, such as /// 8, 8.5, 9, and so on. The smallest value that you can use is 0.5. /// /// [System.Management.Automation.Parameter(ValueFromPipelineByPropertyName = true)] public System.Double? ServerlessV2ScalingConfiguration_MinCapacity { get; set; } #endregion #region Parameter NetworkType /// /// /// The network type of the DB cluster.Valid values:The network type is determined by the DBSubnetGroup specified for the /// DB cluster. A DBSubnetGroup can support only the IPv4 protocol or the /// IPv4 and the IPv6 protocols (DUAL).For more information, see /// Working with a DB instance in a VPC in the Amazon Aurora User Guide.Valid for: Aurora DB clusters only /// /// [System.Management.Automation.Parameter(ValueFromPipelineByPropertyName = true)] public System.String NetworkType { get; set; } #endregion #region Parameter OptionGroupName /// /// /// The name of the option group for the new DB cluster.DB clusters are associated with a default option group that can't be modified. /// /// [System.Management.Automation.Parameter(ValueFromPipelineByPropertyName = true)] public System.String OptionGroupName { get; set; } #endregion #region Parameter Port /// /// /// The port number on which the new DB cluster accepts connections.Constraints: A value from 1150-65535.Default: The default port for the engine.Valid for: Aurora DB clusters and Multi-AZ DB clusters /// /// [System.Management.Automation.Parameter(ValueFromPipelineByPropertyName = true)] public System.Int32? Port { get; set; } #endregion #region Parameter PubliclyAccessible /// /// /// A value that indicates whether the DB cluster is publicly accessible.When the DB cluster is publicly accessible, its Domain Name System (DNS) endpoint /// resolves to the private IP address from within the DB cluster's virtual private cloud /// (VPC). It resolves to the public IP address from outside of the DB cluster's VPC. /// Access to the DB cluster is ultimately controlled by the security group it uses. That /// public access is not permitted if the security group assigned to the DB cluster doesn't /// permit it.When the DB cluster isn't publicly accessible, it is an internal DB cluster with a /// DNS name that resolves to a private IP address.Default: The default behavior varies depending on whether DBSubnetGroupName /// is specified.If DBSubnetGroupName isn't specified, and PubliclyAccessible /// isn't specified, the following applies:If DBSubnetGroupName is specified, and PubliclyAccessible /// isn't specified, the following applies:Valid for: Multi-AZ DB clusters only /// /// [System.Management.Automation.Parameter(ValueFromPipelineByPropertyName = true)] public System.Boolean? PubliclyAccessible { get; set; } #endregion #region Parameter UtcRestoreToTime /// /// /// The date and time to restore the DB cluster to.Valid Values: Value must be a time in Universal Coordinated Time (UTC) formatConstraints:Example: 2015-03-07T23:45:00ZValid for: Aurora DB clusters and Multi-AZ DB clusters /// /// [System.Management.Automation.Parameter(ValueFromPipelineByPropertyName = true)] public System.DateTime? UtcRestoreToTime { get; set; } #endregion #region Parameter RestoreType /// /// /// The type of restore to be performed. You can specify one of the following values:If you don't specify a RestoreType value, then the new DB cluster is /// restored as a full copy of the source DB cluster.Valid for: Aurora DB clusters and Multi-AZ DB clusters /// /// [System.Management.Automation.Parameter(ValueFromPipelineByPropertyName = true)] public System.String RestoreType { get; set; } #endregion #region Parameter ScalingConfiguration_SecondsBeforeTimeout /// /// /// The amount of time, in seconds, that Aurora Serverless v1 tries to find a scaling /// point to perform seamless scaling before enforcing the timeout action. The default /// is 300.Specify a value between 60 and 600 seconds. /// /// [System.Management.Automation.Parameter(ValueFromPipelineByPropertyName = true)] public System.Int32? ScalingConfiguration_SecondsBeforeTimeout { get; set; } #endregion #region Parameter ScalingConfiguration_SecondsUntilAutoPause /// /// /// The time, in seconds, before an Aurora DB cluster in serverless mode /// is paused.Specify a value between 300 and 86,400 seconds. /// /// [System.Management.Automation.Parameter(ValueFromPipelineByPropertyName = true)] public System.Int32? ScalingConfiguration_SecondsUntilAutoPause { get; set; } #endregion #region Parameter SourceDBClusterIdentifier /// /// /// The identifier of the source DB cluster from which to restore.Constraints:Valid for: Aurora DB clusters and Multi-AZ DB clusters /// /// #if !MODULAR [System.Management.Automation.Parameter(ValueFromPipelineByPropertyName = true)] #else [System.Management.Automation.Parameter(ValueFromPipelineByPropertyName = true, Mandatory = true)] [System.Management.Automation.AllowEmptyString] [System.Management.Automation.AllowNull] #endif [Amazon.PowerShell.Common.AWSRequiredParameter] public System.String SourceDBClusterIdentifier { get; set; } #endregion #region Parameter StorageType /// /// /// Specifies the storage type to be associated with the DB cluster.When specified for a Multi-AZ DB cluster, a value for the Iops parameter /// is required.Valid values: aurora, aurora-iopt1 (Aurora DB clusters); /// io1 (Multi-AZ DB clusters)Default: aurora (Aurora DB clusters); io1 (Multi-AZ DB clusters)Valid for: Aurora DB clusters and Multi-AZ DB clusters /// /// [System.Management.Automation.Parameter(ValueFromPipelineByPropertyName = true)] public System.String StorageType { get; set; } #endregion #region Parameter Tag /// /// /// The service has not provided documentation for this parameter; please refer to the service's API reference documentation for the latest available information. /// /// [System.Management.Automation.Parameter(ValueFromPipelineByPropertyName = true)] [Alias("Tags")] public Amazon.RDS.Model.Tag[] Tag { get; set; } #endregion #region Parameter ScalingConfiguration_TimeoutAction /// /// /// The action to take when the timeout is reached, either ForceApplyCapacityChange /// or RollbackCapacityChange.ForceApplyCapacityChange sets the capacity to the specified value as /// soon as possible.RollbackCapacityChange, the default, ignores the capacity change if /// a scaling point isn't found in the timeout period.If you specify ForceApplyCapacityChange, connections that prevent Aurora /// Serverless v1 from finding a scaling point might be dropped.For more information, see /// Autoscaling for Aurora Serverless v1 in the Amazon Aurora User Guide. /// /// [System.Management.Automation.Parameter(ValueFromPipelineByPropertyName = true)] public System.String ScalingConfiguration_TimeoutAction { get; set; } #endregion #region Parameter UseLatestRestorableTime /// /// /// A value that indicates whether to restore the DB cluster to the latest restorable /// backup time. By default, the DB cluster isn't restored to the latest restorable backup /// time.Constraints: Can't be specified if RestoreToTime parameter is provided.Valid for: Aurora DB clusters and Multi-AZ DB clusters /// /// [System.Management.Automation.Parameter(ValueFromPipelineByPropertyName = true)] public System.Boolean? UseLatestRestorableTime { get; set; } #endregion #region Parameter VpcSecurityGroupId /// /// /// A list of VPC security groups that the new DB cluster belongs to.Valid for: Aurora DB clusters and Multi-AZ DB clusters /// /// [System.Management.Automation.Parameter(ValueFromPipelineByPropertyName = true)] [Alias("VpcSecurityGroupIds")] public System.String[] VpcSecurityGroupId { get; set; } #endregion #region Parameter RestoreToTime /// /// /// This property is deprecated. Setting this property results in non-UTC DateTimes not /// being marshalled correctly. Use RestoreToTimeUtc instead. Setting either RestoreToTime /// or RestoreToTimeUtc results in both RestoreToTime and RestoreToTimeUtc being assigned, /// the latest assignment to either one of the two property is reflected in the value /// of both. RestoreToTime is provided for backwards compatibility only and assigning /// a non-Utc DateTime to it results in the wrong timestamp being passed to the service.The date and time to restore the DB cluster to.Valid Values: Value must be a time in Universal Coordinated Time (UTC) formatConstraints:Example: 2015-03-07T23:45:00ZValid for: Aurora DB clusters and Multi-AZ DB clusters /// /// This parameter is deprecated. /// [System.Management.Automation.Parameter(ValueFromPipelineByPropertyName = true)] [System.ObsoleteAttribute("This parameter is deprecated and may result in the wrong timestamp being passed to the service, use UtcRestoreToTime instead.")] public System.DateTime? RestoreToTime { get; set; } #endregion #region Parameter Select /// /// Use the -Select parameter to control the cmdlet output. The default value is 'DBCluster'. /// Specifying -Select '*' will result in the cmdlet returning the whole service response (Amazon.RDS.Model.RestoreDBClusterToPointInTimeResponse). /// Specifying the name of a property of type Amazon.RDS.Model.RestoreDBClusterToPointInTimeResponse 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; } = "DBCluster"; #endregion #region Parameter PassThru /// /// Changes the cmdlet behavior to return the value passed to the DBClusterIdentifier parameter. /// The -PassThru parameter is deprecated, use -Select '^DBClusterIdentifier' instead. This parameter will be removed in a future version. /// [System.Obsolete("The -PassThru parameter is deprecated, use -Select '^DBClusterIdentifier' 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.DBClusterIdentifier), MyInvocation.BoundParameters); if (!ConfirmShouldProceed(this.Force.IsPresent, resourceIdentifiersText, "Restore-RDSDBClusterToPointInTime (RestoreDBClusterToPointInTime)")) { 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.DBClusterIdentifier; } #pragma warning restore CS0618, CS0612 //A class member was marked with the Obsolete attribute context.BacktrackWindow = this.BacktrackWindow; context.CopyTagsToSnapshot = this.CopyTagsToSnapshot; context.DBClusterIdentifier = this.DBClusterIdentifier; #if MODULAR if (this.DBClusterIdentifier == null && ParameterWasBound(nameof(this.DBClusterIdentifier))) { WriteWarning("You are passing $null as a value for parameter DBClusterIdentifier 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.DBClusterInstanceClass = this.DBClusterInstanceClass; context.DBClusterParameterGroupName = this.DBClusterParameterGroupName; context.DBSubnetGroupName = this.DBSubnetGroupName; context.DeletionProtection = this.DeletionProtection; context.Domain = this.Domain; context.DomainIAMRoleName = this.DomainIAMRoleName; if (this.EnableCloudwatchLogsExport != null) { context.EnableCloudwatchLogsExport = new List(this.EnableCloudwatchLogsExport); } context.EnableIAMDatabaseAuthentication = this.EnableIAMDatabaseAuthentication; context.EngineMode = this.EngineMode; context.Iops = this.Iops; context.KmsKeyId = this.KmsKeyId; context.NetworkType = this.NetworkType; context.OptionGroupName = this.OptionGroupName; context.Port = this.Port; context.PubliclyAccessible = this.PubliclyAccessible; context.UtcRestoreToTime = this.UtcRestoreToTime; context.RestoreType = this.RestoreType; context.ScalingConfiguration_AutoPause = this.ScalingConfiguration_AutoPause; context.ScalingConfiguration_MaxCapacity = this.ScalingConfiguration_MaxCapacity; context.ScalingConfiguration_MinCapacity = this.ScalingConfiguration_MinCapacity; context.ScalingConfiguration_SecondsBeforeTimeout = this.ScalingConfiguration_SecondsBeforeTimeout; context.ScalingConfiguration_SecondsUntilAutoPause = this.ScalingConfiguration_SecondsUntilAutoPause; context.ScalingConfiguration_TimeoutAction = this.ScalingConfiguration_TimeoutAction; context.ServerlessV2ScalingConfiguration_MaxCapacity = this.ServerlessV2ScalingConfiguration_MaxCapacity; context.ServerlessV2ScalingConfiguration_MinCapacity = this.ServerlessV2ScalingConfiguration_MinCapacity; context.SourceDBClusterIdentifier = this.SourceDBClusterIdentifier; #if MODULAR if (this.SourceDBClusterIdentifier == null && ParameterWasBound(nameof(this.SourceDBClusterIdentifier))) { WriteWarning("You are passing $null as a value for parameter SourceDBClusterIdentifier 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.StorageType = this.StorageType; if (this.Tag != null) { context.Tag = new List(this.Tag); } context.UseLatestRestorableTime = this.UseLatestRestorableTime; if (this.VpcSecurityGroupId != null) { context.VpcSecurityGroupId = new List(this.VpcSecurityGroupId); } #pragma warning disable CS0618, CS0612 //A class member was marked with the Obsolete attribute context.RestoreToTime = this.RestoreToTime; #pragma warning restore CS0618, CS0612 //A class member was marked with the Obsolete attribute // 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.RDS.Model.RestoreDBClusterToPointInTimeRequest(); if (cmdletContext.BacktrackWindow != null) { request.BacktrackWindow = cmdletContext.BacktrackWindow.Value; } if (cmdletContext.CopyTagsToSnapshot != null) { request.CopyTagsToSnapshot = cmdletContext.CopyTagsToSnapshot.Value; } if (cmdletContext.DBClusterIdentifier != null) { request.DBClusterIdentifier = cmdletContext.DBClusterIdentifier; } if (cmdletContext.DBClusterInstanceClass != null) { request.DBClusterInstanceClass = cmdletContext.DBClusterInstanceClass; } if (cmdletContext.DBClusterParameterGroupName != null) { request.DBClusterParameterGroupName = cmdletContext.DBClusterParameterGroupName; } if (cmdletContext.DBSubnetGroupName != null) { request.DBSubnetGroupName = cmdletContext.DBSubnetGroupName; } if (cmdletContext.DeletionProtection != null) { request.DeletionProtection = cmdletContext.DeletionProtection.Value; } if (cmdletContext.Domain != null) { request.Domain = cmdletContext.Domain; } if (cmdletContext.DomainIAMRoleName != null) { request.DomainIAMRoleName = cmdletContext.DomainIAMRoleName; } if (cmdletContext.EnableCloudwatchLogsExport != null) { request.EnableCloudwatchLogsExports = cmdletContext.EnableCloudwatchLogsExport; } if (cmdletContext.EnableIAMDatabaseAuthentication != null) { request.EnableIAMDatabaseAuthentication = cmdletContext.EnableIAMDatabaseAuthentication.Value; } if (cmdletContext.EngineMode != null) { request.EngineMode = cmdletContext.EngineMode; } if (cmdletContext.Iops != null) { request.Iops = cmdletContext.Iops.Value; } if (cmdletContext.KmsKeyId != null) { request.KmsKeyId = cmdletContext.KmsKeyId; } if (cmdletContext.NetworkType != null) { request.NetworkType = cmdletContext.NetworkType; } if (cmdletContext.OptionGroupName != null) { request.OptionGroupName = cmdletContext.OptionGroupName; } if (cmdletContext.Port != null) { request.Port = cmdletContext.Port.Value; } if (cmdletContext.PubliclyAccessible != null) { request.PubliclyAccessible = cmdletContext.PubliclyAccessible.Value; } if (cmdletContext.UtcRestoreToTime != null) { request.RestoreToTimeUtc = cmdletContext.UtcRestoreToTime.Value; } if (cmdletContext.RestoreType != null) { request.RestoreType = cmdletContext.RestoreType; } // populate ScalingConfiguration var requestScalingConfigurationIsNull = true; request.ScalingConfiguration = new Amazon.RDS.Model.ScalingConfiguration(); System.Boolean? requestScalingConfiguration_scalingConfiguration_AutoPause = null; if (cmdletContext.ScalingConfiguration_AutoPause != null) { requestScalingConfiguration_scalingConfiguration_AutoPause = cmdletContext.ScalingConfiguration_AutoPause.Value; } if (requestScalingConfiguration_scalingConfiguration_AutoPause != null) { request.ScalingConfiguration.AutoPause = requestScalingConfiguration_scalingConfiguration_AutoPause.Value; requestScalingConfigurationIsNull = false; } System.Int32? requestScalingConfiguration_scalingConfiguration_MaxCapacity = null; if (cmdletContext.ScalingConfiguration_MaxCapacity != null) { requestScalingConfiguration_scalingConfiguration_MaxCapacity = cmdletContext.ScalingConfiguration_MaxCapacity.Value; } if (requestScalingConfiguration_scalingConfiguration_MaxCapacity != null) { request.ScalingConfiguration.MaxCapacity = requestScalingConfiguration_scalingConfiguration_MaxCapacity.Value; requestScalingConfigurationIsNull = false; } System.Int32? requestScalingConfiguration_scalingConfiguration_MinCapacity = null; if (cmdletContext.ScalingConfiguration_MinCapacity != null) { requestScalingConfiguration_scalingConfiguration_MinCapacity = cmdletContext.ScalingConfiguration_MinCapacity.Value; } if (requestScalingConfiguration_scalingConfiguration_MinCapacity != null) { request.ScalingConfiguration.MinCapacity = requestScalingConfiguration_scalingConfiguration_MinCapacity.Value; requestScalingConfigurationIsNull = false; } System.Int32? requestScalingConfiguration_scalingConfiguration_SecondsBeforeTimeout = null; if (cmdletContext.ScalingConfiguration_SecondsBeforeTimeout != null) { requestScalingConfiguration_scalingConfiguration_SecondsBeforeTimeout = cmdletContext.ScalingConfiguration_SecondsBeforeTimeout.Value; } if (requestScalingConfiguration_scalingConfiguration_SecondsBeforeTimeout != null) { request.ScalingConfiguration.SecondsBeforeTimeout = requestScalingConfiguration_scalingConfiguration_SecondsBeforeTimeout.Value; requestScalingConfigurationIsNull = false; } System.Int32? requestScalingConfiguration_scalingConfiguration_SecondsUntilAutoPause = null; if (cmdletContext.ScalingConfiguration_SecondsUntilAutoPause != null) { requestScalingConfiguration_scalingConfiguration_SecondsUntilAutoPause = cmdletContext.ScalingConfiguration_SecondsUntilAutoPause.Value; } if (requestScalingConfiguration_scalingConfiguration_SecondsUntilAutoPause != null) { request.ScalingConfiguration.SecondsUntilAutoPause = requestScalingConfiguration_scalingConfiguration_SecondsUntilAutoPause.Value; requestScalingConfigurationIsNull = false; } System.String requestScalingConfiguration_scalingConfiguration_TimeoutAction = null; if (cmdletContext.ScalingConfiguration_TimeoutAction != null) { requestScalingConfiguration_scalingConfiguration_TimeoutAction = cmdletContext.ScalingConfiguration_TimeoutAction; } if (requestScalingConfiguration_scalingConfiguration_TimeoutAction != null) { request.ScalingConfiguration.TimeoutAction = requestScalingConfiguration_scalingConfiguration_TimeoutAction; requestScalingConfigurationIsNull = false; } // determine if request.ScalingConfiguration should be set to null if (requestScalingConfigurationIsNull) { request.ScalingConfiguration = null; } // populate ServerlessV2ScalingConfiguration var requestServerlessV2ScalingConfigurationIsNull = true; request.ServerlessV2ScalingConfiguration = new Amazon.RDS.Model.ServerlessV2ScalingConfiguration(); System.Double? requestServerlessV2ScalingConfiguration_serverlessV2ScalingConfiguration_MaxCapacity = null; if (cmdletContext.ServerlessV2ScalingConfiguration_MaxCapacity != null) { requestServerlessV2ScalingConfiguration_serverlessV2ScalingConfiguration_MaxCapacity = cmdletContext.ServerlessV2ScalingConfiguration_MaxCapacity.Value; } if (requestServerlessV2ScalingConfiguration_serverlessV2ScalingConfiguration_MaxCapacity != null) { request.ServerlessV2ScalingConfiguration.MaxCapacity = requestServerlessV2ScalingConfiguration_serverlessV2ScalingConfiguration_MaxCapacity.Value; requestServerlessV2ScalingConfigurationIsNull = false; } System.Double? requestServerlessV2ScalingConfiguration_serverlessV2ScalingConfiguration_MinCapacity = null; if (cmdletContext.ServerlessV2ScalingConfiguration_MinCapacity != null) { requestServerlessV2ScalingConfiguration_serverlessV2ScalingConfiguration_MinCapacity = cmdletContext.ServerlessV2ScalingConfiguration_MinCapacity.Value; } if (requestServerlessV2ScalingConfiguration_serverlessV2ScalingConfiguration_MinCapacity != null) { request.ServerlessV2ScalingConfiguration.MinCapacity = requestServerlessV2ScalingConfiguration_serverlessV2ScalingConfiguration_MinCapacity.Value; requestServerlessV2ScalingConfigurationIsNull = false; } // determine if request.ServerlessV2ScalingConfiguration should be set to null if (requestServerlessV2ScalingConfigurationIsNull) { request.ServerlessV2ScalingConfiguration = null; } if (cmdletContext.SourceDBClusterIdentifier != null) { request.SourceDBClusterIdentifier = cmdletContext.SourceDBClusterIdentifier; } if (cmdletContext.StorageType != null) { request.StorageType = cmdletContext.StorageType; } if (cmdletContext.Tag != null) { request.Tags = cmdletContext.Tag; } if (cmdletContext.UseLatestRestorableTime != null) { request.UseLatestRestorableTime = cmdletContext.UseLatestRestorableTime.Value; } if (cmdletContext.VpcSecurityGroupId != null) { request.VpcSecurityGroupIds = cmdletContext.VpcSecurityGroupId; } #pragma warning disable CS0618, CS0612 //A class member was marked with the Obsolete attribute if (cmdletContext.RestoreToTime != null) { if (cmdletContext.UtcRestoreToTime != null) { throw new System.ArgumentException("Parameters RestoreToTime and UtcRestoreToTime are mutually exclusive.", nameof(this.RestoreToTime)); } request.RestoreToTime = cmdletContext.RestoreToTime.Value; } #pragma warning restore CS0618, CS0612 //A class member was marked with the Obsolete attribute 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.RDS.Model.RestoreDBClusterToPointInTimeResponse CallAWSServiceOperation(IAmazonRDS client, Amazon.RDS.Model.RestoreDBClusterToPointInTimeRequest request) { Utils.Common.WriteVerboseEndpointMessage(this, client.Config, "Amazon Relational Database Service", "RestoreDBClusterToPointInTime"); try { #if DESKTOP return client.RestoreDBClusterToPointInTime(request); #elif CORECLR return client.RestoreDBClusterToPointInTimeAsync(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.Int64? BacktrackWindow { get; set; } public System.Boolean? CopyTagsToSnapshot { get; set; } public System.String DBClusterIdentifier { get; set; } public System.String DBClusterInstanceClass { get; set; } public System.String DBClusterParameterGroupName { get; set; } public System.String DBSubnetGroupName { get; set; } public System.Boolean? DeletionProtection { get; set; } public System.String Domain { get; set; } public System.String DomainIAMRoleName { get; set; } public List EnableCloudwatchLogsExport { get; set; } public System.Boolean? EnableIAMDatabaseAuthentication { get; set; } public System.String EngineMode { get; set; } public System.Int32? Iops { get; set; } public System.String KmsKeyId { get; set; } public System.String NetworkType { get; set; } public System.String OptionGroupName { get; set; } public System.Int32? Port { get; set; } public System.Boolean? PubliclyAccessible { get; set; } public System.DateTime? UtcRestoreToTime { get; set; } public System.String RestoreType { get; set; } public System.Boolean? ScalingConfiguration_AutoPause { get; set; } public System.Int32? ScalingConfiguration_MaxCapacity { get; set; } public System.Int32? ScalingConfiguration_MinCapacity { get; set; } public System.Int32? ScalingConfiguration_SecondsBeforeTimeout { get; set; } public System.Int32? ScalingConfiguration_SecondsUntilAutoPause { get; set; } public System.String ScalingConfiguration_TimeoutAction { get; set; } public System.Double? ServerlessV2ScalingConfiguration_MaxCapacity { get; set; } public System.Double? ServerlessV2ScalingConfiguration_MinCapacity { get; set; } public System.String SourceDBClusterIdentifier { get; set; } public System.String StorageType { get; set; } public List Tag { get; set; } public System.Boolean? UseLatestRestorableTime { get; set; } public List VpcSecurityGroupId { get; set; } [System.ObsoleteAttribute] public System.DateTime? RestoreToTime { get; set; } public System.Func Select { get; set; } = (response, cmdlet) => response.DBCluster; } } }