pspulumiyaml.azurenative.hybridnetwork.psm1

using module pspulumiyaml
function Invoke-AzureNativeFunctionHybridnetworkGetVendorSkuPreview
{
    param (
        [parameter(mandatory=$False,HelpMessage='The name of the vendor.)')]
        [string]
        $vendorName,
        [parameter(mandatory=$False,HelpMessage='The name of the vendor sku.)')]
        [string]
        $skuName,
        [parameter(mandatory=$False,HelpMessage='Preview subscription ID.)')]
        [string]
        $previewSubscription
    )

    process
    {
        $arguments = @{}
        $arguments["previewSubscription"] = $previewSubscription
        $arguments["skuName"] = $skuName
        $arguments["vendorName"] = $vendorName

        $functionObject = Invoke-PulumiFunction -Name azure-native:hybridnetwork:getVendorSkuPreview -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionHybridnetworkListDeviceRegistrationKey
{
    param (
        [parameter(mandatory=$False,HelpMessage='The name of the resource group. The name is case insensitive.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='The name of the device resource.)')]
        [string]
        $deviceName
    )

    process
    {
        $arguments = @{}
        $arguments["deviceName"] = $deviceName
        $arguments["resourceGroupName"] = $resourceGroupName

        $functionObject = Invoke-PulumiFunction -Name azure-native:hybridnetwork:listDeviceRegistrationKey -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionHybridnetworkGetDevice
{
    param (
        [parameter(mandatory=$False,HelpMessage='The name of the resource group. The name is case insensitive.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='The name of the device resource.)')]
        [string]
        $deviceName
    )

    process
    {
        $arguments = @{}
        $arguments["deviceName"] = $deviceName
        $arguments["resourceGroupName"] = $resourceGroupName

        $functionObject = Invoke-PulumiFunction -Name azure-native:hybridnetwork:getDevice -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionHybridnetworkGetVendorSkus
{
    param (
        [parameter(mandatory=$False,HelpMessage='The name of the sku.)')]
        [string]
        $skuName,
        [parameter(mandatory=$False,HelpMessage='The name of the vendor.)')]
        [string]
        $vendorName
    )

    process
    {
        $arguments = @{}
        $arguments["skuName"] = $skuName
        $arguments["vendorName"] = $vendorName

        $functionObject = Invoke-PulumiFunction -Name azure-native:hybridnetwork:getVendorSkus -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionHybridnetworkListVendorSkusCredential
{
    param (
        [parameter(mandatory=$False,HelpMessage='The name of the sku.)')]
        [string]
        $skuName,
        [parameter(mandatory=$False,HelpMessage='The name of the vendor.)')]
        [string]
        $vendorName
    )

    process
    {
        $arguments = @{}
        $arguments["skuName"] = $skuName
        $arguments["vendorName"] = $vendorName

        $functionObject = Invoke-PulumiFunction -Name azure-native:hybridnetwork:listVendorSkusCredential -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionHybridnetworkGetVendor
{
    param (
        [parameter(mandatory=$False,HelpMessage='The name of the vendor.)')]
        [string]
        $vendorName
    )

    process
    {
        $arguments = @{}
        $arguments["vendorName"] = $vendorName

        $functionObject = Invoke-PulumiFunction -Name azure-native:hybridnetwork:getVendor -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionHybridnetworkGetNetworkFunction
{
    param (
        [parameter(mandatory=$False,HelpMessage='The name of the resource group. The name is case insensitive.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='The name of the network function resource.)')]
        [string]
        $networkFunctionName
    )

    process
    {
        $arguments = @{}
        $arguments["networkFunctionName"] = $networkFunctionName
        $arguments["resourceGroupName"] = $resourceGroupName

        $functionObject = Invoke-PulumiFunction -Name azure-native:hybridnetwork:getNetworkFunction -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
class SubResource
{
    [string] $id
}
function New-AzureNativeTypeHybridnetworkSubResource
{
    param (
        [parameter(mandatory=$False,HelpMessage='Resource ID.)')]
        [string]
        $id
    )

    process
    {
        return $([SubResource]$PSBoundParameters)
    }
}
function New-AzureNativeHybridnetworkNetworkFunction
{
    [Alias('azure_native_hybridnetwork_networkfunction')]
    param (
        [parameter(mandatory=$False,HelpMessage='The name of the resource group. The name is case insensitive.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='The vendor name for the network function.)')]
        [string]
        $vendorName,
        [parameter(mandatory=$False,HelpMessage='The network function configurations from the user.)')]
        $networkFunctionUserConfigurations,
        [parameter(mandatory=$False,HelpMessage='The parameters for the managed application.)')]
        $managedApplicationParameters,
        [parameter(mandatory=$False,HelpMessage='Resource name for the network function resource.)')]
        [string]
        $networkFunctionName,
        [parameter(mandatory=$False,HelpMessage='Resource tags.)')]
        [hashtable]
        $tags,
        [parameter(mandatory=$False,HelpMessage='The reference to the device resource.)')]
        [SubResource]
        $device,
        [parameter(mandatory=$False,HelpMessage='The sku name for the network function.)')]
        [string]
        $skuName,
        [parameter(mandatory=$False,HelpMessage='The geo-location where the resource lives)')]
        [string]
        $location,
        [parameter(mandatory,HelpMessage='The reference to call when you want to make a dependency to another resource')]
        [string]
        $pulumiid
    )

    process
    {
        $resource = [pulumiresource]::new($pulumiid, "azure-native:hybridnetwork:NetworkFunction")

        $resource.properties["resourceGroupName"] = $resourceGroupName

        if($PSBoundParameters.Keys -icontains 'vendorName')
        {
            $resource.properties["vendorName"] = $vendorName
        }

        if($PSBoundParameters.Keys -icontains 'networkFunctionUserConfigurations')
        {
            $resource.properties["networkFunctionUserConfigurations"] = $networkFunctionUserConfigurations
        }

        if($PSBoundParameters.Keys -icontains 'managedApplicationParameters')
        {
            $resource.properties["managedApplicationParameters"] = $managedApplicationParameters
        }

        if($PSBoundParameters.Keys -icontains 'networkFunctionName')
        {
            $resource.properties["networkFunctionName"] = $networkFunctionName
        }

        if($PSBoundParameters.Keys -icontains 'tags')
        {
            $resource.properties["tags"] = $tags
        }

        if($PSBoundParameters.Keys -icontains 'device')
        {
            $resource.properties["device"] = $device
        }

        if($PSBoundParameters.Keys -icontains 'skuName')
        {
            $resource.properties["skuName"] = $skuName
        }

        if($PSBoundParameters.Keys -icontains 'location')
        {
            $resource.properties["location"] = $location
        }

        $global:pulumiresources += $resource
        return $resource
    }
}
function New-AzureNativeHybridnetworkVendor
{
    [Alias('azure_native_hybridnetwork_vendor')]
    param (
        [parameter(mandatory=$False,HelpMessage='The name of the vendor.)')]
        [string]
        $vendorName,
        [parameter(mandatory,HelpMessage='The reference to call when you want to make a dependency to another resource')]
        [string]
        $pulumiid
    )

    process
    {
        $resource = [pulumiresource]::new($pulumiid, "azure-native:hybridnetwork:Vendor")


        if($PSBoundParameters.Keys -icontains 'vendorName')
        {
            $resource.properties["vendorName"] = $vendorName
        }

        $global:pulumiresources += $resource
        return $resource
    }
}
function New-AzureNativeHybridnetworkDevice
{
    [Alias('azure_native_hybridnetwork_device')]
    param (
        [parameter(mandatory=$False,HelpMessage='The name of the resource group. The name is case insensitive.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='The geo-location where the resource lives)')]
        [string]
        $location,
        [parameter(mandatory=$False,HelpMessage='The type of the device.)')]
        [string]
        [ValidateSet('Unknown', 'AzureStackEdge')]
        $deviceType,
        [parameter(mandatory=$False,HelpMessage='Resource tags.)')]
        [hashtable]
        $tags,
        [parameter(mandatory=$False,HelpMessage='Resource name for the device resource.)')]
        [string]
        $deviceName,
        [parameter(mandatory,HelpMessage='The reference to call when you want to make a dependency to another resource')]
        [string]
        $pulumiid
    )

    process
    {
        $resource = [pulumiresource]::new($pulumiid, "azure-native:hybridnetwork:Device")

        $resource.properties["deviceType"] = $deviceType
        $resource.properties["resourceGroupName"] = $resourceGroupName

        if($PSBoundParameters.Keys -icontains 'location')
        {
            $resource.properties["location"] = $location
        }

        if($PSBoundParameters.Keys -icontains 'tags')
        {
            $resource.properties["tags"] = $tags
        }

        if($PSBoundParameters.Keys -icontains 'deviceName')
        {
            $resource.properties["deviceName"] = $deviceName
        }

        $global:pulumiresources += $resource
        return $resource
    }
}
function New-AzureNativeHybridnetworkVendorSkuPreview
{
    [Alias('azure_native_hybridnetwork_vendorskupreview')]
    param (
        [parameter(mandatory=$False,HelpMessage='The name of the vendor.)')]
        [string]
        $vendorName,
        [parameter(mandatory=$False,HelpMessage='The name of the vendor sku.)')]
        [string]
        $skuName,
        [parameter(mandatory=$False,HelpMessage='Preview subscription ID.)')]
        [string]
        $previewSubscription,
        [parameter(mandatory,HelpMessage='The reference to call when you want to make a dependency to another resource')]
        [string]
        $pulumiid
    )

    process
    {
        $resource = [pulumiresource]::new($pulumiid, "azure-native:hybridnetwork:VendorSkuPreview")

        $resource.properties["skuName"] = $skuName
        $resource.properties["vendorName"] = $vendorName

        if($PSBoundParameters.Keys -icontains 'previewSubscription')
        {
            $resource.properties["previewSubscription"] = $previewSubscription
        }

        $global:pulumiresources += $resource
        return $resource
    }
}
class NetworkInterfaceIPConfiguration
{
    [ValidateSet('Unknown', 'IPv4')]
    [string] $ipVersion
    [ValidateSet('Unknown', 'IPv4')]
    [string] $subnet
    [ValidateSet('Unknown', 'Static', 'Dynamic')]
    [string] $ipAllocationMethod
    [ValidateSet('Unknown', 'Static', 'Dynamic')]
    [string[]] $dnsServers
    [ValidateSet('Unknown', 'Static', 'Dynamic')]
    [string] $gateway
    [ValidateSet('Unknown', 'Static', 'Dynamic')]
    [string] $ipAddress
}
function New-AzureNativeTypeHybridnetworkNetworkInterfaceIPConfiguration
{
    param (
        [parameter(mandatory=$False,HelpMessage='IP address version.)')]
        [string]
        [ValidateSet('Unknown', 'IPv4')]
        $ipVersion,
        [parameter(mandatory=$False,HelpMessage='The value of the subnet.)')]
        [string]
        $subnet,
        [parameter(mandatory=$False,HelpMessage='IP address allocation method.)')]
        [string]
        [ValidateSet('Unknown', 'Static', 'Dynamic')]
        $ipAllocationMethod,
        [parameter(mandatory=$False,HelpMessage='The list of DNS servers IP addresses.)')]
        [string[]]
        $dnsServers,
        [parameter(mandatory=$False,HelpMessage='The value of the gateway.)')]
        [string]
        $gateway,
        [parameter(mandatory=$False,HelpMessage='The value of the IP address.)')]
        [string]
        $ipAddress
    )

    process
    {
        return $([NetworkInterfaceIPConfiguration]$PSBoundParameters)
    }
}
class NetworkInterface
{
    [ValidateSet('Unknown', 'VirtualMachine')]
    [string] $networkInterfaceName
    [ValidateSet('Unknown', 'Management', 'Wan', 'Lan')]
    [string] $vmSwitchType
    [ValidateSet('Unknown', 'Management', 'Wan', 'Lan')]
    [NetworkInterfaceIPConfiguration[]] $ipConfigurations
    [ValidateSet('Unknown', 'Management', 'Wan', 'Lan')]
    [string] $macAddress
}
function New-AzureNativeTypeHybridnetworkNetworkInterface
{
    param (
        [parameter(mandatory=$False,HelpMessage='The name of the network interface.)')]
        [string]
        $networkInterfaceName,
        [parameter(mandatory=$False,HelpMessage='The type of the VM switch.)')]
        [string]
        [ValidateSet('Unknown', 'Management', 'Wan', 'Lan')]
        $vmSwitchType,
        [parameter(mandatory=$False,HelpMessage='A list of IP configurations of the network interface.)')]
        $ipConfigurations,
        [parameter(mandatory=$False,HelpMessage='The MAC address of the network interface.)')]
        [string]
        $macAddress
    )

    process
    {
        return $([NetworkInterface]$PSBoundParameters)
    }
}
class SshPublicKey
{
    [ValidateSet('Unknown', 'Standard_D1_v2', 'Standard_D2_v2', 'Standard_D3_v2', 'Standard_D4_v2', 'Standard_D5_v2', 'Standard_D11_v2', 'Standard_D12_v2', 'Standard_D13_v2', 'Standard_DS1_v2', 'Standard_DS2_v2', 'Standard_DS3_v2', 'Standard_DS4_v2', 'Standard_DS5_v2', 'Standard_DS11_v2', 'Standard_DS12_v2', 'Standard_DS13_v2', 'Standard_F1', 'Standard_F2', 'Standard_F4', 'Standard_F8', 'Standard_F16', 'Standard_F1s', 'Standard_F2s', 'Standard_F4s', 'Standard_F8s', 'Standard_F16s')]
    [string] $keyData
    [ValidateSet('Unknown', 'Standard_D1_v2', 'Standard_D2_v2', 'Standard_D3_v2', 'Standard_D4_v2', 'Standard_D5_v2', 'Standard_D11_v2', 'Standard_D12_v2', 'Standard_D13_v2', 'Standard_DS1_v2', 'Standard_DS2_v2', 'Standard_DS3_v2', 'Standard_DS4_v2', 'Standard_DS5_v2', 'Standard_DS11_v2', 'Standard_DS12_v2', 'Standard_DS13_v2', 'Standard_F1', 'Standard_F2', 'Standard_F4', 'Standard_F8', 'Standard_F16', 'Standard_F1s', 'Standard_F2s', 'Standard_F4s', 'Standard_F8s', 'Standard_F16s')]
    [string] $path
}
function New-AzureNativeTypeHybridnetworkSshPublicKey
{
    param (
        [parameter(mandatory=$False,HelpMessage='SSH public key certificate used to authenticate with the VM through ssh. The key needs to be at least 2048-bit and in ssh-rsa format. <br><br> For creating ssh keys, see [Create SSH keys on Linux and Mac for Linux VMs in Azure](https://docs.microsoft.com/azure/virtual-machines/virtual-machines-linux-mac-create-ssh-keys?toc=%2fazure%2fvirtual-machines%2flinux%2ftoc.json).)')]
        [string]
        $keyData,
        [parameter(mandatory=$False,HelpMessage='Specifies the full path on the created VM where ssh public key is stored. If the file already exists, the specified key is appended to the file. Example: /home/user/.ssh/authorized_keys)')]
        [string]
        $path
    )

    process
    {
        return $([SshPublicKey]$PSBoundParameters)
    }
}
class SshConfiguration
{
    [ValidateSet('Unknown', 'Standard_D1_v2', 'Standard_D2_v2', 'Standard_D3_v2', 'Standard_D4_v2', 'Standard_D5_v2', 'Standard_D11_v2', 'Standard_D12_v2', 'Standard_D13_v2', 'Standard_DS1_v2', 'Standard_DS2_v2', 'Standard_DS3_v2', 'Standard_DS4_v2', 'Standard_DS5_v2', 'Standard_DS11_v2', 'Standard_DS12_v2', 'Standard_DS13_v2', 'Standard_F1', 'Standard_F2', 'Standard_F4', 'Standard_F8', 'Standard_F16', 'Standard_F1s', 'Standard_F2s', 'Standard_F4s', 'Standard_F8s', 'Standard_F16s')]
    [SshPublicKey[]] $publicKeys
}
function New-AzureNativeTypeHybridnetworkSshConfiguration
{
    param (
        [parameter(mandatory=$False,HelpMessage='The list of SSH public keys used to authenticate with linux based VMs.)')]
        $publicKeys
    )

    process
    {
        return $([SshConfiguration]$PSBoundParameters)
    }
}
class LinuxConfiguration
{
    [ValidateSet('Unknown', 'Standard_D1_v2', 'Standard_D2_v2', 'Standard_D3_v2', 'Standard_D4_v2', 'Standard_D5_v2', 'Standard_D11_v2', 'Standard_D12_v2', 'Standard_D13_v2', 'Standard_DS1_v2', 'Standard_DS2_v2', 'Standard_DS3_v2', 'Standard_DS4_v2', 'Standard_DS5_v2', 'Standard_DS11_v2', 'Standard_DS12_v2', 'Standard_DS13_v2', 'Standard_F1', 'Standard_F2', 'Standard_F4', 'Standard_F8', 'Standard_F16', 'Standard_F1s', 'Standard_F2s', 'Standard_F4s', 'Standard_F8s', 'Standard_F16s')]
    [SshConfiguration] $ssh
}
function New-AzureNativeTypeHybridnetworkLinuxConfiguration
{
    param (
        [parameter(mandatory=$False,HelpMessage='Specifies the ssh key configuration for a Linux OS.)')]
        [SshConfiguration]
        $ssh
    )

    process
    {
        return $([LinuxConfiguration]$PSBoundParameters)
    }
}
class OsProfile
{
    [ValidateSet('Unknown', 'Standard_D1_v2', 'Standard_D2_v2', 'Standard_D3_v2', 'Standard_D4_v2', 'Standard_D5_v2', 'Standard_D11_v2', 'Standard_D12_v2', 'Standard_D13_v2', 'Standard_DS1_v2', 'Standard_DS2_v2', 'Standard_DS3_v2', 'Standard_DS4_v2', 'Standard_DS5_v2', 'Standard_DS11_v2', 'Standard_DS12_v2', 'Standard_DS13_v2', 'Standard_F1', 'Standard_F2', 'Standard_F4', 'Standard_F8', 'Standard_F16', 'Standard_F1s', 'Standard_F2s', 'Standard_F4s', 'Standard_F8s', 'Standard_F16s')]
    [string] $customData
    [ValidateSet('Unknown', 'Standard_D1_v2', 'Standard_D2_v2', 'Standard_D3_v2', 'Standard_D4_v2', 'Standard_D5_v2', 'Standard_D11_v2', 'Standard_D12_v2', 'Standard_D13_v2', 'Standard_DS1_v2', 'Standard_DS2_v2', 'Standard_DS3_v2', 'Standard_DS4_v2', 'Standard_DS5_v2', 'Standard_DS11_v2', 'Standard_DS12_v2', 'Standard_DS13_v2', 'Standard_F1', 'Standard_F2', 'Standard_F4', 'Standard_F8', 'Standard_F16', 'Standard_F1s', 'Standard_F2s', 'Standard_F4s', 'Standard_F8s', 'Standard_F16s')]
    [LinuxConfiguration] $linuxConfiguration
    [ValidateSet('Unknown', 'Standard_D1_v2', 'Standard_D2_v2', 'Standard_D3_v2', 'Standard_D4_v2', 'Standard_D5_v2', 'Standard_D11_v2', 'Standard_D12_v2', 'Standard_D13_v2', 'Standard_DS1_v2', 'Standard_DS2_v2', 'Standard_DS3_v2', 'Standard_DS4_v2', 'Standard_DS5_v2', 'Standard_DS11_v2', 'Standard_DS12_v2', 'Standard_DS13_v2', 'Standard_F1', 'Standard_F2', 'Standard_F4', 'Standard_F8', 'Standard_F16', 'Standard_F1s', 'Standard_F2s', 'Standard_F4s', 'Standard_F8s', 'Standard_F16s')]
    [string] $adminUsername
    [ValidateSet('Unknown', 'Standard_D1_v2', 'Standard_D2_v2', 'Standard_D3_v2', 'Standard_D4_v2', 'Standard_D5_v2', 'Standard_D11_v2', 'Standard_D12_v2', 'Standard_D13_v2', 'Standard_DS1_v2', 'Standard_DS2_v2', 'Standard_DS3_v2', 'Standard_DS4_v2', 'Standard_DS5_v2', 'Standard_DS11_v2', 'Standard_DS12_v2', 'Standard_DS13_v2', 'Standard_F1', 'Standard_F2', 'Standard_F4', 'Standard_F8', 'Standard_F16', 'Standard_F1s', 'Standard_F2s', 'Standard_F4s', 'Standard_F8s', 'Standard_F16s')]
    [bool] $customDataRequired
}
function New-AzureNativeTypeHybridnetworkOsProfile
{
    param (
        [parameter(mandatory=$False,HelpMessage='Specifies a base-64 encoded string of custom data. The base-64 encoded string is decoded to a binary array that is saved as a file on the virtual machine. The maximum length of the binary array is 65535 bytes. <br><br> **Note: Do not pass any secrets or passwords in customData property** <br><br> This property cannot be updated after the VM is created. <br><br> customData is passed to the VM to be saved as a file. For more information see [Custom Data on Azure VMs](https://azure.microsoft.com/en-us/blog/custom-data-and-cloud-init-on-windows-azure/) <br><br> For using cloud-init for your Linux VM, see [Using cloud-init to customize a Linux VM during creation](https://docs.microsoft.com/azure/virtual-machines/virtual-machines-linux-using-cloud-init?toc=%2fazure%2fvirtual-machines%2flinux%2ftoc.json))')]
        [string]
        $customData,
        [parameter(mandatory=$False,HelpMessage='Specifies the Linux operating system settings on the virtual machine. <br><br>For a list of supported Linux distributions, see [Linux on Azure-Endorsed Distributions](https://docs.microsoft.com/azure/virtual-machines/virtual-machines-linux-endorsed-distros?toc=%2fazure%2fvirtual-machines%2flinux%2ftoc.json) <br><br> For running non-endorsed distributions, see [Information for Non-Endorsed Distributions](https://docs.microsoft.com/azure/virtual-machines/virtual-machines-linux-create-upload-generic?toc=%2fazure%2fvirtual-machines%2flinux%2ftoc.json).)')]
        [LinuxConfiguration]
        $linuxConfiguration,
        [parameter(mandatory=$False,HelpMessage='Specifies the name of the administrator account. <br><br> **Windows-only restriction:** Cannot end in "." <br><br> **Disallowed values:** "administrator", "admin", "user", "user1", "test", "user2", "test1", "user3", "admin1", "1", "123", "a", "actuser", "adm", "admin2", "aspnet", "backup", "console", "david", "guest", "john", "owner", "root", "server", "sql", "support", "support_388945a0", "sys", "test2", "test3", "user4", "user5". <br><br> **Minimum-length (Linux):** 1 character <br><br> **Max-length (Linux):** 64 characters <br><br> **Max-length (Windows):** 20 characters <br><br><li> For root access to the Linux VM, see [Using root privileges on Linux virtual machines in Azure](https://docs.microsoft.com/azure/virtual-machines/virtual-machines-linux-use-root-privileges?toc=%2fazure%2fvirtual-machines%2flinux%2ftoc.json)<br><li> For a list of built-in system users on Linux that should not be used in this field, see [Selecting User Names for Linux on Azure](https://docs.microsoft.com/azure/virtual-machines/virtual-machines-linux-usernames?toc=%2fazure%2fvirtual-machines%2flinux%2ftoc.json).)')]
        [string]
        $adminUsername,
        [parameter(mandatory=$False,HelpMessage='Indicates if custom data is required to deploy this role.)')]
        [bool]
        $customDataRequired
    )

    process
    {
        return $([OsProfile]$PSBoundParameters)
    }
}
class CustomProfile
{
    [ValidateSet('Unknown', 'Standard_D1_v2', 'Standard_D2_v2', 'Standard_D3_v2', 'Standard_D4_v2', 'Standard_D5_v2', 'Standard_D11_v2', 'Standard_D12_v2', 'Standard_D13_v2', 'Standard_DS1_v2', 'Standard_DS2_v2', 'Standard_DS3_v2', 'Standard_DS4_v2', 'Standard_DS5_v2', 'Standard_DS11_v2', 'Standard_DS12_v2', 'Standard_DS13_v2', 'Standard_F1', 'Standard_F2', 'Standard_F4', 'Standard_F8', 'Standard_F16', 'Standard_F1s', 'Standard_F2s', 'Standard_F4s', 'Standard_F8s', 'Standard_F16s')]
    [string] $metadataConfigurationPath
}
function New-AzureNativeTypeHybridnetworkCustomProfile
{
    param (
        [parameter(mandatory=$False,HelpMessage='Path for metadata configuration.)')]
        [string]
        $metadataConfigurationPath
    )

    process
    {
        return $([CustomProfile]$PSBoundParameters)
    }
}
class VirtualHardDisk
{
    [ValidateSet('Unknown', 'Standard_D1_v2', 'Standard_D2_v2', 'Standard_D3_v2', 'Standard_D4_v2', 'Standard_D5_v2', 'Standard_D11_v2', 'Standard_D12_v2', 'Standard_D13_v2', 'Standard_DS1_v2', 'Standard_DS2_v2', 'Standard_DS3_v2', 'Standard_DS4_v2', 'Standard_DS5_v2', 'Standard_DS11_v2', 'Standard_DS12_v2', 'Standard_DS13_v2', 'Standard_F1', 'Standard_F2', 'Standard_F4', 'Standard_F8', 'Standard_F16', 'Standard_F1s', 'Standard_F2s', 'Standard_F4s', 'Standard_F8s', 'Standard_F16s')]
    [string] $uri
}
function New-AzureNativeTypeHybridnetworkVirtualHardDisk
{
    param (
        [parameter(mandatory=$False,HelpMessage='Specifies the virtual hard disk''s uri.)')]
        [string]
        $uri
    )

    process
    {
        return $([VirtualHardDisk]$PSBoundParameters)
    }
}
class OsDisk
{
    [ValidateSet('Unknown', 'Standard_D1_v2', 'Standard_D2_v2', 'Standard_D3_v2', 'Standard_D4_v2', 'Standard_D5_v2', 'Standard_D11_v2', 'Standard_D12_v2', 'Standard_D13_v2', 'Standard_DS1_v2', 'Standard_DS2_v2', 'Standard_DS3_v2', 'Standard_DS4_v2', 'Standard_DS5_v2', 'Standard_DS11_v2', 'Standard_DS12_v2', 'Standard_DS13_v2', 'Standard_F1', 'Standard_F2', 'Standard_F4', 'Standard_F8', 'Standard_F16', 'Standard_F1s', 'Standard_F2s', 'Standard_F4s', 'Standard_F8s', 'Standard_F16s')]
    [VirtualHardDisk] $vhd
    [ValidateSet('Unknown', 'Standard_D1_v2', 'Standard_D2_v2', 'Standard_D3_v2', 'Standard_D4_v2', 'Standard_D5_v2', 'Standard_D11_v2', 'Standard_D12_v2', 'Standard_D13_v2', 'Standard_DS1_v2', 'Standard_DS2_v2', 'Standard_DS3_v2', 'Standard_DS4_v2', 'Standard_DS5_v2', 'Standard_DS11_v2', 'Standard_DS12_v2', 'Standard_DS13_v2', 'Standard_F1', 'Standard_F2', 'Standard_F4', 'Standard_F8', 'Standard_F16', 'Standard_F1s', 'Standard_F2s', 'Standard_F4s', 'Standard_F8s', 'Standard_F16s')]
    [string] $name
    [ValidateSet('Unknown', 'Standard_D1_v2', 'Standard_D2_v2', 'Standard_D3_v2', 'Standard_D4_v2', 'Standard_D5_v2', 'Standard_D11_v2', 'Standard_D12_v2', 'Standard_D13_v2', 'Standard_DS1_v2', 'Standard_DS2_v2', 'Standard_DS3_v2', 'Standard_DS4_v2', 'Standard_DS5_v2', 'Standard_DS11_v2', 'Standard_DS12_v2', 'Standard_DS13_v2', 'Standard_F1', 'Standard_F2', 'Standard_F4', 'Standard_F8', 'Standard_F16', 'Standard_F1s', 'Standard_F2s', 'Standard_F4s', 'Standard_F8s', 'Standard_F16s')]
    [int] $diskSizeGB
    [ValidateSet('Unknown', 'Windows', 'Linux')]
    [string] $osType
}
function New-AzureNativeTypeHybridnetworkOsDisk
{
    param (
        [parameter(mandatory=$False,HelpMessage='The virtual hard disk.)')]
        [VirtualHardDisk]
        $vhd,
        [parameter(mandatory=$False,HelpMessage='The VHD name.)')]
        [string]
        $name,
        [parameter(mandatory=$False,HelpMessage='Specifies the size of os disk in gigabytes. This is the fully expanded disk size needed of the VHD image on the ASE. This disk size should be greater than the size of the VHD provided in vhdUri.)')]
        [int]
        $diskSizeGB,
        [parameter(mandatory=$False,HelpMessage='The OS type.)')]
        [string]
        [ValidateSet('Unknown', 'Windows', 'Linux')]
        $osType
    )

    process
    {
        return $([OsDisk]$PSBoundParameters)
    }
}
class DataDisk
{
    [ValidateSet('Unknown', 'Standard_D1_v2', 'Standard_D2_v2', 'Standard_D3_v2', 'Standard_D4_v2', 'Standard_D5_v2', 'Standard_D11_v2', 'Standard_D12_v2', 'Standard_D13_v2', 'Standard_DS1_v2', 'Standard_DS2_v2', 'Standard_DS3_v2', 'Standard_DS4_v2', 'Standard_DS5_v2', 'Standard_DS11_v2', 'Standard_DS12_v2', 'Standard_DS13_v2', 'Standard_F1', 'Standard_F2', 'Standard_F4', 'Standard_F8', 'Standard_F16', 'Standard_F1s', 'Standard_F2s', 'Standard_F4s', 'Standard_F8s', 'Standard_F16s')]
    [string] $name
    [ValidateSet('Unknown', 'Standard_D1_v2', 'Standard_D2_v2', 'Standard_D3_v2', 'Standard_D4_v2', 'Standard_D5_v2', 'Standard_D11_v2', 'Standard_D12_v2', 'Standard_D13_v2', 'Standard_DS1_v2', 'Standard_DS2_v2', 'Standard_DS3_v2', 'Standard_DS4_v2', 'Standard_DS5_v2', 'Standard_DS11_v2', 'Standard_DS12_v2', 'Standard_DS13_v2', 'Standard_F1', 'Standard_F2', 'Standard_F4', 'Standard_F8', 'Standard_F16', 'Standard_F1s', 'Standard_F2s', 'Standard_F4s', 'Standard_F8s', 'Standard_F16s')]
    [int] $diskSizeGB
    [ValidateSet('Unknown', 'Empty')]
    [string] $createOption
}
function New-AzureNativeTypeHybridnetworkDataDisk
{
    param (
        [parameter(mandatory=$False,HelpMessage='The name of data disk.)')]
        [string]
        $name,
        [parameter(mandatory=$False,HelpMessage='Specifies the size of an empty disk in gigabytes. This element can be used to overwrite the size of the disk in a virtual machine image.)')]
        [int]
        $diskSizeGB,
        [parameter(mandatory=$False,HelpMessage='Specifies how the virtual machine should be created.)')]
        [string]
        [ValidateSet('Unknown', 'Empty')]
        $createOption
    )

    process
    {
        return $([DataDisk]$PSBoundParameters)
    }
}
class ImageReference
{
    [ValidateSet('Unknown', 'Standard_D1_v2', 'Standard_D2_v2', 'Standard_D3_v2', 'Standard_D4_v2', 'Standard_D5_v2', 'Standard_D11_v2', 'Standard_D12_v2', 'Standard_D13_v2', 'Standard_DS1_v2', 'Standard_DS2_v2', 'Standard_DS3_v2', 'Standard_DS4_v2', 'Standard_DS5_v2', 'Standard_DS11_v2', 'Standard_DS12_v2', 'Standard_DS13_v2', 'Standard_F1', 'Standard_F2', 'Standard_F4', 'Standard_F8', 'Standard_F16', 'Standard_F1s', 'Standard_F2s', 'Standard_F4s', 'Standard_F8s', 'Standard_F16s')]
    [string] $version
    [ValidateSet('Unknown', 'Standard_D1_v2', 'Standard_D2_v2', 'Standard_D3_v2', 'Standard_D4_v2', 'Standard_D5_v2', 'Standard_D11_v2', 'Standard_D12_v2', 'Standard_D13_v2', 'Standard_DS1_v2', 'Standard_DS2_v2', 'Standard_DS3_v2', 'Standard_DS4_v2', 'Standard_DS5_v2', 'Standard_DS11_v2', 'Standard_DS12_v2', 'Standard_DS13_v2', 'Standard_F1', 'Standard_F2', 'Standard_F4', 'Standard_F8', 'Standard_F16', 'Standard_F1s', 'Standard_F2s', 'Standard_F4s', 'Standard_F8s', 'Standard_F16s')]
    [string] $exactVersion
    [ValidateSet('Unknown', 'Standard_D1_v2', 'Standard_D2_v2', 'Standard_D3_v2', 'Standard_D4_v2', 'Standard_D5_v2', 'Standard_D11_v2', 'Standard_D12_v2', 'Standard_D13_v2', 'Standard_DS1_v2', 'Standard_DS2_v2', 'Standard_DS3_v2', 'Standard_DS4_v2', 'Standard_DS5_v2', 'Standard_DS11_v2', 'Standard_DS12_v2', 'Standard_DS13_v2', 'Standard_F1', 'Standard_F2', 'Standard_F4', 'Standard_F8', 'Standard_F16', 'Standard_F1s', 'Standard_F2s', 'Standard_F4s', 'Standard_F8s', 'Standard_F16s')]
    [string] $sku
    [ValidateSet('Unknown', 'Standard_D1_v2', 'Standard_D2_v2', 'Standard_D3_v2', 'Standard_D4_v2', 'Standard_D5_v2', 'Standard_D11_v2', 'Standard_D12_v2', 'Standard_D13_v2', 'Standard_DS1_v2', 'Standard_DS2_v2', 'Standard_DS3_v2', 'Standard_DS4_v2', 'Standard_DS5_v2', 'Standard_DS11_v2', 'Standard_DS12_v2', 'Standard_DS13_v2', 'Standard_F1', 'Standard_F2', 'Standard_F4', 'Standard_F8', 'Standard_F16', 'Standard_F1s', 'Standard_F2s', 'Standard_F4s', 'Standard_F8s', 'Standard_F16s')]
    [string] $offer
    [ValidateSet('Unknown', 'Standard_D1_v2', 'Standard_D2_v2', 'Standard_D3_v2', 'Standard_D4_v2', 'Standard_D5_v2', 'Standard_D11_v2', 'Standard_D12_v2', 'Standard_D13_v2', 'Standard_DS1_v2', 'Standard_DS2_v2', 'Standard_DS3_v2', 'Standard_DS4_v2', 'Standard_DS5_v2', 'Standard_DS11_v2', 'Standard_DS12_v2', 'Standard_DS13_v2', 'Standard_F1', 'Standard_F2', 'Standard_F4', 'Standard_F8', 'Standard_F16', 'Standard_F1s', 'Standard_F2s', 'Standard_F4s', 'Standard_F8s', 'Standard_F16s')]
    [string] $publisher
}
function New-AzureNativeTypeHybridnetworkImageReference
{
    param (
        [parameter(mandatory=$False,HelpMessage='Specifies the version of the image used to create the virtual machine. The allowed formats are Major.Minor.Build or ''latest''. Major, Minor, and Build are decimal numbers. Specify ''latest'' to use the latest version of an image available at deploy time. Even if you use ''latest'', the VM image will not automatically update after deploy time even if a new version becomes available.)')]
        [string]
        $version,
        [parameter(mandatory=$False,HelpMessage='Specifies in decimal numbers, the exact version of image used to create the virtual machine.)')]
        [string]
        $exactVersion,
        [parameter(mandatory=$False,HelpMessage='The image SKU.)')]
        [string]
        $sku,
        [parameter(mandatory=$False,HelpMessage='Specifies the offer of the image used to create the virtual machine.)')]
        [string]
        $offer,
        [parameter(mandatory=$False,HelpMessage='The image publisher.)')]
        [string]
        $publisher
    )

    process
    {
        return $([ImageReference]$PSBoundParameters)
    }
}
class StorageProfile
{
    [ValidateSet('Unknown', 'Standard_D1_v2', 'Standard_D2_v2', 'Standard_D3_v2', 'Standard_D4_v2', 'Standard_D5_v2', 'Standard_D11_v2', 'Standard_D12_v2', 'Standard_D13_v2', 'Standard_DS1_v2', 'Standard_DS2_v2', 'Standard_DS3_v2', 'Standard_DS4_v2', 'Standard_DS5_v2', 'Standard_DS11_v2', 'Standard_DS12_v2', 'Standard_DS13_v2', 'Standard_F1', 'Standard_F2', 'Standard_F4', 'Standard_F8', 'Standard_F16', 'Standard_F1s', 'Standard_F2s', 'Standard_F4s', 'Standard_F8s', 'Standard_F16s')]
    [OsDisk] $osDisk
    [ValidateSet('Unknown', 'Standard_D1_v2', 'Standard_D2_v2', 'Standard_D3_v2', 'Standard_D4_v2', 'Standard_D5_v2', 'Standard_D11_v2', 'Standard_D12_v2', 'Standard_D13_v2', 'Standard_DS1_v2', 'Standard_DS2_v2', 'Standard_DS3_v2', 'Standard_DS4_v2', 'Standard_DS5_v2', 'Standard_DS11_v2', 'Standard_DS12_v2', 'Standard_DS13_v2', 'Standard_F1', 'Standard_F2', 'Standard_F4', 'Standard_F8', 'Standard_F16', 'Standard_F1s', 'Standard_F2s', 'Standard_F4s', 'Standard_F8s', 'Standard_F16s')]
    [DataDisk[]] $dataDisks
    [ValidateSet('Unknown', 'Standard_D1_v2', 'Standard_D2_v2', 'Standard_D3_v2', 'Standard_D4_v2', 'Standard_D5_v2', 'Standard_D11_v2', 'Standard_D12_v2', 'Standard_D13_v2', 'Standard_DS1_v2', 'Standard_DS2_v2', 'Standard_DS3_v2', 'Standard_DS4_v2', 'Standard_DS5_v2', 'Standard_DS11_v2', 'Standard_DS12_v2', 'Standard_DS13_v2', 'Standard_F1', 'Standard_F2', 'Standard_F4', 'Standard_F8', 'Standard_F16', 'Standard_F1s', 'Standard_F2s', 'Standard_F4s', 'Standard_F8s', 'Standard_F16s')]
    [ImageReference] $imageReference
}
function New-AzureNativeTypeHybridnetworkStorageProfile
{
    param (
        [parameter(mandatory=$False,HelpMessage='Specifies information about the operating system disk used by the virtual machine.)')]
        [OsDisk]
        $osDisk,
        [parameter(mandatory=$False,HelpMessage='Specifies the parameters that are used to add a data disk to a virtual machine.)')]
        $dataDisks,
        [parameter(mandatory=$False,HelpMessage='The image reference properties.)')]
        [ImageReference]
        $imageReference
    )

    process
    {
        return $([StorageProfile]$PSBoundParameters)
    }
}
class NetworkFunctionRoleConfiguration
{
    [object] $userDataParameters
    [ValidateSet('Unknown', 'VirtualMachine')]
    [string] $roleType
    [ValidateSet('Unknown', 'VirtualMachine')]
    [NetworkInterface[]] $networkInterfaces
    [ValidateSet('Unknown', 'Standard_D1_v2', 'Standard_D2_v2', 'Standard_D3_v2', 'Standard_D4_v2', 'Standard_D5_v2', 'Standard_D11_v2', 'Standard_D12_v2', 'Standard_D13_v2', 'Standard_DS1_v2', 'Standard_DS2_v2', 'Standard_DS3_v2', 'Standard_DS4_v2', 'Standard_DS5_v2', 'Standard_DS11_v2', 'Standard_DS12_v2', 'Standard_DS13_v2', 'Standard_F1', 'Standard_F2', 'Standard_F4', 'Standard_F8', 'Standard_F16', 'Standard_F1s', 'Standard_F2s', 'Standard_F4s', 'Standard_F8s', 'Standard_F16s')]
    [string] $virtualMachineSize
    [ValidateSet('Unknown', 'Standard_D1_v2', 'Standard_D2_v2', 'Standard_D3_v2', 'Standard_D4_v2', 'Standard_D5_v2', 'Standard_D11_v2', 'Standard_D12_v2', 'Standard_D13_v2', 'Standard_DS1_v2', 'Standard_DS2_v2', 'Standard_DS3_v2', 'Standard_DS4_v2', 'Standard_DS5_v2', 'Standard_DS11_v2', 'Standard_DS12_v2', 'Standard_DS13_v2', 'Standard_F1', 'Standard_F2', 'Standard_F4', 'Standard_F8', 'Standard_F16', 'Standard_F1s', 'Standard_F2s', 'Standard_F4s', 'Standard_F8s', 'Standard_F16s')]
    [OsProfile] $osProfile
    [ValidateSet('Unknown', 'Standard_D1_v2', 'Standard_D2_v2', 'Standard_D3_v2', 'Standard_D4_v2', 'Standard_D5_v2', 'Standard_D11_v2', 'Standard_D12_v2', 'Standard_D13_v2', 'Standard_DS1_v2', 'Standard_DS2_v2', 'Standard_DS3_v2', 'Standard_DS4_v2', 'Standard_DS5_v2', 'Standard_DS11_v2', 'Standard_DS12_v2', 'Standard_DS13_v2', 'Standard_F1', 'Standard_F2', 'Standard_F4', 'Standard_F8', 'Standard_F16', 'Standard_F1s', 'Standard_F2s', 'Standard_F4s', 'Standard_F8s', 'Standard_F16s')]
    [object] $userDataTemplate
    [ValidateSet('Unknown', 'Standard_D1_v2', 'Standard_D2_v2', 'Standard_D3_v2', 'Standard_D4_v2', 'Standard_D5_v2', 'Standard_D11_v2', 'Standard_D12_v2', 'Standard_D13_v2', 'Standard_DS1_v2', 'Standard_DS2_v2', 'Standard_DS3_v2', 'Standard_DS4_v2', 'Standard_DS5_v2', 'Standard_DS11_v2', 'Standard_DS12_v2', 'Standard_DS13_v2', 'Standard_F1', 'Standard_F2', 'Standard_F4', 'Standard_F8', 'Standard_F16', 'Standard_F1s', 'Standard_F2s', 'Standard_F4s', 'Standard_F8s', 'Standard_F16s')]
    [CustomProfile] $customProfile
    [ValidateSet('Unknown', 'Standard_D1_v2', 'Standard_D2_v2', 'Standard_D3_v2', 'Standard_D4_v2', 'Standard_D5_v2', 'Standard_D11_v2', 'Standard_D12_v2', 'Standard_D13_v2', 'Standard_DS1_v2', 'Standard_DS2_v2', 'Standard_DS3_v2', 'Standard_DS4_v2', 'Standard_DS5_v2', 'Standard_DS11_v2', 'Standard_DS12_v2', 'Standard_DS13_v2', 'Standard_F1', 'Standard_F2', 'Standard_F4', 'Standard_F8', 'Standard_F16', 'Standard_F1s', 'Standard_F2s', 'Standard_F4s', 'Standard_F8s', 'Standard_F16s')]
    [string] $roleName
    [ValidateSet('Unknown', 'Standard_D1_v2', 'Standard_D2_v2', 'Standard_D3_v2', 'Standard_D4_v2', 'Standard_D5_v2', 'Standard_D11_v2', 'Standard_D12_v2', 'Standard_D13_v2', 'Standard_DS1_v2', 'Standard_DS2_v2', 'Standard_DS3_v2', 'Standard_DS4_v2', 'Standard_DS5_v2', 'Standard_DS11_v2', 'Standard_DS12_v2', 'Standard_DS13_v2', 'Standard_F1', 'Standard_F2', 'Standard_F4', 'Standard_F8', 'Standard_F16', 'Standard_F1s', 'Standard_F2s', 'Standard_F4s', 'Standard_F8s', 'Standard_F16s')]
    [StorageProfile] $storageProfile
}
function New-AzureNativeTypeHybridnetworkNetworkFunctionRoleConfiguration
{
    param (
        [parameter(mandatory=$False,HelpMessage='The user parameters for customers. The format of user data parameters has to be matched with the provided user data template.)')]
        $userDataParameters,
        [parameter(mandatory=$False,HelpMessage='Role type.)')]
        [string]
        [ValidateSet('Unknown', 'VirtualMachine')]
        $roleType,
        [parameter(mandatory=$False,HelpMessage='The network interface configurations.)')]
        $networkInterfaces,
        [parameter(mandatory=$False,HelpMessage='The size of the virtual machine.)')]
        [string]
        [ValidateSet('Unknown', 'Standard_D1_v2', 'Standard_D2_v2', 'Standard_D3_v2', 'Standard_D4_v2', 'Standard_D5_v2', 'Standard_D11_v2', 'Standard_D12_v2', 'Standard_D13_v2', 'Standard_DS1_v2', 'Standard_DS2_v2', 'Standard_DS3_v2', 'Standard_DS4_v2', 'Standard_DS5_v2', 'Standard_DS11_v2', 'Standard_DS12_v2', 'Standard_DS13_v2', 'Standard_F1', 'Standard_F2', 'Standard_F4', 'Standard_F8', 'Standard_F16', 'Standard_F1s', 'Standard_F2s', 'Standard_F4s', 'Standard_F8s', 'Standard_F16s')]
        $virtualMachineSize,
        [parameter(mandatory=$False,HelpMessage='Specifies the operating system settings for the role instance. This value can be updated during the deployment of network function.)')]
        [OsProfile]
        $osProfile,
        [parameter(mandatory=$False,HelpMessage='The user data template for customers. This is a json schema template describing the format and data type of user data parameters.)')]
        $userDataTemplate,
        [parameter(mandatory=$False,HelpMessage='Specifies the custom settings for the virtual machine.)')]
        [CustomProfile]
        $customProfile,
        [parameter(mandatory=$False,HelpMessage='The name of the network function role.)')]
        [string]
        $roleName,
        [parameter(mandatory=$False,HelpMessage='Specifies the storage settings for the virtual machine disks.)')]
        [StorageProfile]
        $storageProfile
    )

    process
    {
        return $([NetworkFunctionRoleConfiguration]$PSBoundParameters)
    }
}
class NetworkFunctionTemplate
{
    [NetworkFunctionRoleConfiguration[]] $networkFunctionRoleConfigurations
}
function New-AzureNativeTypeHybridnetworkNetworkFunctionTemplate
{
    param (
        [parameter(mandatory=$False,HelpMessage='An array of network function role definitions.)')]
        $networkFunctionRoleConfigurations
    )

    process
    {
        return $([NetworkFunctionTemplate]$PSBoundParameters)
    }
}
function New-AzureNativeHybridnetworkVendorSkus
{
    [Alias('azure_native_hybridnetwork_vendorskus')]
    param (
        [parameter(mandatory=$False,HelpMessage='The sku deployment mode.)')]
        [string]
        [ValidateSet('Unknown', 'Azure', 'PrivateEdgeZone')]
        $deploymentMode,
        [parameter(mandatory=$False,HelpMessage='The name of the sku.)')]
        [string]
        $skuName,
        [parameter(mandatory=$False,HelpMessage='Indicates if the vendor sku is in preview mode.)')]
        [bool]
        $preview,
        [parameter(mandatory=$False,HelpMessage='The template for the managed application deployment.)')]
        $managedApplicationTemplate,
        [parameter(mandatory=$False,HelpMessage='The parameters for the managed application to be supplied by the vendor.)')]
        $managedApplicationParameters,
        [parameter(mandatory=$False,HelpMessage='The name of the vendor.)')]
        [string]
        $vendorName,
        [parameter(mandatory=$False,HelpMessage='The template definition of the network function.)')]
        [NetworkFunctionTemplate]
        $networkFunctionTemplate,
        [parameter(mandatory=$False,HelpMessage='The sku type.)')]
        [string]
        [ValidateSet('Unknown', 'EvolvedPacketCore', 'SDWAN', 'Firewall')]
        $skuType,
        [parameter(mandatory,HelpMessage='The reference to call when you want to make a dependency to another resource')]
        [string]
        $pulumiid
    )

    process
    {
        $resource = [pulumiresource]::new($pulumiid, "azure-native:hybridnetwork:VendorSkus")

        $resource.properties["vendorName"] = $vendorName

        if($PSBoundParameters.Keys -icontains 'deploymentMode')
        {
            $resource.properties["deploymentMode"] = $deploymentMode
        }

        if($PSBoundParameters.Keys -icontains 'skuName')
        {
            $resource.properties["skuName"] = $skuName
        }

        if($PSBoundParameters.Keys -icontains 'preview')
        {
            $resource.properties["preview"] = $preview
        }

        if($PSBoundParameters.Keys -icontains 'managedApplicationTemplate')
        {
            $resource.properties["managedApplicationTemplate"] = $managedApplicationTemplate
        }

        if($PSBoundParameters.Keys -icontains 'managedApplicationParameters')
        {
            $resource.properties["managedApplicationParameters"] = $managedApplicationParameters
        }

        if($PSBoundParameters.Keys -icontains 'networkFunctionTemplate')
        {
            $resource.properties["networkFunctionTemplate"] = $networkFunctionTemplate
        }

        if($PSBoundParameters.Keys -icontains 'skuType')
        {
            $resource.properties["skuType"] = $skuType
        }

        $global:pulumiresources += $resource
        return $resource
    }
}