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 '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 'EKSClusterClusterLogging'"

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

    hidden [object] $_enabledTypes

    [EKSClusterLoggingTypeConfig[]] $EnabledTypes

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

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

Write-Verbose "Importing class 'EKSNodegroupTaint'"

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

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

    [string] $Value
    [string] $Effect
    [string] $Key

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

    EKSNodegroupTaint() : base() {}
    EKSNodegroupTaint([IDictionary] $props) : base($props) {}
    EKSNodegroupTaint([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 [VSJson] $_provider

    [string[]] $Resources
    [VSJson] $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(([string], [VSJson], [VSYaml], [psobject], [IDictionary]))][object] $value)
            $this._provider = [VSJson]::Transform($value)
            Write-Debug $this._provider
        }
    }

    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
    hidden [object] $_serviceIpv6Cidr
    hidden [object] $_ipFamily

    [string] $ServiceIpv4Cidr
    [string] $ServiceIpv6Cidr
    [string] $IpFamily

    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
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name ServiceIpv6Cidr -Value {
            $this._serviceIpv6Cidr
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._serviceIpv6Cidr = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name IpFamily -Value {
            $this._ipFamily
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._ipFamily = 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 'EKSNodegroupUpdateConfig'"

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

    hidden [object] $_maxUnavailablePercentage
    hidden [object] $_maxUnavailable

    [double] $MaxUnavailablePercentage
    [double] $MaxUnavailable

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name MaxUnavailablePercentage -Value {
            $this._maxUnavailablePercentage
        } -SecondValue {
            param([ValidateType(([double], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._maxUnavailablePercentage = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name MaxUnavailable -Value {
            $this._maxUnavailable
        } -SecondValue {
            param([ValidateType(([double], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._maxUnavailable = $value
        }
    }

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

Write-Verbose "Importing class 'EKSClusterLogging'"

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

    hidden [object] $_clusterLogging

    [EKSClusterClusterLogging] $ClusterLogging

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

    EKSClusterLogging() : base() {}
    EKSClusterLogging([IDictionary] $props) : base($props) {}
    EKSClusterLogging([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 'EKSClusterLoggingTypeConfig'"

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

    hidden [object] $_type

    [string] $Type

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

    EKSClusterLoggingTypeConfig() : base() {}
    EKSClusterLoggingTypeConfig([IDictionary] $props) : base($props) {}
    EKSClusterLoggingTypeConfig([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] $_endpointPublicAccess
    hidden [object] $_publicAccessCidrs
    hidden [object] $_endpointPrivateAccess
    hidden [object] $_securityGroupIds
    hidden [object] $_subnetIds

    [bool] $EndpointPublicAccess
    [string[]] $PublicAccessCidrs
    [bool] $EndpointPrivateAccess
    [string[]] $SecurityGroupIds
    [string[]] $SubnetIds

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name EndpointPublicAccess -Value {
            $this._endpointPublicAccess
        } -SecondValue {
            param([ValidateType(([bool], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._endpointPublicAccess = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name PublicAccessCidrs -Value {
            $this._publicAccessCidrs
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object[]] $value)
            $this._publicAccessCidrs = @($value)
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name EndpointPrivateAccess -Value {
            $this._endpointPrivateAccess
        } -SecondValue {
            param([ValidateType(([bool], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._endpointPrivateAccess = $value
        }
        $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'
    [EKSNodegroupUpdateConfig] $UpdateConfig
    [EKSNodegroupScalingConfig] $ScalingConfig
    [VSJson] $Labels
    [EKSNodegroupTaint[]] $Taints
    [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 UpdateConfig -Value {
            $this.Properties['UpdateConfig']
        } -SecondValue {
            param([ValidateType(([EKSNodegroupUpdateConfig], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['UpdateConfig'] = $value
        }
        $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 Taints -Value {
            $this.Properties['Taints']
        } -SecondValue {
            param([ValidateType(([EKSNodegroupTaint], [IntrinsicFunction], [ConditionFunction]))] [object[]] $value)
            $this.Properties['Taints'] = $value
        }
        $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 = @('EncryptionConfigKeyArn','CertificateAuthorityData','KubernetesNetworkConfig.ServiceIpv6Cidr','Endpoint','ClusterSecurityGroupId','Arn','OpenIdConnectIssuerUrl')
    hidden [object] $_condition

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

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

    EKSCluster() : base() {}
    EKSCluster([IDictionary] $props) : base($props) {}
    EKSCluster([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) {}
}

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) {}
}