VaporShell.Lightsail.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 'LightsailDiskAddOn'"

class LightsailDiskAddOn : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSLightsailDiskAddOn'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-lightsail-disk-addon.html'

    hidden [object] $_addOnType
    hidden [object] $_status
    hidden [object] $_autoSnapshotAddOnRequest

    [string] $AddOnType
    [string] $Status
    [LightsailDiskAutoSnapshotAddOn] $AutoSnapshotAddOnRequest

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name AddOnType -Value {
            $this._addOnType
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._addOnType = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Status -Value {
            $this._status
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._status = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name AutoSnapshotAddOnRequest -Value {
            $this._autoSnapshotAddOnRequest
        } -SecondValue {
            param([ValidateType(([LightsailDiskAutoSnapshotAddOn], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._autoSnapshotAddOnRequest = $value
        }
    }

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

Write-Verbose "Importing class 'LightsailInstanceMonthlyTransfer'"

class LightsailInstanceMonthlyTransfer : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSLightsailInstanceMonthlyTransfer'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-lightsail-instance-monthlytransfer.html'

    hidden [object] $_gbPerMonthAllocated

    [string] $GbPerMonthAllocated

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

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

Write-Verbose "Importing class 'LightsailInstancePort'"

class LightsailInstancePort : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSLightsailInstancePort'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-lightsail-instance-port.html'

    hidden [object] $_fromPort
    hidden [object] $_toPort
    hidden [object] $_protocol
    hidden [object] $_accessFrom
    hidden [object] $_accessType
    hidden [object] $_commonName
    hidden [object] $_accessDirection
    hidden [object] $_ipv6Cidrs
    hidden [object] $_cidrListAliases
    hidden [object] $_cidrs

    [int] $FromPort
    [int] $ToPort
    [string] $Protocol
    [string] $AccessFrom
    [string] $AccessType
    [string] $CommonName
    [string] $AccessDirection
    [string[]] $Ipv6Cidrs
    [string[]] $CidrListAliases
    [string[]] $Cidrs

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name FromPort -Value {
            $this._fromPort
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._fromPort = if ($cast = $value -as [int]) {
                $cast
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name ToPort -Value {
            $this._toPort
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._toPort = if ($cast = $value -as [int]) {
                $cast
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Protocol -Value {
            $this._protocol
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._protocol = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name AccessFrom -Value {
            $this._accessFrom
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._accessFrom = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name AccessType -Value {
            $this._accessType
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._accessType = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name CommonName -Value {
            $this._commonName
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._commonName = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name AccessDirection -Value {
            $this._accessDirection
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._accessDirection = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Ipv6Cidrs -Value {
            $this._ipv6Cidrs
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object[]] $value)
            $this._ipv6Cidrs = @($value)
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name CidrListAliases -Value {
            $this._cidrListAliases
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object[]] $value)
            $this._cidrListAliases = @($value)
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Cidrs -Value {
            $this._cidrs
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object[]] $value)
            $this._cidrs = @($value)
        }
    }

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

Write-Verbose "Importing class 'LightsailInstanceAddOn'"

class LightsailInstanceAddOn : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSLightsailInstanceAddOn'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-lightsail-instance-addon.html'

    hidden [object] $_addOnType
    hidden [object] $_status
    hidden [object] $_autoSnapshotAddOnRequest

    [string] $AddOnType
    [string] $Status
    [LightsailInstanceAutoSnapshotAddOn] $AutoSnapshotAddOnRequest

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name AddOnType -Value {
            $this._addOnType
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._addOnType = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Status -Value {
            $this._status
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._status = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name AutoSnapshotAddOnRequest -Value {
            $this._autoSnapshotAddOnRequest
        } -SecondValue {
            param([ValidateType(([LightsailInstanceAutoSnapshotAddOn], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._autoSnapshotAddOnRequest = $value
        }
    }

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

Write-Verbose "Importing class 'LightsailInstanceAutoSnapshotAddOn'"

class LightsailInstanceAutoSnapshotAddOn : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSLightsailInstanceAutoSnapshotAddOn'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-lightsail-instance-autosnapshotaddon.html'

    hidden [object] $_snapshotTimeOfDay

    [string] $SnapshotTimeOfDay

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

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

Write-Verbose "Importing class 'LightsailDiskAutoSnapshotAddOn'"

class LightsailDiskAutoSnapshotAddOn : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSLightsailDiskAutoSnapshotAddOn'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-lightsail-disk-autosnapshotaddon.html'

    hidden [object] $_snapshotTimeOfDay

    [string] $SnapshotTimeOfDay

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

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

Write-Verbose "Importing class 'LightsailInstanceDisk'"

class LightsailInstanceDisk : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSLightsailInstanceDisk'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-lightsail-instance-disk.html'

    hidden [object] $_diskName
    hidden [object] $_sizeInGb
    hidden [object] $_isSystemDisk
    hidden [object] $_iOPS
    hidden [object] $_path
    hidden [object] $_attachedTo
    hidden [object] $_attachmentState

    [string] $DiskName
    [string] $SizeInGb
    [bool] $IsSystemDisk
    [int] $IOPS
    [string] $Path
    [string] $AttachedTo
    [string] $AttachmentState

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name DiskName -Value {
            $this._diskName
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._diskName = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name SizeInGb -Value {
            $this._sizeInGb
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._sizeInGb = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name IsSystemDisk -Value {
            $this._isSystemDisk
        } -SecondValue {
            param([ValidateType(([bool], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._isSystemDisk = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name IOPS -Value {
            $this._iOPS
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._iOPS = if ($cast = $value -as [int]) {
                $cast
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Path -Value {
            $this._path
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._path = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name AttachedTo -Value {
            $this._attachedTo
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._attachedTo = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name AttachmentState -Value {
            $this._attachmentState
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._attachmentState = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
    }

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

Write-Verbose "Importing class 'LightsailInstanceHardware'"

class LightsailInstanceHardware : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSLightsailInstanceHardware'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-lightsail-instance-hardware.html'

    hidden [object] $_cpuCount
    hidden [object] $_ramSizeInGb
    hidden [object] $_disks

    [int] $CpuCount
    [int] $RamSizeInGb
    [LightsailInstanceDisk[]] $Disks

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name CpuCount -Value {
            $this._cpuCount
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._cpuCount = if ($cast = $value -as [int]) {
                $cast
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name RamSizeInGb -Value {
            $this._ramSizeInGb
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._ramSizeInGb = if ($cast = $value -as [int]) {
                $cast
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Disks -Value {
            $this._disks
        } -SecondValue {
            param([ValidateType(([LightsailInstanceDisk], [IntrinsicFunction], [ConditionFunction]))] [object[]] $value)
            $this._disks = $value
        }
    }

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

Write-Verbose "Importing class 'LightsailInstanceLocation'"

class LightsailInstanceLocation : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSLightsailInstanceLocation'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-lightsail-instance-location.html'

    hidden [object] $_availabilityZone
    hidden [object] $_regionName

    [string] $AvailabilityZone
    [string] $RegionName

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

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

Write-Verbose "Importing class 'LightsailInstanceNetworking'"

class LightsailInstanceNetworking : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSLightsailInstanceNetworking'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-lightsail-instance-networking.html'

    hidden [object] $_ports
    hidden [object] $_monthlyTransfer

    [LightsailInstancePort[]] $Ports
    [object] $MonthlyTransfer

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name Ports -Value {
            $this._ports
        } -SecondValue {
            param([ValidateType(([LightsailInstancePort], [IntrinsicFunction], [ConditionFunction]))] [object[]] $value)
            $this._ports = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name MonthlyTransfer -Value {
            $this._monthlyTransfer
        } -SecondValue {
            param([ValidateType(([object], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._monthlyTransfer = $value
        }
    }

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

Write-Verbose "Importing class 'LightsailInstanceState'"

class LightsailInstanceState : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSLightsailInstanceState'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-lightsail-instance-state.html'

    hidden [object] $_code
    hidden [object] $_name

    [int] $Code
    [string] $Name

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name Code -Value {
            $this._code
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._code = if ($cast = $value -as [int]) {
                $cast
            }
            else {
                $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
            }
        }
    }

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

Write-Verbose "Importing class 'LightsailInstance'"

class LightsailInstance : VSResource {
    hidden [string] $_vsFunctionName = 'New-VSLightsailInstance'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-lightsail-instance.html'

    hidden [string[]] $_attributes = @('SupportCode','ResourceType','IsStaticIp','PrivateIpAddress','PublicIpAddress','Location.AvailabilityZone','Location.RegionName','Hardware.CpuCount','Hardware.RamSizeInGb','State.Code','State.Name','Networking.MonthlyTransfer.GbPerMonthAllocated','UserName','SshKeyName','UserData','KeyPairName','InstanceArn')
    hidden [object] $_condition

    [string] $Type = 'AWS::Lightsail::Instance'
    [LightsailInstanceLocation] $Location
    [LightsailInstanceHardware] $Hardware
    [LightsailInstanceState] $State
    [LightsailInstanceNetworking] $Networking
    [string] $InstanceName
    [string] $AvailabilityZone
    [string] $BundleId
    [string] $BlueprintId
    [LightsailInstanceAddOn[]] $AddOns
    [VSTag[]] $Tags
    [VSJson] $Metadata
    [UpdatePolicy] $UpdatePolicy
    [string] $Condition

    hidden [void] _addAccessors() {
        $this._addBaseAccessors()
        $this | Add-Member -Force -MemberType ScriptProperty -Name Location -Value {
            $this.Properties['Location']
        } -SecondValue {
            param([ValidateType(([LightsailInstanceLocation], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['Location'] = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Hardware -Value {
            $this.Properties['Hardware']
        } -SecondValue {
            param([ValidateType(([LightsailInstanceHardware], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['Hardware'] = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name State -Value {
            $this.Properties['State']
        } -SecondValue {
            param([ValidateType(([LightsailInstanceState], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['State'] = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Networking -Value {
            $this.Properties['Networking']
        } -SecondValue {
            param([ValidateType(([LightsailInstanceNetworking], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['Networking'] = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name InstanceName -Value {
            $this.Properties['InstanceName']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['InstanceName'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name AvailabilityZone -Value {
            $this.Properties['AvailabilityZone']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['AvailabilityZone'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name BundleId -Value {
            $this.Properties['BundleId']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['BundleId'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name BlueprintId -Value {
            $this.Properties['BlueprintId']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['BlueprintId'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name AddOns -Value {
            $this.Properties['AddOns']
        } -SecondValue {
            param([ValidateType(([LightsailInstanceAddOn], [IntrinsicFunction], [ConditionFunction]))] [object[]] $value)
            $this.Properties['AddOns'] = $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
        }
    }

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

Write-Verbose "Importing class 'LightsailDisk'"

class LightsailDisk : VSResource {
    hidden [string] $_vsFunctionName = 'New-VSLightsailDisk'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-lightsail-disk.html'

    hidden [string[]] $_attributes = @('DiskArn','SupportCode','ResourceType','State','AttachmentState','Iops','IsAttached','Path','AttachedTo')
    hidden [object] $_condition

    [string] $Type = 'AWS::Lightsail::Disk'
    [string] $DiskName
    [string] $AvailabilityZone
    [VSTag[]] $Tags
    [LightsailDiskAddOn[]] $AddOns
    [int] $SizeInGb
    [VSJson] $Metadata
    [UpdatePolicy] $UpdatePolicy
    [string] $Condition

    hidden [void] _addAccessors() {
        $this._addBaseAccessors()
        $this | Add-Member -Force -MemberType ScriptProperty -Name DiskName -Value {
            $this.Properties['DiskName']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['DiskName'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name AvailabilityZone -Value {
            $this.Properties['AvailabilityZone']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['AvailabilityZone'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $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 AddOns -Value {
            $this.Properties['AddOns']
        } -SecondValue {
            param([ValidateType(([LightsailDiskAddOn], [IntrinsicFunction], [ConditionFunction]))] [object[]] $value)
            $this.Properties['AddOns'] = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name SizeInGb -Value {
            $this.Properties['SizeInGb']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['SizeInGb'] = if ($cast = $value -as [int]) {
                $cast
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Condition -Value {
            $this._condition
        } -SecondValue {
            param(
                [ValidateType(([string], [IntrinsicFunction], [ConditionFunction]))] [object]
                $value
            )
            $this._condition = $value
        }
    }

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