VaporShell.EKS.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 'EKSClusterProvider'"

class EKSClusterProvider : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSEKSClusterProvider'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-eks-cluster-provider.html'

    hidden [object] $_keyArn

    [string] $KeyArn

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

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

Write-Verbose "Importing class 'EKSFargateProfileLabel'"

class EKSFargateProfileLabel : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSEKSFargateProfileLabel'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-eks-fargateprofile-label.html'

    hidden [object] $_key
    hidden [object] $_value

    [string] $Key
    [string] $Value

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

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

Write-Verbose "Importing class 'EKSClusterEncryptionConfig'"

class EKSClusterEncryptionConfig : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSEKSClusterEncryptionConfig'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-eks-cluster-encryptionconfig.html'

    hidden [object] $_resources
    hidden [object] $_provider

    [string[]] $Resources
    [EKSClusterProvider] $Provider

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name Resources -Value {
            $this._resources
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object[]] $value)
            $this._resources = @($value)
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Provider -Value {
            $this._provider
        } -SecondValue {
            param([ValidateType(([EKSClusterProvider], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._provider = $value
        }
    }

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

Write-Verbose "Importing class 'EKSClusterKubernetesNetworkConfig'"

class EKSClusterKubernetesNetworkConfig : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSEKSClusterKubernetesNetworkConfig'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-eks-cluster-kubernetesnetworkconfig.html'

    hidden [object] $_serviceIpv4Cidr

    [string] $ServiceIpv4Cidr

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

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

Write-Verbose "Importing class 'EKSNodegroupLaunchTemplateSpecification'"

class EKSNodegroupLaunchTemplateSpecification : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSEKSNodegroupLaunchTemplateSpecification'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-eks-nodegroup-launchtemplatespecification.html'

    hidden [object] $_version
    hidden [object] $_id
    hidden [object] $_name

    [string] $Version
    [string] $Id
    [string] $Name

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

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

Write-Verbose "Importing class 'EKSFargateProfileSelector'"

class EKSFargateProfileSelector : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSEKSFargateProfileSelector'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-eks-fargateprofile-selector.html'

    hidden [object] $_namespace
    hidden [object] $_labels

    [string] $Namespace
    [EKSFargateProfileLabel[]] $Labels

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

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

Write-Verbose "Importing class 'EKSNodegroupScalingConfig'"

class EKSNodegroupScalingConfig : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSEKSNodegroupScalingConfig'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-eks-nodegroup-scalingconfig.html'

    hidden [object] $_minSize
    hidden [object] $_desiredSize
    hidden [object] $_maxSize

    [double] $MinSize
    [double] $DesiredSize
    [double] $MaxSize

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name MinSize -Value {
            $this._minSize
        } -SecondValue {
            param([ValidateType(([double], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._minSize = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name DesiredSize -Value {
            $this._desiredSize
        } -SecondValue {
            param([ValidateType(([double], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._desiredSize = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name MaxSize -Value {
            $this._maxSize
        } -SecondValue {
            param([ValidateType(([double], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._maxSize = $value
        }
    }

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

Write-Verbose "Importing class 'EKSNodegroupRemoteAccess'"

class EKSNodegroupRemoteAccess : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSEKSNodegroupRemoteAccess'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-eks-nodegroup-remoteaccess.html'

    hidden [object] $_sourceSecurityGroups
    hidden [object] $_ec2SshKey

    [string[]] $SourceSecurityGroups
    [string] $Ec2SshKey

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

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

Write-Verbose "Importing class 'EKSClusterResourcesVpcConfig'"

class EKSClusterResourcesVpcConfig : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSEKSClusterResourcesVpcConfig'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-eks-cluster-resourcesvpcconfig.html'

    hidden [object] $_securityGroupIds
    hidden [object] $_subnetIds

    [string[]] $SecurityGroupIds
    [string[]] $SubnetIds

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name SecurityGroupIds -Value {
            $this._securityGroupIds
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object[]] $value)
            $this._securityGroupIds = @($value)
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name SubnetIds -Value {
            $this._subnetIds
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object[]] $value)
            $this._subnetIds = @($value)
        }
    }

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

Write-Verbose "Importing class 'EKSNodegroup'"

class EKSNodegroup : VSResource {
    hidden [string] $_vsFunctionName = 'New-VSEKSNodegroup'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-eks-nodegroup.html'

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

    [string] $Type = 'AWS::EKS::Nodegroup'
    [EKSNodegroupScalingConfig] $ScalingConfig
    [VSJson] $Labels
    [string] $ReleaseVersion
    [string] $CapacityType
    [string] $NodegroupName
    [string[]] $Subnets
    [string] $NodeRole
    [string] $AmiType
    [bool] $ForceUpdateEnabled
    [string] $Version
    [EKSNodegroupLaunchTemplateSpecification] $LaunchTemplate
    [EKSNodegroupRemoteAccess] $RemoteAccess
    [double] $DiskSize
    [string] $ClusterName
    [string[]] $InstanceTypes
    [VSJson] $Tags
    [VSJson] $Metadata
    [UpdatePolicy] $UpdatePolicy
    [string] $Condition

    hidden [void] _addAccessors() {
        $this._addBaseAccessors()
        $this | Add-Member -Force -MemberType ScriptProperty -Name ScalingConfig -Value {
            $this.Properties['ScalingConfig']
        } -SecondValue {
            param([ValidateType(([EKSNodegroupScalingConfig], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['ScalingConfig'] = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Labels -Value {
            $this.Properties['Labels']
        } -SecondValue {
            param([ValidateType(([string], [VSJson], [VSYaml], [psobject], [IDictionary]))][object] $value)
            $this.Properties['Labels'] = [VSJson]::Transform($value)
            Write-Debug $this.Properties['Labels']
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name ReleaseVersion -Value {
            $this.Properties['ReleaseVersion']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['ReleaseVersion'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name CapacityType -Value {
            $this.Properties['CapacityType']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['CapacityType'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name NodegroupName -Value {
            $this.Properties['NodegroupName']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['NodegroupName'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Subnets -Value {
            $this.Properties['Subnets']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object[]] $value)
            $this.Properties['Subnets'] = @($value)
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name NodeRole -Value {
            $this.Properties['NodeRole']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['NodeRole'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name AmiType -Value {
            $this.Properties['AmiType']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['AmiType'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name ForceUpdateEnabled -Value {
            $this.Properties['ForceUpdateEnabled']
        } -SecondValue {
            param([ValidateType(([bool], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['ForceUpdateEnabled'] = $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 LaunchTemplate -Value {
            $this.Properties['LaunchTemplate']
        } -SecondValue {
            param([ValidateType(([EKSNodegroupLaunchTemplateSpecification], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['LaunchTemplate'] = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name RemoteAccess -Value {
            $this.Properties['RemoteAccess']
        } -SecondValue {
            param([ValidateType(([EKSNodegroupRemoteAccess], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['RemoteAccess'] = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name DiskSize -Value {
            $this.Properties['DiskSize']
        } -SecondValue {
            param([ValidateType(([double], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['DiskSize'] = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name ClusterName -Value {
            $this.Properties['ClusterName']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['ClusterName'] = 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 Tags -Value {
            $this.Properties['Tags']
        } -SecondValue {
            param([ValidateType(([string], [VSJson], [VSYaml], [psobject], [IDictionary]))][object] $value)
            $this.Properties['Tags'] = [VSJson]::Transform($value)
            Write-Debug $this.Properties['Tags']
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Condition -Value {
            $this._condition
        } -SecondValue {
            param(
                [ValidateType(([string], [IntrinsicFunction], [ConditionFunction]))] [object]
                $value
            )
            $this._condition = $value
        }
    }

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

Write-Verbose "Importing class 'EKSCluster'"

class EKSCluster : VSResource {
    hidden [string] $_vsFunctionName = 'New-VSEKSCluster'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-eks-cluster.html'

    hidden [string[]] $_attributes = @('Endpoint','ClusterSecurityGroupId','EncryptionConfigKeyArn','Arn','CertificateAuthorityData')
    hidden [object] $_condition

    [string] $Type = 'AWS::EKS::Cluster'
    [string] $Version
    [EKSClusterEncryptionConfig[]] $EncryptionConfig
    [string] $RoleArn
    [EKSClusterResourcesVpcConfig] $ResourcesVpcConfig
    [EKSClusterKubernetesNetworkConfig] $KubernetesNetworkConfig
    [string] $Name
    [VSJson] $Metadata
    [UpdatePolicy] $UpdatePolicy
    [string] $Condition

    hidden [void] _addAccessors() {
        $this._addBaseAccessors()
        $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 EncryptionConfig -Value {
            $this.Properties['EncryptionConfig']
        } -SecondValue {
            param([ValidateType(([EKSClusterEncryptionConfig], [IntrinsicFunction], [ConditionFunction]))] [object[]] $value)
            $this.Properties['EncryptionConfig'] = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name RoleArn -Value {
            $this.Properties['RoleArn']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['RoleArn'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name ResourcesVpcConfig -Value {
            $this.Properties['ResourcesVpcConfig']
        } -SecondValue {
            param([ValidateType(([EKSClusterResourcesVpcConfig], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['ResourcesVpcConfig'] = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name KubernetesNetworkConfig -Value {
            $this.Properties['KubernetesNetworkConfig']
        } -SecondValue {
            param([ValidateType(([EKSClusterKubernetesNetworkConfig], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['KubernetesNetworkConfig'] = $value
        }
        $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 Condition -Value {
            $this._condition
        } -SecondValue {
            param(
                [ValidateType(([string], [IntrinsicFunction], [ConditionFunction]))] [object]
                $value
            )
            $this._condition = $value
        }
    }

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

Write-Verbose "Importing class 'EKSAddon'"

class EKSAddon : VSResource {
    hidden [string] $_vsFunctionName = 'New-VSEKSAddon'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-eks-addon.html'

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

    [string] $Type = 'AWS::EKS::Addon'
    [string] $ClusterName
    [string] $AddonName
    [string] $AddonVersion
    [string] $ResolveConflicts
    [string] $ServiceAccountRoleArn
    [VSTag[]] $Tags
    [VSJson] $Metadata
    [UpdatePolicy] $UpdatePolicy
    [string] $Condition

    hidden [void] _addAccessors() {
        $this._addBaseAccessors()
        $this | Add-Member -Force -MemberType ScriptProperty -Name ClusterName -Value {
            $this.Properties['ClusterName']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['ClusterName'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name AddonName -Value {
            $this.Properties['AddonName']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['AddonName'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name AddonVersion -Value {
            $this.Properties['AddonVersion']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['AddonVersion'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name ResolveConflicts -Value {
            $this.Properties['ResolveConflicts']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['ResolveConflicts'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name ServiceAccountRoleArn -Value {
            $this.Properties['ServiceAccountRoleArn']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['ServiceAccountRoleArn'] = 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 Condition -Value {
            $this._condition
        } -SecondValue {
            param(
                [ValidateType(([string], [IntrinsicFunction], [ConditionFunction]))] [object]
                $value
            )
            $this._condition = $value
        }
    }

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

Write-Verbose "Importing class 'EKSFargateProfile'"

class EKSFargateProfile : VSResource {
    hidden [string] $_vsFunctionName = 'New-VSEKSFargateProfile'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-eks-fargateprofile.html'

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

    [string] $Type = 'AWS::EKS::FargateProfile'
    [string] $ClusterName
    [string] $FargateProfileName
    [string] $PodExecutionRoleArn
    [string[]] $Subnets
    [EKSFargateProfileSelector[]] $Selectors
    [VSTag[]] $Tags
    [VSJson] $Metadata
    [UpdatePolicy] $UpdatePolicy
    [string] $Condition

    hidden [void] _addAccessors() {
        $this._addBaseAccessors()
        $this | Add-Member -Force -MemberType ScriptProperty -Name ClusterName -Value {
            $this.Properties['ClusterName']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['ClusterName'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name FargateProfileName -Value {
            $this.Properties['FargateProfileName']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['FargateProfileName'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name PodExecutionRoleArn -Value {
            $this.Properties['PodExecutionRoleArn']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['PodExecutionRoleArn'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Subnets -Value {
            $this.Properties['Subnets']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object[]] $value)
            $this.Properties['Subnets'] = @($value)
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Selectors -Value {
            $this.Properties['Selectors']
        } -SecondValue {
            param([ValidateType(([EKSFargateProfileSelector], [IntrinsicFunction], [ConditionFunction]))] [object[]] $value)
            $this.Properties['Selectors'] = $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
        }
    }

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