VaporShell.DLM.Classes.ps1

using namespace System
using namespace System.Collections
using namespace System.Collections.Generic
using namespace System.IO
using namespace System.Management.Automation
[CmdletBinding()]
Param()

Write-Verbose "Importing class 'DLMLifecyclePolicyFastRestoreRule'"

class DLMLifecyclePolicyFastRestoreRule : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSDLMLifecyclePolicyFastRestoreRule'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-dlm-lifecyclepolicy-fastrestorerule.html'

    hidden [object] $_intervalUnit
    hidden [object] $_availabilityZones
    hidden [object] $_count
    hidden [object] $_interval

    [string] $IntervalUnit
    [string[]] $AvailabilityZones
    [int] $Count
    [int] $Interval

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name IntervalUnit -Value {
            $this._intervalUnit
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._intervalUnit = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name AvailabilityZones -Value {
            $this._availabilityZones
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object[]] $value)
            $this._availabilityZones = @($value)
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Count -Value {
            $this._count
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._count = if ($cast = $value -as [int]) {
                $cast
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Interval -Value {
            $this._interval
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._interval = if ($cast = $value -as [int]) {
                $cast
            }
            else {
                $value
            }
        }
    }

    DLMLifecyclePolicyFastRestoreRule() : base() {}
    DLMLifecyclePolicyFastRestoreRule([IDictionary] $props) : base($props) {}
    DLMLifecyclePolicyFastRestoreRule([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'DLMLifecyclePolicyEventSource'"

class DLMLifecyclePolicyEventSource : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSDLMLifecyclePolicyEventSource'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-dlm-lifecyclepolicy-eventsource.html'

    hidden [object] $_type
    hidden [object] $_parameters

    [string] $Type
    [DLMLifecyclePolicyEventParameters] $Parameters

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name Type -Value {
            $this._type
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._type = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Parameters -Value {
            $this._parameters
        } -SecondValue {
            param([ValidateType(([DLMLifecyclePolicyEventParameters], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._parameters = $value
        }
    }

    DLMLifecyclePolicyEventSource() : base() {}
    DLMLifecyclePolicyEventSource([IDictionary] $props) : base($props) {}
    DLMLifecyclePolicyEventSource([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'DLMLifecyclePolicyEventParameters'"

class DLMLifecyclePolicyEventParameters : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSDLMLifecyclePolicyEventParameters'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-dlm-lifecyclepolicy-eventparameters.html'

    hidden [object] $_eventType
    hidden [object] $_snapshotOwner
    hidden [object] $_descriptionRegex

    [string] $EventType
    [string[]] $SnapshotOwner
    [string] $DescriptionRegex

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name EventType -Value {
            $this._eventType
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._eventType = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name SnapshotOwner -Value {
            $this._snapshotOwner
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object[]] $value)
            $this._snapshotOwner = @($value)
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name DescriptionRegex -Value {
            $this._descriptionRegex
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._descriptionRegex = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
    }

    DLMLifecyclePolicyEventParameters() : base() {}
    DLMLifecyclePolicyEventParameters([IDictionary] $props) : base($props) {}
    DLMLifecyclePolicyEventParameters([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'DLMLifecyclePolicyAction'"

class DLMLifecyclePolicyAction : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSDLMLifecyclePolicyAction'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-dlm-lifecyclepolicy-action.html'

    hidden [object] $_crossRegionCopy
    hidden [object] $_name

    [DLMLifecyclePolicyCrossRegionCopyAction[]] $CrossRegionCopy
    [string] $Name

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name CrossRegionCopy -Value {
            $this._crossRegionCopy
        } -SecondValue {
            param([ValidateType(([DLMLifecyclePolicyCrossRegionCopyAction], [IntrinsicFunction], [ConditionFunction]))] [object[]] $value)
            $this._crossRegionCopy = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Name -Value {
            $this._name
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._name = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
    }

    DLMLifecyclePolicyAction() : base() {}
    DLMLifecyclePolicyAction([IDictionary] $props) : base($props) {}
    DLMLifecyclePolicyAction([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'DLMLifecyclePolicyCreateRule'"

class DLMLifecyclePolicyCreateRule : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSDLMLifecyclePolicyCreateRule'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-dlm-lifecyclepolicy-createrule.html'

    hidden [object] $_intervalUnit
    hidden [object] $_times
    hidden [object] $_cronExpression
    hidden [object] $_interval
    hidden [object] $_location

    [string] $IntervalUnit
    [string[]] $Times
    [string] $CronExpression
    [int] $Interval
    [string] $Location

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name IntervalUnit -Value {
            $this._intervalUnit
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._intervalUnit = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Times -Value {
            $this._times
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object[]] $value)
            $this._times = @($value)
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name CronExpression -Value {
            $this._cronExpression
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._cronExpression = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Interval -Value {
            $this._interval
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._interval = if ($cast = $value -as [int]) {
                $cast
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Location -Value {
            $this._location
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._location = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
    }

    DLMLifecyclePolicyCreateRule() : base() {}
    DLMLifecyclePolicyCreateRule([IDictionary] $props) : base($props) {}
    DLMLifecyclePolicyCreateRule([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'DLMLifecyclePolicyRetainRule'"

class DLMLifecyclePolicyRetainRule : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSDLMLifecyclePolicyRetainRule'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-dlm-lifecyclepolicy-retainrule.html'

    hidden [object] $_intervalUnit
    hidden [object] $_count
    hidden [object] $_interval

    [string] $IntervalUnit
    [int] $Count
    [int] $Interval

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name IntervalUnit -Value {
            $this._intervalUnit
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._intervalUnit = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Count -Value {
            $this._count
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._count = if ($cast = $value -as [int]) {
                $cast
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Interval -Value {
            $this._interval
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._interval = if ($cast = $value -as [int]) {
                $cast
            }
            else {
                $value
            }
        }
    }

    DLMLifecyclePolicyRetainRule() : base() {}
    DLMLifecyclePolicyRetainRule([IDictionary] $props) : base($props) {}
    DLMLifecyclePolicyRetainRule([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'DLMLifecyclePolicyPolicyDetails'"

class DLMLifecyclePolicyPolicyDetails : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSDLMLifecyclePolicyPolicyDetails'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-dlm-lifecyclepolicy-policydetails.html'

    hidden [object] $_resourceTypes
    hidden [object] $_schedules
    hidden [object] $_policyType
    hidden [object] $_eventSource
    hidden [object] $_parameters
    hidden [object] $_actions
    hidden [object] $_targetTags
    hidden [object] $_resourceLocations

    [string[]] $ResourceTypes
    [DLMLifecyclePolicySchedule[]] $Schedules
    [string] $PolicyType
    [DLMLifecyclePolicyEventSource] $EventSource
    [DLMLifecyclePolicyParameters] $Parameters
    [DLMLifecyclePolicyAction[]] $Actions
    [VSTag[]] $TargetTags
    [string[]] $ResourceLocations

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name ResourceTypes -Value {
            $this._resourceTypes
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object[]] $value)
            $this._resourceTypes = @($value)
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Schedules -Value {
            $this._schedules
        } -SecondValue {
            param([ValidateType(([DLMLifecyclePolicySchedule], [IntrinsicFunction], [ConditionFunction]))] [object[]] $value)
            $this._schedules = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name PolicyType -Value {
            $this._policyType
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._policyType = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name EventSource -Value {
            $this._eventSource
        } -SecondValue {
            param([ValidateType(([DLMLifecyclePolicyEventSource], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._eventSource = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Parameters -Value {
            $this._parameters
        } -SecondValue {
            param([ValidateType(([DLMLifecyclePolicyParameters], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._parameters = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Actions -Value {
            $this._actions
        } -SecondValue {
            param([ValidateType(([DLMLifecyclePolicyAction], [IntrinsicFunction], [ConditionFunction]))] [object[]] $value)
            $this._actions = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name TargetTags -Value {
            $this._targetTags
        } -SecondValue {
            param([TransformTag()] [ValidateType(([IDictionary], [psobject], [VSTag]))] [object] $value)
            $this._targetTags = [VSTag]::TransformTag($value)
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name ResourceLocations -Value {
            $this._resourceLocations
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object[]] $value)
            $this._resourceLocations = @($value)
        }
    }

    DLMLifecyclePolicyPolicyDetails() : base() {}
    DLMLifecyclePolicyPolicyDetails([IDictionary] $props) : base($props) {}
    DLMLifecyclePolicyPolicyDetails([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'DLMLifecyclePolicyParameters'"

class DLMLifecyclePolicyParameters : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSDLMLifecyclePolicyParameters'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-dlm-lifecyclepolicy-parameters.html'

    hidden [object] $_excludeBootVolume
    hidden [object] $_noReboot

    [bool] $ExcludeBootVolume
    [bool] $NoReboot

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name ExcludeBootVolume -Value {
            $this._excludeBootVolume
        } -SecondValue {
            param([ValidateType(([bool], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._excludeBootVolume = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name NoReboot -Value {
            $this._noReboot
        } -SecondValue {
            param([ValidateType(([bool], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._noReboot = $value
        }
    }

    DLMLifecyclePolicyParameters() : base() {}
    DLMLifecyclePolicyParameters([IDictionary] $props) : base($props) {}
    DLMLifecyclePolicyParameters([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'DLMLifecyclePolicyEncryptionConfiguration'"

class DLMLifecyclePolicyEncryptionConfiguration : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSDLMLifecyclePolicyEncryptionConfiguration'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-dlm-lifecyclepolicy-encryptionconfiguration.html'

    hidden [object] $_encrypted
    hidden [object] $_cmkArn

    [bool] $Encrypted
    [string] $CmkArn

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name Encrypted -Value {
            $this._encrypted
        } -SecondValue {
            param([ValidateType(([bool], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._encrypted = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name CmkArn -Value {
            $this._cmkArn
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._cmkArn = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
    }

    DLMLifecyclePolicyEncryptionConfiguration() : base() {}
    DLMLifecyclePolicyEncryptionConfiguration([IDictionary] $props) : base($props) {}
    DLMLifecyclePolicyEncryptionConfiguration([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'DLMLifecyclePolicySchedule'"

class DLMLifecyclePolicySchedule : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSDLMLifecyclePolicySchedule'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-dlm-lifecyclepolicy-schedule.html'

    hidden [object] $_shareRules
    hidden [object] $_deprecateRule
    hidden [object] $_tagsToAdd
    hidden [object] $_createRule
    hidden [object] $_variableTags
    hidden [object] $_fastRestoreRule
    hidden [object] $_retainRule
    hidden [object] $_crossRegionCopyRules
    hidden [object] $_name
    hidden [object] $_copyTags

    [DLMLifecyclePolicyShareRule[]] $ShareRules
    [DLMLifecyclePolicyDeprecateRule] $DeprecateRule
    [VSTag[]] $TagsToAdd
    [DLMLifecyclePolicyCreateRule] $CreateRule
    [VSTag[]] $VariableTags
    [DLMLifecyclePolicyFastRestoreRule] $FastRestoreRule
    [DLMLifecyclePolicyRetainRule] $RetainRule
    [DLMLifecyclePolicyCrossRegionCopyRule[]] $CrossRegionCopyRules
    [string] $Name
    [bool] $CopyTags

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name ShareRules -Value {
            $this._shareRules
        } -SecondValue {
            param([ValidateType(([DLMLifecyclePolicyShareRule], [IntrinsicFunction], [ConditionFunction]))] [object[]] $value)
            $this._shareRules = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name DeprecateRule -Value {
            $this._deprecateRule
        } -SecondValue {
            param([ValidateType(([DLMLifecyclePolicyDeprecateRule], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._deprecateRule = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name TagsToAdd -Value {
            $this._tagsToAdd
        } -SecondValue {
            param([TransformTag()] [ValidateType(([IDictionary], [psobject], [VSTag]))] [object] $value)
            $this._tagsToAdd = [VSTag]::TransformTag($value)
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name CreateRule -Value {
            $this._createRule
        } -SecondValue {
            param([ValidateType(([DLMLifecyclePolicyCreateRule], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._createRule = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name VariableTags -Value {
            $this._variableTags
        } -SecondValue {
            param([TransformTag()] [ValidateType(([IDictionary], [psobject], [VSTag]))] [object] $value)
            $this._variableTags = [VSTag]::TransformTag($value)
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name FastRestoreRule -Value {
            $this._fastRestoreRule
        } -SecondValue {
            param([ValidateType(([DLMLifecyclePolicyFastRestoreRule], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._fastRestoreRule = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name RetainRule -Value {
            $this._retainRule
        } -SecondValue {
            param([ValidateType(([DLMLifecyclePolicyRetainRule], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._retainRule = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name CrossRegionCopyRules -Value {
            $this._crossRegionCopyRules
        } -SecondValue {
            param([ValidateType(([DLMLifecyclePolicyCrossRegionCopyRule], [IntrinsicFunction], [ConditionFunction]))] [object[]] $value)
            $this._crossRegionCopyRules = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Name -Value {
            $this._name
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._name = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name CopyTags -Value {
            $this._copyTags
        } -SecondValue {
            param([ValidateType(([bool], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._copyTags = $value
        }
    }

    DLMLifecyclePolicySchedule() : base() {}
    DLMLifecyclePolicySchedule([IDictionary] $props) : base($props) {}
    DLMLifecyclePolicySchedule([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'DLMLifecyclePolicyCrossRegionCopyRetainRule'"

class DLMLifecyclePolicyCrossRegionCopyRetainRule : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSDLMLifecyclePolicyCrossRegionCopyRetainRule'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-dlm-lifecyclepolicy-crossregioncopyretainrule.html'

    hidden [object] $_intervalUnit
    hidden [object] $_interval

    [string] $IntervalUnit
    [int] $Interval

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name IntervalUnit -Value {
            $this._intervalUnit
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._intervalUnit = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Interval -Value {
            $this._interval
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._interval = if ($cast = $value -as [int]) {
                $cast
            }
            else {
                $value
            }
        }
    }

    DLMLifecyclePolicyCrossRegionCopyRetainRule() : base() {}
    DLMLifecyclePolicyCrossRegionCopyRetainRule([IDictionary] $props) : base($props) {}
    DLMLifecyclePolicyCrossRegionCopyRetainRule([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'DLMLifecyclePolicyCrossRegionCopyRule'"

class DLMLifecyclePolicyCrossRegionCopyRule : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSDLMLifecyclePolicyCrossRegionCopyRule'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-dlm-lifecyclepolicy-crossregioncopyrule.html'

    hidden [object] $_targetRegion
    hidden [object] $_target
    hidden [object] $_deprecateRule
    hidden [object] $_encrypted
    hidden [object] $_cmkArn
    hidden [object] $_retainRule
    hidden [object] $_copyTags

    [string] $TargetRegion
    [string] $Target
    [DLMLifecyclePolicyCrossRegionCopyDeprecateRule] $DeprecateRule
    [bool] $Encrypted
    [string] $CmkArn
    [DLMLifecyclePolicyCrossRegionCopyRetainRule] $RetainRule
    [bool] $CopyTags

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name TargetRegion -Value {
            $this._targetRegion
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._targetRegion = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Target -Value {
            $this._target
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._target = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name DeprecateRule -Value {
            $this._deprecateRule
        } -SecondValue {
            param([ValidateType(([DLMLifecyclePolicyCrossRegionCopyDeprecateRule], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._deprecateRule = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Encrypted -Value {
            $this._encrypted
        } -SecondValue {
            param([ValidateType(([bool], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._encrypted = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name CmkArn -Value {
            $this._cmkArn
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._cmkArn = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name RetainRule -Value {
            $this._retainRule
        } -SecondValue {
            param([ValidateType(([DLMLifecyclePolicyCrossRegionCopyRetainRule], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._retainRule = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name CopyTags -Value {
            $this._copyTags
        } -SecondValue {
            param([ValidateType(([bool], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._copyTags = $value
        }
    }

    DLMLifecyclePolicyCrossRegionCopyRule() : base() {}
    DLMLifecyclePolicyCrossRegionCopyRule([IDictionary] $props) : base($props) {}
    DLMLifecyclePolicyCrossRegionCopyRule([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'DLMLifecyclePolicyCrossRegionCopyAction'"

class DLMLifecyclePolicyCrossRegionCopyAction : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSDLMLifecyclePolicyCrossRegionCopyAction'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-dlm-lifecyclepolicy-crossregioncopyaction.html'

    hidden [object] $_target
    hidden [object] $_encryptionConfiguration
    hidden [object] $_retainRule

    [string] $Target
    [DLMLifecyclePolicyEncryptionConfiguration] $EncryptionConfiguration
    [DLMLifecyclePolicyCrossRegionCopyRetainRule] $RetainRule

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name Target -Value {
            $this._target
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._target = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name EncryptionConfiguration -Value {
            $this._encryptionConfiguration
        } -SecondValue {
            param([ValidateType(([DLMLifecyclePolicyEncryptionConfiguration], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._encryptionConfiguration = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name RetainRule -Value {
            $this._retainRule
        } -SecondValue {
            param([ValidateType(([DLMLifecyclePolicyCrossRegionCopyRetainRule], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._retainRule = $value
        }
    }

    DLMLifecyclePolicyCrossRegionCopyAction() : base() {}
    DLMLifecyclePolicyCrossRegionCopyAction([IDictionary] $props) : base($props) {}
    DLMLifecyclePolicyCrossRegionCopyAction([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'DLMLifecyclePolicyDeprecateRule'"

class DLMLifecyclePolicyDeprecateRule : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSDLMLifecyclePolicyDeprecateRule'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-dlm-lifecyclepolicy-deprecaterule.html'

    hidden [object] $_intervalUnit
    hidden [object] $_count
    hidden [object] $_interval

    [string] $IntervalUnit
    [int] $Count
    [int] $Interval

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name IntervalUnit -Value {
            $this._intervalUnit
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._intervalUnit = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Count -Value {
            $this._count
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._count = if ($cast = $value -as [int]) {
                $cast
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Interval -Value {
            $this._interval
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._interval = if ($cast = $value -as [int]) {
                $cast
            }
            else {
                $value
            }
        }
    }

    DLMLifecyclePolicyDeprecateRule() : base() {}
    DLMLifecyclePolicyDeprecateRule([IDictionary] $props) : base($props) {}
    DLMLifecyclePolicyDeprecateRule([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'DLMLifecyclePolicyCrossRegionCopyDeprecateRule'"

class DLMLifecyclePolicyCrossRegionCopyDeprecateRule : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSDLMLifecyclePolicyCrossRegionCopyDeprecateRule'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-dlm-lifecyclepolicy-crossregioncopydeprecaterule.html'

    hidden [object] $_intervalUnit
    hidden [object] $_interval

    [string] $IntervalUnit
    [int] $Interval

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name IntervalUnit -Value {
            $this._intervalUnit
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._intervalUnit = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Interval -Value {
            $this._interval
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._interval = if ($cast = $value -as [int]) {
                $cast
            }
            else {
                $value
            }
        }
    }

    DLMLifecyclePolicyCrossRegionCopyDeprecateRule() : base() {}
    DLMLifecyclePolicyCrossRegionCopyDeprecateRule([IDictionary] $props) : base($props) {}
    DLMLifecyclePolicyCrossRegionCopyDeprecateRule([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'DLMLifecyclePolicyShareRule'"

class DLMLifecyclePolicyShareRule : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSDLMLifecyclePolicyShareRule'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-dlm-lifecyclepolicy-sharerule.html'

    hidden [object] $_targetAccounts
    hidden [object] $_unshareIntervalUnit
    hidden [object] $_unshareInterval

    [string[]] $TargetAccounts
    [string] $UnshareIntervalUnit
    [int] $UnshareInterval

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name TargetAccounts -Value {
            $this._targetAccounts
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object[]] $value)
            $this._targetAccounts = @($value)
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name UnshareIntervalUnit -Value {
            $this._unshareIntervalUnit
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._unshareIntervalUnit = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name UnshareInterval -Value {
            $this._unshareInterval
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._unshareInterval = if ($cast = $value -as [int]) {
                $cast
            }
            else {
                $value
            }
        }
    }

    DLMLifecyclePolicyShareRule() : base() {}
    DLMLifecyclePolicyShareRule([IDictionary] $props) : base($props) {}
    DLMLifecyclePolicyShareRule([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'DLMLifecyclePolicy'"

class DLMLifecyclePolicy : VSResource {
    hidden [string] $_vsFunctionName = 'New-VSDLMLifecyclePolicy'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-dlm-lifecyclepolicy.html'

    hidden [string[]] $_attributes = @('Arn')
    hidden [object] $_condition

    [string] $Type = 'AWS::DLM::LifecyclePolicy'
    [string] $ExecutionRoleArn
    [string] $Description
    [string] $State
    [DLMLifecyclePolicyPolicyDetails] $PolicyDetails
    [VSTag[]] $Tags
    [VSJson] $Metadata
    [UpdatePolicy] $UpdatePolicy
    [string] $Condition

    hidden [void] _addAccessors() {
        $this._addBaseAccessors()
        $this | Add-Member -Force -MemberType ScriptProperty -Name ExecutionRoleArn -Value {
            $this.Properties['ExecutionRoleArn']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['ExecutionRoleArn'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Description -Value {
            $this.Properties['Description']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['Description'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name State -Value {
            $this.Properties['State']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['State'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name PolicyDetails -Value {
            $this.Properties['PolicyDetails']
        } -SecondValue {
            param([ValidateType(([DLMLifecyclePolicyPolicyDetails], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['PolicyDetails'] = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Tags -Value {
            $this.Properties['Tags']
        } -SecondValue {
            param([TransformTag()] [ValidateType(([IDictionary], [psobject], [VSTag]))] [object] $value)
            $this.Properties['Tags'] = [VSTag]::TransformTag($value)
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Condition -Value {
            $this._condition
        } -SecondValue {
            param(
                [ValidateType(([string], [IntrinsicFunction], [ConditionFunction]))] [object]
                $value
            )
            $this._condition = $value
        }
    }

    DLMLifecyclePolicy() : base() {}
    DLMLifecyclePolicy([IDictionary] $props) : base($props) {}
    DLMLifecyclePolicy([psobject] $props) : base($props) {}
}