VaporShell.ImageBuilder.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 'ImageBuilderImagePipelineImageTestsConfiguration'"

class ImageBuilderImagePipelineImageTestsConfiguration : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSImageBuilderImagePipelineImageTestsConfiguration'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-imagebuilder-imagepipeline-imagetestsconfiguration.html'

    hidden [object] $_imageTestsEnabled
    hidden [object] $_timeoutMinutes

    [bool] $ImageTestsEnabled
    [int] $TimeoutMinutes

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name ImageTestsEnabled -Value {
            $this._imageTestsEnabled
        } -SecondValue {
            param([ValidateType(([bool], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._imageTestsEnabled = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name TimeoutMinutes -Value {
            $this._timeoutMinutes
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._timeoutMinutes = if ($cast = $value -as [int]) {
                $cast
            }
            else {
                $value
            }
        }
    }

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

Write-Verbose "Importing class 'ImageBuilderImageRecipeInstanceBlockDeviceMapping'"

class ImageBuilderImageRecipeInstanceBlockDeviceMapping : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSImageBuilderImageRecipeInstanceBlockDeviceMapping'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-imagebuilder-imagerecipe-instanceblockdevicemapping.html'

    hidden [object] $_deviceName
    hidden [object] $_virtualName
    hidden [object] $_noDevice
    hidden [object] $_ebs

    [string] $DeviceName
    [string] $VirtualName
    [string] $NoDevice
    [ImageBuilderImageRecipeEbsInstanceBlockDeviceSpecification] $Ebs

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name DeviceName -Value {
            $this._deviceName
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._deviceName = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name VirtualName -Value {
            $this._virtualName
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._virtualName = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name NoDevice -Value {
            $this._noDevice
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._noDevice = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Ebs -Value {
            $this._ebs
        } -SecondValue {
            param([ValidateType(([ImageBuilderImageRecipeEbsInstanceBlockDeviceSpecification], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._ebs = $value
        }
    }

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

Write-Verbose "Importing class 'ImageBuilderContainerRecipeComponentConfiguration'"

class ImageBuilderContainerRecipeComponentConfiguration : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSImageBuilderContainerRecipeComponentConfiguration'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-imagebuilder-containerrecipe-componentconfiguration.html'

    hidden [object] $_componentArn

    [string] $ComponentArn

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

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

Write-Verbose "Importing class 'ImageBuilderInfrastructureConfigurationLogging'"

class ImageBuilderInfrastructureConfigurationLogging : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSImageBuilderInfrastructureConfigurationLogging'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-imagebuilder-infrastructureconfiguration-logging.html'

    hidden [object] $_s3Logs

    [ImageBuilderInfrastructureConfigurationS3Logs] $S3Logs

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name S3Logs -Value {
            $this._s3Logs
        } -SecondValue {
            param([ValidateType(([ImageBuilderInfrastructureConfigurationS3Logs], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._s3Logs = $value
        }
    }

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

Write-Verbose "Importing class 'ImageBuilderImageRecipeComponentConfiguration'"

class ImageBuilderImageRecipeComponentConfiguration : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSImageBuilderImageRecipeComponentConfiguration'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-imagebuilder-imagerecipe-componentconfiguration.html'

    hidden [object] $_componentArn

    [string] $ComponentArn

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

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

Write-Verbose "Importing class 'ImageBuilderDistributionConfigurationDistribution'"

class ImageBuilderDistributionConfigurationDistribution : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSImageBuilderDistributionConfigurationDistribution'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-imagebuilder-distributionconfiguration-distribution.html'

    hidden [object] $_region
    hidden [VSJson] $_amiDistributionConfiguration
    hidden [VSJson] $_containerDistributionConfiguration
    hidden [object] $_licenseConfigurationArns

    [string] $Region
    [VSJson] $AmiDistributionConfiguration
    [VSJson] $ContainerDistributionConfiguration
    [string[]] $LicenseConfigurationArns

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name Region -Value {
            $this._region
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._region = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name AmiDistributionConfiguration -Value {
            $this._amiDistributionConfiguration
        } -SecondValue {
            param([ValidateType(([string], [VSJson], [VSYaml], [psobject], [IDictionary]))][object] $value)
            $this._amiDistributionConfiguration = [VSJson]::Transform($value)
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name ContainerDistributionConfiguration -Value {
            $this._containerDistributionConfiguration
        } -SecondValue {
            param([ValidateType(([string], [VSJson], [VSYaml], [psobject], [IDictionary]))][object] $value)
            $this._containerDistributionConfiguration = [VSJson]::Transform($value)
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name LicenseConfigurationArns -Value {
            $this._licenseConfigurationArns
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object[]] $value)
            $this._licenseConfigurationArns = @($value)
        }
    }

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

Write-Verbose "Importing class 'ImageBuilderImagePipelineSchedule'"

class ImageBuilderImagePipelineSchedule : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSImageBuilderImagePipelineSchedule'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-imagebuilder-imagepipeline-schedule.html'

    hidden [object] $_scheduleExpression
    hidden [object] $_pipelineExecutionStartCondition

    [string] $ScheduleExpression
    [string] $PipelineExecutionStartCondition

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

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

Write-Verbose "Importing class 'ImageBuilderImageImageTestsConfiguration'"

class ImageBuilderImageImageTestsConfiguration : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSImageBuilderImageImageTestsConfiguration'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-imagebuilder-image-imagetestsconfiguration.html'

    hidden [object] $_imageTestsEnabled
    hidden [object] $_timeoutMinutes

    [bool] $ImageTestsEnabled
    [int] $TimeoutMinutes

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name ImageTestsEnabled -Value {
            $this._imageTestsEnabled
        } -SecondValue {
            param([ValidateType(([bool], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._imageTestsEnabled = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name TimeoutMinutes -Value {
            $this._timeoutMinutes
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._timeoutMinutes = if ($cast = $value -as [int]) {
                $cast
            }
            else {
                $value
            }
        }
    }

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

Write-Verbose "Importing class 'ImageBuilderInfrastructureConfigurationS3Logs'"

class ImageBuilderInfrastructureConfigurationS3Logs : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSImageBuilderInfrastructureConfigurationS3Logs'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-imagebuilder-infrastructureconfiguration-s3logs.html'

    hidden [object] $_s3BucketName
    hidden [object] $_s3KeyPrefix

    [string] $S3BucketName
    [string] $S3KeyPrefix

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

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

Write-Verbose "Importing class 'ImageBuilderContainerRecipeTargetContainerRepository'"

class ImageBuilderContainerRecipeTargetContainerRepository : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSImageBuilderContainerRecipeTargetContainerRepository'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-imagebuilder-containerrecipe-targetcontainerrepository.html'

    hidden [object] $_service
    hidden [object] $_repositoryName

    [string] $Service
    [string] $RepositoryName

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

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

Write-Verbose "Importing class 'ImageBuilderImageRecipeEbsInstanceBlockDeviceSpecification'"

class ImageBuilderImageRecipeEbsInstanceBlockDeviceSpecification : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSImageBuilderImageRecipeEbsInstanceBlockDeviceSpecification'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-imagebuilder-imagerecipe-ebsinstanceblockdevicespecification.html'

    hidden [object] $_encrypted
    hidden [object] $_deleteOnTermination
    hidden [object] $_iops
    hidden [object] $_kmsKeyId
    hidden [object] $_snapshotId
    hidden [object] $_volumeSize
    hidden [object] $_volumeType

    [bool] $Encrypted
    [bool] $DeleteOnTermination
    [int] $Iops
    [string] $KmsKeyId
    [string] $SnapshotId
    [int] $VolumeSize
    [string] $VolumeType

    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 DeleteOnTermination -Value {
            $this._deleteOnTermination
        } -SecondValue {
            param([ValidateType(([bool], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._deleteOnTermination = $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 KmsKeyId -Value {
            $this._kmsKeyId
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._kmsKeyId = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name SnapshotId -Value {
            $this._snapshotId
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._snapshotId = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name VolumeSize -Value {
            $this._volumeSize
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._volumeSize = if ($cast = $value -as [int]) {
                $cast
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name VolumeType -Value {
            $this._volumeType
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._volumeType = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
    }

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

Write-Verbose "Importing class 'ImageBuilderComponent'"

class ImageBuilderComponent : VSResource {
    hidden [string] $_vsFunctionName = 'New-VSImageBuilderComponent'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-imagebuilder-component.html'

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

    [string] $Type = 'AWS::ImageBuilder::Component'
    [string] $Name
    [string] $Version
    [string] $Description
    [string] $ChangeDescription
    [string] $Platform
    [string] $Data
    [string] $KmsKeyId
    [string] $Tags
    [string] $Uri
    [string[]] $SupportedOsVersions
    [VSJson] $Metadata
    [UpdatePolicy] $UpdatePolicy
    [string] $Condition

    hidden [void] _addAccessors() {
        $this._addBaseAccessors()
        $this | Add-Member -Force -MemberType ScriptProperty -Name Name -Value {
            $this.Properties['Name']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['Name'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Version -Value {
            $this.Properties['Version']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['Version'] = 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 ChangeDescription -Value {
            $this.Properties['ChangeDescription']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['ChangeDescription'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Platform -Value {
            $this.Properties['Platform']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['Platform'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Data -Value {
            $this.Properties['Data']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['Data'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name KmsKeyId -Value {
            $this.Properties['KmsKeyId']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['KmsKeyId'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Tags -Value {
            $this.Properties['Tags']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['Tags'] = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Uri -Value {
            $this.Properties['Uri']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['Uri'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name SupportedOsVersions -Value {
            $this.Properties['SupportedOsVersions']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object[]] $value)
            $this.Properties['SupportedOsVersions'] = @($value)
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Condition -Value {
            $this._condition
        } -SecondValue {
            param(
                [ValidateType(([string], [IntrinsicFunction], [ConditionFunction]))] [object]
                $value
            )
            $this._condition = $value
        }
    }

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

Write-Verbose "Importing class 'ImageBuilderInfrastructureConfiguration'"

class ImageBuilderInfrastructureConfiguration : VSResource {
    hidden [string] $_vsFunctionName = 'New-VSImageBuilderInfrastructureConfiguration'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-imagebuilder-infrastructureconfiguration.html'

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

    [string] $Type = 'AWS::ImageBuilder::InfrastructureConfiguration'
    [string] $Name
    [string] $Description
    [string[]] $InstanceTypes
    [string[]] $SecurityGroupIds
    [VSJson] $Logging
    [string] $SubnetId
    [string] $KeyPair
    [bool] $TerminateInstanceOnFailure
    [string] $InstanceProfileName
    [string] $SnsTopicArn
    [string] $ResourceTags
    [string] $Tags
    [VSJson] $Metadata
    [UpdatePolicy] $UpdatePolicy
    [string] $Condition

    hidden [void] _addAccessors() {
        $this._addBaseAccessors()
        $this | Add-Member -Force -MemberType ScriptProperty -Name Name -Value {
            $this.Properties['Name']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['Name'] = 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 InstanceTypes -Value {
            $this.Properties['InstanceTypes']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object[]] $value)
            $this.Properties['InstanceTypes'] = @($value)
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name SecurityGroupIds -Value {
            $this.Properties['SecurityGroupIds']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object[]] $value)
            $this.Properties['SecurityGroupIds'] = @($value)
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Logging -Value {
            $this.Properties['Logging']
        } -SecondValue {
            param([ValidateType(([string], [VSJson], [VSYaml], [psobject], [IDictionary]))][object] $value)
            $this.Properties['Logging'] = [VSJson]::Transform($value)
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name SubnetId -Value {
            $this.Properties['SubnetId']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['SubnetId'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name KeyPair -Value {
            $this.Properties['KeyPair']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['KeyPair'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name TerminateInstanceOnFailure -Value {
            $this.Properties['TerminateInstanceOnFailure']
        } -SecondValue {
            param([ValidateType(([bool], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['TerminateInstanceOnFailure'] = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name InstanceProfileName -Value {
            $this.Properties['InstanceProfileName']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['InstanceProfileName'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name SnsTopicArn -Value {
            $this.Properties['SnsTopicArn']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['SnsTopicArn'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name ResourceTags -Value {
            $this.Properties['ResourceTags']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['ResourceTags'] = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Tags -Value {
            $this.Properties['Tags']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['Tags'] = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Condition -Value {
            $this._condition
        } -SecondValue {
            param(
                [ValidateType(([string], [IntrinsicFunction], [ConditionFunction]))] [object]
                $value
            )
            $this._condition = $value
        }
    }

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

Write-Verbose "Importing class 'ImageBuilderImagePipeline'"

class ImageBuilderImagePipeline : VSResource {
    hidden [string] $_vsFunctionName = 'New-VSImageBuilderImagePipeline'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-imagebuilder-imagepipeline.html'

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

    [string] $Type = 'AWS::ImageBuilder::ImagePipeline'
    [string] $Name
    [string] $Description
    [ImageBuilderImagePipelineImageTestsConfiguration] $ImageTestsConfiguration
    [string] $Status
    [ImageBuilderImagePipelineSchedule] $Schedule
    [string] $ImageRecipeArn
    [string] $ContainerRecipeArn
    [string] $DistributionConfigurationArn
    [string] $InfrastructureConfigurationArn
    [bool] $EnhancedImageMetadataEnabled
    [string] $Tags
    [VSJson] $Metadata
    [UpdatePolicy] $UpdatePolicy
    [string] $Condition

    hidden [void] _addAccessors() {
        $this._addBaseAccessors()
        $this | Add-Member -Force -MemberType ScriptProperty -Name Name -Value {
            $this.Properties['Name']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['Name'] = 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 ImageTestsConfiguration -Value {
            $this.Properties['ImageTestsConfiguration']
        } -SecondValue {
            param([ValidateType(([ImageBuilderImagePipelineImageTestsConfiguration], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['ImageTestsConfiguration'] = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Status -Value {
            $this.Properties['Status']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['Status'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Schedule -Value {
            $this.Properties['Schedule']
        } -SecondValue {
            param([ValidateType(([ImageBuilderImagePipelineSchedule], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['Schedule'] = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name ImageRecipeArn -Value {
            $this.Properties['ImageRecipeArn']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['ImageRecipeArn'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name ContainerRecipeArn -Value {
            $this.Properties['ContainerRecipeArn']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['ContainerRecipeArn'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name DistributionConfigurationArn -Value {
            $this.Properties['DistributionConfigurationArn']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['DistributionConfigurationArn'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name InfrastructureConfigurationArn -Value {
            $this.Properties['InfrastructureConfigurationArn']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['InfrastructureConfigurationArn'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name EnhancedImageMetadataEnabled -Value {
            $this.Properties['EnhancedImageMetadataEnabled']
        } -SecondValue {
            param([ValidateType(([bool], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['EnhancedImageMetadataEnabled'] = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Tags -Value {
            $this.Properties['Tags']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['Tags'] = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Condition -Value {
            $this._condition
        } -SecondValue {
            param(
                [ValidateType(([string], [IntrinsicFunction], [ConditionFunction]))] [object]
                $value
            )
            $this._condition = $value
        }
    }

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

Write-Verbose "Importing class 'ImageBuilderDistributionConfiguration'"

class ImageBuilderDistributionConfiguration : VSResource {
    hidden [string] $_vsFunctionName = 'New-VSImageBuilderDistributionConfiguration'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-imagebuilder-distributionconfiguration.html'

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

    [string] $Type = 'AWS::ImageBuilder::DistributionConfiguration'
    [string] $Name
    [string] $Description
    [ImageBuilderDistributionConfigurationDistribution[]] $Distributions
    [string] $Tags
    [VSJson] $Metadata
    [UpdatePolicy] $UpdatePolicy
    [string] $Condition

    hidden [void] _addAccessors() {
        $this._addBaseAccessors()
        $this | Add-Member -Force -MemberType ScriptProperty -Name Name -Value {
            $this.Properties['Name']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['Name'] = 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 Distributions -Value {
            $this.Properties['Distributions']
        } -SecondValue {
            param([ValidateType(([ImageBuilderDistributionConfigurationDistribution], [IntrinsicFunction], [ConditionFunction]))] [object[]] $value)
            $this.Properties['Distributions'] = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Tags -Value {
            $this.Properties['Tags']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['Tags'] = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Condition -Value {
            $this._condition
        } -SecondValue {
            param(
                [ValidateType(([string], [IntrinsicFunction], [ConditionFunction]))] [object]
                $value
            )
            $this._condition = $value
        }
    }

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

Write-Verbose "Importing class 'ImageBuilderContainerRecipe'"

class ImageBuilderContainerRecipe : VSResource {
    hidden [string] $_vsFunctionName = 'New-VSImageBuilderContainerRecipe'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-imagebuilder-containerrecipe.html'

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

    [string] $Type = 'AWS::ImageBuilder::ContainerRecipe'
    [string] $Name
    [string] $Description
    [string] $Version
    [ImageBuilderContainerRecipeComponentConfiguration[]] $Components
    [string] $DockerfileTemplateData
    [string] $DockerfileTemplateUri
    [string] $PlatformOverride
    [string] $ContainerType
    [string] $ImageOsVersionOverride
    [ImageBuilderContainerRecipeTargetContainerRepository] $TargetRepository
    [string] $KmsKeyId
    [string] $ParentImage
    [string] $WorkingDirectory
    [string] $Tags
    [VSJson] $Metadata
    [UpdatePolicy] $UpdatePolicy
    [string] $Condition

    hidden [void] _addAccessors() {
        $this._addBaseAccessors()
        $this | Add-Member -Force -MemberType ScriptProperty -Name Name -Value {
            $this.Properties['Name']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['Name'] = 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 Version -Value {
            $this.Properties['Version']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['Version'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Components -Value {
            $this.Properties['Components']
        } -SecondValue {
            param([ValidateType(([ImageBuilderContainerRecipeComponentConfiguration], [IntrinsicFunction], [ConditionFunction]))] [object[]] $value)
            $this.Properties['Components'] = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name DockerfileTemplateData -Value {
            $this.Properties['DockerfileTemplateData']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['DockerfileTemplateData'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name DockerfileTemplateUri -Value {
            $this.Properties['DockerfileTemplateUri']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['DockerfileTemplateUri'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name PlatformOverride -Value {
            $this.Properties['PlatformOverride']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['PlatformOverride'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name ContainerType -Value {
            $this.Properties['ContainerType']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['ContainerType'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name ImageOsVersionOverride -Value {
            $this.Properties['ImageOsVersionOverride']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['ImageOsVersionOverride'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name TargetRepository -Value {
            $this.Properties['TargetRepository']
        } -SecondValue {
            param([ValidateType(([ImageBuilderContainerRecipeTargetContainerRepository], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['TargetRepository'] = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name KmsKeyId -Value {
            $this.Properties['KmsKeyId']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['KmsKeyId'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name ParentImage -Value {
            $this.Properties['ParentImage']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['ParentImage'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name WorkingDirectory -Value {
            $this.Properties['WorkingDirectory']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['WorkingDirectory'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Tags -Value {
            $this.Properties['Tags']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['Tags'] = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Condition -Value {
            $this._condition
        } -SecondValue {
            param(
                [ValidateType(([string], [IntrinsicFunction], [ConditionFunction]))] [object]
                $value
            )
            $this._condition = $value
        }
    }

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

Write-Verbose "Importing class 'ImageBuilderImageRecipe'"

class ImageBuilderImageRecipe : VSResource {
    hidden [string] $_vsFunctionName = 'New-VSImageBuilderImageRecipe'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-imagebuilder-imagerecipe.html'

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

    [string] $Type = 'AWS::ImageBuilder::ImageRecipe'
    [string] $Name
    [string] $Description
    [string] $Version
    [ImageBuilderImageRecipeComponentConfiguration[]] $Components
    [ImageBuilderImageRecipeInstanceBlockDeviceMapping[]] $BlockDeviceMappings
    [string] $ParentImage
    [string] $WorkingDirectory
    [string] $Tags
    [VSJson] $Metadata
    [UpdatePolicy] $UpdatePolicy
    [string] $Condition

    hidden [void] _addAccessors() {
        $this._addBaseAccessors()
        $this | Add-Member -Force -MemberType ScriptProperty -Name Name -Value {
            $this.Properties['Name']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['Name'] = 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 Version -Value {
            $this.Properties['Version']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['Version'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Components -Value {
            $this.Properties['Components']
        } -SecondValue {
            param([ValidateType(([ImageBuilderImageRecipeComponentConfiguration], [IntrinsicFunction], [ConditionFunction]))] [object[]] $value)
            $this.Properties['Components'] = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name BlockDeviceMappings -Value {
            $this.Properties['BlockDeviceMappings']
        } -SecondValue {
            param([ValidateType(([ImageBuilderImageRecipeInstanceBlockDeviceMapping], [IntrinsicFunction], [ConditionFunction]))] [object[]] $value)
            $this.Properties['BlockDeviceMappings'] = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name ParentImage -Value {
            $this.Properties['ParentImage']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['ParentImage'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name WorkingDirectory -Value {
            $this.Properties['WorkingDirectory']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['WorkingDirectory'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Tags -Value {
            $this.Properties['Tags']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['Tags'] = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Condition -Value {
            $this._condition
        } -SecondValue {
            param(
                [ValidateType(([string], [IntrinsicFunction], [ConditionFunction]))] [object]
                $value
            )
            $this._condition = $value
        }
    }

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

Write-Verbose "Importing class 'ImageBuilderImage'"

class ImageBuilderImage : VSResource {
    hidden [string] $_vsFunctionName = 'New-VSImageBuilderImage'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-imagebuilder-image.html'

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

    [string] $Type = 'AWS::ImageBuilder::Image'
    [ImageBuilderImageImageTestsConfiguration] $ImageTestsConfiguration
    [string] $ImageRecipeArn
    [string] $ContainerRecipeArn
    [string] $DistributionConfigurationArn
    [string] $InfrastructureConfigurationArn
    [bool] $EnhancedImageMetadataEnabled
    [string] $Tags
    [VSJson] $Metadata
    [UpdatePolicy] $UpdatePolicy
    [string] $Condition

    hidden [void] _addAccessors() {
        $this._addBaseAccessors()
        $this | Add-Member -Force -MemberType ScriptProperty -Name ImageTestsConfiguration -Value {
            $this.Properties['ImageTestsConfiguration']
        } -SecondValue {
            param([ValidateType(([ImageBuilderImageImageTestsConfiguration], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['ImageTestsConfiguration'] = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name ImageRecipeArn -Value {
            $this.Properties['ImageRecipeArn']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['ImageRecipeArn'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name ContainerRecipeArn -Value {
            $this.Properties['ContainerRecipeArn']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['ContainerRecipeArn'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name DistributionConfigurationArn -Value {
            $this.Properties['DistributionConfigurationArn']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['DistributionConfigurationArn'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name InfrastructureConfigurationArn -Value {
            $this.Properties['InfrastructureConfigurationArn']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['InfrastructureConfigurationArn'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name EnhancedImageMetadataEnabled -Value {
            $this.Properties['EnhancedImageMetadataEnabled']
        } -SecondValue {
            param([ValidateType(([bool], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['EnhancedImageMetadataEnabled'] = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Tags -Value {
            $this.Properties['Tags']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['Tags'] = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Condition -Value {
            $this._condition
        } -SecondValue {
            param(
                [ValidateType(([string], [IntrinsicFunction], [ConditionFunction]))] [object]
                $value
            )
            $this._condition = $value
        }
    }

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