modules/AWSPowerShell/Cmdlets/DLM/Basic/New-DLMLifecyclePolicy-Cmdlet.cs (812 lines of code) (raw):

/******************************************************************************* * Copyright 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.DLM; using Amazon.DLM.Model; namespace Amazon.PowerShell.Cmdlets.DLM { /// <summary> /// Creates an Amazon Data Lifecycle Manager lifecycle policy. Amazon Data Lifecycle Manager /// supports the following policy types: /// /// <ul><li><para> /// Custom EBS snapshot policy /// </para></li><li><para> /// Custom EBS-backed AMI policy /// </para></li><li><para> /// Cross-account copy event policy /// </para></li><li><para> /// Default policy for EBS snapshots /// </para></li><li><para> /// Default policy for EBS-backed AMIs /// </para></li></ul><para> /// For more information, see <a href="https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/policy-differences.html"> /// Default policies vs custom policies</a>. /// </para><important><para> /// If you create a default policy, you can specify the request parameters either in the /// request body, or in the PolicyDetails request structure, but not both. /// </para></important> /// </summary> [Cmdlet("New", "DLMLifecyclePolicy", SupportsShouldProcess = true, ConfirmImpact = ConfirmImpact.Medium)] [OutputType("System.String")] [AWSCmdlet("Calls the Amazon Data Lifecycle Manager CreateLifecyclePolicy API operation.", Operation = new[] {"CreateLifecyclePolicy"}, SelectReturnType = typeof(Amazon.DLM.Model.CreateLifecyclePolicyResponse))] [AWSCmdletOutput("System.String or Amazon.DLM.Model.CreateLifecyclePolicyResponse", "This cmdlet returns a System.String object.", "The service call response (type Amazon.DLM.Model.CreateLifecyclePolicyResponse) can be returned by specifying '-Select *'." )] public partial class NewDLMLifecyclePolicyCmdlet : AmazonDLMClientCmdlet, IExecutor { protected override bool IsGeneratedCmdlet { get; set; } = true; #region Parameter PolicyDetails_Action /// <summary> /// <para> /// <para><b>[Event-based policies only]</b> The actions to be performed when the event-based /// policy is activated. You can specify only one action per policy.</para> /// </para> /// </summary> [System.Management.Automation.Parameter(ValueFromPipelineByPropertyName = true)] [Alias("PolicyDetails_Actions")] public Amazon.DLM.Model.Action[] PolicyDetails_Action { get; set; } #endregion #region Parameter CopyTag /// <summary> /// <para> /// <para><b>[Default policies only]</b> Indicates whether the policy should copy tags from /// the source resource to the snapshot or AMI. If you do not specify a value, the default /// is <c>false</c>.</para><para>Default: false</para> /// </para> /// </summary> [System.Management.Automation.Parameter(ValueFromPipelineByPropertyName = true)] [Alias("CopyTags")] public System.Boolean? CopyTag { get; set; } #endregion #region Parameter PolicyDetails_CopyTag /// <summary> /// <para> /// <para><b>[Default policies only]</b> Indicates whether the policy should copy tags from /// the source resource to the snapshot or AMI. If you do not specify a value, the default /// is <c>false</c>.</para><para>Default: false</para> /// </para> /// </summary> [System.Management.Automation.Parameter(ValueFromPipelineByPropertyName = true)] [Alias("PolicyDetails_CopyTags")] public System.Boolean? PolicyDetails_CopyTag { get; set; } #endregion #region Parameter CreateInterval /// <summary> /// <para> /// <para><b>[Default policies only]</b> Specifies how often the policy should run and create /// snapshots or AMIs. The creation frequency can range from 1 to 7 days. If you do not /// specify a value, the default is 1.</para><para>Default: 1</para> /// </para> /// </summary> [System.Management.Automation.Parameter(ValueFromPipelineByPropertyName = true)] public System.Int32? CreateInterval { get; set; } #endregion #region Parameter PolicyDetails_CreateInterval /// <summary> /// <para> /// <para><b>[Default policies only]</b> Specifies how often the policy should run and create /// snapshots or AMIs. The creation frequency can range from 1 to 7 days. If you do not /// specify a value, the default is 1.</para><para>Default: 1</para> /// </para> /// </summary> [System.Management.Automation.Parameter(ValueFromPipelineByPropertyName = true)] public System.Int32? PolicyDetails_CreateInterval { get; set; } #endregion #region Parameter CrossRegionCopyTarget /// <summary> /// <para> /// <para><b>[Default policies only]</b> Specifies destination Regions for snapshot or AMI /// copies. You can specify up to 3 destination Regions. If you do not want to create /// cross-Region copies, omit this parameter.</para> /// </para> /// </summary> [System.Management.Automation.Parameter(ValueFromPipelineByPropertyName = true)] [Alias("CrossRegionCopyTargets")] public Amazon.DLM.Model.CrossRegionCopyTarget[] CrossRegionCopyTarget { get; set; } #endregion #region Parameter PolicyDetails_CrossRegionCopyTarget /// <summary> /// <para> /// <para><b>[Default policies only]</b> Specifies destination Regions for snapshot or AMI /// copies. You can specify up to 3 destination Regions. If you do not want to create /// cross-Region copies, omit this parameter.</para> /// </para> /// </summary> [System.Management.Automation.Parameter(ValueFromPipelineByPropertyName = true)] [Alias("PolicyDetails_CrossRegionCopyTargets")] public Amazon.DLM.Model.CrossRegionCopyTarget[] PolicyDetails_CrossRegionCopyTarget { get; set; } #endregion #region Parameter DefaultPolicy /// <summary> /// <para> /// <para><b>[Default policies only]</b> Specify the type of default policy to create.</para><ul><li><para>To create a default policy for EBS snapshots, that creates snapshots of all volumes /// in the Region that do not have recent backups, specify <c>VOLUME</c>.</para></li><li><para>To create a default policy for EBS-backed AMIs, that creates EBS-backed AMIs from /// all instances in the Region that do not have recent backups, specify <c>INSTANCE</c>.</para></li></ul> /// </para> /// </summary> [System.Management.Automation.Parameter(ValueFromPipelineByPropertyName = true)] [AWSConstantClassSource("Amazon.DLM.DefaultPolicyTypeValues")] public Amazon.DLM.DefaultPolicyTypeValues DefaultPolicy { get; set; } #endregion #region Parameter Description /// <summary> /// <para> /// <para>A description of the lifecycle policy. The characters ^[0-9A-Za-z _-]+$ are supported.</para> /// </para> /// </summary> #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 Description { get; set; } #endregion #region Parameter Parameters_DescriptionRegex /// <summary> /// <para> /// <para>The snapshot description that can trigger the policy. The description pattern is specified /// using a regular expression. The policy runs only if a snapshot with a description /// that matches the specified pattern is shared with your account.</para><para>For example, specifying <c>^.*Created for policy: policy-1234567890abcdef0.*$</c> /// configures the policy to run only if snapshots created by policy <c>policy-1234567890abcdef0</c> /// are shared with your account.</para> /// </para> /// </summary> [System.Management.Automation.Parameter(ValueFromPipelineByPropertyName = true)] [Alias("PolicyDetails_EventSource_Parameters_DescriptionRegex")] public System.String Parameters_DescriptionRegex { get; set; } #endregion #region Parameter Parameters_EventType /// <summary> /// <para> /// <para>The type of event. Currently, only snapshot sharing events are supported.</para> /// </para> /// </summary> [System.Management.Automation.Parameter(ValueFromPipelineByPropertyName = true)] [Alias("PolicyDetails_EventSource_Parameters_EventType")] [AWSConstantClassSource("Amazon.DLM.EventTypeValues")] public Amazon.DLM.EventTypeValues Parameters_EventType { get; set; } #endregion #region Parameter Parameters_ExcludeBootVolume /// <summary> /// <para> /// <para><b>[Custom snapshot policies that target instances only]</b> Indicates whether to /// exclude the root volume from multi-volume snapshot sets. The default is <c>false</c>. /// If you specify <c>true</c>, then the root volumes attached to targeted instances will /// be excluded from the multi-volume snapshot sets created by the policy.</para> /// </para> /// </summary> [System.Management.Automation.Parameter(ValueFromPipelineByPropertyName = true)] [Alias("PolicyDetails_Parameters_ExcludeBootVolume")] public System.Boolean? Parameters_ExcludeBootVolume { get; set; } #endregion #region Parameter Exclusions_ExcludeBootVolume /// <summary> /// <para> /// <para><b>[Default policies for EBS snapshots only]</b> Indicates whether to exclude volumes /// that are attached to instances as the boot volume. If you exclude boot volumes, only /// volumes attached as data (non-boot) volumes will be backed up by the policy. To exclude /// boot volumes, specify <c>true</c>.</para> /// </para> /// </summary> [System.Management.Automation.Parameter(ValueFromPipelineByPropertyName = true)] [Alias("Exclusions_ExcludeBootVolumes")] public System.Boolean? Exclusions_ExcludeBootVolume { get; set; } #endregion #region Parameter PolicyDetails_Exclusions_ExcludeBootVolumes /// <summary> /// <para> /// <para><b>[Default policies for EBS snapshots only]</b> Indicates whether to exclude volumes /// that are attached to instances as the boot volume. If you exclude boot volumes, only /// volumes attached as data (non-boot) volumes will be backed up by the policy. To exclude /// boot volumes, specify <c>true</c>.</para> /// </para> /// </summary> [System.Management.Automation.Parameter(ValueFromPipelineByPropertyName = true)] public System.Boolean? PolicyDetails_Exclusions_ExcludeBootVolumes { get; set; } #endregion #region Parameter Parameters_ExcludeDataVolumeTag /// <summary> /// <para> /// <para><b>[Custom snapshot policies that target instances only]</b> The tags used to identify /// data (non-root) volumes to exclude from multi-volume snapshot sets.</para><para>If you create a snapshot lifecycle policy that targets instances and you specify tags /// for this parameter, then data volumes with the specified tags that are attached to /// targeted instances will be excluded from the multi-volume snapshot sets created by /// the policy.</para> /// </para> /// </summary> [System.Management.Automation.Parameter(ValueFromPipelineByPropertyName = true)] [Alias("PolicyDetails_Parameters_ExcludeDataVolumeTags")] public Amazon.DLM.Model.Tag[] Parameters_ExcludeDataVolumeTag { get; set; } #endregion #region Parameter Exclusions_ExcludeTag /// <summary> /// <para> /// <para><b>[Default policies for EBS-backed AMIs only]</b> Specifies whether to exclude volumes /// that have specific tags. </para> /// </para> /// </summary> [System.Management.Automation.Parameter(ValueFromPipelineByPropertyName = true)] [Alias("Exclusions_ExcludeTags")] public Amazon.DLM.Model.Tag[] Exclusions_ExcludeTag { get; set; } #endregion #region Parameter PolicyDetails_Exclusions_ExcludeTags /// <summary> /// <para> /// <para><b>[Default policies for EBS-backed AMIs only]</b> Specifies whether to exclude volumes /// that have specific tags. </para> /// </para> /// </summary> [System.Management.Automation.Parameter(ValueFromPipelineByPropertyName = true)] public Amazon.DLM.Model.Tag[] PolicyDetails_Exclusions_ExcludeTags { get; set; } #endregion #region Parameter Exclusions_ExcludeVolumeType /// <summary> /// <para> /// <para><b>[Default policies for EBS snapshots only]</b> Specifies the volume types to exclude. /// Volumes of the specified types will not be targeted by the policy.</para> /// </para> /// </summary> [System.Management.Automation.Parameter(ValueFromPipelineByPropertyName = true)] [Alias("Exclusions_ExcludeVolumeTypes")] public System.String[] Exclusions_ExcludeVolumeType { get; set; } #endregion #region Parameter PolicyDetails_Exclusions_ExcludeVolumeTypes /// <summary> /// <para> /// <para><b>[Default policies for EBS snapshots only]</b> Specifies the volume types to exclude. /// Volumes of the specified types will not be targeted by the policy.</para> /// </para> /// </summary> [System.Management.Automation.Parameter(ValueFromPipelineByPropertyName = true)] public System.String[] PolicyDetails_Exclusions_ExcludeVolumeTypes { get; set; } #endregion #region Parameter ExecutionRoleArn /// <summary> /// <para> /// <para>The Amazon Resource Name (ARN) of the IAM role used to run the operations specified /// by the lifecycle policy.</para> /// </para> /// </summary> #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 ExecutionRoleArn { get; set; } #endregion #region Parameter ExtendDeletion /// <summary> /// <para> /// <para><b>[Default policies only]</b> Defines the snapshot or AMI retention behavior for /// the policy if the source volume or instance is deleted, or if the policy enters the /// error, disabled, or deleted state.</para><para>By default (<b>ExtendDeletion=false</b>):</para><ul><li><para>If a source resource is deleted, Amazon Data Lifecycle Manager will continue to delete /// previously created snapshots or AMIs, up to but not including the last one, based /// on the specified retention period. If you want Amazon Data Lifecycle Manager to delete /// all snapshots or AMIs, including the last one, specify <c>true</c>.</para></li><li><para>If a policy enters the error, disabled, or deleted state, Amazon Data Lifecycle Manager /// stops deleting snapshots and AMIs. If you want Amazon Data Lifecycle Manager to continue /// deleting snapshots or AMIs, including the last one, if the policy enters one of these /// states, specify <c>true</c>.</para></li></ul><para>If you enable extended deletion (<b>ExtendDeletion=true</b>), you override both default /// behaviors simultaneously.</para><para>If you do not specify a value, the default is <c>false</c>.</para><para>Default: false</para> /// </para> /// </summary> [System.Management.Automation.Parameter(ValueFromPipelineByPropertyName = true)] public System.Boolean? ExtendDeletion { get; set; } #endregion #region Parameter PolicyDetails_ExtendDeletion /// <summary> /// <para> /// <para><b>[Default policies only]</b> Defines the snapshot or AMI retention behavior for /// the policy if the source volume or instance is deleted, or if the policy enters the /// error, disabled, or deleted state.</para><para>By default (<b>ExtendDeletion=false</b>):</para><ul><li><para>If a source resource is deleted, Amazon Data Lifecycle Manager will continue to delete /// previously created snapshots or AMIs, up to but not including the last one, based /// on the specified retention period. If you want Amazon Data Lifecycle Manager to delete /// all snapshots or AMIs, including the last one, specify <c>true</c>.</para></li><li><para>If a policy enters the error, disabled, or deleted state, Amazon Data Lifecycle Manager /// stops deleting snapshots and AMIs. If you want Amazon Data Lifecycle Manager to continue /// deleting snapshots or AMIs, including the last one, if the policy enters one of these /// states, specify <c>true</c>.</para></li></ul><para>If you enable extended deletion (<b>ExtendDeletion=true</b>), you override both default /// behaviors simultaneously.</para><para>If you do not specify a value, the default is <c>false</c>.</para><para>Default: false</para> /// </para> /// </summary> [System.Management.Automation.Parameter(ValueFromPipelineByPropertyName = true)] public System.Boolean? PolicyDetails_ExtendDeletion { get; set; } #endregion #region Parameter Parameters_NoReboot /// <summary> /// <para> /// <para><b>[Custom AMI policies only]</b> Indicates whether targeted instances are rebooted /// when the lifecycle policy runs. <c>true</c> indicates that targeted instances are /// not rebooted when the policy runs. <c>false</c> indicates that target instances are /// rebooted when the policy runs. The default is <c>true</c> (instances are not rebooted).</para> /// </para> /// </summary> [System.Management.Automation.Parameter(ValueFromPipelineByPropertyName = true)] [Alias("PolicyDetails_Parameters_NoReboot")] public System.Boolean? Parameters_NoReboot { get; set; } #endregion #region Parameter PolicyDetails_PolicyLanguage /// <summary> /// <para> /// <para>The type of policy to create. Specify one of the following:</para><ul><li><para><c>SIMPLIFIED</c> To create a default policy.</para></li><li><para><c>STANDARD</c> To create a custom policy.</para></li></ul> /// </para> /// </summary> [System.Management.Automation.Parameter(ValueFromPipelineByPropertyName = true)] [AWSConstantClassSource("Amazon.DLM.PolicyLanguageValues")] public Amazon.DLM.PolicyLanguageValues PolicyDetails_PolicyLanguage { get; set; } #endregion #region Parameter PolicyDetails_PolicyType /// <summary> /// <para> /// <para>The type of policy. Specify <c>EBS_SNAPSHOT_MANAGEMENT</c> to create a lifecycle policy /// that manages the lifecycle of Amazon EBS snapshots. Specify <c>IMAGE_MANAGEMENT</c> /// to create a lifecycle policy that manages the lifecycle of EBS-backed AMIs. Specify /// <c>EVENT_BASED_POLICY </c> to create an event-based policy that performs specific /// actions when a defined event occurs in your Amazon Web Services account.</para><para>The default is <c>EBS_SNAPSHOT_MANAGEMENT</c>.</para> /// </para> /// </summary> [System.Management.Automation.Parameter(ValueFromPipelineByPropertyName = true)] [AWSConstantClassSource("Amazon.DLM.PolicyTypeValues")] public Amazon.DLM.PolicyTypeValues PolicyDetails_PolicyType { get; set; } #endregion #region Parameter PolicyDetails_ResourceLocation /// <summary> /// <para> /// <para><b>[Custom snapshot and AMI policies only]</b> The location of the resources to backup.</para><ul><li><para>If the source resources are located in a Region, specify <c>CLOUD</c>. In this case, /// the policy targets all resources of the specified type with matching target tags across /// all Availability Zones in the Region.</para></li><li><para><b>[Custom snapshot policies only]</b> If the source resources are located in a Local /// Zone, specify <c>LOCAL_ZONE</c>. In this case, the policy targets all resources of /// the specified type with matching target tags across all Local Zones in the Region.</para></li><li><para>If the source resources are located on an Outpost in your account, specify <c>OUTPOST</c>. /// In this case, the policy targets all resources of the specified type with matching /// target tags across all of the Outposts in your account.</para></li></ul> /// </para> /// </summary> [System.Management.Automation.Parameter(ValueFromPipelineByPropertyName = true)] [Alias("PolicyDetails_ResourceLocations")] public System.String[] PolicyDetails_ResourceLocation { get; set; } #endregion #region Parameter PolicyDetails_SimplifiedResourceType /// <summary> /// <para> /// <para><b>[Default policies only]</b> Specify the type of default policy to create.</para><ul><li><para>To create a default policy for EBS snapshots, that creates snapshots of all volumes /// in the Region that do not have recent backups, specify <c>VOLUME</c>.</para></li><li><para>To create a default policy for EBS-backed AMIs, that creates EBS-backed AMIs from /// all instances in the Region that do not have recent backups, specify <c>INSTANCE</c>.</para></li></ul> /// </para> /// </summary> [System.Management.Automation.Parameter(ValueFromPipelineByPropertyName = true)] [AWSConstantClassSource("Amazon.DLM.ResourceTypeValues")] public Amazon.DLM.ResourceTypeValues PolicyDetails_SimplifiedResourceType { get; set; } #endregion #region Parameter PolicyDetails_ResourceType /// <summary> /// <para> /// <para><b>[Custom snapshot policies only]</b> The target resource type for snapshot and /// AMI lifecycle policies. Use <c>VOLUME </c>to create snapshots of individual volumes /// or use <c>INSTANCE</c> to create multi-volume snapshots from the volumes for an instance.</para> /// </para> /// </summary> [System.Management.Automation.Parameter(ValueFromPipelineByPropertyName = true)] [Alias("PolicyDetails_ResourceTypes")] public System.String[] PolicyDetails_ResourceType { get; set; } #endregion #region Parameter PolicyDetails_RetainInterval /// <summary> /// <para> /// <para><b>[Default policies only]</b> Specifies how long the policy should retain snapshots /// or AMIs before deleting them. The retention period can range from 2 to 14 days, but /// it must be greater than the creation frequency to ensure that the policy retains at /// least 1 snapshot or AMI at any given time. If you do not specify a value, the default /// is 7.</para><para>Default: 7</para> /// </para> /// </summary> [System.Management.Automation.Parameter(ValueFromPipelineByPropertyName = true)] public System.Int32? PolicyDetails_RetainInterval { get; set; } #endregion #region Parameter RetainInterval /// <summary> /// <para> /// <para><b>[Default policies only]</b> Specifies how long the policy should retain snapshots /// or AMIs before deleting them. The retention period can range from 2 to 14 days, but /// it must be greater than the creation frequency to ensure that the policy retains at /// least 1 snapshot or AMI at any given time. If you do not specify a value, the default /// is 7.</para><para>Default: 7</para> /// </para> /// </summary> [System.Management.Automation.Parameter(ValueFromPipelineByPropertyName = true)] public System.Int32? RetainInterval { get; set; } #endregion #region Parameter PolicyDetails_Schedule /// <summary> /// <para> /// <para><b>[Custom snapshot and AMI policies only]</b> The schedules of policy-defined actions /// for snapshot and AMI lifecycle policies. A policy can have up to four schedules—one /// mandatory schedule and up to three optional schedules.</para> /// </para> /// </summary> [System.Management.Automation.Parameter(ValueFromPipelineByPropertyName = true)] [Alias("PolicyDetails_Schedules")] public Amazon.DLM.Model.Schedule[] PolicyDetails_Schedule { get; set; } #endregion #region Parameter Parameters_SnapshotOwner /// <summary> /// <para> /// <para>The IDs of the Amazon Web Services accounts that can trigger policy by sharing snapshots /// with your account. The policy only runs if one of the specified Amazon Web Services /// accounts shares a snapshot with your account.</para> /// </para> /// </summary> [System.Management.Automation.Parameter(ValueFromPipelineByPropertyName = true)] [Alias("PolicyDetails_EventSource_Parameters_SnapshotOwner")] public System.String[] Parameters_SnapshotOwner { get; set; } #endregion #region Parameter State /// <summary> /// <para> /// <para>The activation state of the lifecycle policy after creation.</para> /// </para> /// </summary> #if !MODULAR [System.Management.Automation.Parameter(ValueFromPipelineByPropertyName = true)] #else [System.Management.Automation.Parameter(ValueFromPipelineByPropertyName = true, Mandatory = true)] [System.Management.Automation.AllowNull] #endif [Amazon.PowerShell.Common.AWSRequiredParameter] [AWSConstantClassSource("Amazon.DLM.SettablePolicyStateValues")] public Amazon.DLM.SettablePolicyStateValues State { get; set; } #endregion #region Parameter Tag /// <summary> /// <para> /// <para>The tags to apply to the lifecycle policy during creation.</para> /// </para> /// </summary> [System.Management.Automation.Parameter(ValueFromPipelineByPropertyName = true)] [Alias("Tags")] public System.Collections.Hashtable Tag { get; set; } #endregion #region Parameter PolicyDetails_TargetTag /// <summary> /// <para> /// <para><b>[Custom snapshot and AMI policies only]</b> The single tag that identifies targeted /// resources for this policy.</para> /// </para> /// </summary> [System.Management.Automation.Parameter(ValueFromPipelineByPropertyName = true)] [Alias("PolicyDetails_TargetTags")] public Amazon.DLM.Model.Tag[] PolicyDetails_TargetTag { get; set; } #endregion #region Parameter EventSource_Type /// <summary> /// <para> /// <para>The source of the event. Currently only managed CloudWatch Events rules are supported.</para> /// </para> /// </summary> [System.Management.Automation.Parameter(ValueFromPipelineByPropertyName = true)] [Alias("PolicyDetails_EventSource_Type")] [AWSConstantClassSource("Amazon.DLM.EventSourceValues")] public Amazon.DLM.EventSourceValues EventSource_Type { get; set; } #endregion #region Parameter Select /// <summary> /// Use the -Select parameter to control the cmdlet output. The default value is 'PolicyId'. /// Specifying -Select '*' will result in the cmdlet returning the whole service response (Amazon.DLM.Model.CreateLifecyclePolicyResponse). /// Specifying the name of a property of type Amazon.DLM.Model.CreateLifecyclePolicyResponse will result in that property being returned. /// Specifying -Select '^ParameterName' will result in the cmdlet returning the selected cmdlet parameter value. /// </summary> [System.Management.Automation.Parameter(ValueFromPipelineByPropertyName = true)] public string Select { get; set; } = "PolicyId"; #endregion #region Parameter PassThru /// <summary> /// Changes the cmdlet behavior to return the value passed to the ExecutionRoleArn parameter. /// The -PassThru parameter is deprecated, use -Select '^ExecutionRoleArn' instead. This parameter will be removed in a future version. /// </summary> [System.Obsolete("The -PassThru parameter is deprecated, use -Select '^ExecutionRoleArn' 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 /// <summary> /// This parameter overrides confirmation prompts to force /// the cmdlet to continue its operation. This parameter should always /// be used with caution. /// </summary> [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.ExecutionRoleArn), MyInvocation.BoundParameters); if (!ConfirmShouldProceed(this.Force.IsPresent, resourceIdentifiersText, "New-DLMLifecyclePolicy (CreateLifecyclePolicy)")) { 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<Amazon.DLM.Model.CreateLifecyclePolicyResponse, NewDLMLifecyclePolicyCmdlet>(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.ExecutionRoleArn; } #pragma warning restore CS0618, CS0612 //A class member was marked with the Obsolete attribute context.CopyTag = this.CopyTag; context.CreateInterval = this.CreateInterval; if (this.CrossRegionCopyTarget != null) { context.CrossRegionCopyTarget = new List<Amazon.DLM.Model.CrossRegionCopyTarget>(this.CrossRegionCopyTarget); } context.DefaultPolicy = this.DefaultPolicy; context.Description = this.Description; #if MODULAR if (this.Description == null && ParameterWasBound(nameof(this.Description))) { WriteWarning("You are passing $null as a value for parameter Description 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.Exclusions_ExcludeBootVolume = this.Exclusions_ExcludeBootVolume; if (this.Exclusions_ExcludeTag != null) { context.Exclusions_ExcludeTag = new List<Amazon.DLM.Model.Tag>(this.Exclusions_ExcludeTag); } if (this.Exclusions_ExcludeVolumeType != null) { context.Exclusions_ExcludeVolumeType = new List<System.String>(this.Exclusions_ExcludeVolumeType); } context.ExecutionRoleArn = this.ExecutionRoleArn; #if MODULAR if (this.ExecutionRoleArn == null && ParameterWasBound(nameof(this.ExecutionRoleArn))) { WriteWarning("You are passing $null as a value for parameter ExecutionRoleArn 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.ExtendDeletion = this.ExtendDeletion; if (this.PolicyDetails_Action != null) { context.PolicyDetails_Action = new List<Amazon.DLM.Model.Action>(this.PolicyDetails_Action); } context.PolicyDetails_CopyTag = this.PolicyDetails_CopyTag; context.PolicyDetails_CreateInterval = this.PolicyDetails_CreateInterval; if (this.PolicyDetails_CrossRegionCopyTarget != null) { context.PolicyDetails_CrossRegionCopyTarget = new List<Amazon.DLM.Model.CrossRegionCopyTarget>(this.PolicyDetails_CrossRegionCopyTarget); } context.Parameters_DescriptionRegex = this.Parameters_DescriptionRegex; context.Parameters_EventType = this.Parameters_EventType; if (this.Parameters_SnapshotOwner != null) { context.Parameters_SnapshotOwner = new List<System.String>(this.Parameters_SnapshotOwner); } context.EventSource_Type = this.EventSource_Type; context.PolicyDetails_Exclusions_ExcludeBootVolumes = this.PolicyDetails_Exclusions_ExcludeBootVolumes; if (this.PolicyDetails_Exclusions_ExcludeTags != null) { context.PolicyDetails_Exclusions_ExcludeTags = new List<Amazon.DLM.Model.Tag>(this.PolicyDetails_Exclusions_ExcludeTags); } if (this.PolicyDetails_Exclusions_ExcludeVolumeTypes != null) { context.PolicyDetails_Exclusions_ExcludeVolumeTypes = new List<System.String>(this.PolicyDetails_Exclusions_ExcludeVolumeTypes); } context.PolicyDetails_ExtendDeletion = this.PolicyDetails_ExtendDeletion; context.Parameters_ExcludeBootVolume = this.Parameters_ExcludeBootVolume; if (this.Parameters_ExcludeDataVolumeTag != null) { context.Parameters_ExcludeDataVolumeTag = new List<Amazon.DLM.Model.Tag>(this.Parameters_ExcludeDataVolumeTag); } context.Parameters_NoReboot = this.Parameters_NoReboot; context.PolicyDetails_PolicyLanguage = this.PolicyDetails_PolicyLanguage; context.PolicyDetails_PolicyType = this.PolicyDetails_PolicyType; if (this.PolicyDetails_ResourceLocation != null) { context.PolicyDetails_ResourceLocation = new List<System.String>(this.PolicyDetails_ResourceLocation); } context.PolicyDetails_SimplifiedResourceType = this.PolicyDetails_SimplifiedResourceType; if (this.PolicyDetails_ResourceType != null) { context.PolicyDetails_ResourceType = new List<System.String>(this.PolicyDetails_ResourceType); } context.PolicyDetails_RetainInterval = this.PolicyDetails_RetainInterval; if (this.PolicyDetails_Schedule != null) { context.PolicyDetails_Schedule = new List<Amazon.DLM.Model.Schedule>(this.PolicyDetails_Schedule); } if (this.PolicyDetails_TargetTag != null) { context.PolicyDetails_TargetTag = new List<Amazon.DLM.Model.Tag>(this.PolicyDetails_TargetTag); } context.RetainInterval = this.RetainInterval; context.State = this.State; #if MODULAR if (this.State == null && ParameterWasBound(nameof(this.State))) { WriteWarning("You are passing $null as a value for parameter State 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 if (this.Tag != null) { context.Tag = new Dictionary<System.String, System.String>(StringComparer.Ordinal); foreach (var hashKey in this.Tag.Keys) { context.Tag.Add((String)hashKey, (System.String)(this.Tag[hashKey])); } } // 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.DLM.Model.CreateLifecyclePolicyRequest(); if (cmdletContext.CopyTag != null) { request.CopyTags = cmdletContext.CopyTag.Value; } if (cmdletContext.CreateInterval != null) { request.CreateInterval = cmdletContext.CreateInterval.Value; } if (cmdletContext.CrossRegionCopyTarget != null) { request.CrossRegionCopyTargets = cmdletContext.CrossRegionCopyTarget; } if (cmdletContext.DefaultPolicy != null) { request.DefaultPolicy = cmdletContext.DefaultPolicy; } if (cmdletContext.Description != null) { request.Description = cmdletContext.Description; } // populate Exclusions var requestExclusionsIsNull = true; request.Exclusions = new Amazon.DLM.Model.Exclusions(); System.Boolean? requestExclusions_exclusions_ExcludeBootVolume = null; if (cmdletContext.Exclusions_ExcludeBootVolume != null) { requestExclusions_exclusions_ExcludeBootVolume = cmdletContext.Exclusions_ExcludeBootVolume.Value; } if (requestExclusions_exclusions_ExcludeBootVolume != null) { request.Exclusions.ExcludeBootVolumes = requestExclusions_exclusions_ExcludeBootVolume.Value; requestExclusionsIsNull = false; } List<Amazon.DLM.Model.Tag> requestExclusions_exclusions_ExcludeTag = null; if (cmdletContext.Exclusions_ExcludeTag != null) { requestExclusions_exclusions_ExcludeTag = cmdletContext.Exclusions_ExcludeTag; } if (requestExclusions_exclusions_ExcludeTag != null) { request.Exclusions.ExcludeTags = requestExclusions_exclusions_ExcludeTag; requestExclusionsIsNull = false; } List<System.String> requestExclusions_exclusions_ExcludeVolumeType = null; if (cmdletContext.Exclusions_ExcludeVolumeType != null) { requestExclusions_exclusions_ExcludeVolumeType = cmdletContext.Exclusions_ExcludeVolumeType; } if (requestExclusions_exclusions_ExcludeVolumeType != null) { request.Exclusions.ExcludeVolumeTypes = requestExclusions_exclusions_ExcludeVolumeType; requestExclusionsIsNull = false; } // determine if request.Exclusions should be set to null if (requestExclusionsIsNull) { request.Exclusions = null; } if (cmdletContext.ExecutionRoleArn != null) { request.ExecutionRoleArn = cmdletContext.ExecutionRoleArn; } if (cmdletContext.ExtendDeletion != null) { request.ExtendDeletion = cmdletContext.ExtendDeletion.Value; } // populate PolicyDetails var requestPolicyDetailsIsNull = true; request.PolicyDetails = new Amazon.DLM.Model.PolicyDetails(); List<Amazon.DLM.Model.Action> requestPolicyDetails_policyDetails_Action = null; if (cmdletContext.PolicyDetails_Action != null) { requestPolicyDetails_policyDetails_Action = cmdletContext.PolicyDetails_Action; } if (requestPolicyDetails_policyDetails_Action != null) { request.PolicyDetails.Actions = requestPolicyDetails_policyDetails_Action; requestPolicyDetailsIsNull = false; } System.Boolean? requestPolicyDetails_policyDetails_CopyTag = null; if (cmdletContext.PolicyDetails_CopyTag != null) { requestPolicyDetails_policyDetails_CopyTag = cmdletContext.PolicyDetails_CopyTag.Value; } if (requestPolicyDetails_policyDetails_CopyTag != null) { request.PolicyDetails.CopyTags = requestPolicyDetails_policyDetails_CopyTag.Value; requestPolicyDetailsIsNull = false; } System.Int32? requestPolicyDetails_policyDetails_CreateInterval = null; if (cmdletContext.PolicyDetails_CreateInterval != null) { requestPolicyDetails_policyDetails_CreateInterval = cmdletContext.PolicyDetails_CreateInterval.Value; } if (requestPolicyDetails_policyDetails_CreateInterval != null) { request.PolicyDetails.CreateInterval = requestPolicyDetails_policyDetails_CreateInterval.Value; requestPolicyDetailsIsNull = false; } List<Amazon.DLM.Model.CrossRegionCopyTarget> requestPolicyDetails_policyDetails_CrossRegionCopyTarget = null; if (cmdletContext.PolicyDetails_CrossRegionCopyTarget != null) { requestPolicyDetails_policyDetails_CrossRegionCopyTarget = cmdletContext.PolicyDetails_CrossRegionCopyTarget; } if (requestPolicyDetails_policyDetails_CrossRegionCopyTarget != null) { request.PolicyDetails.CrossRegionCopyTargets = requestPolicyDetails_policyDetails_CrossRegionCopyTarget; requestPolicyDetailsIsNull = false; } System.Boolean? requestPolicyDetails_policyDetails_ExtendDeletion = null; if (cmdletContext.PolicyDetails_ExtendDeletion != null) { requestPolicyDetails_policyDetails_ExtendDeletion = cmdletContext.PolicyDetails_ExtendDeletion.Value; } if (requestPolicyDetails_policyDetails_ExtendDeletion != null) { request.PolicyDetails.ExtendDeletion = requestPolicyDetails_policyDetails_ExtendDeletion.Value; requestPolicyDetailsIsNull = false; } Amazon.DLM.PolicyLanguageValues requestPolicyDetails_policyDetails_PolicyLanguage = null; if (cmdletContext.PolicyDetails_PolicyLanguage != null) { requestPolicyDetails_policyDetails_PolicyLanguage = cmdletContext.PolicyDetails_PolicyLanguage; } if (requestPolicyDetails_policyDetails_PolicyLanguage != null) { request.PolicyDetails.PolicyLanguage = requestPolicyDetails_policyDetails_PolicyLanguage; requestPolicyDetailsIsNull = false; } Amazon.DLM.PolicyTypeValues requestPolicyDetails_policyDetails_PolicyType = null; if (cmdletContext.PolicyDetails_PolicyType != null) { requestPolicyDetails_policyDetails_PolicyType = cmdletContext.PolicyDetails_PolicyType; } if (requestPolicyDetails_policyDetails_PolicyType != null) { request.PolicyDetails.PolicyType = requestPolicyDetails_policyDetails_PolicyType; requestPolicyDetailsIsNull = false; } List<System.String> requestPolicyDetails_policyDetails_ResourceLocation = null; if (cmdletContext.PolicyDetails_ResourceLocation != null) { requestPolicyDetails_policyDetails_ResourceLocation = cmdletContext.PolicyDetails_ResourceLocation; } if (requestPolicyDetails_policyDetails_ResourceLocation != null) { request.PolicyDetails.ResourceLocations = requestPolicyDetails_policyDetails_ResourceLocation; requestPolicyDetailsIsNull = false; } Amazon.DLM.ResourceTypeValues requestPolicyDetails_policyDetails_SimplifiedResourceType = null; if (cmdletContext.PolicyDetails_SimplifiedResourceType != null) { requestPolicyDetails_policyDetails_SimplifiedResourceType = cmdletContext.PolicyDetails_SimplifiedResourceType; } if (requestPolicyDetails_policyDetails_SimplifiedResourceType != null) { request.PolicyDetails.ResourceType = requestPolicyDetails_policyDetails_SimplifiedResourceType; requestPolicyDetailsIsNull = false; } List<System.String> requestPolicyDetails_policyDetails_ResourceType = null; if (cmdletContext.PolicyDetails_ResourceType != null) { requestPolicyDetails_policyDetails_ResourceType = cmdletContext.PolicyDetails_ResourceType; } if (requestPolicyDetails_policyDetails_ResourceType != null) { request.PolicyDetails.ResourceTypes = requestPolicyDetails_policyDetails_ResourceType; requestPolicyDetailsIsNull = false; } System.Int32? requestPolicyDetails_policyDetails_RetainInterval = null; if (cmdletContext.PolicyDetails_RetainInterval != null) { requestPolicyDetails_policyDetails_RetainInterval = cmdletContext.PolicyDetails_RetainInterval.Value; } if (requestPolicyDetails_policyDetails_RetainInterval != null) { request.PolicyDetails.RetainInterval = requestPolicyDetails_policyDetails_RetainInterval.Value; requestPolicyDetailsIsNull = false; } List<Amazon.DLM.Model.Schedule> requestPolicyDetails_policyDetails_Schedule = null; if (cmdletContext.PolicyDetails_Schedule != null) { requestPolicyDetails_policyDetails_Schedule = cmdletContext.PolicyDetails_Schedule; } if (requestPolicyDetails_policyDetails_Schedule != null) { request.PolicyDetails.Schedules = requestPolicyDetails_policyDetails_Schedule; requestPolicyDetailsIsNull = false; } List<Amazon.DLM.Model.Tag> requestPolicyDetails_policyDetails_TargetTag = null; if (cmdletContext.PolicyDetails_TargetTag != null) { requestPolicyDetails_policyDetails_TargetTag = cmdletContext.PolicyDetails_TargetTag; } if (requestPolicyDetails_policyDetails_TargetTag != null) { request.PolicyDetails.TargetTags = requestPolicyDetails_policyDetails_TargetTag; requestPolicyDetailsIsNull = false; } Amazon.DLM.Model.EventSource requestPolicyDetails_policyDetails_EventSource = null; // populate EventSource var requestPolicyDetails_policyDetails_EventSourceIsNull = true; requestPolicyDetails_policyDetails_EventSource = new Amazon.DLM.Model.EventSource(); Amazon.DLM.EventSourceValues requestPolicyDetails_policyDetails_EventSource_eventSource_Type = null; if (cmdletContext.EventSource_Type != null) { requestPolicyDetails_policyDetails_EventSource_eventSource_Type = cmdletContext.EventSource_Type; } if (requestPolicyDetails_policyDetails_EventSource_eventSource_Type != null) { requestPolicyDetails_policyDetails_EventSource.Type = requestPolicyDetails_policyDetails_EventSource_eventSource_Type; requestPolicyDetails_policyDetails_EventSourceIsNull = false; } Amazon.DLM.Model.EventParameters requestPolicyDetails_policyDetails_EventSource_policyDetails_EventSource_Parameters = null; // populate Parameters var requestPolicyDetails_policyDetails_EventSource_policyDetails_EventSource_ParametersIsNull = true; requestPolicyDetails_policyDetails_EventSource_policyDetails_EventSource_Parameters = new Amazon.DLM.Model.EventParameters(); System.String requestPolicyDetails_policyDetails_EventSource_policyDetails_EventSource_Parameters_parameters_DescriptionRegex = null; if (cmdletContext.Parameters_DescriptionRegex != null) { requestPolicyDetails_policyDetails_EventSource_policyDetails_EventSource_Parameters_parameters_DescriptionRegex = cmdletContext.Parameters_DescriptionRegex; } if (requestPolicyDetails_policyDetails_EventSource_policyDetails_EventSource_Parameters_parameters_DescriptionRegex != null) { requestPolicyDetails_policyDetails_EventSource_policyDetails_EventSource_Parameters.DescriptionRegex = requestPolicyDetails_policyDetails_EventSource_policyDetails_EventSource_Parameters_parameters_DescriptionRegex; requestPolicyDetails_policyDetails_EventSource_policyDetails_EventSource_ParametersIsNull = false; } Amazon.DLM.EventTypeValues requestPolicyDetails_policyDetails_EventSource_policyDetails_EventSource_Parameters_parameters_EventType = null; if (cmdletContext.Parameters_EventType != null) { requestPolicyDetails_policyDetails_EventSource_policyDetails_EventSource_Parameters_parameters_EventType = cmdletContext.Parameters_EventType; } if (requestPolicyDetails_policyDetails_EventSource_policyDetails_EventSource_Parameters_parameters_EventType != null) { requestPolicyDetails_policyDetails_EventSource_policyDetails_EventSource_Parameters.EventType = requestPolicyDetails_policyDetails_EventSource_policyDetails_EventSource_Parameters_parameters_EventType; requestPolicyDetails_policyDetails_EventSource_policyDetails_EventSource_ParametersIsNull = false; } List<System.String> requestPolicyDetails_policyDetails_EventSource_policyDetails_EventSource_Parameters_parameters_SnapshotOwner = null; if (cmdletContext.Parameters_SnapshotOwner != null) { requestPolicyDetails_policyDetails_EventSource_policyDetails_EventSource_Parameters_parameters_SnapshotOwner = cmdletContext.Parameters_SnapshotOwner; } if (requestPolicyDetails_policyDetails_EventSource_policyDetails_EventSource_Parameters_parameters_SnapshotOwner != null) { requestPolicyDetails_policyDetails_EventSource_policyDetails_EventSource_Parameters.SnapshotOwner = requestPolicyDetails_policyDetails_EventSource_policyDetails_EventSource_Parameters_parameters_SnapshotOwner; requestPolicyDetails_policyDetails_EventSource_policyDetails_EventSource_ParametersIsNull = false; } // determine if requestPolicyDetails_policyDetails_EventSource_policyDetails_EventSource_Parameters should be set to null if (requestPolicyDetails_policyDetails_EventSource_policyDetails_EventSource_ParametersIsNull) { requestPolicyDetails_policyDetails_EventSource_policyDetails_EventSource_Parameters = null; } if (requestPolicyDetails_policyDetails_EventSource_policyDetails_EventSource_Parameters != null) { requestPolicyDetails_policyDetails_EventSource.Parameters = requestPolicyDetails_policyDetails_EventSource_policyDetails_EventSource_Parameters; requestPolicyDetails_policyDetails_EventSourceIsNull = false; } // determine if requestPolicyDetails_policyDetails_EventSource should be set to null if (requestPolicyDetails_policyDetails_EventSourceIsNull) { requestPolicyDetails_policyDetails_EventSource = null; } if (requestPolicyDetails_policyDetails_EventSource != null) { request.PolicyDetails.EventSource = requestPolicyDetails_policyDetails_EventSource; requestPolicyDetailsIsNull = false; } Amazon.DLM.Model.Exclusions requestPolicyDetails_policyDetails_Exclusions = null; // populate Exclusions var requestPolicyDetails_policyDetails_ExclusionsIsNull = true; requestPolicyDetails_policyDetails_Exclusions = new Amazon.DLM.Model.Exclusions(); System.Boolean? requestPolicyDetails_policyDetails_Exclusions_policyDetails_Exclusions_ExcludeBootVolumes = null; if (cmdletContext.PolicyDetails_Exclusions_ExcludeBootVolumes != null) { requestPolicyDetails_policyDetails_Exclusions_policyDetails_Exclusions_ExcludeBootVolumes = cmdletContext.PolicyDetails_Exclusions_ExcludeBootVolumes.Value; } if (requestPolicyDetails_policyDetails_Exclusions_policyDetails_Exclusions_ExcludeBootVolumes != null) { requestPolicyDetails_policyDetails_Exclusions.ExcludeBootVolumes = requestPolicyDetails_policyDetails_Exclusions_policyDetails_Exclusions_ExcludeBootVolumes.Value; requestPolicyDetails_policyDetails_ExclusionsIsNull = false; } List<Amazon.DLM.Model.Tag> requestPolicyDetails_policyDetails_Exclusions_policyDetails_Exclusions_ExcludeTags = null; if (cmdletContext.PolicyDetails_Exclusions_ExcludeTags != null) { requestPolicyDetails_policyDetails_Exclusions_policyDetails_Exclusions_ExcludeTags = cmdletContext.PolicyDetails_Exclusions_ExcludeTags; } if (requestPolicyDetails_policyDetails_Exclusions_policyDetails_Exclusions_ExcludeTags != null) { requestPolicyDetails_policyDetails_Exclusions.ExcludeTags = requestPolicyDetails_policyDetails_Exclusions_policyDetails_Exclusions_ExcludeTags; requestPolicyDetails_policyDetails_ExclusionsIsNull = false; } List<System.String> requestPolicyDetails_policyDetails_Exclusions_policyDetails_Exclusions_ExcludeVolumeTypes = null; if (cmdletContext.PolicyDetails_Exclusions_ExcludeVolumeTypes != null) { requestPolicyDetails_policyDetails_Exclusions_policyDetails_Exclusions_ExcludeVolumeTypes = cmdletContext.PolicyDetails_Exclusions_ExcludeVolumeTypes; } if (requestPolicyDetails_policyDetails_Exclusions_policyDetails_Exclusions_ExcludeVolumeTypes != null) { requestPolicyDetails_policyDetails_Exclusions.ExcludeVolumeTypes = requestPolicyDetails_policyDetails_Exclusions_policyDetails_Exclusions_ExcludeVolumeTypes; requestPolicyDetails_policyDetails_ExclusionsIsNull = false; } // determine if requestPolicyDetails_policyDetails_Exclusions should be set to null if (requestPolicyDetails_policyDetails_ExclusionsIsNull) { requestPolicyDetails_policyDetails_Exclusions = null; } if (requestPolicyDetails_policyDetails_Exclusions != null) { request.PolicyDetails.Exclusions = requestPolicyDetails_policyDetails_Exclusions; requestPolicyDetailsIsNull = false; } Amazon.DLM.Model.Parameters requestPolicyDetails_policyDetails_Parameters = null; // populate Parameters var requestPolicyDetails_policyDetails_ParametersIsNull = true; requestPolicyDetails_policyDetails_Parameters = new Amazon.DLM.Model.Parameters(); System.Boolean? requestPolicyDetails_policyDetails_Parameters_parameters_ExcludeBootVolume = null; if (cmdletContext.Parameters_ExcludeBootVolume != null) { requestPolicyDetails_policyDetails_Parameters_parameters_ExcludeBootVolume = cmdletContext.Parameters_ExcludeBootVolume.Value; } if (requestPolicyDetails_policyDetails_Parameters_parameters_ExcludeBootVolume != null) { requestPolicyDetails_policyDetails_Parameters.ExcludeBootVolume = requestPolicyDetails_policyDetails_Parameters_parameters_ExcludeBootVolume.Value; requestPolicyDetails_policyDetails_ParametersIsNull = false; } List<Amazon.DLM.Model.Tag> requestPolicyDetails_policyDetails_Parameters_parameters_ExcludeDataVolumeTag = null; if (cmdletContext.Parameters_ExcludeDataVolumeTag != null) { requestPolicyDetails_policyDetails_Parameters_parameters_ExcludeDataVolumeTag = cmdletContext.Parameters_ExcludeDataVolumeTag; } if (requestPolicyDetails_policyDetails_Parameters_parameters_ExcludeDataVolumeTag != null) { requestPolicyDetails_policyDetails_Parameters.ExcludeDataVolumeTags = requestPolicyDetails_policyDetails_Parameters_parameters_ExcludeDataVolumeTag; requestPolicyDetails_policyDetails_ParametersIsNull = false; } System.Boolean? requestPolicyDetails_policyDetails_Parameters_parameters_NoReboot = null; if (cmdletContext.Parameters_NoReboot != null) { requestPolicyDetails_policyDetails_Parameters_parameters_NoReboot = cmdletContext.Parameters_NoReboot.Value; } if (requestPolicyDetails_policyDetails_Parameters_parameters_NoReboot != null) { requestPolicyDetails_policyDetails_Parameters.NoReboot = requestPolicyDetails_policyDetails_Parameters_parameters_NoReboot.Value; requestPolicyDetails_policyDetails_ParametersIsNull = false; } // determine if requestPolicyDetails_policyDetails_Parameters should be set to null if (requestPolicyDetails_policyDetails_ParametersIsNull) { requestPolicyDetails_policyDetails_Parameters = null; } if (requestPolicyDetails_policyDetails_Parameters != null) { request.PolicyDetails.Parameters = requestPolicyDetails_policyDetails_Parameters; requestPolicyDetailsIsNull = false; } // determine if request.PolicyDetails should be set to null if (requestPolicyDetailsIsNull) { request.PolicyDetails = null; } if (cmdletContext.RetainInterval != null) { request.RetainInterval = cmdletContext.RetainInterval.Value; } if (cmdletContext.State != null) { request.State = cmdletContext.State; } if (cmdletContext.Tag != null) { request.Tags = cmdletContext.Tag; } 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.DLM.Model.CreateLifecyclePolicyResponse CallAWSServiceOperation(IAmazonDLM client, Amazon.DLM.Model.CreateLifecyclePolicyRequest request) { Utils.Common.WriteVerboseEndpointMessage(this, client.Config, "Amazon Data Lifecycle Manager", "CreateLifecyclePolicy"); try { #if DESKTOP return client.CreateLifecyclePolicy(request); #elif CORECLR return client.CreateLifecyclePolicyAsync(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.Boolean? CopyTag { get; set; } public System.Int32? CreateInterval { get; set; } public List<Amazon.DLM.Model.CrossRegionCopyTarget> CrossRegionCopyTarget { get; set; } public Amazon.DLM.DefaultPolicyTypeValues DefaultPolicy { get; set; } public System.String Description { get; set; } public System.Boolean? Exclusions_ExcludeBootVolume { get; set; } public List<Amazon.DLM.Model.Tag> Exclusions_ExcludeTag { get; set; } public List<System.String> Exclusions_ExcludeVolumeType { get; set; } public System.String ExecutionRoleArn { get; set; } public System.Boolean? ExtendDeletion { get; set; } public List<Amazon.DLM.Model.Action> PolicyDetails_Action { get; set; } public System.Boolean? PolicyDetails_CopyTag { get; set; } public System.Int32? PolicyDetails_CreateInterval { get; set; } public List<Amazon.DLM.Model.CrossRegionCopyTarget> PolicyDetails_CrossRegionCopyTarget { get; set; } public System.String Parameters_DescriptionRegex { get; set; } public Amazon.DLM.EventTypeValues Parameters_EventType { get; set; } public List<System.String> Parameters_SnapshotOwner { get; set; } public Amazon.DLM.EventSourceValues EventSource_Type { get; set; } public System.Boolean? PolicyDetails_Exclusions_ExcludeBootVolumes { get; set; } public List<Amazon.DLM.Model.Tag> PolicyDetails_Exclusions_ExcludeTags { get; set; } public List<System.String> PolicyDetails_Exclusions_ExcludeVolumeTypes { get; set; } public System.Boolean? PolicyDetails_ExtendDeletion { get; set; } public System.Boolean? Parameters_ExcludeBootVolume { get; set; } public List<Amazon.DLM.Model.Tag> Parameters_ExcludeDataVolumeTag { get; set; } public System.Boolean? Parameters_NoReboot { get; set; } public Amazon.DLM.PolicyLanguageValues PolicyDetails_PolicyLanguage { get; set; } public Amazon.DLM.PolicyTypeValues PolicyDetails_PolicyType { get; set; } public List<System.String> PolicyDetails_ResourceLocation { get; set; } public Amazon.DLM.ResourceTypeValues PolicyDetails_SimplifiedResourceType { get; set; } public List<System.String> PolicyDetails_ResourceType { get; set; } public System.Int32? PolicyDetails_RetainInterval { get; set; } public List<Amazon.DLM.Model.Schedule> PolicyDetails_Schedule { get; set; } public List<Amazon.DLM.Model.Tag> PolicyDetails_TargetTag { get; set; } public System.Int32? RetainInterval { get; set; } public Amazon.DLM.SettablePolicyStateValues State { get; set; } public Dictionary<System.String, System.String> Tag { get; set; } public System.Func<Amazon.DLM.Model.CreateLifecyclePolicyResponse, NewDLMLifecyclePolicyCmdlet, object> Select { get; set; } = (response, cmdlet) => response.PolicyId; } } }