pspulumiyaml.azurenative.network.psm1

using module pspulumiyaml
function Invoke-AzureNativeFunctionNetworkGetProfile
{
    param (
        [parameter(mandatory=$False,HelpMessage='The name of the resource group containing the Traffic Manager profile.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='The name of the Traffic Manager profile.)')]
        [string]
        $profileName
    )

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

        $functionObject = Invoke-PulumiFunction -Name azure-native:network:getProfile -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionNetworkGetNetworkInterfaceTapConfiguration
{
    param (
        [parameter(mandatory=$False,HelpMessage='The name of the network interface.)')]
        [string]
        $networkInterfaceName,
        [parameter(mandatory=$False,HelpMessage='The name of the resource group.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='The name of the tap configuration.)')]
        [string]
        $tapConfigurationName
    )

    process
    {
        $arguments = @{}
        $arguments["networkInterfaceName"] = $networkInterfaceName
        $arguments["resourceGroupName"] = $resourceGroupName
        $arguments["tapConfigurationName"] = $tapConfigurationName

        $functionObject = Invoke-PulumiFunction -Name azure-native:network:getNetworkInterfaceTapConfiguration -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionNetworkGetForwardingRule
{
    param (
        [parameter(mandatory=$False,HelpMessage='The name of the forwarding rule.)')]
        [string]
        $forwardingRuleName,
        [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 DNS forwarding ruleset.)')]
        [string]
        $dnsForwardingRulesetName
    )

    process
    {
        $arguments = @{}
        $arguments["dnsForwardingRulesetName"] = $dnsForwardingRulesetName
        $arguments["forwardingRuleName"] = $forwardingRuleName
        $arguments["resourceGroupName"] = $resourceGroupName

        $functionObject = Invoke-PulumiFunction -Name azure-native:network:getForwardingRule -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionNetworkGetVirtualNetworkGatewayVpnclientIpsecParameters
{
    param (
        [parameter(mandatory=$False,HelpMessage='The virtual network gateway name.)')]
        [string]
        $virtualNetworkGatewayName,
        [parameter(mandatory=$False,HelpMessage='The name of the resource group.)')]
        [string]
        $resourceGroupName
    )

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

        $functionObject = Invoke-PulumiFunction -Name azure-native:network:getVirtualNetworkGatewayVpnclientIpsecParameters -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionNetworkGetVirtualNetworkGatewayNatRule
{
    param (
        [parameter(mandatory=$False,HelpMessage='The name of the gateway.)')]
        [string]
        $virtualNetworkGatewayName,
        [parameter(mandatory=$False,HelpMessage='The resource group name of the Virtual Network Gateway.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='The name of the nat rule.)')]
        [string]
        $natRuleName
    )

    process
    {
        $arguments = @{}
        $arguments["natRuleName"] = $natRuleName
        $arguments["resourceGroupName"] = $resourceGroupName
        $arguments["virtualNetworkGatewayName"] = $virtualNetworkGatewayName

        $functionObject = Invoke-PulumiFunction -Name azure-native:network:getVirtualNetworkGatewayNatRule -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionNetworkGetSubnet
{
    param (
        [parameter(mandatory=$False,HelpMessage='Expands referenced resources.)')]
        [string]
        $expand,
        [parameter(mandatory=$False,HelpMessage='The name of the resource group.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='The name of the virtual network.)')]
        [string]
        $virtualNetworkName,
        [parameter(mandatory=$False,HelpMessage='The name of the subnet.)')]
        [string]
        $subnetName
    )

    process
    {
        $arguments = @{}
        $arguments["resourceGroupName"] = $resourceGroupName
        $arguments["subnetName"] = $subnetName
        $arguments["virtualNetworkName"] = $virtualNetworkName

        if($PSBoundParameters.Keys -icontains 'expand')
        {
            $arguments["expand"] = $expand
        }

        $functionObject = Invoke-PulumiFunction -Name azure-native:network:getSubnet -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionNetworkListActiveSecurityAdminRule
{
    param (
        [parameter(mandatory=$False,HelpMessage='The name of the resource group.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='List of regions.)')]
        [string[]]
        $regions,
        [parameter(mandatory=$False,HelpMessage='When present, the value can be passed to a subsequent query call (together with the same query and scopes used in the current request) to retrieve the next page of data.)')]
        [string]
        $skipToken,
        [parameter(mandatory=$False,HelpMessage='The name of the network manager.)')]
        [string]
        $networkManagerName
    )

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

        if($PSBoundParameters.Keys -icontains 'regions')
        {
            $arguments["regions"] = $regions
        }

        if($PSBoundParameters.Keys -icontains 'skipToken')
        {
            $arguments["skipToken"] = $skipToken
        }

        $functionObject = Invoke-PulumiFunction -Name azure-native:network:listActiveSecurityAdminRule -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionNetworkGetVirtualNetwork
{
    param (
        [parameter(mandatory=$False,HelpMessage='Expands referenced resources.)')]
        [string]
        $expand,
        [parameter(mandatory=$False,HelpMessage='The name of the resource group.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='The name of the virtual network.)')]
        [string]
        $virtualNetworkName
    )

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

        if($PSBoundParameters.Keys -icontains 'expand')
        {
            $arguments["expand"] = $expand
        }

        $functionObject = Invoke-PulumiFunction -Name azure-native:network:getVirtualNetwork -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionNetworkGetNetworkGroup
{
    param (
        [parameter(mandatory=$False,HelpMessage='The name of the resource group.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='The name of the network group to get.)')]
        [string]
        $networkGroupName,
        [parameter(mandatory=$False,HelpMessage='The name of the network manager.)')]
        [string]
        $networkManagerName
    )

    process
    {
        $arguments = @{}
        $arguments["networkGroupName"] = $networkGroupName
        $arguments["networkManagerName"] = $networkManagerName
        $arguments["resourceGroupName"] = $resourceGroupName

        $functionObject = Invoke-PulumiFunction -Name azure-native:network:getNetworkGroup -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionNetworkGetVirtualNetworkGatewayVpnclientConnectionHealth
{
    param (
        [parameter(mandatory=$False,HelpMessage='The name of the virtual network gateway.)')]
        [string]
        $virtualNetworkGatewayName,
        [parameter(mandatory=$False,HelpMessage='The name of the resource group.)')]
        [string]
        $resourceGroupName
    )

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

        $functionObject = Invoke-PulumiFunction -Name azure-native:network:getVirtualNetworkGatewayVpnclientConnectionHealth -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionNetworkGetApplicationSecurityGroup
{
    param (
        [parameter(mandatory=$False,HelpMessage='The name of the resource group.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='The name of the application security group.)')]
        [string]
        $applicationSecurityGroupName
    )

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

        $functionObject = Invoke-PulumiFunction -Name azure-native:network:getApplicationSecurityGroup -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionNetworkGetSecurityAdminConfiguration
{
    param (
        [parameter(mandatory=$False,HelpMessage='The name of the resource group.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='The name of the network manager.)')]
        [string]
        $networkManagerName,
        [parameter(mandatory=$False,HelpMessage='The name of the network manager security Configuration.)')]
        [string]
        $configurationName
    )

    process
    {
        $arguments = @{}
        $arguments["configurationName"] = $configurationName
        $arguments["networkManagerName"] = $networkManagerName
        $arguments["resourceGroupName"] = $resourceGroupName

        $functionObject = Invoke-PulumiFunction -Name azure-native:network:getSecurityAdminConfiguration -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionNetworkGetBastionShareableLink
{
    param (
        [parameter(mandatory=$False,HelpMessage='List of VM references.)')]
        $vms,
        [parameter(mandatory=$False,HelpMessage='The name of the resource group.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='The name of the Bastion Host.)')]
        [string]
        $bastionHostName
    )

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

        if($PSBoundParameters.Keys -icontains 'vms')
        {
            $arguments["vms"] = $vms
        }

        $functionObject = Invoke-PulumiFunction -Name azure-native:network:getBastionShareableLink -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionNetworkGetSecurityPartnerProvider
{
    param (
        [parameter(mandatory=$False,HelpMessage='The name of the resource group.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='The name of the Security Partner Provider.)')]
        [string]
        $securityPartnerProviderName
    )

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

        $functionObject = Invoke-PulumiFunction -Name azure-native:network:getSecurityPartnerProvider -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionNetworkGetExpressRouteCircuitConnection
{
    param (
        [parameter(mandatory=$False,HelpMessage='The name of the resource group.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='The name of the express route circuit connection.)')]
        [string]
        $connectionName,
        [parameter(mandatory=$False,HelpMessage='The name of the peering.)')]
        [string]
        $peeringName,
        [parameter(mandatory=$False,HelpMessage='The name of the express route circuit.)')]
        [string]
        $circuitName
    )

    process
    {
        $arguments = @{}
        $arguments["circuitName"] = $circuitName
        $arguments["connectionName"] = $connectionName
        $arguments["peeringName"] = $peeringName
        $arguments["resourceGroupName"] = $resourceGroupName

        $functionObject = Invoke-PulumiFunction -Name azure-native:network:getExpressRouteCircuitConnection -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionNetworkGetRouteTable
{
    param (
        [parameter(mandatory=$False,HelpMessage='Expands referenced resources.)')]
        [string]
        $expand,
        [parameter(mandatory=$False,HelpMessage='The name of the resource group.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='The name of the route table.)')]
        [string]
        $routeTableName
    )

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

        if($PSBoundParameters.Keys -icontains 'expand')
        {
            $arguments["expand"] = $expand
        }

        $functionObject = Invoke-PulumiFunction -Name azure-native:network:getRouteTable -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionNetworkGetInboundNatRule
{
    param (
        [parameter(mandatory=$False,HelpMessage='The name of the resource group.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='Expands referenced resources.)')]
        [string]
        $expand,
        [parameter(mandatory=$False,HelpMessage='The name of the inbound nat rule.)')]
        [string]
        $inboundNatRuleName,
        [parameter(mandatory=$False,HelpMessage='The name of the load balancer.)')]
        [string]
        $loadBalancerName
    )

    process
    {
        $arguments = @{}
        $arguments["inboundNatRuleName"] = $inboundNatRuleName
        $arguments["loadBalancerName"] = $loadBalancerName
        $arguments["resourceGroupName"] = $resourceGroupName

        if($PSBoundParameters.Keys -icontains 'expand')
        {
            $arguments["expand"] = $expand
        }

        $functionObject = Invoke-PulumiFunction -Name azure-native:network:getInboundNatRule -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionNetworkGetUserRuleCollection
{
    param (
        [parameter(mandatory=$False,HelpMessage='The name of the resource group.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='The name of the network manager security Configuration rule collection.)')]
        [string]
        $ruleCollectionName,
        [parameter(mandatory=$False,HelpMessage='The name of the network manager.)')]
        [string]
        $networkManagerName,
        [parameter(mandatory=$False,HelpMessage='The name of the network manager security Configuration.)')]
        [string]
        $configurationName
    )

    process
    {
        $arguments = @{}
        $arguments["configurationName"] = $configurationName
        $arguments["networkManagerName"] = $networkManagerName
        $arguments["resourceGroupName"] = $resourceGroupName
        $arguments["ruleCollectionName"] = $ruleCollectionName

        $functionObject = Invoke-PulumiFunction -Name azure-native:network:getUserRuleCollection -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionNetworkGetExperiment
{
    param (
        [parameter(mandatory=$False,HelpMessage='The Experiment identifier associated with the Experiment)')]
        [string]
        $experimentName,
        [parameter(mandatory=$False,HelpMessage='Name of the Resource group within the Azure subscription.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='The Profile identifier associated with the Tenant and Partner)')]
        [string]
        $profileName
    )

    process
    {
        $arguments = @{}
        $arguments["experimentName"] = $experimentName
        $arguments["profileName"] = $profileName
        $arguments["resourceGroupName"] = $resourceGroupName

        $functionObject = Invoke-PulumiFunction -Name azure-native:network:getExperiment -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionNetworkGetVpnGateway
{
    param (
        [parameter(mandatory=$False,HelpMessage='The resource group name of the VpnGateway.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='The name of the gateway.)')]
        [string]
        $gatewayName
    )

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

        $functionObject = Invoke-PulumiFunction -Name azure-native:network:getVpnGateway -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionNetworkGetPublicIPAddress
{
    param (
        [parameter(mandatory=$False,HelpMessage='The name of the resource group.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='Expands referenced resources.)')]
        [string]
        $expand,
        [parameter(mandatory=$False,HelpMessage='The name of the public IP address.)')]
        [string]
        $publicIpAddressName
    )

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

        if($PSBoundParameters.Keys -icontains 'expand')
        {
            $arguments["expand"] = $expand
        }

        $functionObject = Invoke-PulumiFunction -Name azure-native:network:getPublicIPAddress -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionNetworkGetDnsResourceReferenceByTarResources
{
    param (
        [parameter(mandatory=$False,HelpMessage='A list of references to azure resources for which referencing dns records need to be queried.)')]
        $targetResources
    )

    process
    {
        $arguments = @{}

        if($PSBoundParameters.Keys -icontains 'targetResources')
        {
            $arguments["targetResources"] = $targetResources
        }

        $functionObject = Invoke-PulumiFunction -Name azure-native:network:getDnsResourceReferenceByTarResources -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionNetworkListFirewallPolicyIdpsSignaturesFilterValue
{
    param (
        [parameter(mandatory=$False,HelpMessage='Describes the name of the column which values will be returned)')]
        [string]
        $filterName,
        [parameter(mandatory=$False,HelpMessage='The name of the resource group.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='The name of the Firewall Policy.)')]
        [string]
        $firewallPolicyName
    )

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

        if($PSBoundParameters.Keys -icontains 'filterName')
        {
            $arguments["filterName"] = $filterName
        }

        $functionObject = Invoke-PulumiFunction -Name azure-native:network:listFirewallPolicyIdpsSignaturesFilterValue -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionNetworkGetPrivateLinkService
{
    param (
        [parameter(mandatory=$False,HelpMessage='Expands referenced resources.)')]
        [string]
        $expand,
        [parameter(mandatory=$False,HelpMessage='The name of the resource group.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='The name of the private link service.)')]
        [string]
        $serviceName
    )

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

        if($PSBoundParameters.Keys -icontains 'expand')
        {
            $arguments["expand"] = $expand
        }

        $functionObject = Invoke-PulumiFunction -Name azure-native:network:getPrivateLinkService -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionNetworkListDnsResolverByVirtualNetwork
{
    param (
        [parameter(mandatory=$False,HelpMessage='The name of the resource group. The name is case insensitive.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='The maximum number of results to return. If not specified, returns up to 100 results.)')]
        [int]
        $top,
        [parameter(mandatory=$False,HelpMessage='The name of the virtual network.)')]
        [string]
        $virtualNetworkName
    )

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

        if($PSBoundParameters.Keys -icontains 'top')
        {
            $arguments["top"] = $top
        }

        $functionObject = Invoke-PulumiFunction -Name azure-native:network:listDnsResolverByVirtualNetwork -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionNetworkGetActiveSessions
{
    param (
        [parameter(mandatory=$False,HelpMessage='The name of the resource group.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='The name of the Bastion Host.)')]
        [string]
        $bastionHostName
    )

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

        $functionObject = Invoke-PulumiFunction -Name azure-native:network:getActiveSessions -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionNetworkGetNetworkProfile
{
    param (
        [parameter(mandatory=$False,HelpMessage='The name of the public IP prefix.)')]
        [string]
        $networkProfileName,
        [parameter(mandatory=$False,HelpMessage='Expands referenced resources.)')]
        [string]
        $expand,
        [parameter(mandatory=$False,HelpMessage='The name of the resource group.)')]
        [string]
        $resourceGroupName
    )

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

        if($PSBoundParameters.Keys -icontains 'expand')
        {
            $arguments["expand"] = $expand
        }

        $functionObject = Invoke-PulumiFunction -Name azure-native:network:getNetworkProfile -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionNetworkGetHubRouteTable
{
    param (
        [parameter(mandatory=$False,HelpMessage='The resource group name of the VirtualHub.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='The name of the RouteTable.)')]
        [string]
        $routeTableName,
        [parameter(mandatory=$False,HelpMessage='The name of the VirtualHub.)')]
        [string]
        $virtualHubName
    )

    process
    {
        $arguments = @{}
        $arguments["resourceGroupName"] = $resourceGroupName
        $arguments["routeTableName"] = $routeTableName
        $arguments["virtualHubName"] = $virtualHubName

        $functionObject = Invoke-PulumiFunction -Name azure-native:network:getHubRouteTable -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionNetworkGetLocalNetworkGateway
{
    param (
        [parameter(mandatory=$False,HelpMessage='The name of the local network gateway.)')]
        [string]
        $localNetworkGatewayName,
        [parameter(mandatory=$False,HelpMessage='The name of the resource group.)')]
        [string]
        $resourceGroupName
    )

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

        $functionObject = Invoke-PulumiFunction -Name azure-native:network:getLocalNetworkGateway -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionNetworkGetPacketCapture
{
    param (
        [parameter(mandatory=$False,HelpMessage='The name of the resource group.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='The name of the network watcher.)')]
        [string]
        $networkWatcherName,
        [parameter(mandatory=$False,HelpMessage='The name of the packet capture session.)')]
        [string]
        $packetCaptureName
    )

    process
    {
        $arguments = @{}
        $arguments["networkWatcherName"] = $networkWatcherName
        $arguments["packetCaptureName"] = $packetCaptureName
        $arguments["resourceGroupName"] = $resourceGroupName

        $functionObject = Invoke-PulumiFunction -Name azure-native:network:getPacketCapture -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionNetworkGetStaticMember
{
    param (
        [parameter(mandatory=$False,HelpMessage='The name of the resource group.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='The name of the network group.)')]
        [string]
        $networkGroupName,
        [parameter(mandatory=$False,HelpMessage='The name of the static member.)')]
        [string]
        $staticMemberName,
        [parameter(mandatory=$False,HelpMessage='The name of the network manager.)')]
        [string]
        $networkManagerName
    )

    process
    {
        $arguments = @{}
        $arguments["networkGroupName"] = $networkGroupName
        $arguments["networkManagerName"] = $networkManagerName
        $arguments["resourceGroupName"] = $resourceGroupName
        $arguments["staticMemberName"] = $staticMemberName

        $functionObject = Invoke-PulumiFunction -Name azure-native:network:getStaticMember -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionNetworkGetUserRule
{
    param (
        [parameter(mandatory=$False,HelpMessage='The name of the resource group.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='The name of the network manager security Configuration rule collection.)')]
        [string]
        $ruleCollectionName,
        [parameter(mandatory=$False,HelpMessage='The name of the rule.)')]
        [string]
        $ruleName,
        [parameter(mandatory=$False,HelpMessage='The name of the network manager.)')]
        [string]
        $networkManagerName,
        [parameter(mandatory=$False,HelpMessage='The name of the network manager security Configuration.)')]
        [string]
        $configurationName
    )

    process
    {
        $arguments = @{}
        $arguments["configurationName"] = $configurationName
        $arguments["networkManagerName"] = $networkManagerName
        $arguments["resourceGroupName"] = $resourceGroupName
        $arguments["ruleCollectionName"] = $ruleCollectionName
        $arguments["ruleName"] = $ruleName

        $functionObject = Invoke-PulumiFunction -Name azure-native:network:getUserRule -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionNetworkGetAdminRule
{
    param (
        [parameter(mandatory=$False,HelpMessage='The name of the resource group.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='The name of the network manager security Configuration rule collection.)')]
        [string]
        $ruleCollectionName,
        [parameter(mandatory=$False,HelpMessage='The name of the rule.)')]
        [string]
        $ruleName,
        [parameter(mandatory=$False,HelpMessage='The name of the network manager.)')]
        [string]
        $networkManagerName,
        [parameter(mandatory=$False,HelpMessage='The name of the network manager security Configuration.)')]
        [string]
        $configurationName
    )

    process
    {
        $arguments = @{}
        $arguments["configurationName"] = $configurationName
        $arguments["networkManagerName"] = $networkManagerName
        $arguments["resourceGroupName"] = $resourceGroupName
        $arguments["ruleCollectionName"] = $ruleCollectionName
        $arguments["ruleName"] = $ruleName

        $functionObject = Invoke-PulumiFunction -Name azure-native:network:getAdminRule -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionNetworkGetPrivateLinkServicePrivateEndpointConnection
{
    param (
        [parameter(mandatory=$False,HelpMessage='The name of the private link service.)')]
        [string]
        $serviceName,
        [parameter(mandatory=$False,HelpMessage='Expands referenced resources.)')]
        [string]
        $expand,
        [parameter(mandatory=$False,HelpMessage='The name of the resource group.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='The name of the private end point connection.)')]
        [string]
        $peConnectionName
    )

    process
    {
        $arguments = @{}
        $arguments["peConnectionName"] = $peConnectionName
        $arguments["resourceGroupName"] = $resourceGroupName
        $arguments["serviceName"] = $serviceName

        if($PSBoundParameters.Keys -icontains 'expand')
        {
            $arguments["expand"] = $expand
        }

        $functionObject = Invoke-PulumiFunction -Name azure-native:network:getPrivateLinkServicePrivateEndpointConnection -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionNetworkGetConnectionMonitor
{
    param (
        [parameter(mandatory=$False,HelpMessage='The name of the resource group containing Network Watcher.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='The name of the connection monitor.)')]
        [string]
        $connectionMonitorName,
        [parameter(mandatory=$False,HelpMessage='The name of the Network Watcher resource.)')]
        [string]
        $networkWatcherName
    )

    process
    {
        $arguments = @{}
        $arguments["connectionMonitorName"] = $connectionMonitorName
        $arguments["networkWatcherName"] = $networkWatcherName
        $arguments["resourceGroupName"] = $resourceGroupName

        $functionObject = Invoke-PulumiFunction -Name azure-native:network:getConnectionMonitor -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionNetworkGetNetworkInterface
{
    param (
        [parameter(mandatory=$False,HelpMessage='The name of the network interface.)')]
        [string]
        $networkInterfaceName,
        [parameter(mandatory=$False,HelpMessage='Expands referenced resources.)')]
        [string]
        $expand,
        [parameter(mandatory=$False,HelpMessage='The name of the resource group.)')]
        [string]
        $resourceGroupName
    )

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

        if($PSBoundParameters.Keys -icontains 'expand')
        {
            $arguments["expand"] = $expand
        }

        $functionObject = Invoke-PulumiFunction -Name azure-native:network:getNetworkInterface -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionNetworkGetDefaultAdminRule
{
    param (
        [parameter(mandatory=$False,HelpMessage='The name of the resource group.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='The name of the network manager security Configuration rule collection.)')]
        [string]
        $ruleCollectionName,
        [parameter(mandatory=$False,HelpMessage='The name of the rule.)')]
        [string]
        $ruleName,
        [parameter(mandatory=$False,HelpMessage='The name of the network manager.)')]
        [string]
        $networkManagerName,
        [parameter(mandatory=$False,HelpMessage='The name of the network manager security Configuration.)')]
        [string]
        $configurationName
    )

    process
    {
        $arguments = @{}
        $arguments["configurationName"] = $configurationName
        $arguments["networkManagerName"] = $networkManagerName
        $arguments["resourceGroupName"] = $resourceGroupName
        $arguments["ruleCollectionName"] = $ruleCollectionName
        $arguments["ruleName"] = $ruleName

        $functionObject = Invoke-PulumiFunction -Name azure-native:network:getDefaultAdminRule -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionNetworkListNetworkManagerEffectiveSecurityAdminRule
{
    param (
        [parameter(mandatory=$False,HelpMessage='When present, the value can be passed to a subsequent query call (together with the same query and scopes used in the current request) to retrieve the next page of data.)')]
        [string]
        $skipToken,
        [parameter(mandatory=$False,HelpMessage='The name of the resource group.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='The name of the virtual network.)')]
        [string]
        $virtualNetworkName
    )

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

        if($PSBoundParameters.Keys -icontains 'skipToken')
        {
            $arguments["skipToken"] = $skipToken
        }

        $functionObject = Invoke-PulumiFunction -Name azure-native:network:listNetworkManagerEffectiveSecurityAdminRule -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionNetworkGetExpressRouteCircuitPeering
{
    param (
        [parameter(mandatory=$False,HelpMessage='The name of the resource group.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='The name of the peering.)')]
        [string]
        $peeringName,
        [parameter(mandatory=$False,HelpMessage='The name of the express route circuit.)')]
        [string]
        $circuitName
    )

    process
    {
        $arguments = @{}
        $arguments["circuitName"] = $circuitName
        $arguments["peeringName"] = $peeringName
        $arguments["resourceGroupName"] = $resourceGroupName

        $functionObject = Invoke-PulumiFunction -Name azure-native:network:getExpressRouteCircuitPeering -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionNetworkGetConnectivityConfiguration
{
    param (
        [parameter(mandatory=$False,HelpMessage='The name of the resource group.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='The name of the network manager.)')]
        [string]
        $networkManagerName,
        [parameter(mandatory=$False,HelpMessage='The name of the network manager connectivity configuration.)')]
        [string]
        $configurationName
    )

    process
    {
        $arguments = @{}
        $arguments["configurationName"] = $configurationName
        $arguments["networkManagerName"] = $networkManagerName
        $arguments["resourceGroupName"] = $resourceGroupName

        $functionObject = Invoke-PulumiFunction -Name azure-native:network:getConnectivityConfiguration -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionNetworkGetDdosCustomPolicy
{
    param (
        [parameter(mandatory=$False,HelpMessage='The name of the DDoS custom policy.)')]
        [string]
        $ddosCustomPolicyName,
        [parameter(mandatory=$False,HelpMessage='The name of the resource group.)')]
        [string]
        $resourceGroupName
    )

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

        $functionObject = Invoke-PulumiFunction -Name azure-native:network:getDdosCustomPolicy -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionNetworkGetNspAssociation
{
    param (
        [parameter(mandatory=$False,HelpMessage='The name of the network security perimeter.)')]
        [string]
        $networkSecurityPerimeterName,
        [parameter(mandatory=$False,HelpMessage='The name of the resource group.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='The name of the NSP association.)')]
        [string]
        $associationName
    )

    process
    {
        $arguments = @{}
        $arguments["associationName"] = $associationName
        $arguments["networkSecurityPerimeterName"] = $networkSecurityPerimeterName
        $arguments["resourceGroupName"] = $resourceGroupName

        $functionObject = Invoke-PulumiFunction -Name azure-native:network:getNspAssociation -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionNetworkGetRoute
{
    param (
        [parameter(mandatory=$False,HelpMessage='The name of the resource group.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='The name of the route table.)')]
        [string]
        $routeTableName,
        [parameter(mandatory=$False,HelpMessage='The name of the route.)')]
        [string]
        $routeName
    )

    process
    {
        $arguments = @{}
        $arguments["resourceGroupName"] = $resourceGroupName
        $arguments["routeName"] = $routeName
        $arguments["routeTableName"] = $routeTableName

        $functionObject = Invoke-PulumiFunction -Name azure-native:network:getRoute -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionNetworkGetRoutingIntent
{
    param (
        [parameter(mandatory=$False,HelpMessage='The resource group name of the RoutingIntent.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='The name of the RoutingIntent.)')]
        [string]
        $routingIntentName,
        [parameter(mandatory=$False,HelpMessage='The name of the VirtualHub.)')]
        [string]
        $virtualHubName
    )

    process
    {
        $arguments = @{}
        $arguments["resourceGroupName"] = $resourceGroupName
        $arguments["routingIntentName"] = $routingIntentName
        $arguments["virtualHubName"] = $virtualHubName

        $functionObject = Invoke-PulumiFunction -Name azure-native:network:getRoutingIntent -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionNetworkGetZone
{
    param (
        [parameter(mandatory=$False,HelpMessage='The name of the resource group.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='The name of the DNS zone (without a terminating dot).)')]
        [string]
        $zoneName
    )

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

        $functionObject = Invoke-PulumiFunction -Name azure-native:network:getZone -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionNetworkGetPolicy
{
    param (
        [parameter(mandatory=$False,HelpMessage='Name of the Resource group within the Azure subscription.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='The name of the Web Application Firewall Policy.)')]
        [string]
        $policyName
    )

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

        $functionObject = Invoke-PulumiFunction -Name azure-native:network:getPolicy -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionNetworkListDnsForwardingRulesetByVirtualNetwork
{
    param (
        [parameter(mandatory=$False,HelpMessage='The name of the resource group. The name is case insensitive.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='The maximum number of results to return. If not specified, returns up to 100 results.)')]
        [int]
        $top,
        [parameter(mandatory=$False,HelpMessage='The name of the virtual network.)')]
        [string]
        $virtualNetworkName
    )

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

        if($PSBoundParameters.Keys -icontains 'top')
        {
            $arguments["top"] = $top
        }

        $functionObject = Invoke-PulumiFunction -Name azure-native:network:listDnsForwardingRulesetByVirtualNetwork -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionNetworkGetAdminRuleCollection
{
    param (
        [parameter(mandatory=$False,HelpMessage='The name of the resource group.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='The name of the network manager security Configuration rule collection.)')]
        [string]
        $ruleCollectionName,
        [parameter(mandatory=$False,HelpMessage='The name of the network manager.)')]
        [string]
        $networkManagerName,
        [parameter(mandatory=$False,HelpMessage='The name of the network manager security Configuration.)')]
        [string]
        $configurationName
    )

    process
    {
        $arguments = @{}
        $arguments["configurationName"] = $configurationName
        $arguments["networkManagerName"] = $networkManagerName
        $arguments["resourceGroupName"] = $resourceGroupName
        $arguments["ruleCollectionName"] = $ruleCollectionName

        $functionObject = Invoke-PulumiFunction -Name azure-native:network:getAdminRuleCollection -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionNetworkListEffectiveVirtualNetworkByNetworkManager
{
    param (
        [parameter(mandatory=$False,HelpMessage='Conditional Members.)')]
        [string]
        $conditionalMembers,
        [parameter(mandatory=$False,HelpMessage='Continuation token for pagination, capturing the next page size and offset, as well as the context of the query.)')]
        [string]
        $skipToken,
        [parameter(mandatory=$False,HelpMessage='The name of the resource group.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='An optional query parameter which specifies the maximum number of records to be returned by the server.)')]
        [int]
        $top,
        [parameter(mandatory=$False,HelpMessage='The name of the network manager.)')]
        [string]
        $networkManagerName
    )

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

        if($PSBoundParameters.Keys -icontains 'conditionalMembers')
        {
            $arguments["conditionalMembers"] = $conditionalMembers
        }

        if($PSBoundParameters.Keys -icontains 'skipToken')
        {
            $arguments["skipToken"] = $skipToken
        }

        if($PSBoundParameters.Keys -icontains 'top')
        {
            $arguments["top"] = $top
        }

        $functionObject = Invoke-PulumiFunction -Name azure-native:network:listEffectiveVirtualNetworkByNetworkManager -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionNetworkGetManagementGroupNetworkManagerConnection
{
    param (
        [parameter(mandatory=$False,HelpMessage='Name for the network manager connection.)')]
        [string]
        $networkManagerConnectionName,
        [parameter(mandatory=$False,HelpMessage='The management group Id which uniquely identify the Microsoft Azure management group.)')]
        [string]
        $managementGroupId
    )

    process
    {
        $arguments = @{}
        $arguments["managementGroupId"] = $managementGroupId
        $arguments["networkManagerConnectionName"] = $networkManagerConnectionName

        $functionObject = Invoke-PulumiFunction -Name azure-native:network:getManagementGroupNetworkManagerConnection -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionNetworkGetExpressRouteConnection
{
    param (
        [parameter(mandatory=$False,HelpMessage='The name of the resource group.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='The name of the ExpressRoute connection.)')]
        [string]
        $connectionName,
        [parameter(mandatory=$False,HelpMessage='The name of the ExpressRoute gateway.)')]
        [string]
        $expressRouteGatewayName
    )

    process
    {
        $arguments = @{}
        $arguments["connectionName"] = $connectionName
        $arguments["expressRouteGatewayName"] = $expressRouteGatewayName
        $arguments["resourceGroupName"] = $resourceGroupName

        $functionObject = Invoke-PulumiFunction -Name azure-native:network:getExpressRouteConnection -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionNetworkGetNatGateway
{
    param (
        [parameter(mandatory=$False,HelpMessage='Expands referenced resources.)')]
        [string]
        $expand,
        [parameter(mandatory=$False,HelpMessage='The name of the resource group.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='The name of the nat gateway.)')]
        [string]
        $natGatewayName
    )

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

        if($PSBoundParameters.Keys -icontains 'expand')
        {
            $arguments["expand"] = $expand
        }

        $functionObject = Invoke-PulumiFunction -Name azure-native:network:getNatGateway -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionNetworkGetPrivateEndpoint
{
    param (
        [parameter(mandatory=$False,HelpMessage='The name of the private endpoint.)')]
        [string]
        $privateEndpointName,
        [parameter(mandatory=$False,HelpMessage='Expands referenced resources.)')]
        [string]
        $expand,
        [parameter(mandatory=$False,HelpMessage='The name of the resource group.)')]
        [string]
        $resourceGroupName
    )

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

        if($PSBoundParameters.Keys -icontains 'expand')
        {
            $arguments["expand"] = $expand
        }

        $functionObject = Invoke-PulumiFunction -Name azure-native:network:getPrivateEndpoint -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionNetworkGetFrontDoor
{
    param (
        [parameter(mandatory=$False,HelpMessage='Name of the Resource group within the Azure subscription.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='Name of the Front Door which is globally unique.)')]
        [string]
        $frontDoorName
    )

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

        $functionObject = Invoke-PulumiFunction -Name azure-native:network:getFrontDoor -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionNetworkGetVpnConnection
{
    param (
        [parameter(mandatory=$False,HelpMessage='The resource group name of the VpnGateway.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='The name of the vpn connection.)')]
        [string]
        $connectionName,
        [parameter(mandatory=$False,HelpMessage='The name of the gateway.)')]
        [string]
        $gatewayName
    )

    process
    {
        $arguments = @{}
        $arguments["connectionName"] = $connectionName
        $arguments["gatewayName"] = $gatewayName
        $arguments["resourceGroupName"] = $resourceGroupName

        $functionObject = Invoke-PulumiFunction -Name azure-native:network:getVpnConnection -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionNetworkGetVirtualHubIpConfiguration
{
    param (
        [parameter(mandatory=$False,HelpMessage='The resource group name of the VirtualHub.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='The name of the ipconfig.)')]
        [string]
        $ipConfigName,
        [parameter(mandatory=$False,HelpMessage='The name of the VirtualHub.)')]
        [string]
        $virtualHubName
    )

    process
    {
        $arguments = @{}
        $arguments["ipConfigName"] = $ipConfigName
        $arguments["resourceGroupName"] = $resourceGroupName
        $arguments["virtualHubName"] = $virtualHubName

        $functionObject = Invoke-PulumiFunction -Name azure-native:network:getVirtualHubIpConfiguration -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionNetworkListEffectiveVirtualNetworkByNetworkGroup
{
    param (
        [parameter(mandatory=$False,HelpMessage='When present, the value can be passed to a subsequent query call (together with the same query and scopes used in the current request) to retrieve the next page of data.)')]
        [string]
        $skipToken,
        [parameter(mandatory=$False,HelpMessage='The name of the resource group.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='The name of the network group to get.)')]
        [string]
        $networkGroupName,
        [parameter(mandatory=$False,HelpMessage='The name of the network manager.)')]
        [string]
        $networkManagerName
    )

    process
    {
        $arguments = @{}
        $arguments["networkGroupName"] = $networkGroupName
        $arguments["networkManagerName"] = $networkManagerName
        $arguments["resourceGroupName"] = $resourceGroupName

        if($PSBoundParameters.Keys -icontains 'skipToken')
        {
            $arguments["skipToken"] = $skipToken
        }

        $functionObject = Invoke-PulumiFunction -Name azure-native:network:listEffectiveVirtualNetworkByNetworkGroup -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionNetworkGetFirewallPolicyRuleGroup
{
    param (
        [parameter(mandatory=$False,HelpMessage='The name of the resource group.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='The name of the Firewall Policy.)')]
        [string]
        $firewallPolicyName,
        [parameter(mandatory=$False,HelpMessage='The name of the FirewallPolicyRuleGroup.)')]
        [string]
        $ruleGroupName
    )

    process
    {
        $arguments = @{}
        $arguments["firewallPolicyName"] = $firewallPolicyName
        $arguments["resourceGroupName"] = $resourceGroupName
        $arguments["ruleGroupName"] = $ruleGroupName

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

    process
    {
        return $([SubResource]$PSBoundParameters)
    }
}
class ApplicationGatewayProbeHealthResponseMatch
{
    [string] $body
    [string[]] $statusCodes
}
function New-AzureNativeTypeNetworkApplicationGatewayProbeHealthResponseMatch
{
    param (
        [parameter(mandatory=$False,HelpMessage='Body that must be contained in the health response. Default value is empty.)')]
        [string]
        $body,
        [parameter(mandatory=$False,HelpMessage='Allowed ranges of healthy status codes. Default range of healthy status codes is 200-399.)')]
        [string[]]
        $statusCodes
    )

    process
    {
        return $([ApplicationGatewayProbeHealthResponseMatch]$PSBoundParameters)
    }
}
function Invoke-AzureNativeFunctionNetworkGetApplicationGatewayBackendHealthOnDemand
{
    param (
        [parameter(mandatory=$False,HelpMessage='Host name to send the probe to.)')]
        [string]
        $host,
        [parameter(mandatory=$False,HelpMessage='Expands BackendAddressPool and BackendHttpSettings referenced in backend health.)')]
        [string]
        $expand,
        [parameter(mandatory=$False,HelpMessage='The probe timeout in seconds. Probe marked as failed if valid response is not received with this timeout period. Acceptable values are from 1 second to 86400 seconds.)')]
        [int]
        $timeout,
        [parameter(mandatory=$False,HelpMessage='The name of the application gateway.)')]
        [string]
        $applicationGatewayName,
        [parameter(mandatory=$False,HelpMessage='The name of the resource group.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='The protocol used for the probe.)')]
        [string]
        [ValidateSet('Http', 'Https')]
        $protocol,
        [parameter(mandatory=$False,HelpMessage='Reference to backend pool of application gateway to which probe request will be sent.)')]
        [SubResource]
        $backendAddressPool,
        [parameter(mandatory=$False,HelpMessage='Reference to backend http setting of application gateway to be used for test probe.)')]
        [SubResource]
        $backendHttpSettings,
        [parameter(mandatory=$False,HelpMessage='Criterion for classifying a healthy probe response.)')]
        [ApplicationGatewayProbeHealthResponseMatch]
        $match,
        [parameter(mandatory=$False,HelpMessage='Relative path of probe. Valid path starts from ''/''. Probe is sent to <Protocol>://<host>:<port><path>.)')]
        [string]
        $path,
        [parameter(mandatory=$False,HelpMessage='Whether the host header should be picked from the backend http settings. Default value is false.)')]
        [bool]
        $pickHostNameFromBackendHttpSettings
    )

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

        if($PSBoundParameters.Keys -icontains 'host')
        {
            $arguments["host"] = $host
        }

        if($PSBoundParameters.Keys -icontains 'expand')
        {
            $arguments["expand"] = $expand
        }

        if($PSBoundParameters.Keys -icontains 'timeout')
        {
            $arguments["timeout"] = $timeout
        }

        if($PSBoundParameters.Keys -icontains 'protocol')
        {
            $arguments["protocol"] = $protocol
        }

        if($PSBoundParameters.Keys -icontains 'backendAddressPool')
        {
            $arguments["backendAddressPool"] = $backendAddressPool
        }

        if($PSBoundParameters.Keys -icontains 'backendHttpSettings')
        {
            $arguments["backendHttpSettings"] = $backendHttpSettings
        }

        if($PSBoundParameters.Keys -icontains 'match')
        {
            $arguments["match"] = $match
        }

        if($PSBoundParameters.Keys -icontains 'path')
        {
            $arguments["path"] = $path
        }

        if($PSBoundParameters.Keys -icontains 'pickHostNameFromBackendHttpSettings')
        {
            $arguments["pickHostNameFromBackendHttpSettings"] = $pickHostNameFromBackendHttpSettings
        }

        $functionObject = Invoke-PulumiFunction -Name azure-native:network:getApplicationGatewayBackendHealthOnDemand -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionNetworkGetScopeConnection
{
    param (
        [parameter(mandatory=$False,HelpMessage='The name of the resource group.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='Name for the cross-tenant connection.)')]
        [string]
        $scopeConnectionName,
        [parameter(mandatory=$False,HelpMessage='The name of the network manager.)')]
        [string]
        $networkManagerName
    )

    process
    {
        $arguments = @{}
        $arguments["networkManagerName"] = $networkManagerName
        $arguments["resourceGroupName"] = $resourceGroupName
        $arguments["scopeConnectionName"] = $scopeConnectionName

        $functionObject = Invoke-PulumiFunction -Name azure-native:network:getScopeConnection -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionNetworkGetSubscriptionNetworkManagerConnection
{
    param (
        [parameter(mandatory=$False,HelpMessage='Name for the network manager connection.)')]
        [string]
        $networkManagerConnectionName
    )

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

        $functionObject = Invoke-PulumiFunction -Name azure-native:network:getSubscriptionNetworkManagerConnection -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionNetworkGetNetworkVirtualAppliance
{
    param (
        [parameter(mandatory=$False,HelpMessage='The name of Network Virtual Appliance.)')]
        [string]
        $networkVirtualApplianceName,
        [parameter(mandatory=$False,HelpMessage='Expands referenced resources.)')]
        [string]
        $expand,
        [parameter(mandatory=$False,HelpMessage='The name of the resource group.)')]
        [string]
        $resourceGroupName
    )

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

        if($PSBoundParameters.Keys -icontains 'expand')
        {
            $arguments["expand"] = $expand
        }

        $functionObject = Invoke-PulumiFunction -Name azure-native:network:getNetworkVirtualAppliance -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionNetworkGetApplicationGateway
{
    param (
        [parameter(mandatory=$False,HelpMessage='The name of the resource group.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='The name of the application gateway.)')]
        [string]
        $applicationGatewayName
    )

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

        $functionObject = Invoke-PulumiFunction -Name azure-native:network:getApplicationGateway -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionNetworkGetVirtualNetworkPeering
{
    param (
        [parameter(mandatory=$False,HelpMessage='The name of the resource group.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='The name of the virtual network.)')]
        [string]
        $virtualNetworkName,
        [parameter(mandatory=$False,HelpMessage='The name of the virtual network peering.)')]
        [string]
        $virtualNetworkPeeringName
    )

    process
    {
        $arguments = @{}
        $arguments["resourceGroupName"] = $resourceGroupName
        $arguments["virtualNetworkName"] = $virtualNetworkName
        $arguments["virtualNetworkPeeringName"] = $virtualNetworkPeeringName

        $functionObject = Invoke-PulumiFunction -Name azure-native:network:getVirtualNetworkPeering -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionNetworkListActiveSecurityUserRule
{
    param (
        [parameter(mandatory=$False,HelpMessage='The name of the resource group.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='List of regions.)')]
        [string[]]
        $regions,
        [parameter(mandatory=$False,HelpMessage='When present, the value can be passed to a subsequent query call (together with the same query and scopes used in the current request) to retrieve the next page of data.)')]
        [string]
        $skipToken,
        [parameter(mandatory=$False,HelpMessage='The name of the network manager.)')]
        [string]
        $networkManagerName
    )

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

        if($PSBoundParameters.Keys -icontains 'regions')
        {
            $arguments["regions"] = $regions
        }

        if($PSBoundParameters.Keys -icontains 'skipToken')
        {
            $arguments["skipToken"] = $skipToken
        }

        $functionObject = Invoke-PulumiFunction -Name azure-native:network:listActiveSecurityUserRule -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionNetworkGetHubVirtualNetworkConnection
{
    param (
        [parameter(mandatory=$False,HelpMessage='The resource group name of the VirtualHub.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='The name of the vpn connection.)')]
        [string]
        $connectionName,
        [parameter(mandatory=$False,HelpMessage='The name of the VirtualHub.)')]
        [string]
        $virtualHubName
    )

    process
    {
        $arguments = @{}
        $arguments["connectionName"] = $connectionName
        $arguments["resourceGroupName"] = $resourceGroupName
        $arguments["virtualHubName"] = $virtualHubName

        $functionObject = Invoke-PulumiFunction -Name azure-native:network:getHubVirtualNetworkConnection -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionNetworkGetOutboundEndpoint
{
    param (
        [parameter(mandatory=$False,HelpMessage='The name of the DNS resolver.)')]
        [string]
        $dnsResolverName,
        [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 outbound endpoint for the DNS resolver.)')]
        [string]
        $outboundEndpointName
    )

    process
    {
        $arguments = @{}
        $arguments["dnsResolverName"] = $dnsResolverName
        $arguments["outboundEndpointName"] = $outboundEndpointName
        $arguments["resourceGroupName"] = $resourceGroupName

        $functionObject = Invoke-PulumiFunction -Name azure-native:network:getOutboundEndpoint -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionNetworkGetServiceEndpointPolicyDefinition
{
    param (
        [parameter(mandatory=$False,HelpMessage='The name of the service endpoint policy definition name.)')]
        [string]
        $serviceEndpointPolicyDefinitionName,
        [parameter(mandatory=$False,HelpMessage='The name of the resource group.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='The name of the service endpoint policy name.)')]
        [string]
        $serviceEndpointPolicyName
    )

    process
    {
        $arguments = @{}
        $arguments["resourceGroupName"] = $resourceGroupName
        $arguments["serviceEndpointPolicyDefinitionName"] = $serviceEndpointPolicyDefinitionName
        $arguments["serviceEndpointPolicyName"] = $serviceEndpointPolicyName

        $functionObject = Invoke-PulumiFunction -Name azure-native:network:getServiceEndpointPolicyDefinition -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionNetworkGetVpnServerConfiguration
{
    param (
        [parameter(mandatory=$False,HelpMessage='The name of the VpnServerConfiguration being retrieved.)')]
        [string]
        $vpnServerConfigurationName,
        [parameter(mandatory=$False,HelpMessage='The resource group name of the VpnServerConfiguration.)')]
        [string]
        $resourceGroupName
    )

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

        $functionObject = Invoke-PulumiFunction -Name azure-native:network:getVpnServerConfiguration -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionNetworkGetVirtualNetworkGatewayConnection
{
    param (
        [parameter(mandatory=$False,HelpMessage='The name of the virtual network gateway connection.)')]
        [string]
        $virtualNetworkGatewayConnectionName,
        [parameter(mandatory=$False,HelpMessage='The name of the resource group.)')]
        [string]
        $resourceGroupName
    )

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

        $functionObject = Invoke-PulumiFunction -Name azure-native:network:getVirtualNetworkGatewayConnection -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionNetworkGetNetworkSecurityGroup
{
    param (
        [parameter(mandatory=$False,HelpMessage='The name of the resource group.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='Expands referenced resources.)')]
        [string]
        $expand,
        [parameter(mandatory=$False,HelpMessage='The name of the network security group.)')]
        [string]
        $networkSecurityGroupName
    )

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

        if($PSBoundParameters.Keys -icontains 'expand')
        {
            $arguments["expand"] = $expand
        }

        $functionObject = Invoke-PulumiFunction -Name azure-native:network:getNetworkSecurityGroup -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionNetworkGetNspAccessRule
{
    param (
        [parameter(mandatory=$False,HelpMessage='The name of the network security perimeter.)')]
        [string]
        $networkSecurityPerimeterName,
        [parameter(mandatory=$False,HelpMessage='The name of the resource group.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='The name of the NSP access rule.)')]
        [string]
        $accessRuleName,
        [parameter(mandatory=$False,HelpMessage='The name of the NSP profile.)')]
        [string]
        $profileName
    )

    process
    {
        $arguments = @{}
        $arguments["accessRuleName"] = $accessRuleName
        $arguments["networkSecurityPerimeterName"] = $networkSecurityPerimeterName
        $arguments["profileName"] = $profileName
        $arguments["resourceGroupName"] = $resourceGroupName

        $functionObject = Invoke-PulumiFunction -Name azure-native:network:getNspAccessRule -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionNetworkGetVirtualRouterPeering
{
    param (
        [parameter(mandatory=$False,HelpMessage='The name of the resource group.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='The name of the Virtual Router Peering.)')]
        [string]
        $peeringName,
        [parameter(mandatory=$False,HelpMessage='The name of the Virtual Router.)')]
        [string]
        $virtualRouterName
    )

    process
    {
        $arguments = @{}
        $arguments["peeringName"] = $peeringName
        $arguments["resourceGroupName"] = $resourceGroupName
        $arguments["virtualRouterName"] = $virtualRouterName

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

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

        $functionObject = Invoke-PulumiFunction -Name azure-native:network:getDscpConfiguration -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionNetworkGetInboundEndpoint
{
    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 DNS resolver.)')]
        [string]
        $dnsResolverName,
        [parameter(mandatory=$False,HelpMessage='The name of the inbound endpoint for the DNS resolver.)')]
        [string]
        $inboundEndpointName
    )

    process
    {
        $arguments = @{}
        $arguments["dnsResolverName"] = $dnsResolverName
        $arguments["inboundEndpointName"] = $inboundEndpointName
        $arguments["resourceGroupName"] = $resourceGroupName

        $functionObject = Invoke-PulumiFunction -Name azure-native:network:getInboundEndpoint -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionNetworkGetVirtualHubRouteTableV2
{
    param (
        [parameter(mandatory=$False,HelpMessage='The resource group name of the VirtualHubRouteTableV2.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='The name of the VirtualHubRouteTableV2.)')]
        [string]
        $routeTableName,
        [parameter(mandatory=$False,HelpMessage='The name of the VirtualHub.)')]
        [string]
        $virtualHubName
    )

    process
    {
        $arguments = @{}
        $arguments["resourceGroupName"] = $resourceGroupName
        $arguments["routeTableName"] = $routeTableName
        $arguments["virtualHubName"] = $virtualHubName

        $functionObject = Invoke-PulumiFunction -Name azure-native:network:getVirtualHubRouteTableV2 -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionNetworkGetCustomIPPrefix
{
    param (
        [parameter(mandatory=$False,HelpMessage='Expands referenced resources.)')]
        [string]
        $expand,
        [parameter(mandatory=$False,HelpMessage='The name of the resource group.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='The name of the custom IP prefix.)')]
        [string]
        $customIpPrefixName
    )

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

        if($PSBoundParameters.Keys -icontains 'expand')
        {
            $arguments["expand"] = $expand
        }

        $functionObject = Invoke-PulumiFunction -Name azure-native:network:getCustomIPPrefix -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionNetworkGetVirtualNetworkGateway
{
    param (
        [parameter(mandatory=$False,HelpMessage='The name of the virtual network gateway.)')]
        [string]
        $virtualNetworkGatewayName,
        [parameter(mandatory=$False,HelpMessage='The name of the resource group.)')]
        [string]
        $resourceGroupName
    )

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

        $functionObject = Invoke-PulumiFunction -Name azure-native:network:getVirtualNetworkGateway -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionNetworkGetNetworkSecurityPerimeter
{
    param (
        [parameter(mandatory=$False,HelpMessage='The name of the network security perimeter.)')]
        [string]
        $networkSecurityPerimeterName,
        [parameter(mandatory=$False,HelpMessage='The name of the resource group.)')]
        [string]
        $resourceGroupName
    )

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

        $functionObject = Invoke-PulumiFunction -Name azure-native:network:getNetworkSecurityPerimeter -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionNetworkGetNatRule
{
    param (
        [parameter(mandatory=$False,HelpMessage='The resource group name of the VpnGateway.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='The name of the nat rule.)')]
        [string]
        $natRuleName,
        [parameter(mandatory=$False,HelpMessage='The name of the gateway.)')]
        [string]
        $gatewayName
    )

    process
    {
        $arguments = @{}
        $arguments["gatewayName"] = $gatewayName
        $arguments["natRuleName"] = $natRuleName
        $arguments["resourceGroupName"] = $resourceGroupName

        $functionObject = Invoke-PulumiFunction -Name azure-native:network:getNatRule -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionNetworkGetBastionHost
{
    param (
        [parameter(mandatory=$False,HelpMessage='The name of the resource group.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='The name of the Bastion Host.)')]
        [string]
        $bastionHostName
    )

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

        $functionObject = Invoke-PulumiFunction -Name azure-native:network:getBastionHost -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionNetworkGetLoadBalancerBackendAddressPool
{
    param (
        [parameter(mandatory=$False,HelpMessage='The name of the resource group.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='The name of the backend address pool.)')]
        [string]
        $backendAddressPoolName,
        [parameter(mandatory=$False,HelpMessage='The name of the load balancer.)')]
        [string]
        $loadBalancerName
    )

    process
    {
        $arguments = @{}
        $arguments["backendAddressPoolName"] = $backendAddressPoolName
        $arguments["loadBalancerName"] = $loadBalancerName
        $arguments["resourceGroupName"] = $resourceGroupName

        $functionObject = Invoke-PulumiFunction -Name azure-native:network:getLoadBalancerBackendAddressPool -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionNetworkGetVirtualNetworkTap
{
    param (
        [parameter(mandatory=$False,HelpMessage='The name of the resource group.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='The name of virtual network tap.)')]
        [string]
        $tapName
    )

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

        $functionObject = Invoke-PulumiFunction -Name azure-native:network:getVirtualNetworkTap -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionNetworkGetExpressRouteCrossConnectionPeering
{
    param (
        [parameter(mandatory=$False,HelpMessage='The name of the ExpressRouteCrossConnection.)')]
        [string]
        $crossConnectionName,
        [parameter(mandatory=$False,HelpMessage='The name of the resource group.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='The name of the peering.)')]
        [string]
        $peeringName
    )

    process
    {
        $arguments = @{}
        $arguments["crossConnectionName"] = $crossConnectionName
        $arguments["peeringName"] = $peeringName
        $arguments["resourceGroupName"] = $resourceGroupName

        $functionObject = Invoke-PulumiFunction -Name azure-native:network:getExpressRouteCrossConnectionPeering -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionNetworkGetIpAllocation
{
    param (
        [parameter(mandatory=$False,HelpMessage='Expands referenced resources.)')]
        [string]
        $expand,
        [parameter(mandatory=$False,HelpMessage='The name of the resource group.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='The name of the IpAllocation.)')]
        [string]
        $ipAllocationName
    )

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

        if($PSBoundParameters.Keys -icontains 'expand')
        {
            $arguments["expand"] = $expand
        }

        $functionObject = Invoke-PulumiFunction -Name azure-native:network:getIpAllocation -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionNetworkGetDefaultUserRule
{
    param (
        [parameter(mandatory=$False,HelpMessage='The name of the resource group.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='The name of the network manager security Configuration rule collection.)')]
        [string]
        $ruleCollectionName,
        [parameter(mandatory=$False,HelpMessage='The name of the rule.)')]
        [string]
        $ruleName,
        [parameter(mandatory=$False,HelpMessage='The name of the network manager.)')]
        [string]
        $networkManagerName,
        [parameter(mandatory=$False,HelpMessage='The name of the network manager security Configuration.)')]
        [string]
        $configurationName
    )

    process
    {
        $arguments = @{}
        $arguments["configurationName"] = $configurationName
        $arguments["networkManagerName"] = $networkManagerName
        $arguments["resourceGroupName"] = $resourceGroupName
        $arguments["ruleCollectionName"] = $ruleCollectionName
        $arguments["ruleName"] = $ruleName

        $functionObject = Invoke-PulumiFunction -Name azure-native:network:getDefaultUserRule -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionNetworkGetVirtualApplianceSite
{
    param (
        [parameter(mandatory=$False,HelpMessage='The name of the Network Virtual Appliance.)')]
        [string]
        $networkVirtualApplianceName,
        [parameter(mandatory=$False,HelpMessage='The name of the resource group.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='The name of the site.)')]
        [string]
        $siteName
    )

    process
    {
        $arguments = @{}
        $arguments["networkVirtualApplianceName"] = $networkVirtualApplianceName
        $arguments["resourceGroupName"] = $resourceGroupName
        $arguments["siteName"] = $siteName

        $functionObject = Invoke-PulumiFunction -Name azure-native:network:getVirtualApplianceSite -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionNetworkGetSecurityUserConfiguration
{
    param (
        [parameter(mandatory=$False,HelpMessage='The name of the resource group.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='The name of the network manager.)')]
        [string]
        $networkManagerName,
        [parameter(mandatory=$False,HelpMessage='The name of the network manager security Configuration.)')]
        [string]
        $configurationName
    )

    process
    {
        $arguments = @{}
        $arguments["configurationName"] = $configurationName
        $arguments["networkManagerName"] = $networkManagerName
        $arguments["resourceGroupName"] = $resourceGroupName

        $functionObject = Invoke-PulumiFunction -Name azure-native:network:getSecurityUserConfiguration -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionNetworkGetWebApplicationFirewallPolicy
{
    param (
        [parameter(mandatory=$False,HelpMessage='The name of the resource group.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='The name of the policy.)')]
        [string]
        $policyName
    )

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

        $functionObject = Invoke-PulumiFunction -Name azure-native:network:getWebApplicationFirewallPolicy -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionNetworkGetEndpoint
{
    param (
        [parameter(mandatory=$False,HelpMessage='The name of the resource group containing the Traffic Manager endpoint.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='The type of the Traffic Manager endpoint.)')]
        [string]
        $endpointType,
        [parameter(mandatory=$False,HelpMessage='The name of the Traffic Manager endpoint.)')]
        [string]
        $endpointName,
        [parameter(mandatory=$False,HelpMessage='The name of the Traffic Manager profile.)')]
        [string]
        $profileName
    )

    process
    {
        $arguments = @{}
        $arguments["endpointName"] = $endpointName
        $arguments["endpointType"] = $endpointType
        $arguments["profileName"] = $profileName
        $arguments["resourceGroupName"] = $resourceGroupName

        $functionObject = Invoke-PulumiFunction -Name azure-native:network:getEndpoint -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionNetworkGetVirtualNetworkGatewayBgpPeerStatus
{
    param (
        [parameter(mandatory=$False,HelpMessage='The IP address of the peer to retrieve the status of.)')]
        [string]
        $peer,
        [parameter(mandatory=$False,HelpMessage='The name of the resource group.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='The name of the virtual network gateway.)')]
        [string]
        $virtualNetworkGatewayName
    )

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

        if($PSBoundParameters.Keys -icontains 'peer')
        {
            $arguments["peer"] = $peer
        }

        $functionObject = Invoke-PulumiFunction -Name azure-native:network:getVirtualNetworkGatewayBgpPeerStatus -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionNetworkGetServiceEndpointPolicy
{
    param (
        [parameter(mandatory=$False,HelpMessage='Expands referenced resources.)')]
        [string]
        $expand,
        [parameter(mandatory=$False,HelpMessage='The name of the resource group.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='The name of the service endpoint policy.)')]
        [string]
        $serviceEndpointPolicyName
    )

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

        if($PSBoundParameters.Keys -icontains 'expand')
        {
            $arguments["expand"] = $expand
        }

        $functionObject = Invoke-PulumiFunction -Name azure-native:network:getServiceEndpointPolicy -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionNetworkGetIpGroup
{
    param (
        [parameter(mandatory=$False,HelpMessage='The name of the ipGroups.)')]
        [string]
        $ipGroupsName,
        [parameter(mandatory=$False,HelpMessage='Expands resourceIds (of Firewalls/Network Security Groups etc.) back referenced by the IpGroups resource.)')]
        [string]
        $expand,
        [parameter(mandatory=$False,HelpMessage='The name of the resource group.)')]
        [string]
        $resourceGroupName
    )

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

        if($PSBoundParameters.Keys -icontains 'expand')
        {
            $arguments["expand"] = $expand
        }

        $functionObject = Invoke-PulumiFunction -Name azure-native:network:getIpGroup -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionNetworkGetExpressRouteCircuitAuthorization
{
    param (
        [parameter(mandatory=$False,HelpMessage='The name of the resource group.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='The name of the authorization.)')]
        [string]
        $authorizationName,
        [parameter(mandatory=$False,HelpMessage='The name of the express route circuit.)')]
        [string]
        $circuitName
    )

    process
    {
        $arguments = @{}
        $arguments["authorizationName"] = $authorizationName
        $arguments["circuitName"] = $circuitName
        $arguments["resourceGroupName"] = $resourceGroupName

        $functionObject = Invoke-PulumiFunction -Name azure-native:network:getExpressRouteCircuitAuthorization -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionNetworkGetVirtualRouter
{
    param (
        [parameter(mandatory=$False,HelpMessage='Expands referenced resources.)')]
        [string]
        $expand,
        [parameter(mandatory=$False,HelpMessage='The name of the resource group.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='The name of the Virtual Router.)')]
        [string]
        $virtualRouterName
    )

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

        if($PSBoundParameters.Keys -icontains 'expand')
        {
            $arguments["expand"] = $expand
        }

        $functionObject = Invoke-PulumiFunction -Name azure-native:network:getVirtualRouter -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionNetworkGetRouteFilterRule
{
    param (
        [parameter(mandatory=$False,HelpMessage='The name of the resource group.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='The name of the rule.)')]
        [string]
        $ruleName,
        [parameter(mandatory=$False,HelpMessage='The name of the route filter.)')]
        [string]
        $routeFilterName
    )

    process
    {
        $arguments = @{}
        $arguments["resourceGroupName"] = $resourceGroupName
        $arguments["routeFilterName"] = $routeFilterName
        $arguments["ruleName"] = $ruleName

        $functionObject = Invoke-PulumiFunction -Name azure-native:network:getRouteFilterRule -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionNetworkGetDdosProtectionPlan
{
    param (
        [parameter(mandatory=$False,HelpMessage='The name of the resource group.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='The name of the DDoS protection plan.)')]
        [string]
        $ddosProtectionPlanName
    )

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

        $functionObject = Invoke-PulumiFunction -Name azure-native:network:getDdosProtectionPlan -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionNetworkGetConfigurationPolicyGroup
{
    param (
        [parameter(mandatory=$False,HelpMessage='The name of the ConfigurationPolicyGroup being retrieved.)')]
        [string]
        $configurationPolicyGroupName,
        [parameter(mandatory=$False,HelpMessage='The resource group name of the VpnServerConfiguration.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='The name of the VpnServerConfiguration.)')]
        [string]
        $vpnServerConfigurationName
    )

    process
    {
        $arguments = @{}
        $arguments["configurationPolicyGroupName"] = $configurationPolicyGroupName
        $arguments["resourceGroupName"] = $resourceGroupName
        $arguments["vpnServerConfigurationName"] = $vpnServerConfigurationName

        $functionObject = Invoke-PulumiFunction -Name azure-native:network:getConfigurationPolicyGroup -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionNetworkGetP2sVpnGatewayP2sVpnConnectionHealth
{
    param (
        [parameter(mandatory=$False,HelpMessage='The name of the resource group.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='The name of the P2SVpnGateway.)')]
        [string]
        $gatewayName
    )

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

        $functionObject = Invoke-PulumiFunction -Name azure-native:network:getP2sVpnGatewayP2sVpnConnectionHealth -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionNetworkGetRecordSet
{
    param (
        [parameter(mandatory=$False,HelpMessage='The name of the resource group.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='The name of the record set, relative to the name of the zone.)')]
        [string]
        $relativeRecordSetName,
        [parameter(mandatory=$False,HelpMessage='The name of the DNS zone (without a terminating dot).)')]
        [string]
        $zoneName,
        [parameter(mandatory=$False,HelpMessage='The type of DNS record in this record set.)')]
        [string]
        $recordType
    )

    process
    {
        $arguments = @{}
        $arguments["recordType"] = $recordType
        $arguments["relativeRecordSetName"] = $relativeRecordSetName
        $arguments["resourceGroupName"] = $resourceGroupName
        $arguments["zoneName"] = $zoneName

        $functionObject = Invoke-PulumiFunction -Name azure-native:network:getRecordSet -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionNetworkGetNetworkExperimentProfile
{
    param (
        [parameter(mandatory=$False,HelpMessage='Name of the Resource group within the Azure subscription.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='The Profile identifier associated with the Tenant and Partner)')]
        [string]
        $profileName
    )

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

        $functionObject = Invoke-PulumiFunction -Name azure-native:network:getNetworkExperimentProfile -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionNetworkGetVirtualNetworkLink
{
    param (
        [parameter(mandatory=$False,HelpMessage='The name of the resource group.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='The name of the virtual network link.)')]
        [string]
        $virtualNetworkLinkName,
        [parameter(mandatory=$False,HelpMessage='The name of the Private DNS zone (without a terminating dot).)')]
        [string]
        $privateZoneName
    )

    process
    {
        $arguments = @{}
        $arguments["privateZoneName"] = $privateZoneName
        $arguments["resourceGroupName"] = $resourceGroupName
        $arguments["virtualNetworkLinkName"] = $virtualNetworkLinkName

        $functionObject = Invoke-PulumiFunction -Name azure-native:network:getVirtualNetworkLink -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionNetworkGetExpressRouteCircuit
{
    param (
        [parameter(mandatory=$False,HelpMessage='The name of the resource group.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='The name of express route circuit.)')]
        [string]
        $circuitName
    )

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

        $functionObject = Invoke-PulumiFunction -Name azure-native:network:getExpressRouteCircuit -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionNetworkGetVirtualHub
{
    param (
        [parameter(mandatory=$False,HelpMessage='The name of the VirtualHub.)')]
        [string]
        $virtualHubName,
        [parameter(mandatory=$False,HelpMessage='The resource group name of the VirtualHub.)')]
        [string]
        $resourceGroupName
    )

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

        $functionObject = Invoke-PulumiFunction -Name azure-native:network:getVirtualHub -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionNetworkGetSecurityRule
{
    param (
        [parameter(mandatory=$False,HelpMessage='The name of the resource group.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='The name of the network security group.)')]
        [string]
        $networkSecurityGroupName,
        [parameter(mandatory=$False,HelpMessage='The name of the security rule.)')]
        [string]
        $securityRuleName
    )

    process
    {
        $arguments = @{}
        $arguments["networkSecurityGroupName"] = $networkSecurityGroupName
        $arguments["resourceGroupName"] = $resourceGroupName
        $arguments["securityRuleName"] = $securityRuleName

        $functionObject = Invoke-PulumiFunction -Name azure-native:network:getSecurityRule -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionNetworkGetPrivateDnsZoneGroup
{
    param (
        [parameter(mandatory=$False,HelpMessage='The name of the private endpoint.)')]
        [string]
        $privateEndpointName,
        [parameter(mandatory=$False,HelpMessage='The name of the resource group.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='The name of the private dns zone group.)')]
        [string]
        $privateDnsZoneGroupName
    )

    process
    {
        $arguments = @{}
        $arguments["privateDnsZoneGroupName"] = $privateDnsZoneGroupName
        $arguments["privateEndpointName"] = $privateEndpointName
        $arguments["resourceGroupName"] = $resourceGroupName

        $functionObject = Invoke-PulumiFunction -Name azure-native:network:getPrivateDnsZoneGroup -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionNetworkGetVirtualNetworkGatewayLearnedRoutes
{
    param (
        [parameter(mandatory=$False,HelpMessage='The name of the virtual network gateway.)')]
        [string]
        $virtualNetworkGatewayName,
        [parameter(mandatory=$False,HelpMessage='The name of the resource group.)')]
        [string]
        $resourceGroupName
    )

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

        $functionObject = Invoke-PulumiFunction -Name azure-native:network:getVirtualNetworkGatewayLearnedRoutes -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionNetworkGetRouteFilter
{
    param (
        [parameter(mandatory=$False,HelpMessage='Expands referenced express route bgp peering resources.)')]
        [string]
        $expand,
        [parameter(mandatory=$False,HelpMessage='The name of the resource group.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='The name of the route filter.)')]
        [string]
        $routeFilterName
    )

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

        if($PSBoundParameters.Keys -icontains 'expand')
        {
            $arguments["expand"] = $expand
        }

        $functionObject = Invoke-PulumiFunction -Name azure-native:network:getRouteFilter -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionNetworkGetVirtualNetworkGatewayAdvertisedRoutes
{
    param (
        [parameter(mandatory=$False,HelpMessage='The IP address of the peer.)')]
        [string]
        $peer,
        [parameter(mandatory=$False,HelpMessage='The name of the resource group.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='The name of the virtual network gateway.)')]
        [string]
        $virtualNetworkGatewayName
    )

    process
    {
        $arguments = @{}
        $arguments["peer"] = $peer
        $arguments["resourceGroupName"] = $resourceGroupName
        $arguments["virtualNetworkGatewayName"] = $virtualNetworkGatewayName

        $functionObject = Invoke-PulumiFunction -Name azure-native:network:getVirtualNetworkGatewayAdvertisedRoutes -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionNetworkGetExpressRoutePortAuthorization
{
    param (
        [parameter(mandatory=$False,HelpMessage='The name of the resource group.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='The name of the express route port.)')]
        [string]
        $expressRoutePortName,
        [parameter(mandatory=$False,HelpMessage='The name of the authorization.)')]
        [string]
        $authorizationName
    )

    process
    {
        $arguments = @{}
        $arguments["authorizationName"] = $authorizationName
        $arguments["expressRoutePortName"] = $expressRoutePortName
        $arguments["resourceGroupName"] = $resourceGroupName

        $functionObject = Invoke-PulumiFunction -Name azure-native:network:getExpressRoutePortAuthorization -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionNetworkGetApplicationGatewayPrivateEndpointConnection
{
    param (
        [parameter(mandatory=$False,HelpMessage='The name of the resource group.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='The name of the application gateway private endpoint connection.)')]
        [string]
        $connectionName,
        [parameter(mandatory=$False,HelpMessage='The name of the application gateway.)')]
        [string]
        $applicationGatewayName
    )

    process
    {
        $arguments = @{}
        $arguments["applicationGatewayName"] = $applicationGatewayName
        $arguments["connectionName"] = $connectionName
        $arguments["resourceGroupName"] = $resourceGroupName

        $functionObject = Invoke-PulumiFunction -Name azure-native:network:getApplicationGatewayPrivateEndpointConnection -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionNetworkGetVirtualHubBgpConnection
{
    param (
        [parameter(mandatory=$False,HelpMessage='The resource group name of the VirtualHub.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='The name of the connection.)')]
        [string]
        $connectionName,
        [parameter(mandatory=$False,HelpMessage='The name of the VirtualHub.)')]
        [string]
        $virtualHubName
    )

    process
    {
        $arguments = @{}
        $arguments["connectionName"] = $connectionName
        $arguments["resourceGroupName"] = $resourceGroupName
        $arguments["virtualHubName"] = $virtualHubName

        $functionObject = Invoke-PulumiFunction -Name azure-native:network:getVirtualHubBgpConnection -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionNetworkListActiveConnectivityConfiguration
{
    param (
        [parameter(mandatory=$False,HelpMessage='The name of the resource group.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='List of regions.)')]
        [string[]]
        $regions,
        [parameter(mandatory=$False,HelpMessage='When present, the value can be passed to a subsequent query call (together with the same query and scopes used in the current request) to retrieve the next page of data.)')]
        [string]
        $skipToken,
        [parameter(mandatory=$False,HelpMessage='The name of the network manager.)')]
        [string]
        $networkManagerName
    )

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

        if($PSBoundParameters.Keys -icontains 'regions')
        {
            $arguments["regions"] = $regions
        }

        if($PSBoundParameters.Keys -icontains 'skipToken')
        {
            $arguments["skipToken"] = $skipToken
        }

        $functionObject = Invoke-PulumiFunction -Name azure-native:network:listActiveConnectivityConfiguration -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionNetworkGetNspAssociationsProxy
{
    param (
        [parameter(mandatory=$False,HelpMessage='The name of the network security perimeter.)')]
        [string]
        $networkSecurityPerimeterName,
        [parameter(mandatory=$False,HelpMessage='The name of the resource group.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='The name of the NSP association.)')]
        [string]
        $associationName
    )

    process
    {
        $arguments = @{}
        $arguments["associationName"] = $associationName
        $arguments["networkSecurityPerimeterName"] = $networkSecurityPerimeterName
        $arguments["resourceGroupName"] = $resourceGroupName

        $functionObject = Invoke-PulumiFunction -Name azure-native:network:getNspAssociationsProxy -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionNetworkGetRulesEngine
{
    param (
        [parameter(mandatory=$False,HelpMessage='Name of the Resource group within the Azure subscription.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='Name of the Front Door which is globally unique.)')]
        [string]
        $frontDoorName,
        [parameter(mandatory=$False,HelpMessage='Name of the Rules Engine which is unique within the Front Door.)')]
        [string]
        $rulesEngineName
    )

    process
    {
        $arguments = @{}
        $arguments["frontDoorName"] = $frontDoorName
        $arguments["resourceGroupName"] = $resourceGroupName
        $arguments["rulesEngineName"] = $rulesEngineName

        $functionObject = Invoke-PulumiFunction -Name azure-native:network:getRulesEngine -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionNetworkGetNetworkWatcher
{
    param (
        [parameter(mandatory=$False,HelpMessage='The name of the resource group.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='The name of the network watcher.)')]
        [string]
        $networkWatcherName
    )

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

        $functionObject = Invoke-PulumiFunction -Name azure-native:network:getNetworkWatcher -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionNetworkGetFlowLog
{
    param (
        [parameter(mandatory=$False,HelpMessage='The name of the resource group.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='The name of the flow log resource.)')]
        [string]
        $flowLogName,
        [parameter(mandatory=$False,HelpMessage='The name of the network watcher.)')]
        [string]
        $networkWatcherName
    )

    process
    {
        $arguments = @{}
        $arguments["flowLogName"] = $flowLogName
        $arguments["networkWatcherName"] = $networkWatcherName
        $arguments["resourceGroupName"] = $resourceGroupName

        $functionObject = Invoke-PulumiFunction -Name azure-native:network:getFlowLog -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionNetworkGetNspProfile
{
    param (
        [parameter(mandatory=$False,HelpMessage='The name of the network security perimeter.)')]
        [string]
        $networkSecurityPerimeterName,
        [parameter(mandatory=$False,HelpMessage='The name of the resource group.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='The name of the NSP profile.)')]
        [string]
        $profileName
    )

    process
    {
        $arguments = @{}
        $arguments["networkSecurityPerimeterName"] = $networkSecurityPerimeterName
        $arguments["profileName"] = $profileName
        $arguments["resourceGroupName"] = $resourceGroupName

        $functionObject = Invoke-PulumiFunction -Name azure-native:network:getNspProfile -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionNetworkGetTrafficManagerUserMetricsKey
{
    param (
    )

    process
    {
        $arguments = @{}

        $functionObject = Invoke-PulumiFunction -Name azure-native:network:getTrafficManagerUserMetricsKey -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
class OrderBy
{
    [ValidateSet('Ascending', 'Descending')]
    [string] $order
    [ValidateSet('Ascending', 'Descending')]
    [string] $field
}
function New-AzureNativeTypeNetworkOrderBy
{
    param (
        [parameter(mandatory=$False,HelpMessage='Describes if results should be in ascending/descending order)')]
        [string]
        [ValidateSet('Ascending', 'Descending')]
        $order,
        [parameter(mandatory=$False,HelpMessage='Describes the actual column name to sort by)')]
        [string]
        $field
    )

    process
    {
        return $([OrderBy]$PSBoundParameters)
    }
}
function Invoke-AzureNativeFunctionNetworkListFirewallPolicyIdpsSignature
{
    param (
        [parameter(mandatory=$False,HelpMessage='The name of the Firewall Policy.)')]
        [string]
        $firewallPolicyName,
        [parameter(mandatory=$False,HelpMessage='The number of the results to return in each page)')]
        [int]
        $resultsPerPage,
        [parameter(mandatory=$False,HelpMessage='The name of the resource group.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='Search term in all columns)')]
        [string]
        $search,
        [parameter(mandatory=$False,HelpMessage='Contain all filters names and values)')]
        $filters,
        [parameter(mandatory=$False,HelpMessage='Column to sort response by)')]
        [OrderBy]
        $orderBy,
        [parameter(mandatory=$False,HelpMessage='The number of records matching the filter to skip)')]
        [int]
        $skip
    )

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

        if($PSBoundParameters.Keys -icontains 'resultsPerPage')
        {
            $arguments["resultsPerPage"] = $resultsPerPage
        }

        if($PSBoundParameters.Keys -icontains 'search')
        {
            $arguments["search"] = $search
        }

        if($PSBoundParameters.Keys -icontains 'filters')
        {
            $arguments["filters"] = $filters
        }

        if($PSBoundParameters.Keys -icontains 'orderBy')
        {
            $arguments["orderBy"] = $orderBy
        }

        if($PSBoundParameters.Keys -icontains 'skip')
        {
            $arguments["skip"] = $skip
        }

        $functionObject = Invoke-PulumiFunction -Name azure-native:network:listFirewallPolicyIdpsSignature -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionNetworkListNetworkManagerDeploymentStatus
{
    param (
        [parameter(mandatory=$False,HelpMessage='The name of the resource group.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='List of deployment types.)')]
        $deploymentTypes,
        [parameter(mandatory=$False,HelpMessage='List of locations.)')]
        [string[]]
        $regions,
        [parameter(mandatory=$False,HelpMessage='Continuation token for pagination, capturing the next page size and offset, as well as the context of the query.)')]
        [string]
        $skipToken,
        [parameter(mandatory=$False,HelpMessage='The name of the network manager.)')]
        [string]
        $networkManagerName
    )

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

        if($PSBoundParameters.Keys -icontains 'deploymentTypes')
        {
            $arguments["deploymentTypes"] = $deploymentTypes
        }

        if($PSBoundParameters.Keys -icontains 'regions')
        {
            $arguments["regions"] = $regions
        }

        if($PSBoundParameters.Keys -icontains 'skipToken')
        {
            $arguments["skipToken"] = $skipToken
        }

        $functionObject = Invoke-PulumiFunction -Name azure-native:network:listNetworkManagerDeploymentStatus -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionNetworkGetFirewallPolicyRuleCollectionGroup
{
    param (
        [parameter(mandatory=$False,HelpMessage='The name of the resource group.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='The name of the Firewall Policy.)')]
        [string]
        $firewallPolicyName,
        [parameter(mandatory=$False,HelpMessage='The name of the FirewallPolicyRuleCollectionGroup.)')]
        [string]
        $ruleCollectionGroupName
    )

    process
    {
        $arguments = @{}
        $arguments["firewallPolicyName"] = $firewallPolicyName
        $arguments["resourceGroupName"] = $resourceGroupName
        $arguments["ruleCollectionGroupName"] = $ruleCollectionGroupName

        $functionObject = Invoke-PulumiFunction -Name azure-native:network:getFirewallPolicyRuleCollectionGroup -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionNetworkGetVirtualWan
{
    param (
        [parameter(mandatory=$False,HelpMessage='The name of the VirtualWAN being retrieved.)')]
        [string]
        $virtualWANName,
        [parameter(mandatory=$False,HelpMessage='The resource group name of the VirtualWan.)')]
        [string]
        $resourceGroupName
    )

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

        $functionObject = Invoke-PulumiFunction -Name azure-native:network:getVirtualWan -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionNetworkGetLoadBalancer
{
    param (
        [parameter(mandatory=$False,HelpMessage='Expands referenced resources.)')]
        [string]
        $expand,
        [parameter(mandatory=$False,HelpMessage='The name of the resource group.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='The name of the load balancer.)')]
        [string]
        $loadBalancerName
    )

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

        if($PSBoundParameters.Keys -icontains 'expand')
        {
            $arguments["expand"] = $expand
        }

        $functionObject = Invoke-PulumiFunction -Name azure-native:network:getLoadBalancer -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionNetworkGetP2sVpnGateway
{
    param (
        [parameter(mandatory=$False,HelpMessage='The resource group name of the P2SVpnGateway.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='The name of the gateway.)')]
        [string]
        $gatewayName
    )

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

        $functionObject = Invoke-PulumiFunction -Name azure-native:network:getP2sVpnGateway -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionNetworkGetP2sVpnGatewayP2sVpnConnectionHealthDetailed
{
    param (
        [parameter(mandatory=$False,HelpMessage='The list of p2s vpn user names whose p2s vpn connection detailed health to retrieve for.)')]
        [string[]]
        $vpnUserNamesFilter,
        [parameter(mandatory=$False,HelpMessage='The name of the resource group.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='The name of the P2SVpnGateway.)')]
        [string]
        $gatewayName,
        [parameter(mandatory=$False,HelpMessage='The sas-url to download the P2S Vpn connection health detail.)')]
        [string]
        $outputBlobSasUrl
    )

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

        if($PSBoundParameters.Keys -icontains 'vpnUserNamesFilter')
        {
            $arguments["vpnUserNamesFilter"] = $vpnUserNamesFilter
        }

        if($PSBoundParameters.Keys -icontains 'outputBlobSasUrl')
        {
            $arguments["outputBlobSasUrl"] = $outputBlobSasUrl
        }

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

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

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

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

        $functionObject = Invoke-PulumiFunction -Name azure-native:network:getDnsForwardingRuleset -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionNetworkGetP2sVpnServerConfiguration
{
    param (
        [parameter(mandatory=$False,HelpMessage='The name of the P2SVpnServerConfiguration.)')]
        [string]
        $p2SVpnServerConfigurationName,
        [parameter(mandatory=$False,HelpMessage='The resource group name of the P2SVpnServerConfiguration.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='The name of the VirtualWan.)')]
        [string]
        $virtualWanName
    )

    process
    {
        $arguments = @{}
        $arguments["p2SVpnServerConfigurationName"] = $p2SVpnServerConfigurationName
        $arguments["resourceGroupName"] = $resourceGroupName
        $arguments["virtualWanName"] = $virtualWanName

        $functionObject = Invoke-PulumiFunction -Name azure-native:network:getP2sVpnServerConfiguration -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionNetworkGetNetworkManager
{
    param (
        [parameter(mandatory=$False,HelpMessage='The name of the resource group.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='The name of the network manager.)')]
        [string]
        $networkManagerName
    )

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

        $functionObject = Invoke-PulumiFunction -Name azure-native:network:getNetworkManager -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionNetworkGetExpressRouteGateway
{
    param (
        [parameter(mandatory=$False,HelpMessage='The name of the ExpressRoute gateway.)')]
        [string]
        $expressRouteGatewayName,
        [parameter(mandatory=$False,HelpMessage='The name of the resource group.)')]
        [string]
        $resourceGroupName
    )

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

        $functionObject = Invoke-PulumiFunction -Name azure-native:network:getExpressRouteGateway -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionNetworkGetPrivateZone
{
    param (
        [parameter(mandatory=$False,HelpMessage='The name of the resource group.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='The name of the Private DNS zone (without a terminating dot).)')]
        [string]
        $privateZoneName
    )

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

        $functionObject = Invoke-PulumiFunction -Name azure-native:network:getPrivateZone -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionNetworkGetPublicIPPrefix
{
    param (
        [parameter(mandatory=$False,HelpMessage='Expands referenced resources.)')]
        [string]
        $expand,
        [parameter(mandatory=$False,HelpMessage='The name of the resource group.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='The name of the public IP prefix.)')]
        [string]
        $publicIpPrefixName
    )

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

        if($PSBoundParameters.Keys -icontains 'expand')
        {
            $arguments["expand"] = $expand
        }

        $functionObject = Invoke-PulumiFunction -Name azure-native:network:getPublicIPPrefix -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionNetworkGetExpressRoutePort
{
    param (
        [parameter(mandatory=$False,HelpMessage='The name of ExpressRoutePort.)')]
        [string]
        $expressRoutePortName,
        [parameter(mandatory=$False,HelpMessage='The name of the resource group.)')]
        [string]
        $resourceGroupName
    )

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

        $functionObject = Invoke-PulumiFunction -Name azure-native:network:getExpressRoutePort -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionNetworkGetPrivateRecordSet
{
    param (
        [parameter(mandatory=$False,HelpMessage='The name of the resource group.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='The name of the record set, relative to the name of the zone.)')]
        [string]
        $relativeRecordSetName,
        [parameter(mandatory=$False,HelpMessage='The type of DNS record in this record set.)')]
        [string]
        $recordType,
        [parameter(mandatory=$False,HelpMessage='The name of the Private DNS zone (without a terminating dot).)')]
        [string]
        $privateZoneName
    )

    process
    {
        $arguments = @{}
        $arguments["privateZoneName"] = $privateZoneName
        $arguments["recordType"] = $recordType
        $arguments["relativeRecordSetName"] = $relativeRecordSetName
        $arguments["resourceGroupName"] = $resourceGroupName

        $functionObject = Invoke-PulumiFunction -Name azure-native:network:getPrivateRecordSet -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionNetworkGetVpnSite
{
    param (
        [parameter(mandatory=$False,HelpMessage='The name of the VpnSite being retrieved.)')]
        [string]
        $vpnSiteName,
        [parameter(mandatory=$False,HelpMessage='The resource group name of the VpnSite.)')]
        [string]
        $resourceGroupName
    )

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

        $functionObject = Invoke-PulumiFunction -Name azure-native:network:getVpnSite -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionNetworkGetFirewallPolicy
{
    param (
        [parameter(mandatory=$False,HelpMessage='Expands referenced resources.)')]
        [string]
        $expand,
        [parameter(mandatory=$False,HelpMessage='The name of the resource group.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='The name of the Firewall Policy.)')]
        [string]
        $firewallPolicyName
    )

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

        if($PSBoundParameters.Keys -icontains 'expand')
        {
            $arguments["expand"] = $expand
        }

        $functionObject = Invoke-PulumiFunction -Name azure-native:network:getFirewallPolicy -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionNetworkGetAzureFirewall
{
    param (
        [parameter(mandatory=$False,HelpMessage='The name of the Azure Firewall.)')]
        [string]
        $azureFirewallName,
        [parameter(mandatory=$False,HelpMessage='The name of the resource group.)')]
        [string]
        $resourceGroupName
    )

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

        $functionObject = Invoke-PulumiFunction -Name azure-native:network:getAzureFirewall -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionNetworkListEffectiveConnectivityConfiguration
{
    param (
        [parameter(mandatory=$False,HelpMessage='When present, the value can be passed to a subsequent query call (together with the same query and scopes used in the current request) to retrieve the next page of data.)')]
        [string]
        $skipToken,
        [parameter(mandatory=$False,HelpMessage='The name of the resource group.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='The name of the virtual network.)')]
        [string]
        $virtualNetworkName
    )

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

        if($PSBoundParameters.Keys -icontains 'skipToken')
        {
            $arguments["skipToken"] = $skipToken
        }

        $functionObject = Invoke-PulumiFunction -Name azure-native:network:listEffectiveConnectivityConfiguration -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function New-AzureNativeNetworkConnectivityConfiguration
{
    [Alias('azure_native_network_connectivityconfiguration')]
    param (
        [parameter(mandatory=$False,HelpMessage='The name of the resource group.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='Flag if global mesh is supported.)')]
        [string]
        [ValidateSet('False', 'True')]
        $isGlobal,
        [parameter(mandatory=$False,HelpMessage='List of hubItems)')]
        $hubs,
        [parameter(mandatory=$False,HelpMessage='A friendly name for the resource.)')]
        [string]
        $displayName,
        [parameter(mandatory=$False,HelpMessage='Connectivity topology type.)')]
        [string]
        [ValidateSet('HubAndSpoke', 'Mesh')]
        $connectivityTopology,
        [parameter(mandatory=$False,HelpMessage='Flag if need to remove current existing peerings.)')]
        [string]
        [ValidateSet('False', 'True')]
        $deleteExistingPeering,
        [parameter(mandatory=$False,HelpMessage='The name of the network manager connectivity configuration.)')]
        [string]
        $configurationName,
        [parameter(mandatory=$False,HelpMessage='The name of the network manager.)')]
        [string]
        $networkManagerName,
        [parameter(mandatory=$False,HelpMessage='A description of the connectivity configuration.)')]
        [string]
        $description,
        [parameter(mandatory=$False,HelpMessage='Groups for configuration)')]
        $appliesToGroups,
        [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:network:ConnectivityConfiguration")

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

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

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

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

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

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

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

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

        $global:pulumiresources += $resource
        return $resource
    }
}
class ExtendedLocation
{
    [string] $name
    [ValidateSet('EdgeZone')]
    [string] $type
}
function New-AzureNativeTypeNetworkExtendedLocation
{
    param (
        [parameter(mandatory=$False,HelpMessage='The name of the extended location.)')]
        [string]
        $name,
        [parameter(mandatory=$False,HelpMessage='The type of the extended location.)')]
        [string]
        [ValidateSet('EdgeZone')]
        $type
    )

    process
    {
        return $([ExtendedLocation]$PSBoundParameters)
    }
}
class Delegation
{
    [string] $type
    [string] $id
    [string] $serviceName
    [string] $name
}
function New-AzureNativeTypeNetworkDelegation
{
    param (
        [parameter(mandatory=$False,HelpMessage='Resource type.)')]
        [string]
        $type,
        [parameter(mandatory=$False,HelpMessage='Resource ID.)')]
        [string]
        $id,
        [parameter(mandatory=$False,HelpMessage='The name of the service to whom the subnet should be delegated (e.g. Microsoft.Sql/servers).)')]
        [string]
        $serviceName,
        [parameter(mandatory=$False,HelpMessage='The name of the resource that is unique within a subnet. This name can be used to access the resource.)')]
        [string]
        $name
    )

    process
    {
        return $([Delegation]$PSBoundParameters)
    }
}
class ApplicationGatewayIPConfiguration
{
    [SubResource] $subnet
    [string] $id
    [string] $name
}
function New-AzureNativeTypeNetworkApplicationGatewayIPConfiguration
{
    param (
        [parameter(mandatory=$False,HelpMessage='Reference to the subnet resource. A subnet from where application gateway gets its private address.)')]
        [SubResource]
        $subnet,
        [parameter(mandatory=$False,HelpMessage='Resource ID.)')]
        [string]
        $id,
        [parameter(mandatory=$False,HelpMessage='Name of the IP configuration that is unique within an Application Gateway.)')]
        [string]
        $name
    )

    process
    {
        return $([ApplicationGatewayIPConfiguration]$PSBoundParameters)
    }
}
class ApplicationSecurityGroup
{
    [ValidateSet('Enabled', 'Disabled')]
    [string] $id
    [ValidateSet('Enabled', 'Disabled')]
    [object] $tags
    [ValidateSet('Enabled', 'Disabled')]
    [string] $location
}
function New-AzureNativeTypeNetworkApplicationSecurityGroup
{
    param (
        [parameter(mandatory=$False,HelpMessage='Resource ID.)')]
        [string]
        $id,
        [parameter(mandatory=$False,HelpMessage='Resource tags.)')]
        [hashtable]
        $tags,
        [parameter(mandatory=$False,HelpMessage='Resource location.)')]
        [string]
        $location
    )

    process
    {
        return $([ApplicationSecurityGroup]$PSBoundParameters)
    }
}
class SecurityRule
{
    [ValidateSet('Enabled', 'Disabled')]
    [ApplicationSecurityGroup[]] $destinationApplicationSecurityGroups
    [ValidateSet('Enabled', 'Disabled')]
    [string] $type
    [ValidateSet('Enabled', 'Disabled')]
    [string[]] $sourceAddressPrefixes
    [ValidateSet('Allow', 'Deny')]
    [string] $access
    [ValidateSet('Allow', 'Deny')]
    [string[]] $sourcePortRanges
    [ValidateSet('Allow', 'Deny')]
    [string] $id
    [ValidateSet('Allow', 'Deny')]
    [ApplicationSecurityGroup[]] $sourceApplicationSecurityGroups
    [ValidateSet('Allow', 'Deny')]
    [string] $destinationAddressPrefix
    [ValidateSet('Inbound', 'Outbound')]
    [string] $direction
    [ValidateSet('Tcp', 'Udp', 'Icmp', 'Esp', '*', 'Ah')]
    [string] $protocol
    [ValidateSet('Tcp', 'Udp', 'Icmp', 'Esp', '*', 'Ah')]
    [string] $sourceAddressPrefix
    [ValidateSet('Tcp', 'Udp', 'Icmp', 'Esp', '*', 'Ah')]
    [string[]] $destinationAddressPrefixes
    [ValidateSet('Tcp', 'Udp', 'Icmp', 'Esp', '*', 'Ah')]
    [string] $description
    [ValidateSet('Tcp', 'Udp', 'Icmp', 'Esp', '*', 'Ah')]
    [string] $sourcePortRange
    [ValidateSet('Tcp', 'Udp', 'Icmp', 'Esp', '*', 'Ah')]
    [string] $name
    [ValidateSet('Tcp', 'Udp', 'Icmp', 'Esp', '*', 'Ah')]
    [string[]] $destinationPortRanges
    [ValidateSet('Tcp', 'Udp', 'Icmp', 'Esp', '*', 'Ah')]
    [string] $destinationPortRange
    [ValidateSet('Tcp', 'Udp', 'Icmp', 'Esp', '*', 'Ah')]
    [int] $priority
}
function New-AzureNativeTypeNetworkSecurityRule
{
    param (
        [parameter(mandatory=$False,HelpMessage='The application security group specified as destination.)')]
        $destinationApplicationSecurityGroups,
        [parameter(mandatory=$False,HelpMessage='The type of the resource.)')]
        [string]
        $type,
        [parameter(mandatory=$False,HelpMessage='The CIDR or source IP ranges.)')]
        [string[]]
        $sourceAddressPrefixes,
        [parameter(mandatory=$False,HelpMessage='The network traffic is allowed or denied.)')]
        [string]
        [ValidateSet('Allow', 'Deny')]
        $access,
        [parameter(mandatory=$False,HelpMessage='The source port ranges.)')]
        [string[]]
        $sourcePortRanges,
        [parameter(mandatory=$False,HelpMessage='Resource ID.)')]
        [string]
        $id,
        [parameter(mandatory=$False,HelpMessage='The application security group specified as source.)')]
        $sourceApplicationSecurityGroups,
        [parameter(mandatory=$False,HelpMessage='The destination address prefix. CIDR or destination IP range. Asterisk ''*'' can also be used to match all source IPs. Default tags such as ''VirtualNetwork'', ''AzureLoadBalancer'' and ''Internet'' can also be used.)')]
        [string]
        $destinationAddressPrefix,
        [parameter(mandatory=$False,HelpMessage='The direction of the rule. The direction specifies if rule will be evaluated on incoming or outgoing traffic.)')]
        [string]
        [ValidateSet('Inbound', 'Outbound')]
        $direction,
        [parameter(mandatory=$False,HelpMessage='Network protocol this rule applies to.)')]
        [string]
        [ValidateSet('Tcp', 'Udp', 'Icmp', 'Esp', '*', 'Ah')]
        $protocol,
        [parameter(mandatory=$False,HelpMessage='The CIDR or source IP range. Asterisk ''*'' can also be used to match all source IPs. Default tags such as ''VirtualNetwork'', ''AzureLoadBalancer'' and ''Internet'' can also be used. If this is an ingress rule, specifies where network traffic originates from.)')]
        [string]
        $sourceAddressPrefix,
        [parameter(mandatory=$False,HelpMessage='The destination address prefixes. CIDR or destination IP ranges.)')]
        [string[]]
        $destinationAddressPrefixes,
        [parameter(mandatory=$False,HelpMessage='A description for this rule. Restricted to 140 chars.)')]
        [string]
        $description,
        [parameter(mandatory=$False,HelpMessage='The source port or range. Integer or range between 0 and 65535. Asterisk ''*'' can also be used to match all ports.)')]
        [string]
        $sourcePortRange,
        [parameter(mandatory=$False,HelpMessage='The name of the resource that is unique within a resource group. This name can be used to access the resource.)')]
        [string]
        $name,
        [parameter(mandatory=$False,HelpMessage='The destination port ranges.)')]
        [string[]]
        $destinationPortRanges,
        [parameter(mandatory=$False,HelpMessage='The destination port or range. Integer or range between 0 and 65535. Asterisk ''*'' can also be used to match all ports.)')]
        [string]
        $destinationPortRange,
        [parameter(mandatory=$False,HelpMessage='The priority of the rule. The value can be between 100 and 4096. The priority number must be unique for each rule in the collection. The lower the priority number, the higher the priority of the rule.)')]
        [int]
        $priority
    )

    process
    {
        return $([SecurityRule]$PSBoundParameters)
    }
}
class NetworkSecurityGroup
{
    [ValidateSet('Enabled', 'Disabled')]
    [SecurityRule[]] $securityRules
    [ValidateSet('Enabled', 'Disabled')]
    [string] $id
    [ValidateSet('Enabled', 'Disabled')]
    [object] $tags
    [ValidateSet('Enabled', 'Disabled')]
    [string] $location
}
function New-AzureNativeTypeNetworkNetworkSecurityGroup
{
    param (
        [parameter(mandatory=$False,HelpMessage='A collection of security rules of the network security group.)')]
        $securityRules,
        [parameter(mandatory=$False,HelpMessage='Resource ID.)')]
        [string]
        $id,
        [parameter(mandatory=$False,HelpMessage='Resource tags.)')]
        [hashtable]
        $tags,
        [parameter(mandatory=$False,HelpMessage='Resource location.)')]
        [string]
        $location
    )

    process
    {
        return $([NetworkSecurityGroup]$PSBoundParameters)
    }
}
class ServiceEndpointPolicyDefinition
{
    [ValidateSet('Enabled', 'Disabled')]
    [string] $description
    [ValidateSet('Enabled', 'Disabled')]
    [string] $id
    [ValidateSet('Enabled', 'Disabled')]
    [string] $service
    [ValidateSet('Enabled', 'Disabled')]
    [string[]] $serviceResources
    [ValidateSet('Enabled', 'Disabled')]
    [string] $name
}
function New-AzureNativeTypeNetworkServiceEndpointPolicyDefinition
{
    param (
        [parameter(mandatory=$False,HelpMessage='A description for this rule. Restricted to 140 chars.)')]
        [string]
        $description,
        [parameter(mandatory=$False,HelpMessage='Resource ID.)')]
        [string]
        $id,
        [parameter(mandatory=$False,HelpMessage='Service endpoint name.)')]
        [string]
        $service,
        [parameter(mandatory=$False,HelpMessage='A list of service resources.)')]
        [string[]]
        $serviceResources,
        [parameter(mandatory=$False,HelpMessage='The name of the resource that is unique within a resource group. This name can be used to access the resource.)')]
        [string]
        $name
    )

    process
    {
        return $([ServiceEndpointPolicyDefinition]$PSBoundParameters)
    }
}
class ServiceEndpointPolicy
{
    [ValidateSet('Enabled', 'Disabled')]
    [string] $id
    [ValidateSet('Enabled', 'Disabled')]
    [object] $tags
    [ValidateSet('Enabled', 'Disabled')]
    [ServiceEndpointPolicyDefinition[]] $serviceEndpointPolicyDefinitions
    [ValidateSet('Enabled', 'Disabled')]
    [string] $location
}
function New-AzureNativeTypeNetworkServiceEndpointPolicy
{
    param (
        [parameter(mandatory=$False,HelpMessage='Resource ID.)')]
        [string]
        $id,
        [parameter(mandatory=$False,HelpMessage='Resource tags.)')]
        [hashtable]
        $tags,
        [parameter(mandatory=$False,HelpMessage='A collection of service endpoint policy definitions of the service endpoint policy.)')]
        $serviceEndpointPolicyDefinitions,
        [parameter(mandatory=$False,HelpMessage='Resource location.)')]
        [string]
        $location
    )

    process
    {
        return $([ServiceEndpointPolicy]$PSBoundParameters)
    }
}
class ServiceEndpointPropertiesFormat
{
    [ValidateSet('Enabled', 'Disabled')]
    [string] $service
    [ValidateSet('Enabled', 'Disabled')]
    [string[]] $locations
}
function New-AzureNativeTypeNetworkServiceEndpointPropertiesFormat
{
    param (
        [parameter(mandatory=$False,HelpMessage='The type of the endpoint service.)')]
        [string]
        $service,
        [parameter(mandatory=$False,HelpMessage='A list of locations.)')]
        [string[]]
        $locations
    )

    process
    {
        return $([ServiceEndpointPropertiesFormat]$PSBoundParameters)
    }
}
class Route
{
    [ValidateSet('Enabled', 'Disabled')]
    [string] $name
    [ValidateSet('VirtualNetworkGateway', 'VnetLocal', 'Internet', 'VirtualAppliance', 'None')]
    [string] $nextHopType
    [ValidateSet('VirtualNetworkGateway', 'VnetLocal', 'Internet', 'VirtualAppliance', 'None')]
    [string] $nextHopIpAddress
    [ValidateSet('VirtualNetworkGateway', 'VnetLocal', 'Internet', 'VirtualAppliance', 'None')]
    [string] $addressPrefix
    [ValidateSet('VirtualNetworkGateway', 'VnetLocal', 'Internet', 'VirtualAppliance', 'None')]
    [bool] $hasBgpOverride
    [ValidateSet('VirtualNetworkGateway', 'VnetLocal', 'Internet', 'VirtualAppliance', 'None')]
    [string] $id
    [ValidateSet('VirtualNetworkGateway', 'VnetLocal', 'Internet', 'VirtualAppliance', 'None')]
    [string] $type
}
function New-AzureNativeTypeNetworkRoute
{
    param (
        [parameter(mandatory=$False,HelpMessage='The name of the resource that is unique within a resource group. This name can be used to access the resource.)')]
        [string]
        $name,
        [parameter(mandatory=$False,HelpMessage='The type of Azure hop the packet should be sent to.)')]
        [string]
        [ValidateSet('VirtualNetworkGateway', 'VnetLocal', 'Internet', 'VirtualAppliance', 'None')]
        $nextHopType,
        [parameter(mandatory=$False,HelpMessage='The IP address packets should be forwarded to. Next hop values are only allowed in routes where the next hop type is VirtualAppliance.)')]
        [string]
        $nextHopIpAddress,
        [parameter(mandatory=$False,HelpMessage='The destination CIDR to which the route applies.)')]
        [string]
        $addressPrefix,
        [parameter(mandatory=$False,HelpMessage='A value indicating whether this route overrides overlapping BGP routes regardless of LPM.)')]
        [bool]
        $hasBgpOverride,
        [parameter(mandatory=$False,HelpMessage='Resource ID.)')]
        [string]
        $id,
        [parameter(mandatory=$False,HelpMessage='The type of the resource.)')]
        [string]
        $type
    )

    process
    {
        return $([Route]$PSBoundParameters)
    }
}
class RouteTable
{
    [ValidateSet('Enabled', 'Disabled')]
    [object] $tags
    [ValidateSet('Enabled', 'Disabled')]
    [string] $id
    [ValidateSet('Enabled', 'Disabled')]
    [Route[]] $routes
    [ValidateSet('Enabled', 'Disabled')]
    [bool] $disableBgpRoutePropagation
    [ValidateSet('Enabled', 'Disabled')]
    [string] $location
}
function New-AzureNativeTypeNetworkRouteTable
{
    param (
        [parameter(mandatory=$False,HelpMessage='Resource tags.)')]
        [hashtable]
        $tags,
        [parameter(mandatory=$False,HelpMessage='Resource ID.)')]
        [string]
        $id,
        [parameter(mandatory=$False,HelpMessage='Collection of routes contained within a route table.)')]
        $routes,
        [parameter(mandatory=$False,HelpMessage='Whether to disable the routes learned by BGP on that route table. True means disable.)')]
        [bool]
        $disableBgpRoutePropagation,
        [parameter(mandatory=$False,HelpMessage='Resource location.)')]
        [string]
        $location
    )

    process
    {
        return $([RouteTable]$PSBoundParameters)
    }
}
class Subnet
{
    [Delegation[]] $delegations
    [ApplicationGatewayIPConfiguration[]] $applicationGatewayIpConfigurations
    [ValidateSet('Enabled', 'Disabled')]
    [string] $privateEndpointNetworkPolicies
    [ValidateSet('Enabled', 'Disabled')]
    [NetworkSecurityGroup] $networkSecurityGroup
    [ValidateSet('Enabled', 'Disabled')]
    [string] $privateLinkServiceNetworkPolicies
    [ValidateSet('Enabled', 'Disabled')]
    [string] $id
    [ValidateSet('Enabled', 'Disabled')]
    [SubResource] $natGateway
    [ValidateSet('Enabled', 'Disabled')]
    [string] $type
    [ValidateSet('Enabled', 'Disabled')]
    [ServiceEndpointPolicy[]] $serviceEndpointPolicies
    [ValidateSet('Enabled', 'Disabled')]
    [ServiceEndpointPropertiesFormat[]] $serviceEndpoints
    [ValidateSet('Enabled', 'Disabled')]
    [string] $name
    [ValidateSet('Enabled', 'Disabled')]
    [RouteTable] $routeTable
    [ValidateSet('Enabled', 'Disabled')]
    [string] $addressPrefix
    [ValidateSet('Enabled', 'Disabled')]
    [string[]] $addressPrefixes
    [ValidateSet('Enabled', 'Disabled')]
    [SubResource[]] $ipAllocations
}
function New-AzureNativeTypeNetworkSubnet
{
    param (
        [parameter(mandatory=$False,HelpMessage='An array of references to the delegations on the subnet.)')]
        $delegations,
        [parameter(mandatory=$False,HelpMessage='Application gateway IP configurations of virtual network resource.)')]
        $applicationGatewayIpConfigurations,
        [parameter(mandatory=$False,HelpMessage='Enable or Disable apply network policies on private end point in the subnet.)')]
        [string]
        [ValidateSet('Enabled', 'Disabled')]
        $privateEndpointNetworkPolicies,
        [parameter(mandatory=$False,HelpMessage='The reference to the NetworkSecurityGroup resource.)')]
        [NetworkSecurityGroup]
        $networkSecurityGroup,
        [parameter(mandatory=$False,HelpMessage='Enable or Disable apply network policies on private link service in the subnet.)')]
        [string]
        [ValidateSet('Enabled', 'Disabled')]
        $privateLinkServiceNetworkPolicies,
        [parameter(mandatory=$False,HelpMessage='Resource ID.)')]
        [string]
        $id,
        [parameter(mandatory=$False,HelpMessage='Nat gateway associated with this subnet.)')]
        [SubResource]
        $natGateway,
        [parameter(mandatory=$False,HelpMessage='Resource type.)')]
        [string]
        $type,
        [parameter(mandatory=$False,HelpMessage='An array of service endpoint policies.)')]
        $serviceEndpointPolicies,
        [parameter(mandatory=$False,HelpMessage='An array of service endpoints.)')]
        $serviceEndpoints,
        [parameter(mandatory=$False,HelpMessage='The name of the resource that is unique within a resource group. This name can be used to access the resource.)')]
        [string]
        $name,
        [parameter(mandatory=$False,HelpMessage='The reference to the RouteTable resource.)')]
        [RouteTable]
        $routeTable,
        [parameter(mandatory=$False,HelpMessage='The address prefix for the subnet.)')]
        [string]
        $addressPrefix,
        [parameter(mandatory=$False,HelpMessage='List of address prefixes for the subnet.)')]
        [string[]]
        $addressPrefixes,
        [parameter(mandatory=$False,HelpMessage='Array of IpAllocation which reference this subnet.)')]
        $ipAllocations
    )

    process
    {
        return $([Subnet]$PSBoundParameters)
    }
}
function New-AzureNativeNetworkPrivateEndpoint
{
    [Alias('azure_native_network_privateendpoint')]
    param (
        [parameter(mandatory=$False,HelpMessage='The name of the resource group.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='The extended location of the load balancer.)')]
        [ExtendedLocation]
        $extendedLocation,
        [parameter(mandatory=$False,HelpMessage='A grouping of information about the connection to the remote resource. Used when the network admin does not have access to approve connections to the remote resource.)')]
        $manualPrivateLinkServiceConnections,
        [parameter(mandatory=$False,HelpMessage='A grouping of information about the connection to the remote resource.)')]
        $privateLinkServiceConnections,
        [parameter(mandatory=$False,HelpMessage='Resource ID.)')]
        [string]
        $id,
        [parameter(mandatory=$False,HelpMessage='The name of the private endpoint.)')]
        [string]
        $privateEndpointName,
        [parameter(mandatory=$False,HelpMessage='An array of custom dns configurations.)')]
        $customDnsConfigs,
        [parameter(mandatory=$False,HelpMessage='The ID of the subnet from which the private IP will be allocated.)')]
        [Subnet]
        $subnet,
        [parameter(mandatory=$False,HelpMessage='Resource tags.)')]
        [hashtable]
        $tags,
        [parameter(mandatory=$False,HelpMessage='Resource location.)')]
        [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:network:PrivateEndpoint")

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

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

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

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

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

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

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

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

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

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

        $global:pulumiresources += $resource
        return $resource
    }
}
function New-AzureNativeNetworkSecurityPartnerProvider
{
    [Alias('azure_native_network_securitypartnerprovider')]
    param (
        [parameter(mandatory=$False,HelpMessage='The virtualHub to which the Security Partner Provider belongs.)')]
        [SubResource]
        $virtualHub,
        [parameter(mandatory=$False,HelpMessage='The name of the resource group.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='Resource tags.)')]
        [hashtable]
        $tags,
        [parameter(mandatory=$False,HelpMessage='The security provider name.)')]
        [string]
        [ValidateSet('ZScaler', 'IBoss', 'Checkpoint')]
        $securityProviderName,
        [parameter(mandatory=$False,HelpMessage='The name of the Security Partner Provider.)')]
        [string]
        $securityPartnerProviderName,
        [parameter(mandatory=$False,HelpMessage='Resource ID.)')]
        [string]
        $id,
        [parameter(mandatory=$False,HelpMessage='Resource location.)')]
        [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:network:SecurityPartnerProvider")

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

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

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

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

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

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

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

        $global:pulumiresources += $resource
        return $resource
    }
}
class CnameRecord
{
    [string] $cname
}
function New-AzureNativeTypeNetworkCnameRecord
{
    param (
        [parameter(mandatory=$False,HelpMessage='The canonical name for this CNAME record.)')]
        [string]
        $cname
    )

    process
    {
        return $([CnameRecord]$PSBoundParameters)
    }
}
class SoaRecord
{
    [int] $refreshTime
    [string] $host
    [int] $retryTime
    [int] $minimumTtl
    [int] $serialNumber
    [int] $expireTime
    [string] $email
}
function New-AzureNativeTypeNetworkSoaRecord
{
    param (
        [parameter(mandatory=$False,HelpMessage='The refresh value for this SOA record.)')]
        [int]
        $refreshTime,
        [parameter(mandatory=$False,HelpMessage='The domain name of the authoritative name server for this SOA record.)')]
        [string]
        $host,
        [parameter(mandatory=$False,HelpMessage='The retry time for this SOA record.)')]
        [int]
        $retryTime,
        [parameter(mandatory=$False,HelpMessage='The minimum value for this SOA record. By convention this is used to determine the negative caching duration.)')]
        [int]
        $minimumTtl,
        [parameter(mandatory=$False,HelpMessage='The serial number for this SOA record.)')]
        [int]
        $serialNumber,
        [parameter(mandatory=$False,HelpMessage='The expire time for this SOA record.)')]
        [int]
        $expireTime,
        [parameter(mandatory=$False,HelpMessage='The email contact for this SOA record.)')]
        [string]
        $email
    )

    process
    {
        return $([SoaRecord]$PSBoundParameters)
    }
}
function New-AzureNativeNetworkPrivateRecordSet
{
    [Alias('azure_native_network_privaterecordset')]
    param (
        [parameter(mandatory=$False,HelpMessage='The list of MX records in the record set.)')]
        $mxRecords,
        [parameter(mandatory=$False,HelpMessage='The list of TXT records in the record set.)')]
        $txtRecords,
        [parameter(mandatory=$False,HelpMessage='The list of SRV records in the record set.)')]
        $srvRecords,
        [parameter(mandatory=$False,HelpMessage='The name of the record set, relative to the name of the zone.)')]
        [string]
        $relativeRecordSetName,
        [parameter(mandatory=$False,HelpMessage='The TTL (time-to-live) of the records in the record set.)')]
        [int]
        $ttl,
        [parameter(mandatory=$False,HelpMessage='The list of A records in the record set.)')]
        $aRecords,
        [parameter(mandatory=$False,HelpMessage='The list of PTR records in the record set.)')]
        $ptrRecords,
        [parameter(mandatory=$False,HelpMessage='The metadata attached to the record set.)')]
        [hashtable]
        $metadata,
        [parameter(mandatory=$False,HelpMessage='The CNAME record in the record set.)')]
        [CnameRecord]
        $cnameRecord,
        [parameter(mandatory=$False,HelpMessage='The type of DNS record in this record set. Record sets of type SOA can be updated but not created (they are created when the Private DNS zone is created).)')]
        [string]
        $recordType,
        [parameter(mandatory=$False,HelpMessage='The list of AAAA records in the record set.)')]
        $aaaaRecords,
        [parameter(mandatory=$False,HelpMessage='The name of the resource group.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='The name of the Private DNS zone (without a terminating dot).)')]
        [string]
        $privateZoneName,
        [parameter(mandatory=$False,HelpMessage='The SOA record in the record set.)')]
        [SoaRecord]
        $soaRecord,
        [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:network:PrivateRecordSet")

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

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

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

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

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

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

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

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

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

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

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

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

        $global:pulumiresources += $resource
        return $resource
    }
}
class IPConfigurationBgpPeeringAddress
{
    [string] $ipconfigurationId
    [string[]] $customBgpIpAddresses
}
function New-AzureNativeTypeNetworkIPConfigurationBgpPeeringAddress
{
    param (
        [parameter(mandatory=$False,HelpMessage='The ID of IP configuration which belongs to gateway.)')]
        [string]
        $ipconfigurationId,
        [parameter(mandatory=$False,HelpMessage='The list of custom BGP peering addresses which belong to IP configuration.)')]
        [string[]]
        $customBgpIpAddresses
    )

    process
    {
        return $([IPConfigurationBgpPeeringAddress]$PSBoundParameters)
    }
}
class BgpSettings
{
    [IPConfigurationBgpPeeringAddress[]] $bgpPeeringAddresses
    [int] $peerWeight
    [int] $asn
    [string] $bgpPeeringAddress
}
function New-AzureNativeTypeNetworkBgpSettings
{
    param (
        [parameter(mandatory=$False,HelpMessage='BGP peering address with IP configuration ID for virtual network gateway.)')]
        $bgpPeeringAddresses,
        [parameter(mandatory=$False,HelpMessage='The weight added to routes learned from this BGP speaker.)')]
        [int]
        $peerWeight,
        [parameter(mandatory=$False,HelpMessage='The BGP speaker''s ASN.)')]
        [int]
        $asn,
        [parameter(mandatory=$False,HelpMessage='The BGP peering address and BGP identifier of this BGP speaker.)')]
        [string]
        $bgpPeeringAddress
    )

    process
    {
        return $([BgpSettings]$PSBoundParameters)
    }
}
function New-AzureNativeNetworkVpnGateway
{
    [Alias('azure_native_network_vpngateway')]
    param (
        [parameter(mandatory=$False,HelpMessage='The resource group name of the VpnGateway.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='The VirtualHub to which the gateway belongs.)')]
        [SubResource]
        $virtualHub,
        [parameter(mandatory=$False,HelpMessage='List of all the nat Rules associated with the gateway.)')]
        $natRules,
        [parameter(mandatory=$False,HelpMessage='The name of the gateway.)')]
        [string]
        $gatewayName,
        [parameter(mandatory=$False,HelpMessage='The scale unit for this vpn gateway.)')]
        [int]
        $vpnGatewayScaleUnit,
        [parameter(mandatory=$False,HelpMessage='Resource ID.)')]
        [string]
        $id,
        [parameter(mandatory=$False,HelpMessage='Enable Routing Preference property for the Public IP Interface of the VpnGateway.)')]
        [bool]
        $isRoutingPreferenceInternet,
        [parameter(mandatory=$False,HelpMessage='List of all vpn connections to the gateway.)')]
        $connections,
        [parameter(mandatory=$False,HelpMessage='Resource tags.)')]
        [hashtable]
        $tags,
        [parameter(mandatory=$False,HelpMessage='Local network gateway''s BGP speaker settings.)')]
        [BgpSettings]
        $bgpSettings,
        [parameter(mandatory=$False,HelpMessage='Resource location.)')]
        [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:network:VpnGateway")

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

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

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

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

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

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

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

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

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

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

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

        $global:pulumiresources += $resource
        return $resource
    }
}
function New-AzureNativeNetworkSecurityRule
{
    [Alias('azure_native_network_securityrule')]
    param (
        [parameter(mandatory=$False,HelpMessage='A description for this rule. Restricted to 140 chars.)')]
        [string]
        $description,
        [parameter(mandatory=$False,HelpMessage='The priority of the rule. The value can be between 100 and 4096. The priority number must be unique for each rule in the collection. The lower the priority number, the higher the priority of the rule.)')]
        [int]
        $priority,
        [parameter(mandatory=$False,HelpMessage='The name of the network security group.)')]
        [string]
        $networkSecurityGroupName,
        [parameter(mandatory=$False,HelpMessage='The destination port or range. Integer or range between 0 and 65535. Asterisk ''*'' can also be used to match all ports.)')]
        [string]
        $destinationPortRange,
        [parameter(mandatory=$False,HelpMessage='Network protocol this rule applies to.)')]
        [string]
        [ValidateSet('Tcp', 'Udp', 'Icmp', 'Esp', '*', 'Ah')]
        $protocol,
        [parameter(mandatory=$False,HelpMessage='The CIDR or source IP ranges.)')]
        [string[]]
        $sourceAddressPrefixes,
        [parameter(mandatory=$False,HelpMessage='The direction of the rule. The direction specifies if rule will be evaluated on incoming or outgoing traffic.)')]
        [string]
        [ValidateSet('Inbound', 'Outbound')]
        $direction,
        [parameter(mandatory=$False,HelpMessage='The source port or range. Integer or range between 0 and 65535. Asterisk ''*'' can also be used to match all ports.)')]
        [string]
        $sourcePortRange,
        [parameter(mandatory=$False,HelpMessage='The application security group specified as source.)')]
        $sourceApplicationSecurityGroups,
        [parameter(mandatory=$False,HelpMessage='The name of the security rule.)')]
        [string]
        $securityRuleName,
        [parameter(mandatory=$False,HelpMessage='The source port ranges.)')]
        [string[]]
        $sourcePortRanges,
        [parameter(mandatory=$False,HelpMessage='The network traffic is allowed or denied.)')]
        [string]
        [ValidateSet('Allow', 'Deny')]
        $access,
        [parameter(mandatory=$False,HelpMessage='Resource ID.)')]
        [string]
        $id,
        [parameter(mandatory=$False,HelpMessage='The destination address prefix. CIDR or destination IP range. Asterisk ''*'' can also be used to match all source IPs. Default tags such as ''VirtualNetwork'', ''AzureLoadBalancer'' and ''Internet'' can also be used.)')]
        [string]
        $destinationAddressPrefix,
        [parameter(mandatory=$False,HelpMessage='The type of the resource.)')]
        [string]
        $type,
        [parameter(mandatory=$False,HelpMessage='The application security group specified as destination.)')]
        $destinationApplicationSecurityGroups,
        [parameter(mandatory=$False,HelpMessage='The name of the resource that is unique within a resource group. This name can be used to access the resource.)')]
        [string]
        $name,
        [parameter(mandatory=$False,HelpMessage='The name of the resource group.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='The destination address prefixes. CIDR or destination IP ranges.)')]
        [string[]]
        $destinationAddressPrefixes,
        [parameter(mandatory=$False,HelpMessage='The destination port ranges.)')]
        [string[]]
        $destinationPortRanges,
        [parameter(mandatory=$False,HelpMessage='The CIDR or source IP range. Asterisk ''*'' can also be used to match all source IPs. Default tags such as ''VirtualNetwork'', ''AzureLoadBalancer'' and ''Internet'' can also be used. If this is an ingress rule, specifies where network traffic originates from.)')]
        [string]
        $sourceAddressPrefix,
        [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:network:SecurityRule")

        $resource.properties["access"] = $access
        $resource.properties["direction"] = $direction
        $resource.properties["networkSecurityGroupName"] = $networkSecurityGroupName
        $resource.properties["protocol"] = $protocol
        $resource.properties["resourceGroupName"] = $resourceGroupName

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

        $global:pulumiresources += $resource
        return $resource
    }
}
function New-AzureNativeNetworkUserRuleCollection
{
    [Alias('azure_native_network_userrulecollection')]
    param (
        [parameter(mandatory=$False,HelpMessage='The name of the resource group.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='A description of the rule collection.)')]
        [string]
        $description,
        [parameter(mandatory=$False,HelpMessage='Groups for configuration)')]
        $appliesToGroups,
        [parameter(mandatory=$False,HelpMessage='A display name of the rule collection.)')]
        [string]
        $displayName,
        [parameter(mandatory=$False,HelpMessage='The name of the network manager security Configuration.)')]
        [string]
        $configurationName,
        [parameter(mandatory=$False,HelpMessage='The name of the network manager security Configuration rule collection.)')]
        [string]
        $ruleCollectionName,
        [parameter(mandatory=$False,HelpMessage='The name of the network manager.)')]
        [string]
        $networkManagerName,
        [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:network:UserRuleCollection")

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

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

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

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

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

        $global:pulumiresources += $resource
        return $resource
    }
}
function New-AzureNativeNetworkNspProfile
{
    [Alias('azure_native_network_nspprofile')]
    param (
        [parameter(mandatory=$False,HelpMessage='The name of the profile resource that is unique within a perimeter. This name can be used to access the resource.)')]
        [string]
        $name,
        [parameter(mandatory=$False,HelpMessage='The name of the network security perimeter.)')]
        [string]
        $networkSecurityPerimeterName,
        [parameter(mandatory=$False,HelpMessage='The name of the resource group.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='Resource tags.)')]
        [hashtable]
        $tags,
        [parameter(mandatory=$False,HelpMessage='The name of the NSP profile.)')]
        [string]
        $profileName,
        [parameter(mandatory=$False,HelpMessage='Resource ID.)')]
        [string]
        $id,
        [parameter(mandatory=$False,HelpMessage='Resource location.)')]
        [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:network:NspProfile")

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

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

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

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

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

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

        $global:pulumiresources += $resource
        return $resource
    }
}
class PrivateLinkServiceConnectionState
{
    [string] $description
    [string] $actionsRequired
    [string] $status
}
function New-AzureNativeTypeNetworkPrivateLinkServiceConnectionState
{
    param (
        [parameter(mandatory=$False,HelpMessage='The reason for approval/rejection of the connection.)')]
        [string]
        $description,
        [parameter(mandatory=$False,HelpMessage='A message indicating if changes on the service provider require any updates on the consumer.)')]
        [string]
        $actionsRequired,
        [parameter(mandatory=$False,HelpMessage='Indicates whether the connection has been Approved/Rejected/Removed by the owner of the service.)')]
        [string]
        $status
    )

    process
    {
        return $([PrivateLinkServiceConnectionState]$PSBoundParameters)
    }
}
function New-AzureNativeNetworkApplicationGatewayPrivateEndpointConnection
{
    [Alias('azure_native_network_applicationgatewayprivateendpointconnection')]
    param (
        [parameter(mandatory=$False,HelpMessage='Name of the private endpoint connection on an application gateway.)')]
        [string]
        $name,
        [parameter(mandatory=$False,HelpMessage='The name of the application gateway private endpoint connection.)')]
        [string]
        $connectionName,
        [parameter(mandatory=$False,HelpMessage='A collection of information about the state of the connection between service consumer and provider.)')]
        [PrivateLinkServiceConnectionState]
        $privateLinkServiceConnectionState,
        [parameter(mandatory=$False,HelpMessage='The name of the resource group.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='Resource ID.)')]
        [string]
        $id,
        [parameter(mandatory=$False,HelpMessage='The name of the application gateway.)')]
        [string]
        $applicationGatewayName,
        [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:network:ApplicationGatewayPrivateEndpointConnection")

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

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

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

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

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

        $global:pulumiresources += $resource
        return $resource
    }
}
class AadAuthenticationParameters
{
    [string] $aadAudience
    [string] $aadTenant
    [string] $aadIssuer
}
function New-AzureNativeTypeNetworkAadAuthenticationParameters
{
    param (
        [parameter(mandatory=$False,HelpMessage='AAD Vpn authentication parameter AAD audience.)')]
        [string]
        $aadAudience,
        [parameter(mandatory=$False,HelpMessage='AAD Vpn authentication parameter AAD tenant.)')]
        [string]
        $aadTenant,
        [parameter(mandatory=$False,HelpMessage='AAD Vpn authentication parameter AAD issuer.)')]
        [string]
        $aadIssuer
    )

    process
    {
        return $([AadAuthenticationParameters]$PSBoundParameters)
    }
}
function New-AzureNativeNetworkVpnServerConfiguration
{
    [Alias('azure_native_network_vpnserverconfiguration')]
    param (
        [parameter(mandatory=$False,HelpMessage='VpnClientIpsecPolicies for VpnServerConfiguration.)')]
        $vpnClientIpsecPolicies,
        [parameter(mandatory=$False,HelpMessage='Resource ID.)')]
        [string]
        $id,
        [parameter(mandatory=$False,HelpMessage='Multiple Radius Server configuration for VpnServerConfiguration.)')]
        $radiusServers,
        [parameter(mandatory=$False,HelpMessage='The name of the VpnServerConfiguration being created or updated.)')]
        [string]
        $vpnServerConfigurationName,
        [parameter(mandatory=$False,HelpMessage='VPN protocols for the VpnServerConfiguration.)')]
        $vpnProtocols,
        [parameter(mandatory=$False,HelpMessage='The name of the VpnServerConfiguration that is unique within a resource group.)')]
        [string]
        $name,
        [parameter(mandatory=$False,HelpMessage='Radius client root certificate of VpnServerConfiguration.)')]
        $radiusClientRootCertificates,
        [parameter(mandatory=$False,HelpMessage='The resource group name of the VpnServerConfiguration.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='The set of aad vpn authentication parameters.)')]
        [AadAuthenticationParameters]
        $aadAuthenticationParameters,
        [parameter(mandatory=$False,HelpMessage='VPN client revoked certificate of VpnServerConfiguration.)')]
        $vpnClientRevokedCertificates,
        [parameter(mandatory=$False,HelpMessage='Resource location.)')]
        [string]
        $location,
        [parameter(mandatory=$False,HelpMessage='The radius secret property of the VpnServerConfiguration resource for point to site client connection.)')]
        [string]
        $radiusServerSecret,
        [parameter(mandatory=$False,HelpMessage='Resource tags.)')]
        [hashtable]
        $tags,
        [parameter(mandatory=$False,HelpMessage='VPN client root certificate of VpnServerConfiguration.)')]
        $vpnClientRootCertificates,
        [parameter(mandatory=$False,HelpMessage='VPN authentication types for the VpnServerConfiguration.)')]
        $vpnAuthenticationTypes,
        [parameter(mandatory=$False,HelpMessage='Radius Server root certificate of VpnServerConfiguration.)')]
        $radiusServerRootCertificates,
        [parameter(mandatory=$False,HelpMessage='The radius server address property of the VpnServerConfiguration resource for point to site client connection.)')]
        [string]
        $radiusServerAddress,
        [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:network:VpnServerConfiguration")

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

        $global:pulumiresources += $resource
        return $resource
    }
}
class AddressSpace
{
    [string[]] $addressPrefixes
}
function New-AzureNativeTypeNetworkAddressSpace
{
    param (
        [parameter(mandatory=$False,HelpMessage='A list of address blocks reserved for this virtual network in CIDR notation.)')]
        [string[]]
        $addressPrefixes
    )

    process
    {
        return $([AddressSpace]$PSBoundParameters)
    }
}
function New-AzureNativeNetworkLocalNetworkGateway
{
    [Alias('azure_native_network_localnetworkgateway')]
    param (
        [parameter(mandatory=$False,HelpMessage='The name of the resource group.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='IP address of local network gateway.)')]
        [string]
        $gatewayIpAddress,
        [parameter(mandatory=$False,HelpMessage='Local network site address space.)')]
        [AddressSpace]
        $localNetworkAddressSpace,
        [parameter(mandatory=$False,HelpMessage='FQDN of local network gateway.)')]
        [string]
        $fqdn,
        [parameter(mandatory=$False,HelpMessage='Resource ID.)')]
        [string]
        $id,
        [parameter(mandatory=$False,HelpMessage='The name of the local network gateway.)')]
        [string]
        $localNetworkGatewayName,
        [parameter(mandatory=$False,HelpMessage='Resource tags.)')]
        [hashtable]
        $tags,
        [parameter(mandatory=$False,HelpMessage='Local network gateway''s BGP speaker settings.)')]
        [BgpSettings]
        $bgpSettings,
        [parameter(mandatory=$False,HelpMessage='Resource location.)')]
        [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:network:LocalNetworkGateway")

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

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

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

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

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

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

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

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

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

        $global:pulumiresources += $resource
        return $resource
    }
}
function New-AzureNativeNetworkSecurityUserConfiguration
{
    [Alias('azure_native_network_securityuserconfiguration')]
    param (
        [parameter(mandatory=$False,HelpMessage='The name of the resource group.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='Security Type.)')]
        [string]
        [ValidateSet('AdminPolicy', 'UserPolicy')]
        $securityType,
        [parameter(mandatory=$False,HelpMessage='A description of the security configuration.)')]
        [string]
        $description,
        [parameter(mandatory=$False,HelpMessage='A display name of the security configuration.)')]
        [string]
        $displayName,
        [parameter(mandatory=$False,HelpMessage='Flag if need to delete existing network security groups.)')]
        [string]
        [ValidateSet('False', 'True')]
        $deleteExistingNSGs,
        [parameter(mandatory=$False,HelpMessage='The name of the network manager security Configuration.)')]
        [string]
        $configurationName,
        [parameter(mandatory=$False,HelpMessage='The name of the network manager.)')]
        [string]
        $networkManagerName,
        [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:network:SecurityUserConfiguration")

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

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

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

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

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

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

        $global:pulumiresources += $resource
        return $resource
    }
}
function New-AzureNativeNetworkNetworkGroup
{
    [Alias('azure_native_network_networkgroup')]
    param (
        [parameter(mandatory=$False,HelpMessage='The name of the network manager.)')]
        [string]
        $networkManagerName,
        [parameter(mandatory=$False,HelpMessage='Group member type.)')]
        [string]
        $memberType,
        [parameter(mandatory=$False,HelpMessage='A description of the network group.)')]
        [string]
        $description,
        [parameter(mandatory=$False,HelpMessage='The name of the network group to get.)')]
        [string]
        $networkGroupName,
        [parameter(mandatory=$False,HelpMessage='A friendly name for the network group.)')]
        [string]
        $displayName,
        [parameter(mandatory=$False,HelpMessage='The name of the resource group.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='Network group conditional filter.)')]
        [string]
        $conditionalMembership,
        [parameter(mandatory=$False,HelpMessage='Group members of network group.)')]
        $groupMembers,
        [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:network:NetworkGroup")

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

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

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

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

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

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

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

        $global:pulumiresources += $resource
        return $resource
    }
}
class LoadBalancerSku
{
    [ValidateSet('Basic', 'Standard')]
    [string] $name
    [ValidateSet('Regional', 'Global')]
    [string] $tier
}
function New-AzureNativeTypeNetworkLoadBalancerSku
{
    param (
        [parameter(mandatory=$False,HelpMessage='Name of a load balancer SKU.)')]
        [string]
        [ValidateSet('Basic', 'Standard')]
        $name,
        [parameter(mandatory=$False,HelpMessage='Tier of a load balancer SKU.)')]
        [string]
        [ValidateSet('Regional', 'Global')]
        $tier
    )

    process
    {
        return $([LoadBalancerSku]$PSBoundParameters)
    }
}
function New-AzureNativeNetworkLoadBalancer
{
    [Alias('azure_native_network_loadbalancer')]
    param (
        [parameter(mandatory=$False,HelpMessage='The load balancer SKU.)')]
        [LoadBalancerSku]
        $sku,
        [parameter(mandatory=$False,HelpMessage='Resource tags.)')]
        [hashtable]
        $tags,
        [parameter(mandatory=$False,HelpMessage='Object representing the frontend IPs to be used for the load balancer.)')]
        $frontendIPConfigurations,
        [parameter(mandatory=$False,HelpMessage='The extended location of the load balancer.)')]
        [ExtendedLocation]
        $extendedLocation,
        [parameter(mandatory=$False,HelpMessage='The name of the load balancer.)')]
        [string]
        $loadBalancerName,
        [parameter(mandatory=$False,HelpMessage='The outbound rules.)')]
        $outboundRules,
        [parameter(mandatory=$False,HelpMessage='Collection of probe objects used in the load balancer.)')]
        $probes,
        [parameter(mandatory=$False,HelpMessage='The name of the resource group.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='Object collection representing the load balancing rules Gets the provisioning.)')]
        $loadBalancingRules,
        [parameter(mandatory=$False,HelpMessage='Resource location.)')]
        [string]
        $location,
        [parameter(mandatory=$False,HelpMessage='Collection of inbound NAT Rules used by a load balancer. Defining inbound NAT rules on your load balancer is mutually exclusive with defining an inbound NAT pool. Inbound NAT pools are referenced from virtual machine scale sets. NICs that are associated with individual virtual machines cannot reference an Inbound NAT pool. They have to reference individual inbound NAT rules.)')]
        $inboundNatRules,
        [parameter(mandatory=$False,HelpMessage='Defines an external port range for inbound NAT to a single backend port on NICs associated with a load balancer. Inbound NAT rules are created automatically for each NIC associated with the Load Balancer using an external port from this range. Defining an Inbound NAT pool on your Load Balancer is mutually exclusive with defining inbound Nat rules. Inbound NAT pools are referenced from virtual machine scale sets. NICs that are associated with individual virtual machines cannot reference an inbound NAT pool. They have to reference individual inbound NAT rules.)')]
        $inboundNatPools,
        [parameter(mandatory=$False,HelpMessage='Collection of backend address pools used by a load balancer.)')]
        $backendAddressPools,
        [parameter(mandatory=$False,HelpMessage='Resource ID.)')]
        [string]
        $id,
        [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:network:LoadBalancer")

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

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

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

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

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

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

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

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

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

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

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

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

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

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

        $global:pulumiresources += $resource
        return $resource
    }
}
class StaticRoute
{
    [string] $nextHopIpAddress
    [string] $name
    [string[]] $addressPrefixes
}
function New-AzureNativeTypeNetworkStaticRoute
{
    param (
        [parameter(mandatory=$False,HelpMessage='The ip address of the next hop.)')]
        [string]
        $nextHopIpAddress,
        [parameter(mandatory=$False,HelpMessage='The name of the StaticRoute that is unique within a VnetRoute.)')]
        [string]
        $name,
        [parameter(mandatory=$False,HelpMessage='List of all address prefixes.)')]
        [string[]]
        $addressPrefixes
    )

    process
    {
        return $([StaticRoute]$PSBoundParameters)
    }
}
class VnetRoute
{
    [StaticRoute[]] $staticRoutes
}
function New-AzureNativeTypeNetworkVnetRoute
{
    param (
        [parameter(mandatory=$False,HelpMessage='List of all Static Routes.)')]
        $staticRoutes
    )

    process
    {
        return $([VnetRoute]$PSBoundParameters)
    }
}
class PropagatedRouteTable
{
    [string[]] $labels
    [SubResource[]] $ids
}
function New-AzureNativeTypeNetworkPropagatedRouteTable
{
    param (
        [parameter(mandatory=$False,HelpMessage='The list of labels.)')]
        [string[]]
        $labels,
        [parameter(mandatory=$False,HelpMessage='The list of resource ids of all the RouteTables.)')]
        $ids
    )

    process
    {
        return $([PropagatedRouteTable]$PSBoundParameters)
    }
}
class RoutingConfiguration
{
    [VnetRoute] $vnetRoutes
    [SubResource] $associatedRouteTable
    [PropagatedRouteTable] $propagatedRouteTables
}
function New-AzureNativeTypeNetworkRoutingConfiguration
{
    param (
        [parameter(mandatory=$False,HelpMessage='List of routes that control routing from VirtualHub into a virtual network connection.)')]
        [VnetRoute]
        $vnetRoutes,
        [parameter(mandatory=$False,HelpMessage='The resource id RouteTable associated with this RoutingConfiguration.)')]
        [SubResource]
        $associatedRouteTable,
        [parameter(mandatory=$False,HelpMessage='The list of RouteTables to advertise the routes to.)')]
        [PropagatedRouteTable]
        $propagatedRouteTables
    )

    process
    {
        return $([RoutingConfiguration]$PSBoundParameters)
    }
}
function New-AzureNativeNetworkVpnConnection
{
    [Alias('azure_native_network_vpnconnection')]
    param (
        [parameter(mandatory=$False,HelpMessage='The Routing Configuration indicating the associated and propagated route tables on this connection.)')]
        [RoutingConfiguration]
        $routingConfiguration,
        [parameter(mandatory=$False,HelpMessage='The Traffic Selector Policies to be considered by this connection.)')]
        $trafficSelectorPolicies,
        [parameter(mandatory=$False,HelpMessage='The resource group name of the VpnGateway.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='The name of the connection.)')]
        [string]
        $connectionName,
        [parameter(mandatory=$False,HelpMessage='SharedKey for the vpn connection.)')]
        [string]
        $sharedKey,
        [parameter(mandatory=$False,HelpMessage='EnableBgp flag.)')]
        [bool]
        $enableRateLimiting,
        [parameter(mandatory=$False,HelpMessage='Enable internet security.)')]
        [bool]
        $enableInternetSecurity,
        [parameter(mandatory=$False,HelpMessage='The IPSec Policies to be considered by this connection.)')]
        $ipsecPolicies,
        [parameter(mandatory=$False,HelpMessage='List of all vpn site link connections to the gateway.)')]
        $vpnLinkConnections,
        [parameter(mandatory=$False,HelpMessage='The name of the gateway.)')]
        [string]
        $gatewayName,
        [parameter(mandatory=$False,HelpMessage='Resource ID.)')]
        [string]
        $id,
        [parameter(mandatory=$False,HelpMessage='DPD timeout in seconds for vpn connection.)')]
        [int]
        $dpdTimeoutSeconds,
        [parameter(mandatory=$False,HelpMessage='Connection protocol used for this connection.)')]
        [string]
        [ValidateSet('IKEv2', 'IKEv1')]
        $vpnConnectionProtocolType,
        [parameter(mandatory=$False,HelpMessage='Enable policy-based traffic selectors.)')]
        [bool]
        $usePolicyBasedTrafficSelectors,
        [parameter(mandatory=$False,HelpMessage='Id of the connected vpn site.)')]
        [SubResource]
        $remoteVpnSite,
        [parameter(mandatory=$False,HelpMessage='EnableBgp flag.)')]
        [bool]
        $enableBgp,
        [parameter(mandatory=$False,HelpMessage='Routing weight for vpn connection.)')]
        [int]
        $routingWeight,
        [parameter(mandatory=$False,HelpMessage='The name of the resource that is unique within a resource group. This name can be used to access the resource.)')]
        [string]
        $name,
        [parameter(mandatory=$False,HelpMessage='Expected bandwidth in MBPS.)')]
        [int]
        $connectionBandwidth,
        [parameter(mandatory=$False,HelpMessage='Use local azure ip to initiate connection.)')]
        [bool]
        $useLocalAzureIpAddress,
        [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:network:VpnConnection")

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

        $global:pulumiresources += $resource
        return $resource
    }
}
class VirtualNetworkBgpCommunities
{
    [string] $virtualNetworkCommunity
}
function New-AzureNativeTypeNetworkVirtualNetworkBgpCommunities
{
    param (
        [parameter(mandatory=$False,HelpMessage='The BGP community associated with the virtual network.)')]
        [string]
        $virtualNetworkCommunity
    )

    process
    {
        return $([VirtualNetworkBgpCommunities]$PSBoundParameters)
    }
}
class DhcpOptions
{
    [string[]] $dnsServers
}
function New-AzureNativeTypeNetworkDhcpOptions
{
    param (
        [parameter(mandatory=$False,HelpMessage='The list of DNS servers IP addresses.)')]
        [string[]]
        $dnsServers
    )

    process
    {
        return $([DhcpOptions]$PSBoundParameters)
    }
}
function New-AzureNativeNetworkVirtualNetwork
{
    [Alias('azure_native_network_virtualnetwork')]
    param (
        [parameter(mandatory=$False,HelpMessage='Bgp Communities sent over ExpressRoute with each route corresponding to a prefix in this VNET.)')]
        [VirtualNetworkBgpCommunities]
        $bgpCommunities,
        [parameter(mandatory=$False,HelpMessage='The dhcpOptions that contains an array of DNS servers available to VMs deployed in the virtual network.)')]
        [DhcpOptions]
        $dhcpOptions,
        [parameter(mandatory=$False,HelpMessage='The DDoS protection plan associated with the virtual network.)')]
        [SubResource]
        $ddosProtectionPlan,
        [parameter(mandatory=$False,HelpMessage='Indicates if DDoS protection is enabled for all the protected resources in the virtual network. It requires a DDoS protection plan associated with the resource.)')]
        [bool]
        $enableDdosProtection,
        [parameter(mandatory=$False,HelpMessage='Resource tags.)')]
        [hashtable]
        $tags,
        [parameter(mandatory=$False,HelpMessage='The extended location of the virtual network.)')]
        [ExtendedLocation]
        $extendedLocation,
        [parameter(mandatory=$False,HelpMessage='A list of peerings in a Virtual Network.)')]
        $virtualNetworkPeerings,
        [parameter(mandatory=$False,HelpMessage='Resource location.)')]
        [string]
        $location,
        [parameter(mandatory=$False,HelpMessage='The name of the resource group.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='Array of IpAllocation which reference this VNET.)')]
        $ipAllocations,
        [parameter(mandatory=$False,HelpMessage='Indicates if VM protection is enabled for all the subnets in the virtual network.)')]
        [bool]
        $enableVmProtection,
        [parameter(mandatory=$False,HelpMessage='A list of subnets in a Virtual Network.)')]
        $subnets,
        [parameter(mandatory=$False,HelpMessage='Resource ID.)')]
        [string]
        $id,
        [parameter(mandatory=$False,HelpMessage='The AddressSpace that contains an array of IP address ranges that can be used by subnets.)')]
        [AddressSpace]
        $addressSpace,
        [parameter(mandatory=$False,HelpMessage='The name of the virtual network.)')]
        [string]
        $virtualNetworkName,
        [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:network:VirtualNetwork")

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

        $global:pulumiresources += $resource
        return $resource
    }
}
function New-AzureNativeNetworkManagementGroupNetworkManagerConnection
{
    [Alias('azure_native_network_managementgroupnetworkmanagerconnection')]
    param (
        [parameter(mandatory=$False,HelpMessage='A description of the scope connection.)')]
        [string]
        $description,
        [parameter(mandatory=$False,HelpMessage='Network Manager Id.)')]
        [string]
        $networkManagerId,
        [parameter(mandatory=$False,HelpMessage='Name for the network manager connection.)')]
        [string]
        $networkManagerConnectionName,
        [parameter(mandatory=$False,HelpMessage='The management group Id which uniquely identify the Microsoft Azure management group.)')]
        [string]
        $managementGroupId,
        [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:network:ManagementGroupNetworkManagerConnection")

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

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

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

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

        $global:pulumiresources += $resource
        return $resource
    }
}
function New-AzureNativeNetworkRoutingIntent
{
    [Alias('azure_native_network_routingintent')]
    param (
        [parameter(mandatory=$False,HelpMessage='The name of the resource that is unique within a resource group. This name can be used to access the resource.)')]
        [string]
        $name,
        [parameter(mandatory=$False,HelpMessage='The name of the per VirtualHub singleton Routing Intent resource.)')]
        [string]
        $routingIntentName,
        [parameter(mandatory=$False,HelpMessage='The resource group name of the RoutingIntent.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='List of routing policies.)')]
        $routingPolicies,
        [parameter(mandatory=$False,HelpMessage='Resource ID.)')]
        [string]
        $id,
        [parameter(mandatory=$False,HelpMessage='The name of the VirtualHub.)')]
        [string]
        $virtualHubName,
        [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:network:RoutingIntent")

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

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

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

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

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

        $global:pulumiresources += $resource
        return $resource
    }
}
function New-AzureNativeNetworkVirtualNetworkLink
{
    [Alias('azure_native_network_virtualnetworklink')]
    param (
        [parameter(mandatory=$False,HelpMessage='The name of the resource group.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='The name of the Private DNS zone (without a terminating dot).)')]
        [string]
        $privateZoneName,
        [parameter(mandatory=$False,HelpMessage='Resource tags.)')]
        [hashtable]
        $tags,
        [parameter(mandatory=$False,HelpMessage='The reference of the virtual network.)')]
        [SubResource]
        $virtualNetwork,
        [parameter(mandatory=$False,HelpMessage='The name of the virtual network link.)')]
        [string]
        $virtualNetworkLinkName,
        [parameter(mandatory=$False,HelpMessage='Is auto-registration of virtual machine records in the virtual network in the Private DNS zone enabled?)')]
        [bool]
        $registrationEnabled,
        [parameter(mandatory=$False,HelpMessage='The Azure Region 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:network:VirtualNetworkLink")

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

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

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

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

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

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

        $global:pulumiresources += $resource
        return $resource
    }
}
function New-AzureNativeNetworkSubnet
{
    [Alias('azure_native_network_subnet')]
    param (
        [parameter(mandatory=$False,HelpMessage='List of address prefixes for the subnet.)')]
        [string[]]
        $addressPrefixes,
        [parameter(mandatory=$False,HelpMessage='The address prefix for the subnet.)')]
        [string]
        $addressPrefix,
        [parameter(mandatory=$False,HelpMessage='An array of references to the delegations on the subnet.)')]
        $delegations,
        [parameter(mandatory=$False,HelpMessage='The name of the resource group.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='Application gateway IP configurations of virtual network resource.)')]
        $applicationGatewayIpConfigurations,
        [parameter(mandatory=$False,HelpMessage='The name of the virtual network.)')]
        [string]
        $virtualNetworkName,
        [parameter(mandatory=$False,HelpMessage='Resource ID.)')]
        [string]
        $id,
        [parameter(mandatory=$False,HelpMessage='The reference to the RouteTable resource.)')]
        [RouteTable]
        $routeTable,
        [parameter(mandatory=$False,HelpMessage='Enable or Disable apply network policies on private link service in the subnet.)')]
        [string]
        [ValidateSet('Enabled', 'Disabled')]
        $privateLinkServiceNetworkPolicies,
        [parameter(mandatory=$False,HelpMessage='Resource type.)')]
        [string]
        $type,
        [parameter(mandatory=$False,HelpMessage='An array of service endpoint policies.)')]
        $serviceEndpointPolicies,
        [parameter(mandatory=$False,HelpMessage='Enable or Disable apply network policies on private end point in the subnet.)')]
        [string]
        [ValidateSet('Enabled', 'Disabled')]
        $privateEndpointNetworkPolicies,
        [parameter(mandatory=$False,HelpMessage='Nat gateway associated with this subnet.)')]
        [SubResource]
        $natGateway,
        [parameter(mandatory=$False,HelpMessage='The name of the subnet.)')]
        [string]
        $subnetName,
        [parameter(mandatory=$False,HelpMessage='The reference to the NetworkSecurityGroup resource.)')]
        [NetworkSecurityGroup]
        $networkSecurityGroup,
        [parameter(mandatory=$False,HelpMessage='Array of IpAllocation which reference this subnet.)')]
        $ipAllocations,
        [parameter(mandatory=$False,HelpMessage='An array of service endpoints.)')]
        $serviceEndpoints,
        [parameter(mandatory=$False,HelpMessage='The name of the resource that is unique within a resource group. This name can be used to access the resource.)')]
        [string]
        $name,
        [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:network:Subnet")

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

        $global:pulumiresources += $resource
        return $resource
    }
}
class ExpressRouteCircuitSku
{
    [ValidateSet('UnlimitedData', 'MeteredData')]
    [string] $family
    [ValidateSet('Standard', 'Premium', 'Basic', 'Local')]
    [string] $tier
    [ValidateSet('Standard', 'Premium', 'Basic', 'Local')]
    [string] $name
}
function New-AzureNativeTypeNetworkExpressRouteCircuitSku
{
    param (
        [parameter(mandatory=$False,HelpMessage='The family of the SKU.)')]
        [string]
        [ValidateSet('UnlimitedData', 'MeteredData')]
        $family,
        [parameter(mandatory=$False,HelpMessage='The tier of the SKU.)')]
        [string]
        [ValidateSet('Standard', 'Premium', 'Basic', 'Local')]
        $tier,
        [parameter(mandatory=$False,HelpMessage='The name of the SKU.)')]
        [string]
        $name
    )

    process
    {
        return $([ExpressRouteCircuitSku]$PSBoundParameters)
    }
}
class ExpressRouteCircuitServiceProviderProperties
{
    [string] $serviceProviderName
    [int] $bandwidthInMbps
    [string] $peeringLocation
}
function New-AzureNativeTypeNetworkExpressRouteCircuitServiceProviderProperties
{
    param (
        [parameter(mandatory=$False,HelpMessage='The serviceProviderName.)')]
        [string]
        $serviceProviderName,
        [parameter(mandatory=$False,HelpMessage='The BandwidthInMbps.)')]
        [int]
        $bandwidthInMbps,
        [parameter(mandatory=$False,HelpMessage='The peering location.)')]
        [string]
        $peeringLocation
    )

    process
    {
        return $([ExpressRouteCircuitServiceProviderProperties]$PSBoundParameters)
    }
}
function New-AzureNativeNetworkExpressRouteCircuit
{
    [Alias('azure_native_network_expressroutecircuit')]
    param (
        [parameter(mandatory=$False,HelpMessage='Resource tags.)')]
        [hashtable]
        $tags,
        [parameter(mandatory=$False,HelpMessage='The reference to the ExpressRoutePort resource when the circuit is provisioned on an ExpressRoutePort resource.)')]
        [SubResource]
        $expressRoutePort,
        [parameter(mandatory=$False,HelpMessage='Resource location.)')]
        [string]
        $location,
        [parameter(mandatory=$False,HelpMessage='Allow classic operations.)')]
        [bool]
        $allowClassicOperations,
        [parameter(mandatory=$False,HelpMessage='The name of the resource group.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='Flag denoting global reach status.)')]
        [bool]
        $globalReachEnabled,
        [parameter(mandatory=$False,HelpMessage='The GatewayManager Etag.)')]
        [string]
        $gatewayManagerEtag,
        [parameter(mandatory=$False,HelpMessage='The list of authorizations.)')]
        $authorizations,
        [parameter(mandatory=$False,HelpMessage='The ServiceProviderProvisioningState state of the resource.)')]
        [string]
        [ValidateSet('NotProvisioned', 'Provisioning', 'Provisioned', 'Deprovisioning')]
        $serviceProviderProvisioningState,
        [parameter(mandatory=$False,HelpMessage='The CircuitProvisioningState state of the resource.)')]
        [string]
        $circuitProvisioningState,
        [parameter(mandatory=$False,HelpMessage='The SKU.)')]
        [ExpressRouteCircuitSku]
        $sku,
        [parameter(mandatory=$False,HelpMessage='Resource ID.)')]
        [string]
        $id,
        [parameter(mandatory=$False,HelpMessage='The name of the circuit.)')]
        [string]
        $circuitName,
        [parameter(mandatory=$False,HelpMessage='The ServiceProviderNotes.)')]
        [string]
        $serviceProviderNotes,
        [parameter(mandatory=$False,HelpMessage='The bandwidth of the circuit when the circuit is provisioned on an ExpressRoutePort resource.)')]
        [int]
        $bandwidthInGbps,
        [parameter(mandatory=$False,HelpMessage='The ServiceKey.)')]
        [string]
        $serviceKey,
        [parameter(mandatory=$False,HelpMessage='The list of peerings.)')]
        $peerings,
        [parameter(mandatory=$False,HelpMessage='The ServiceProviderProperties.)')]
        [ExpressRouteCircuitServiceProviderProperties]
        $serviceProviderProperties,
        [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:network:ExpressRouteCircuit")

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

        $global:pulumiresources += $resource
        return $resource
    }
}
function New-AzureNativeNetworkZone
{
    [Alias('azure_native_network_zone')]
    param (
        [parameter(mandatory=$False,HelpMessage='A list of references to virtual networks that resolve records in this DNS zone. This is a only when ZoneType is Private.)')]
        $resolutionVirtualNetworks,
        [parameter(mandatory=$False,HelpMessage='The name of the resource group.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='The name of the DNS zone (without a terminating dot).)')]
        [string]
        $zoneName,
        [parameter(mandatory=$False,HelpMessage='Resource tags.)')]
        [hashtable]
        $tags,
        [parameter(mandatory=$False,HelpMessage='A list of references to virtual networks that register hostnames in this DNS zone. This is a only when ZoneType is Private.)')]
        $registrationVirtualNetworks,
        [parameter(mandatory=$False,HelpMessage='The type of this DNS zone (Public or Private).)')]
        $zoneType,
        [parameter(mandatory=$False,HelpMessage='Resource location.)')]
        [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:network:Zone")

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

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

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

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

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

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

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

        $global:pulumiresources += $resource
        return $resource
    }
}
function New-AzureNativeNetworkLoadBalancerBackendAddressPool
{
    [Alias('azure_native_network_loadbalancerbackendaddresspool')]
    param (
        [parameter(mandatory=$False,HelpMessage='The name of the backend address pool.)')]
        [string]
        $backendAddressPoolName,
        [parameter(mandatory=$False,HelpMessage='The name of the load balancer.)')]
        [string]
        $loadBalancerName,
        [parameter(mandatory=$False,HelpMessage='The name of the resource group.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='An array of backend addresses.)')]
        $loadBalancerBackendAddresses,
        [parameter(mandatory=$False,HelpMessage='Resource ID.)')]
        [string]
        $id,
        [parameter(mandatory=$False,HelpMessage='The name of the resource that is unique within the set of backend address pools used by the load balancer. This name can be used to access the resource.)')]
        [string]
        $name,
        [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:network:LoadBalancerBackendAddressPool")

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

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

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

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

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

        $global:pulumiresources += $resource
        return $resource
    }
}
function New-AzureNativeNetworkInboundNatRule
{
    [Alias('azure_native_network_inboundnatrule')]
    param (
        [parameter(mandatory=$False,HelpMessage='A reference to frontend IP addresses.)')]
        [SubResource]
        $frontendIPConfiguration,
        [parameter(mandatory=$False,HelpMessage='Resource ID.)')]
        [string]
        $id,
        [parameter(mandatory=$False,HelpMessage='The name of the load balancer.)')]
        [string]
        $loadBalancerName,
        [parameter(mandatory=$False,HelpMessage='The name of the resource that is unique within the set of inbound NAT rules used by the load balancer. This name can be used to access the resource.)')]
        [string]
        $name,
        [parameter(mandatory=$False,HelpMessage='The port for the external endpoint. Port numbers for each rule must be unique within the Load Balancer. Acceptable values range from 1 to 65534.)')]
        [int]
        $frontendPort,
        [parameter(mandatory=$False,HelpMessage='Configures a virtual machine''s endpoint for the floating IP capability required to configure a SQL AlwaysOn Availability Group. This setting is required when using the SQL AlwaysOn Availability Groups in SQL server. This setting can''t be changed after you create the endpoint.)')]
        [bool]
        $enableFloatingIP,
        [parameter(mandatory=$False,HelpMessage='The port used for the internal endpoint. Acceptable values range from 1 to 65535.)')]
        [int]
        $backendPort,
        [parameter(mandatory=$False,HelpMessage='The reference to the transport protocol used by the load balancing rule.)')]
        [string]
        [ValidateSet('Udp', 'Tcp', 'All')]
        $protocol,
        [parameter(mandatory=$False,HelpMessage='Receive bidirectional TCP Reset on TCP flow idle timeout or unexpected connection termination. This element is only used when the protocol is set to TCP.)')]
        [bool]
        $enableTcpReset,
        [parameter(mandatory=$False,HelpMessage='The name of the resource group.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='The name of the inbound nat rule.)')]
        [string]
        $inboundNatRuleName,
        [parameter(mandatory=$False,HelpMessage='The timeout for the TCP idle connection. The value can be set between 4 and 30 minutes. The default value is 4 minutes. This element is only used when the protocol is set to TCP.)')]
        [int]
        $idleTimeoutInMinutes,
        [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:network:InboundNatRule")

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

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

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

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

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

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

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

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

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

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

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

        $global:pulumiresources += $resource
        return $resource
    }
}
class NatGatewaySku
{
    [ValidateSet('Standard')]
    [string] $name
}
function New-AzureNativeTypeNetworkNatGatewaySku
{
    param (
        [parameter(mandatory=$False,HelpMessage='Name of Nat Gateway SKU.)')]
        [string]
        [ValidateSet('Standard')]
        $name
    )

    process
    {
        return $([NatGatewaySku]$PSBoundParameters)
    }
}
function New-AzureNativeNetworkNatGateway
{
    [Alias('azure_native_network_natgateway')]
    param (
        [parameter(mandatory=$False,HelpMessage='The name of the nat gateway.)')]
        [string]
        $natGatewayName,
        [parameter(mandatory=$False,HelpMessage='An array of public ip prefixes associated with the nat gateway resource.)')]
        $publicIpPrefixes,
        [parameter(mandatory=$False,HelpMessage='Resource ID.)')]
        [string]
        $id,
        [parameter(mandatory=$False,HelpMessage='The nat gateway SKU.)')]
        [NatGatewaySku]
        $sku,
        [parameter(mandatory=$False,HelpMessage='An array of public ip addresses associated with the nat gateway resource.)')]
        $publicIpAddresses,
        [parameter(mandatory=$False,HelpMessage='The name of the resource group.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='Resource tags.)')]
        [hashtable]
        $tags,
        [parameter(mandatory=$False,HelpMessage='The idle timeout of the nat gateway.)')]
        [int]
        $idleTimeoutInMinutes,
        [parameter(mandatory=$False,HelpMessage='A list of availability zones denoting the zone in which Nat Gateway should be deployed.)')]
        [string[]]
        $zones,
        [parameter(mandatory=$False,HelpMessage='Resource location.)')]
        [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:network:NatGateway")

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

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

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

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

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

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

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

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

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

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

        $global:pulumiresources += $resource
        return $resource
    }
}
class Sku
{
    [ValidateSet('Classic_AzureFrontDoor', 'Standard_AzureFrontDoor', 'Premium_AzureFrontDoor')]
    [string] $name
}
function New-AzureNativeTypeNetworkSku
{
    param (
        [parameter(mandatory=$False,HelpMessage='Name of the pricing tier.)')]
        [string]
        [ValidateSet('Classic_AzureFrontDoor', 'Standard_AzureFrontDoor', 'Premium_AzureFrontDoor')]
        $name
    )

    process
    {
        return $([Sku]$PSBoundParameters)
    }
}
class FrontDoorPolicySettings
{
    [ValidateSet('Prevention', 'Detection')]
    [string] $mode
    [ValidateSet('Prevention', 'Detection')]
    [string] $redirectUrl
    [ValidateSet('Disabled', 'Enabled')]
    [string] $enabledState
    [ValidateSet('Disabled', 'Enabled')]
    [string] $requestBodyCheck
    [ValidateSet('Disabled', 'Enabled')]
    [string] $customBlockResponseBody
    [ValidateSet('Disabled', 'Enabled')]
    [int] $customBlockResponseStatusCode
}
function New-AzureNativeTypeNetworkFrontDoorPolicySettings
{
    param (
        [parameter(mandatory=$False,HelpMessage='Describes if it is in detection mode or prevention mode at policy level.)')]
        [string]
        [ValidateSet('Prevention', 'Detection')]
        $mode,
        [parameter(mandatory=$False,HelpMessage='If action type is redirect, this field represents redirect URL for the client.)')]
        [string]
        $redirectUrl,
        [parameter(mandatory=$False,HelpMessage='Describes if the policy is in enabled or disabled state. Defaults to Enabled if not specified.)')]
        [string]
        [ValidateSet('Disabled', 'Enabled')]
        $enabledState,
        [parameter(mandatory=$False,HelpMessage='Describes if policy managed rules will inspect the request body content.)')]
        [string]
        [ValidateSet('Disabled', 'Enabled')]
        $requestBodyCheck,
        [parameter(mandatory=$False,HelpMessage='If the action type is block, customer can override the response body. The body must be specified in base64 encoding.)')]
        [string]
        $customBlockResponseBody,
        [parameter(mandatory=$False,HelpMessage='If the action type is block, customer can override the response status code.)')]
        [int]
        $customBlockResponseStatusCode
    )

    process
    {
        return $([FrontDoorPolicySettings]$PSBoundParameters)
    }
}
class ManagedRuleExclusion
{
    [ValidateSet('Block', 'Log', 'Redirect')]
    [string] $selector
    [ValidateSet('Equals', 'Contains', 'StartsWith', 'EndsWith', 'EqualsAny')]
    [string] $selectorMatchOperator
    [ValidateSet('RequestHeaderNames', 'RequestCookieNames', 'QueryStringArgNames', 'RequestBodyPostArgNames', 'RequestBodyJsonArgNames')]
    [string] $matchVariable
}
function New-AzureNativeTypeNetworkManagedRuleExclusion
{
    param (
        [parameter(mandatory=$False,HelpMessage='Selector value for which elements in the collection this exclusion applies to.)')]
        [string]
        $selector,
        [parameter(mandatory=$False,HelpMessage='Comparison operator to apply to the selector when specifying which elements in the collection this exclusion applies to.)')]
        [string]
        [ValidateSet('Equals', 'Contains', 'StartsWith', 'EndsWith', 'EqualsAny')]
        $selectorMatchOperator,
        [parameter(mandatory=$False,HelpMessage='The variable type to be excluded.)')]
        [string]
        [ValidateSet('RequestHeaderNames', 'RequestCookieNames', 'QueryStringArgNames', 'RequestBodyPostArgNames', 'RequestBodyJsonArgNames')]
        $matchVariable
    )

    process
    {
        return $([ManagedRuleExclusion]$PSBoundParameters)
    }
}
class FrontDoorManagedRuleOverride
{
    [ValidateSet('Disabled')]
    [string] $enabledState
    [ValidateSet('Disabled')]
    [ManagedRuleExclusion[]] $exclusions
    [ValidateSet('Allow', 'Block', 'Log', 'Redirect')]
    [string] $action
    [ValidateSet('Allow', 'Block', 'Log', 'Redirect')]
    [string] $ruleId
}
function New-AzureNativeTypeNetworkFrontDoorManagedRuleOverride
{
    param (
        [parameter(mandatory=$False,HelpMessage='Describes if the managed rule is in enabled or disabled state. Defaults to Disabled if not specified.)')]
        [string]
        [ValidateSet('Disabled')]
        $enabledState,
        [parameter(mandatory=$False,HelpMessage='Describes the exclusions that are applied to this specific rule.)')]
        $exclusions,
        [parameter(mandatory=$False,HelpMessage='Describes the override action to be applied when rule matches.)')]
        [string]
        [ValidateSet('Allow', 'Block', 'Log', 'Redirect')]
        $action,
        [parameter(mandatory=$False,HelpMessage='Identifier for the managed rule.)')]
        [string]
        $ruleId
    )

    process
    {
        return $([FrontDoorManagedRuleOverride]$PSBoundParameters)
    }
}
class FrontDoorManagedRuleGroupOverride
{
    [ValidateSet('Block', 'Log', 'Redirect')]
    [FrontDoorManagedRuleOverride[]] $rules
    [ValidateSet('Block', 'Log', 'Redirect')]
    [ManagedRuleExclusion[]] $exclusions
    [ValidateSet('Block', 'Log', 'Redirect')]
    [string] $ruleGroupName
}
function New-AzureNativeTypeNetworkFrontDoorManagedRuleGroupOverride
{
    param (
        [parameter(mandatory=$False,HelpMessage='List of rules that will be disabled. If none specified, all rules in the group will be disabled.)')]
        $rules,
        [parameter(mandatory=$False,HelpMessage='Describes the exclusions that are applied to all rules in the group.)')]
        $exclusions,
        [parameter(mandatory=$False,HelpMessage='Describes the managed rule group to override.)')]
        [string]
        $ruleGroupName
    )

    process
    {
        return $([FrontDoorManagedRuleGroupOverride]$PSBoundParameters)
    }
}
class FrontDoorManagedRuleSet
{
    [ValidateSet('Block', 'Log', 'Redirect')]
    [string] $ruleSetAction
    [ValidateSet('Block', 'Log', 'Redirect')]
    [ManagedRuleExclusion[]] $exclusions
    [ValidateSet('Block', 'Log', 'Redirect')]
    [string] $ruleSetType
    [ValidateSet('Block', 'Log', 'Redirect')]
    [FrontDoorManagedRuleGroupOverride[]] $ruleGroupOverrides
    [ValidateSet('Block', 'Log', 'Redirect')]
    [string] $ruleSetVersion
}
function New-AzureNativeTypeNetworkFrontDoorManagedRuleSet
{
    param (
        [parameter(mandatory=$False,HelpMessage='Defines the action to take when a managed rule set score threshold is met.)')]
        [string]
        [ValidateSet('Block', 'Log', 'Redirect')]
        $ruleSetAction,
        [parameter(mandatory=$False,HelpMessage='Describes the exclusions that are applied to all rules in the set.)')]
        $exclusions,
        [parameter(mandatory=$False,HelpMessage='Defines the rule set type to use.)')]
        [string]
        $ruleSetType,
        [parameter(mandatory=$False,HelpMessage='Defines the rule group overrides to apply to the rule set.)')]
        $ruleGroupOverrides,
        [parameter(mandatory=$False,HelpMessage='Defines the version of the rule set to use.)')]
        [string]
        $ruleSetVersion
    )

    process
    {
        return $([FrontDoorManagedRuleSet]$PSBoundParameters)
    }
}
class ManagedRuleSetList
{
    [FrontDoorManagedRuleSet[]] $managedRuleSets
}
function New-AzureNativeTypeNetworkManagedRuleSetList
{
    param (
        [parameter(mandatory=$False,HelpMessage='List of rule sets.)')]
        $managedRuleSets
    )

    process
    {
        return $([ManagedRuleSetList]$PSBoundParameters)
    }
}
class FrontDoorMatchCondition
{
    [ValidateSet('Disabled', 'Enabled')]
    [bool] $negateCondition
    [ValidateSet('Disabled', 'Enabled')]
    [string] $selector
    [ValidateSet('Disabled', 'Enabled')]
    [string[]] $matchValue
    [ValidateSet('Disabled', 'Enabled')]
    [string[]] $transforms
    [ValidateSet('Any', 'IPMatch', 'GeoMatch', 'Equal', 'Contains', 'LessThan', 'GreaterThan', 'LessThanOrEqual', 'GreaterThanOrEqual', 'BeginsWith', 'EndsWith', 'RegEx')]
    [string] $operator
    [ValidateSet('RemoteAddr', 'RequestMethod', 'QueryString', 'PostArgs', 'RequestUri', 'RequestHeader', 'RequestBody', 'Cookies', 'SocketAddr')]
    [string] $matchVariable
}
function New-AzureNativeTypeNetworkFrontDoorMatchCondition
{
    param (
        [parameter(mandatory=$False,HelpMessage='Describes if the result of this condition should be negated.)')]
        [bool]
        $negateCondition,
        [parameter(mandatory=$False,HelpMessage='Match against a specific key from the QueryString, PostArgs, RequestHeader or Cookies variables. Default is null.)')]
        [string]
        $selector,
        [parameter(mandatory=$False,HelpMessage='List of possible match values.)')]
        [string[]]
        $matchValue,
        [parameter(mandatory=$False,HelpMessage='List of transforms.)')]
        $transforms,
        [parameter(mandatory=$False,HelpMessage='Comparison type to use for matching with the variable value.)')]
        [string]
        [ValidateSet('Any', 'IPMatch', 'GeoMatch', 'Equal', 'Contains', 'LessThan', 'GreaterThan', 'LessThanOrEqual', 'GreaterThanOrEqual', 'BeginsWith', 'EndsWith', 'RegEx')]
        $operator,
        [parameter(mandatory=$False,HelpMessage='Request variable to compare with.)')]
        [string]
        [ValidateSet('RemoteAddr', 'RequestMethod', 'QueryString', 'PostArgs', 'RequestUri', 'RequestHeader', 'RequestBody', 'Cookies', 'SocketAddr')]
        $matchVariable
    )

    process
    {
        return $([FrontDoorMatchCondition]$PSBoundParameters)
    }
}
class CustomRule
{
    [ValidateSet('Allow', 'Block', 'Log', 'Redirect')]
    [string] $action
    [ValidateSet('Allow', 'Block', 'Log', 'Redirect')]
    [int] $rateLimitThreshold
    [ValidateSet('Disabled', 'Enabled')]
    [string] $enabledState
    [ValidateSet('Disabled', 'Enabled')]
    [FrontDoorMatchCondition[]] $matchConditions
    [ValidateSet('Disabled', 'Enabled')]
    [int] $rateLimitDurationInMinutes
    [ValidateSet('Disabled', 'Enabled')]
    [string] $name
    [ValidateSet('Disabled', 'Enabled')]
    [int] $priority
    [ValidateSet('MatchRule', 'RateLimitRule')]
    [string] $ruleType
}
function New-AzureNativeTypeNetworkCustomRule
{
    param (
        [parameter(mandatory=$False,HelpMessage='Describes what action to be applied when rule matches.)')]
        [string]
        [ValidateSet('Allow', 'Block', 'Log', 'Redirect')]
        $action,
        [parameter(mandatory=$False,HelpMessage='Number of allowed requests per client within the time window.)')]
        [int]
        $rateLimitThreshold,
        [parameter(mandatory=$False,HelpMessage='Describes if the custom rule is in enabled or disabled state. Defaults to Enabled if not specified.)')]
        [string]
        [ValidateSet('Disabled', 'Enabled')]
        $enabledState,
        [parameter(mandatory=$False,HelpMessage='List of match conditions.)')]
        $matchConditions,
        [parameter(mandatory=$False,HelpMessage='Time window for resetting the rate limit count. Default is 1 minute.)')]
        [int]
        $rateLimitDurationInMinutes,
        [parameter(mandatory=$False,HelpMessage='Describes the name of the rule.)')]
        [string]
        $name,
        [parameter(mandatory=$False,HelpMessage='Describes priority of the rule. Rules with a lower value will be evaluated before rules with a higher value.)')]
        [int]
        $priority,
        [parameter(mandatory=$False,HelpMessage='Describes type of rule.)')]
        [string]
        [ValidateSet('MatchRule', 'RateLimitRule')]
        $ruleType
    )

    process
    {
        return $([CustomRule]$PSBoundParameters)
    }
}
class CustomRuleList
{
    [CustomRule[]] $rules
}
function New-AzureNativeTypeNetworkCustomRuleList
{
    param (
        [parameter(mandatory=$False,HelpMessage='List of rules)')]
        $rules
    )

    process
    {
        return $([CustomRuleList]$PSBoundParameters)
    }
}
function New-AzureNativeNetworkPolicy
{
    [Alias('azure_native_network_policy')]
    param (
        [parameter(mandatory=$False,HelpMessage='The pricing tier of web application firewall policy. Defaults to Classic_AzureFrontDoor if not specified.)')]
        [Sku]
        $sku,
        [parameter(mandatory=$False,HelpMessage='Resource tags.)')]
        [hashtable]
        $tags,
        [parameter(mandatory=$False,HelpMessage='Describes settings for the policy.)')]
        [FrontDoorPolicySettings]
        $policySettings,
        [parameter(mandatory=$False,HelpMessage='Describes managed rules inside the policy.)')]
        [ManagedRuleSetList]
        $managedRules,
        [parameter(mandatory=$False,HelpMessage='Describes custom rules inside the policy.)')]
        [CustomRuleList]
        $customRules,
        [parameter(mandatory=$False,HelpMessage='Resource location.)')]
        [string]
        $location,
        [parameter(mandatory=$False,HelpMessage='The name of the Web Application Firewall Policy.)')]
        [string]
        $policyName,
        [parameter(mandatory=$False,HelpMessage='Name of the Resource group within the Azure subscription.)')]
        [string]
        $resourceGroupName,
        [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:network:Policy")

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

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

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

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

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

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

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

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

        $global:pulumiresources += $resource
        return $resource
    }
}
class PolicySettings
{
    [ValidateSet('Disabled', 'Enabled')]
    [string] $state
    [ValidateSet('Disabled', 'Enabled')]
    [int] $maxRequestBodySizeInKb
    [ValidateSet('Disabled', 'Enabled')]
    [bool] $requestBodyCheck
    [ValidateSet('Prevention', 'Detection')]
    [string] $mode
    [ValidateSet('Prevention', 'Detection')]
    [int] $fileUploadLimitInMb
}
function New-AzureNativeTypeNetworkPolicySettings
{
    param (
        [parameter(mandatory=$False,HelpMessage='The state of the policy.)')]
        [string]
        [ValidateSet('Disabled', 'Enabled')]
        $state,
        [parameter(mandatory=$False,HelpMessage='Maximum request body size in Kb for WAF.)')]
        [int]
        $maxRequestBodySizeInKb,
        [parameter(mandatory=$False,HelpMessage='Whether to allow WAF to check request Body.)')]
        [bool]
        $requestBodyCheck,
        [parameter(mandatory=$False,HelpMessage='The mode of the policy.)')]
        [string]
        [ValidateSet('Prevention', 'Detection')]
        $mode,
        [parameter(mandatory=$False,HelpMessage='Maximum file upload size in Mb for WAF.)')]
        [int]
        $fileUploadLimitInMb
    )

    process
    {
        return $([PolicySettings]$PSBoundParameters)
    }
}
class ManagedRuleOverride
{
    [ValidateSet('Disabled')]
    [string] $state
    [ValidateSet('Disabled')]
    [string] $ruleId
}
function New-AzureNativeTypeNetworkManagedRuleOverride
{
    param (
        [parameter(mandatory=$False,HelpMessage='The state of the managed rule. Defaults to Disabled if not specified.)')]
        [string]
        [ValidateSet('Disabled')]
        $state,
        [parameter(mandatory=$False,HelpMessage='Identifier for the managed rule.)')]
        [string]
        $ruleId
    )

    process
    {
        return $([ManagedRuleOverride]$PSBoundParameters)
    }
}
class ManagedRuleGroupOverride
{
    [string] $ruleGroupName
    [ManagedRuleOverride[]] $rules
}
function New-AzureNativeTypeNetworkManagedRuleGroupOverride
{
    param (
        [parameter(mandatory=$False,HelpMessage='The managed rule group to override.)')]
        [string]
        $ruleGroupName,
        [parameter(mandatory=$False,HelpMessage='List of rules that will be disabled. If none specified, all rules in the group will be disabled.)')]
        $rules
    )

    process
    {
        return $([ManagedRuleGroupOverride]$PSBoundParameters)
    }
}
class ManagedRuleSet
{
    [string] $ruleSetVersion
    [ManagedRuleGroupOverride[]] $ruleGroupOverrides
    [string] $ruleSetType
}
function New-AzureNativeTypeNetworkManagedRuleSet
{
    param (
        [parameter(mandatory=$False,HelpMessage='Defines the version of the rule set to use.)')]
        [string]
        $ruleSetVersion,
        [parameter(mandatory=$False,HelpMessage='Defines the rule group overrides to apply to the rule set.)')]
        $ruleGroupOverrides,
        [parameter(mandatory=$False,HelpMessage='Defines the rule set type to use.)')]
        [string]
        $ruleSetType
    )

    process
    {
        return $([ManagedRuleSet]$PSBoundParameters)
    }
}
class OwaspCrsExclusionEntry
{
    [string] $selector
    [ValidateSet('Equals', 'Contains', 'StartsWith', 'EndsWith', 'EqualsAny')]
    [string] $selectorMatchOperator
    [ValidateSet('RequestHeaderNames', 'RequestCookieNames', 'RequestArgNames')]
    [string] $matchVariable
}
function New-AzureNativeTypeNetworkOwaspCrsExclusionEntry
{
    param (
        [parameter(mandatory=$False,HelpMessage='When matchVariable is a collection, operator used to specify which elements in the collection this exclusion applies to.)')]
        [string]
        $selector,
        [parameter(mandatory=$False,HelpMessage='When matchVariable is a collection, operate on the selector to specify which elements in the collection this exclusion applies to.)')]
        [string]
        [ValidateSet('Equals', 'Contains', 'StartsWith', 'EndsWith', 'EqualsAny')]
        $selectorMatchOperator,
        [parameter(mandatory=$False,HelpMessage='The variable to be excluded.)')]
        [string]
        [ValidateSet('RequestHeaderNames', 'RequestCookieNames', 'RequestArgNames')]
        $matchVariable
    )

    process
    {
        return $([OwaspCrsExclusionEntry]$PSBoundParameters)
    }
}
class ManagedRulesDefinition
{
    [ManagedRuleSet[]] $managedRuleSets
    [OwaspCrsExclusionEntry[]] $exclusions
}
function New-AzureNativeTypeNetworkManagedRulesDefinition
{
    param (
        [parameter(mandatory=$False,HelpMessage='The managed rule sets that are associated with the policy.)')]
        $managedRuleSets,
        [parameter(mandatory=$False,HelpMessage='The Exclusions that are applied on the policy.)')]
        $exclusions
    )

    process
    {
        return $([ManagedRulesDefinition]$PSBoundParameters)
    }
}
function New-AzureNativeNetworkWebApplicationFirewallPolicy
{
    [Alias('azure_native_network_webapplicationfirewallpolicy')]
    param (
        [parameter(mandatory=$False,HelpMessage='Resource tags.)')]
        [hashtable]
        $tags,
        [parameter(mandatory=$False,HelpMessage='The PolicySettings for policy.)')]
        [PolicySettings]
        $policySettings,
        [parameter(mandatory=$False,HelpMessage='Describes the managedRules structure.)')]
        [ManagedRulesDefinition]
        $managedRules,
        [parameter(mandatory=$False,HelpMessage='The custom rules inside the policy.)')]
        $customRules,
        [parameter(mandatory=$False,HelpMessage='Resource location.)')]
        [string]
        $location,
        [parameter(mandatory=$False,HelpMessage='The name of the policy.)')]
        [string]
        $policyName,
        [parameter(mandatory=$False,HelpMessage='The name of the resource group.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='Resource ID.)')]
        [string]
        $id,
        [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:network:WebApplicationFirewallPolicy")

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

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

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

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

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

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

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

        $global:pulumiresources += $resource
        return $resource
    }
}
class PacketCaptureStorageLocation
{
    [string] $storageId
    [string] $storagePath
    [string] $filePath
}
function New-AzureNativeTypeNetworkPacketCaptureStorageLocation
{
    param (
        [parameter(mandatory=$False,HelpMessage='The ID of the storage account to save the packet capture session. Required if no local file path is provided.)')]
        [string]
        $storageId,
        [parameter(mandatory=$False,HelpMessage='The URI of the storage path to save the packet capture. Must be a well-formed URI describing the location to save the packet capture.)')]
        [string]
        $storagePath,
        [parameter(mandatory=$False,HelpMessage='A valid local path on the targeting VM. Must include the name of the capture file (*.cap). For linux virtual machine it must start with /var/captures. Required if no storage ID is provided, otherwise optional.)')]
        [string]
        $filePath
    )

    process
    {
        return $([PacketCaptureStorageLocation]$PSBoundParameters)
    }
}
function New-AzureNativeNetworkPacketCapture
{
    [Alias('azure_native_network_packetcapture')]
    param (
        [parameter(mandatory=$False,HelpMessage='A list of packet capture filters.)')]
        $filters,
        [parameter(mandatory=$False,HelpMessage='The ID of the targeted resource, only VM is currently supported.)')]
        [string]
        $target,
        [parameter(mandatory=$False,HelpMessage='Number of bytes captured per packet, the remaining bytes are truncated.)')]
        [int]
        $bytesToCapturePerPacket,
        [parameter(mandatory=$False,HelpMessage='The name of the resource group.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='The name of the packet capture session.)')]
        [string]
        $packetCaptureName,
        [parameter(mandatory=$False,HelpMessage='Maximum duration of the capture session in seconds.)')]
        [int]
        $timeLimitInSeconds,
        [parameter(mandatory=$False,HelpMessage='Maximum size of the capture output.)')]
        [int]
        $totalBytesPerSession,
        [parameter(mandatory=$False,HelpMessage='The name of the network watcher.)')]
        [string]
        $networkWatcherName,
        [parameter(mandatory=$False,HelpMessage='The storage location for a packet capture session.)')]
        [PacketCaptureStorageLocation]
        $storageLocation,
        [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:network:PacketCapture")

        $resource.properties["networkWatcherName"] = $networkWatcherName
        $resource.properties["resourceGroupName"] = $resourceGroupName
        $resource.properties["storageLocation"] = $storageLocation
        $resource.properties["target"] = $target

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

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

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

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

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

        $global:pulumiresources += $resource
        return $resource
    }
}
function New-AzureNativeNetworkRecordSet
{
    [Alias('azure_native_network_recordset')]
    param (
        [parameter(mandatory=$False,HelpMessage='The list of CAA records in the record set.)')]
        $caaRecords,
        [parameter(mandatory=$False,HelpMessage='The list of SRV records in the record set.)')]
        $srvRecords,
        [parameter(mandatory=$False,HelpMessage='The list of NS records in the record set.)')]
        $nsRecords,
        [parameter(mandatory=$False,HelpMessage='The type of DNS record in this record set. Record sets of type SOA can be updated but not created (they are created when the DNS zone is created).)')]
        [string]
        $recordType,
        [parameter(mandatory=$False,HelpMessage='The CNAME record in the record set.)')]
        [CnameRecord]
        $cnameRecord,
        [parameter(mandatory=$False,HelpMessage='The list of PTR records in the record set.)')]
        $ptrRecords,
        [parameter(mandatory=$False,HelpMessage='The list of TXT records in the record set.)')]
        $txtRecords,
        [parameter(mandatory=$False,HelpMessage='The name of the DNS zone (without a terminating dot).)')]
        [string]
        $zoneName,
        [parameter(mandatory=$False,HelpMessage='The list of AAAA records in the record set.)')]
        $aaaaRecords,
        [parameter(mandatory=$False,HelpMessage='The name of the record set, relative to the name of the zone.)')]
        [string]
        $relativeRecordSetName,
        [parameter(mandatory=$False,HelpMessage='The name of the resource group.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='A reference to an azure resource from where the dns resource value is taken.)')]
        [SubResource]
        $targetResource,
        [parameter(mandatory=$False,HelpMessage='The list of MX records in the record set.)')]
        $mxRecords,
        [parameter(mandatory=$False,HelpMessage='The list of A records in the record set.)')]
        $aRecords,
        [parameter(mandatory=$False,HelpMessage='The SOA record in the record set.)')]
        [SoaRecord]
        $soaRecord,
        [parameter(mandatory=$False,HelpMessage='The metadata attached to the record set.)')]
        [hashtable]
        $metadata,
        [parameter(mandatory=$False,HelpMessage='The TTL (time-to-live) of the records in the record set.)')]
        [int]
        $ttl,
        [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:network:RecordSet")

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

        $global:pulumiresources += $resource
        return $resource
    }
}
function New-AzureNativeNetworkNetworkSecurityPerimeter
{
    [Alias('azure_native_network_networksecurityperimeter')]
    param (
        [parameter(mandatory=$False,HelpMessage='The name of the resource that is unique within a resource group. This name can be used to access the resource.)')]
        [string]
        $name,
        [parameter(mandatory=$False,HelpMessage='The name of the network security perimeter.)')]
        [string]
        $networkSecurityPerimeterName,
        [parameter(mandatory=$False,HelpMessage='The name of the resource group.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='Resource tags.)')]
        [hashtable]
        $tags,
        [parameter(mandatory=$False,HelpMessage='perimeter guid of the network security perimeter.)')]
        [string]
        $perimeterGuid,
        [parameter(mandatory=$False,HelpMessage='Resource ID.)')]
        [string]
        $id,
        [parameter(mandatory=$False,HelpMessage='Resource location.)')]
        [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:network:NetworkSecurityPerimeter")

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

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

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

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

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

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

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

        $global:pulumiresources += $resource
        return $resource
    }
}
function New-AzureNativeNetworkInboundEndpoint
{
    [Alias('azure_native_network_inboundendpoint')]
    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 DNS resolver.)')]
        [string]
        $dnsResolverName,
        [parameter(mandatory=$False,HelpMessage='Resource tags.)')]
        [hashtable]
        $tags,
        [parameter(mandatory=$False,HelpMessage='IP configurations for the inbound endpoint.)')]
        $ipConfigurations,
        [parameter(mandatory=$False,HelpMessage='The geo-location where the resource lives)')]
        [string]
        $location,
        [parameter(mandatory=$False,HelpMessage='The name of the inbound endpoint for the DNS resolver.)')]
        [string]
        $inboundEndpointName,
        [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:network:InboundEndpoint")

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

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

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

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

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

        $global:pulumiresources += $resource
        return $resource
    }
}
class AzureFirewallPublicIPAddress
{
    [string] $address
}
function New-AzureNativeTypeNetworkAzureFirewallPublicIPAddress
{
    param (
        [parameter(mandatory=$False,HelpMessage='Public IP Address value.)')]
        [string]
        $address
    )

    process
    {
        return $([AzureFirewallPublicIPAddress]$PSBoundParameters)
    }
}
class HubPublicIPAddresses
{
    [int] $count
    [AzureFirewallPublicIPAddress[]] $addresses
}
function New-AzureNativeTypeNetworkHubPublicIPAddresses
{
    param (
        [parameter(mandatory=$False,HelpMessage='The number of Public IP addresses associated with azure firewall.)')]
        [int]
        $count,
        [parameter(mandatory=$False,HelpMessage='The list of Public IP addresses associated with azure firewall or IP addresses to be retained.)')]
        $addresses
    )

    process
    {
        return $([HubPublicIPAddresses]$PSBoundParameters)
    }
}
class HubIPAddresses
{
    [HubPublicIPAddresses] $publicIPs
    [string] $privateIPAddress
}
function New-AzureNativeTypeNetworkHubIPAddresses
{
    param (
        [parameter(mandatory=$False,HelpMessage='Public IP addresses associated with azure firewall.)')]
        [HubPublicIPAddresses]
        $publicIPs,
        [parameter(mandatory=$False,HelpMessage='Private IP Address associated with azure firewall.)')]
        [string]
        $privateIPAddress
    )

    process
    {
        return $([HubIPAddresses]$PSBoundParameters)
    }
}
class AzureFirewallIPConfiguration
{
    [SubResource] $subnet
    [string] $id
    [SubResource] $publicIPAddress
    [string] $name
}
function New-AzureNativeTypeNetworkAzureFirewallIPConfiguration
{
    param (
        [parameter(mandatory=$False,HelpMessage='Reference to the subnet resource. This resource must be named ''AzureFirewallSubnet'' or ''AzureFirewallManagementSubnet''.)')]
        [SubResource]
        $subnet,
        [parameter(mandatory=$False,HelpMessage='Resource ID.)')]
        [string]
        $id,
        [parameter(mandatory=$False,HelpMessage='Reference to the PublicIP resource. This field is a mandatory input if subnet is not null.)')]
        [SubResource]
        $publicIPAddress,
        [parameter(mandatory=$False,HelpMessage='Name of the resource that is unique within a resource group. This name can be used to access the resource.)')]
        [string]
        $name
    )

    process
    {
        return $([AzureFirewallIPConfiguration]$PSBoundParameters)
    }
}
class AzureFirewallSku
{
    [ValidateSet('AZFW_VNet', 'AZFW_Hub')]
    [string] $name
    [ValidateSet('Standard', 'Premium')]
    [string] $tier
}
function New-AzureNativeTypeNetworkAzureFirewallSku
{
    param (
        [parameter(mandatory=$False,HelpMessage='Name of an Azure Firewall SKU.)')]
        [string]
        [ValidateSet('AZFW_VNet', 'AZFW_Hub')]
        $name,
        [parameter(mandatory=$False,HelpMessage='Tier of an Azure Firewall.)')]
        [string]
        [ValidateSet('Standard', 'Premium')]
        $tier
    )

    process
    {
        return $([AzureFirewallSku]$PSBoundParameters)
    }
}
function New-AzureNativeNetworkAzureFirewall
{
    [Alias('azure_native_network_azurefirewall')]
    param (
        [parameter(mandatory=$False,HelpMessage='IP addresses associated with AzureFirewall.)')]
        [HubIPAddresses]
        $hubIPAddresses,
        [parameter(mandatory=$False,HelpMessage='Resource ID.)')]
        [string]
        $id,
        [parameter(mandatory=$False,HelpMessage='Resource location.)')]
        [string]
        $location,
        [parameter(mandatory=$False,HelpMessage='Resource tags.)')]
        [hashtable]
        $tags,
        [parameter(mandatory=$False,HelpMessage='Collection of application rule collections used by Azure Firewall.)')]
        $applicationRuleCollections,
        [parameter(mandatory=$False,HelpMessage='Collection of NAT rule collections used by Azure Firewall.)')]
        $natRuleCollections,
        [parameter(mandatory=$False,HelpMessage='The name of the resource group.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='IP configuration of the Azure Firewall used for management traffic.)')]
        [AzureFirewallIPConfiguration]
        $managementIpConfiguration,
        [parameter(mandatory=$False,HelpMessage='Collection of network rule collections used by Azure Firewall.)')]
        $networkRuleCollections,
        [parameter(mandatory=$False,HelpMessage='A list of availability zones denoting where the resource needs to come from.)')]
        [string[]]
        $zones,
        [parameter(mandatory=$False,HelpMessage='The virtualHub to which the firewall belongs.)')]
        [SubResource]
        $virtualHub,
        [parameter(mandatory=$False,HelpMessage='The name of the Azure Firewall.)')]
        [string]
        $azureFirewallName,
        [parameter(mandatory=$False,HelpMessage='The Azure Firewall Resource SKU.)')]
        [AzureFirewallSku]
        $sku,
        [parameter(mandatory=$False,HelpMessage='The operation mode for Threat Intelligence.)')]
        [string]
        [ValidateSet('Alert', 'Deny', 'Off')]
        $threatIntelMode,
        [parameter(mandatory=$False,HelpMessage='The firewallPolicy associated with this azure firewall.)')]
        [SubResource]
        $firewallPolicy,
        [parameter(mandatory=$False,HelpMessage='IP configuration of the Azure Firewall resource.)')]
        $ipConfigurations,
        [parameter(mandatory=$False,HelpMessage='The additional properties used to further config this azure firewall.)')]
        [hashtable]
        $additionalProperties,
        [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:network:AzureFirewall")

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

        $global:pulumiresources += $resource
        return $resource
    }
}
class ExpressRouteCircuitPeeringConfig
{
    [int] $legacyMode
    [string] $routingRegistryName
    [int] $customerASN
    [string[]] $advertisedCommunities
    [string[]] $advertisedPublicPrefixes
}
function New-AzureNativeTypeNetworkExpressRouteCircuitPeeringConfig
{
    param (
        [parameter(mandatory=$False,HelpMessage='The legacy mode of the peering.)')]
        [int]
        $legacyMode,
        [parameter(mandatory=$False,HelpMessage='The RoutingRegistryName of the configuration.)')]
        [string]
        $routingRegistryName,
        [parameter(mandatory=$False,HelpMessage='The CustomerASN of the peering.)')]
        [int]
        $customerASN,
        [parameter(mandatory=$False,HelpMessage='The communities of bgp peering. Specified for microsoft peering.)')]
        [string[]]
        $advertisedCommunities,
        [parameter(mandatory=$False,HelpMessage='The reference to AdvertisedPublicPrefixes.)')]
        [string[]]
        $advertisedPublicPrefixes
    )

    process
    {
        return $([ExpressRouteCircuitPeeringConfig]$PSBoundParameters)
    }
}
class ExpressRouteCircuitStats
{
    [int] $primarybytesIn
    [int] $secondarybytesOut
    [int] $secondarybytesIn
    [int] $primarybytesOut
}
function New-AzureNativeTypeNetworkExpressRouteCircuitStats
{
    param (
        [parameter(mandatory=$False,HelpMessage='The Primary BytesIn of the peering.)')]
        [int]
        $primarybytesIn,
        [parameter(mandatory=$False,HelpMessage='The secondary BytesOut of the peering.)')]
        [int]
        $secondarybytesOut,
        [parameter(mandatory=$False,HelpMessage='The secondary BytesIn of the peering.)')]
        [int]
        $secondarybytesIn,
        [parameter(mandatory=$False,HelpMessage='The primary BytesOut of the peering.)')]
        [int]
        $primarybytesOut
    )

    process
    {
        return $([ExpressRouteCircuitStats]$PSBoundParameters)
    }
}
class Ipv6ExpressRouteCircuitPeeringConfig
{
    [SubResource] $routeFilter
    [ExpressRouteCircuitPeeringConfig] $microsoftPeeringConfig
    [string] $secondaryPeerAddressPrefix
    [string] $primaryPeerAddressPrefix
    [ValidateSet('Disabled', 'Enabled')]
    [string] $state
}
function New-AzureNativeTypeNetworkIpv6ExpressRouteCircuitPeeringConfig
{
    param (
        [parameter(mandatory=$False,HelpMessage='The reference to the RouteFilter resource.)')]
        [SubResource]
        $routeFilter,
        [parameter(mandatory=$False,HelpMessage='The Microsoft peering configuration.)')]
        [ExpressRouteCircuitPeeringConfig]
        $microsoftPeeringConfig,
        [parameter(mandatory=$False,HelpMessage='The secondary address prefix.)')]
        [string]
        $secondaryPeerAddressPrefix,
        [parameter(mandatory=$False,HelpMessage='The primary address prefix.)')]
        [string]
        $primaryPeerAddressPrefix,
        [parameter(mandatory=$False,HelpMessage='The state of peering.)')]
        [string]
        [ValidateSet('Disabled', 'Enabled')]
        $state
    )

    process
    {
        return $([Ipv6ExpressRouteCircuitPeeringConfig]$PSBoundParameters)
    }
}
function New-AzureNativeNetworkExpressRouteCircuitPeering
{
    [Alias('azure_native_network_expressroutecircuitpeering')]
    param (
        [parameter(mandatory=$False,HelpMessage='The Azure ASN.)')]
        [int]
        $azureASN,
        [parameter(mandatory=$False,HelpMessage='The VLAN ID.)')]
        [int]
        $vlanId,
        [parameter(mandatory=$False,HelpMessage='The primary port.)')]
        [string]
        $primaryAzurePort,
        [parameter(mandatory=$False,HelpMessage='The peering type.)')]
        [string]
        [ValidateSet('AzurePublicPeering', 'AzurePrivatePeering', 'MicrosoftPeering')]
        $peeringType,
        [parameter(mandatory=$False,HelpMessage='The name of the peering.)')]
        [string]
        $peeringName,
        [parameter(mandatory=$False,HelpMessage='The name of the resource group.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='The Microsoft peering configuration.)')]
        [ExpressRouteCircuitPeeringConfig]
        $microsoftPeeringConfig,
        [parameter(mandatory=$False,HelpMessage='The reference to the RouteFilter resource.)')]
        [SubResource]
        $routeFilter,
        [parameter(mandatory=$False,HelpMessage='The peer ASN.)')]
        [int]
        $peerASN,
        [parameter(mandatory=$False,HelpMessage='The peering stats of express route circuit.)')]
        [ExpressRouteCircuitStats]
        $stats,
        [parameter(mandatory=$False,HelpMessage='The GatewayManager Etag.)')]
        [string]
        $gatewayManagerEtag,
        [parameter(mandatory=$False,HelpMessage='The shared key.)')]
        [string]
        $sharedKey,
        [parameter(mandatory=$False,HelpMessage='The primary address prefix.)')]
        [string]
        $primaryPeerAddressPrefix,
        [parameter(mandatory=$False,HelpMessage='The secondary port.)')]
        [string]
        $secondaryAzurePort,
        [parameter(mandatory=$False,HelpMessage='Resource ID.)')]
        [string]
        $id,
        [parameter(mandatory=$False,HelpMessage='The name of the express route circuit.)')]
        [string]
        $circuitName,
        [parameter(mandatory=$False,HelpMessage='The peering state.)')]
        [string]
        [ValidateSet('Disabled', 'Enabled')]
        $state,
        [parameter(mandatory=$False,HelpMessage='The name of the resource that is unique within a resource group. This name can be used to access the resource.)')]
        [string]
        $name,
        [parameter(mandatory=$False,HelpMessage='The list of circuit connections associated with Azure Private Peering for this circuit.)')]
        $connections,
        [parameter(mandatory=$False,HelpMessage='The IPv6 peering configuration.)')]
        [Ipv6ExpressRouteCircuitPeeringConfig]
        $ipv6PeeringConfig,
        [parameter(mandatory=$False,HelpMessage='The secondary address prefix.)')]
        [string]
        $secondaryPeerAddressPrefix,
        [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:network:ExpressRouteCircuitPeering")

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

        $global:pulumiresources += $resource
        return $resource
    }
}
class PublicIPAddressSku
{
    [ValidateSet('Basic', 'Standard')]
    [string] $name
    [ValidateSet('Regional', 'Global')]
    [string] $tier
}
function New-AzureNativeTypeNetworkPublicIPAddressSku
{
    param (
        [parameter(mandatory=$False,HelpMessage='Name of a public IP address SKU.)')]
        [string]
        [ValidateSet('Basic', 'Standard')]
        $name,
        [parameter(mandatory=$False,HelpMessage='Tier of a public IP address SKU.)')]
        [string]
        [ValidateSet('Regional', 'Global')]
        $tier
    )

    process
    {
        return $([PublicIPAddressSku]$PSBoundParameters)
    }
}
class IpTag
{
    [ValidateSet('IPv4', 'IPv6')]
    [string] $ipTagType
    [ValidateSet('IPv4', 'IPv6')]
    [string] $tag
}
function New-AzureNativeTypeNetworkIpTag
{
    param (
        [parameter(mandatory=$False,HelpMessage='The IP tag type. Example: FirstPartyUsage.)')]
        [string]
        $ipTagType,
        [parameter(mandatory=$False,HelpMessage='The value of the IP tag associated with the public IP. Example: SQL.)')]
        [string]
        $tag
    )

    process
    {
        return $([IpTag]$PSBoundParameters)
    }
}
class NatGateway
{
    [ValidateSet('IPv4', 'IPv6')]
    [NatGatewaySku] $sku
    [ValidateSet('IPv4', 'IPv6')]
    [object] $tags
    [ValidateSet('IPv4', 'IPv6')]
    [SubResource[]] $publicIpAddresses
    [ValidateSet('IPv4', 'IPv6')]
    [SubResource[]] $publicIpPrefixes
    [ValidateSet('IPv4', 'IPv6')]
    [string[]] $zones
    [ValidateSet('IPv4', 'IPv6')]
    [string] $location
    [ValidateSet('IPv4', 'IPv6')]
    [int] $idleTimeoutInMinutes
    [ValidateSet('IPv4', 'IPv6')]
    [string] $id
}
function New-AzureNativeTypeNetworkNatGateway
{
    param (
        [parameter(mandatory=$False,HelpMessage='The nat gateway SKU.)')]
        [NatGatewaySku]
        $sku,
        [parameter(mandatory=$False,HelpMessage='Resource tags.)')]
        [hashtable]
        $tags,
        [parameter(mandatory=$False,HelpMessage='An array of public ip addresses associated with the nat gateway resource.)')]
        $publicIpAddresses,
        [parameter(mandatory=$False,HelpMessage='An array of public ip prefixes associated with the nat gateway resource.)')]
        $publicIpPrefixes,
        [parameter(mandatory=$False,HelpMessage='A list of availability zones denoting the zone in which Nat Gateway should be deployed.)')]
        [string[]]
        $zones,
        [parameter(mandatory=$False,HelpMessage='Resource location.)')]
        [string]
        $location,
        [parameter(mandatory=$False,HelpMessage='The idle timeout of the nat gateway.)')]
        [int]
        $idleTimeoutInMinutes,
        [parameter(mandatory=$False,HelpMessage='Resource ID.)')]
        [string]
        $id
    )

    process
    {
        return $([NatGateway]$PSBoundParameters)
    }
}
class PublicIPAddressDnsSettings
{
    [ValidateSet('IPv4', 'IPv6')]
    [string] $fqdn
    [ValidateSet('IPv4', 'IPv6')]
    [string] $domainNameLabel
    [ValidateSet('IPv4', 'IPv6')]
    [string] $reverseFqdn
}
function New-AzureNativeTypeNetworkPublicIPAddressDnsSettings
{
    param (
        [parameter(mandatory=$False,HelpMessage='The Fully Qualified Domain Name of the A DNS record associated with the public IP. This is the concatenation of the domainNameLabel and the regionalized DNS zone.)')]
        [string]
        $fqdn,
        [parameter(mandatory=$False,HelpMessage='The domain name label. The concatenation of the domain name label and the regionalized DNS zone make up the fully qualified domain name associated with the public IP address. If a domain name label is specified, an A DNS record is created for the public IP in the Microsoft Azure DNS system.)')]
        [string]
        $domainNameLabel,
        [parameter(mandatory=$False,HelpMessage='The reverse FQDN. A user-visible, fully qualified domain name that resolves to this public IP address. If the reverseFqdn is specified, then a PTR DNS record is created pointing from the IP address in the in-addr.arpa domain to the reverse FQDN.)')]
        [string]
        $reverseFqdn
    )

    process
    {
        return $([PublicIPAddressDnsSettings]$PSBoundParameters)
    }
}
class DdosSettings
{
    [ValidateSet('Basic', 'Standard')]
    [string] $protectionCoverage
    [ValidateSet('Basic', 'Standard')]
    [bool] $protectedIP
    [ValidateSet('Basic', 'Standard')]
    [SubResource] $ddosCustomPolicy
}
function New-AzureNativeTypeNetworkDdosSettings
{
    param (
        [parameter(mandatory=$False,HelpMessage='The DDoS protection policy customizability of the public IP. Only standard coverage will have the ability to be customized.)')]
        [string]
        [ValidateSet('Basic', 'Standard')]
        $protectionCoverage,
        [parameter(mandatory=$False,HelpMessage='Enables DDoS protection on the public IP.)')]
        [bool]
        $protectedIP,
        [parameter(mandatory=$False,HelpMessage='The DDoS custom policy associated with the public IP.)')]
        [SubResource]
        $ddosCustomPolicy
    )

    process
    {
        return $([DdosSettings]$PSBoundParameters)
    }
}
class PublicIPAddress
{
    [ValidateSet('None', 'Prepare', 'Commit', 'Abort', 'Committed')]
    [string] $migrationPhase
    [ValidateSet('IPv4', 'IPv6')]
    [string] $publicIPAddressVersion
    [ValidateSet('IPv4', 'IPv6')]
    [object] $tags
    [ValidateSet('IPv4', 'IPv6')]
    [string] $location
    [ValidateSet('IPv4', 'IPv6')]
    [string] $ipAddress
    [ValidateSet('IPv4', 'IPv6')]
    [PublicIPAddress] $servicePublicIPAddress
    [ValidateSet('IPv4', 'IPv6')]
    [string] $id
    [ValidateSet('IPv4', 'IPv6')]
    [SubResource] $publicIPPrefix
    [ValidateSet('IPv4', 'IPv6')]
    [PublicIPAddressSku] $sku
    [ValidateSet('IPv4', 'IPv6')]
    [int] $idleTimeoutInMinutes
    [ValidateSet('IPv4', 'IPv6')]
    [PublicIPAddress] $linkedPublicIPAddress
    [ValidateSet('IPv4', 'IPv6')]
    [IpTag[]] $ipTags
    [ValidateSet('IPv4', 'IPv6')]
    [ExtendedLocation] $extendedLocation
    [ValidateSet('IPv4', 'IPv6')]
    [NatGateway] $natGateway
    [ValidateSet('IPv4', 'IPv6')]
    [PublicIPAddressDnsSettings] $dnsSettings
    [ValidateSet('IPv4', 'IPv6')]
    [DdosSettings] $ddosSettings
    [ValidateSet('IPv4', 'IPv6')]
    [string[]] $zones
    [ValidateSet('Static', 'Dynamic')]
    [string] $publicIPAllocationMethod
}
function New-AzureNativeTypeNetworkPublicIPAddress
{
    param (
        [parameter(mandatory=$False,HelpMessage='Migration phase of Public IP Address.)')]
        [string]
        [ValidateSet('None', 'Prepare', 'Commit', 'Abort', 'Committed')]
        $migrationPhase,
        [parameter(mandatory=$False,HelpMessage='The public IP address version.)')]
        [string]
        [ValidateSet('IPv4', 'IPv6')]
        $publicIPAddressVersion,
        [parameter(mandatory=$False,HelpMessage='Resource tags.)')]
        [hashtable]
        $tags,
        [parameter(mandatory=$False,HelpMessage='Resource location.)')]
        [string]
        $location,
        [parameter(mandatory=$False,HelpMessage='The IP address associated with the public IP address resource.)')]
        [string]
        $ipAddress,
        [parameter(mandatory=$False,HelpMessage='The service public IP address of the public IP address resource.)')]
        [PublicIPAddress]
        $servicePublicIPAddress,
        [parameter(mandatory=$False,HelpMessage='Resource ID.)')]
        [string]
        $id,
        [parameter(mandatory=$False,HelpMessage='The Public IP Prefix this Public IP Address should be allocated from.)')]
        [SubResource]
        $publicIPPrefix,
        [parameter(mandatory=$False,HelpMessage='The public IP address SKU.)')]
        [PublicIPAddressSku]
        $sku,
        [parameter(mandatory=$False,HelpMessage='The idle timeout of the public IP address.)')]
        [int]
        $idleTimeoutInMinutes,
        [parameter(mandatory=$False,HelpMessage='The linked public IP address of the public IP address resource.)')]
        [PublicIPAddress]
        $linkedPublicIPAddress,
        [parameter(mandatory=$False,HelpMessage='The list of tags associated with the public IP address.)')]
        $ipTags,
        [parameter(mandatory=$False,HelpMessage='The extended location of the public ip address.)')]
        [ExtendedLocation]
        $extendedLocation,
        [parameter(mandatory=$False,HelpMessage='The NatGateway for the Public IP address.)')]
        [NatGateway]
        $natGateway,
        [parameter(mandatory=$False,HelpMessage='The FQDN of the DNS record associated with the public IP address.)')]
        [PublicIPAddressDnsSettings]
        $dnsSettings,
        [parameter(mandatory=$False,HelpMessage='The DDoS protection custom policy associated with the public IP address.)')]
        [DdosSettings]
        $ddosSettings,
        [parameter(mandatory=$False,HelpMessage='A list of availability zones denoting the IP allocated for the resource needs to come from.)')]
        [string[]]
        $zones,
        [parameter(mandatory=$False,HelpMessage='The public IP address allocation method.)')]
        [string]
        [ValidateSet('Static', 'Dynamic')]
        $publicIPAllocationMethod
    )

    process
    {
        return $([PublicIPAddress]$PSBoundParameters)
    }
}
function New-AzureNativeNetworkVirtualHubIpConfiguration
{
    [Alias('azure_native_network_virtualhubipconfiguration')]
    param (
        [parameter(mandatory=$False,HelpMessage='The reference to the public IP resource.)')]
        [PublicIPAddress]
        $publicIPAddress,
        [parameter(mandatory=$False,HelpMessage='The private IP address allocation method.)')]
        [string]
        [ValidateSet('Static', 'Dynamic')]
        $privateIPAllocationMethod,
        [parameter(mandatory=$False,HelpMessage='The resource group name of the VirtualHub.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='Resource ID.)')]
        [string]
        $id,
        [parameter(mandatory=$False,HelpMessage='The reference to the subnet resource.)')]
        [Subnet]
        $subnet,
        [parameter(mandatory=$False,HelpMessage='The name of the ipconfig.)')]
        [string]
        $ipConfigName,
        [parameter(mandatory=$False,HelpMessage='The private IP address of the IP configuration.)')]
        [string]
        $privateIPAddress,
        [parameter(mandatory=$False,HelpMessage='The name of the VirtualHub.)')]
        [string]
        $virtualHubName,
        [parameter(mandatory=$False,HelpMessage='Name of the Ip Configuration.)')]
        [string]
        $name,
        [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:network:VirtualHubIpConfiguration")

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

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

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

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

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

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

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

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

        $global:pulumiresources += $resource
        return $resource
    }
}
function New-AzureNativeNetworkDefaultUserRule
{
    [Alias('azure_native_network_defaultuserrule')]
    param (
        [parameter(mandatory=$False,HelpMessage='The name of the network manager security Configuration rule collection.)')]
        [string]
        $ruleCollectionName,
        [parameter(mandatory=$False,HelpMessage='The name of the rule.)')]
        [string]
        $ruleName,
        [parameter(mandatory=$False,HelpMessage='The name of the resource group.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='Default rule flag.)')]
        [string]
        $flag,
        [parameter(mandatory=$False,HelpMessage='Whether the rule is custom or default.
Expected value is ''Default''.)'
)]
        [string]
        $kind,
        [parameter(mandatory=$False,HelpMessage='The name of the network manager security Configuration.)')]
        [string]
        $configurationName,
        [parameter(mandatory=$False,HelpMessage='The name of the network manager.)')]
        [string]
        $networkManagerName,
        [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:network:DefaultUserRule")

        $resource.properties["configurationName"] = $configurationName
        $resource.properties["kind"] = $kind
        $resource.properties["networkManagerName"] = $networkManagerName
        $resource.properties["resourceGroupName"] = $resourceGroupName
        $resource.properties["ruleCollectionName"] = $ruleCollectionName

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

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

        $global:pulumiresources += $resource
        return $resource
    }
}
function New-AzureNativeNetworkRoute
{
    [Alias('azure_native_network_route')]
    param (
        [parameter(mandatory=$False,HelpMessage='The destination CIDR to which the route applies.)')]
        [string]
        $addressPrefix,
        [parameter(mandatory=$False,HelpMessage='The type of Azure hop the packet should be sent to.)')]
        [string]
        [ValidateSet('VirtualNetworkGateway', 'VnetLocal', 'Internet', 'VirtualAppliance', 'None')]
        $nextHopType,
        [parameter(mandatory=$False,HelpMessage='A value indicating whether this route overrides overlapping BGP routes regardless of LPM.)')]
        [bool]
        $hasBgpOverride,
        [parameter(mandatory=$False,HelpMessage='The name of the route.)')]
        [string]
        $routeName,
        [parameter(mandatory=$False,HelpMessage='The name of the resource group.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='Resource ID.)')]
        [string]
        $id,
        [parameter(mandatory=$False,HelpMessage='The name of the route table.)')]
        [string]
        $routeTableName,
        [parameter(mandatory=$False,HelpMessage='The IP address packets should be forwarded to. Next hop values are only allowed in routes where the next hop type is VirtualAppliance.)')]
        [string]
        $nextHopIpAddress,
        [parameter(mandatory=$False,HelpMessage='The name of the resource that is unique within a resource group. This name can be used to access the resource.)')]
        [string]
        $name,
        [parameter(mandatory=$False,HelpMessage='The type of the resource.)')]
        [string]
        $type,
        [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:network:Route")

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

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

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

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

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

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

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

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

        $global:pulumiresources += $resource
        return $resource
    }
}
function New-AzureNativeNetworkNetworkProfile
{
    [Alias('azure_native_network_networkprofile')]
    param (
        [parameter(mandatory=$False,HelpMessage='The name of the resource group.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='Resource tags.)')]
        [hashtable]
        $tags,
        [parameter(mandatory=$False,HelpMessage='The name of the network profile.)')]
        [string]
        $networkProfileName,
        [parameter(mandatory=$False,HelpMessage='List of chid container network interface configurations.)')]
        $containerNetworkInterfaceConfigurations,
        [parameter(mandatory=$False,HelpMessage='Resource ID.)')]
        [string]
        $id,
        [parameter(mandatory=$False,HelpMessage='Resource location.)')]
        [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:network:NetworkProfile")

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

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

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

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

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

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

        $global:pulumiresources += $resource
        return $resource
    }
}
function New-AzureNativeNetworkFirewallPolicyRuleCollectionGroup
{
    [Alias('azure_native_network_firewallpolicyrulecollectiongroup')]
    param (
        [parameter(mandatory=$False,HelpMessage='The name of the resource that is unique within a resource group. This name can be used to access the resource.)')]
        [string]
        $name,
        [parameter(mandatory=$False,HelpMessage='The name of the Firewall Policy.)')]
        [string]
        $firewallPolicyName,
        [parameter(mandatory=$False,HelpMessage='The name of the resource group.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='The name of the FirewallPolicyRuleCollectionGroup.)')]
        [string]
        $ruleCollectionGroupName,
        [parameter(mandatory=$False,HelpMessage='Group of Firewall Policy rule collections.)')]
        $ruleCollections,
        [parameter(mandatory=$False,HelpMessage='Priority of the Firewall Policy Rule Collection Group resource.)')]
        [int]
        $priority,
        [parameter(mandatory=$False,HelpMessage='Resource ID.)')]
        [string]
        $id,
        [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:network:FirewallPolicyRuleCollectionGroup")

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

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

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

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

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

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

        $global:pulumiresources += $resource
        return $resource
    }
}
function New-AzureNativeNetworkServiceEndpointPolicyDefinition
{
    [Alias('azure_native_network_serviceendpointpolicydefinition')]
    param (
        [parameter(mandatory=$False,HelpMessage='A list of service resources.)')]
        [string[]]
        $serviceResources,
        [parameter(mandatory=$False,HelpMessage='The name of the service endpoint policy definition name.)')]
        [string]
        $serviceEndpointPolicyDefinitionName,
        [parameter(mandatory=$False,HelpMessage='A description for this rule. Restricted to 140 chars.)')]
        [string]
        $description,
        [parameter(mandatory=$False,HelpMessage='The name of the resource that is unique within a resource group. This name can be used to access the resource.)')]
        [string]
        $name,
        [parameter(mandatory=$False,HelpMessage='Service endpoint name.)')]
        [string]
        $service,
        [parameter(mandatory=$False,HelpMessage='The name of the resource group.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='Resource ID.)')]
        [string]
        $id,
        [parameter(mandatory=$False,HelpMessage='The name of the service endpoint policy.)')]
        [string]
        $serviceEndpointPolicyName,
        [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:network:ServiceEndpointPolicyDefinition")

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

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

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

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

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

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

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

        $global:pulumiresources += $resource
        return $resource
    }
}
function New-AzureNativeNetworkExpressRouteCircuitAuthorization
{
    [Alias('azure_native_network_expressroutecircuitauthorization')]
    param (
        [parameter(mandatory=$False,HelpMessage='The name of the resource that is unique within a resource group. This name can be used to access the resource.)')]
        [string]
        $name,
        [parameter(mandatory=$False,HelpMessage='The authorization key.)')]
        [string]
        $authorizationKey,
        [parameter(mandatory=$False,HelpMessage='The name of the resource group.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='Resource ID.)')]
        [string]
        $id,
        [parameter(mandatory=$False,HelpMessage='The authorization use status.)')]
        [string]
        [ValidateSet('Available', 'InUse')]
        $authorizationUseStatus,
        [parameter(mandatory=$False,HelpMessage='The name of the express route circuit.)')]
        [string]
        $circuitName,
        [parameter(mandatory=$False,HelpMessage='The name of the authorization.)')]
        [string]
        $authorizationName,
        [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:network:ExpressRouteCircuitAuthorization")

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

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

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

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

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

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

        $global:pulumiresources += $resource
        return $resource
    }
}
function New-AzureNativeNetworkHubRouteTable
{
    [Alias('azure_native_network_hubroutetable')]
    param (
        [parameter(mandatory=$False,HelpMessage='The name of the resource that is unique within a resource group. This name can be used to access the resource.)')]
        [string]
        $name,
        [parameter(mandatory=$False,HelpMessage='List of labels associated with this route table.)')]
        [string[]]
        $labels,
        [parameter(mandatory=$False,HelpMessage='The resource group name of the VirtualHub.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='The name of the VirtualHub.)')]
        [string]
        $virtualHubName,
        [parameter(mandatory=$False,HelpMessage='List of all routes.)')]
        $routes,
        [parameter(mandatory=$False,HelpMessage='Resource ID.)')]
        [string]
        $id,
        [parameter(mandatory=$False,HelpMessage='The name of the RouteTable.)')]
        [string]
        $routeTableName,
        [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:network:HubRouteTable")

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

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

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

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

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

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

        $global:pulumiresources += $resource
        return $resource
    }
}
function New-AzureNativeNetworkVirtualNetworkPeering
{
    [Alias('azure_native_network_virtualnetworkpeering')]
    param (
        [parameter(mandatory=$False,HelpMessage='If we need to verify the provisioning state of the remote gateway.)')]
        [bool]
        $doNotVerifyRemoteGateways,
        [parameter(mandatory=$False,HelpMessage='The reference to the remote virtual network''s Bgp Communities.)')]
        [VirtualNetworkBgpCommunities]
        $remoteBgpCommunities,
        [parameter(mandatory=$False,HelpMessage='The name of the peering.)')]
        [string]
        $virtualNetworkPeeringName,
        [parameter(mandatory=$False,HelpMessage='Resource type.)')]
        [string]
        $type,
        [parameter(mandatory=$False,HelpMessage='If gateway links can be used in remote virtual networking to link to this virtual network.)')]
        [bool]
        $allowGatewayTransit,
        [parameter(mandatory=$False,HelpMessage='The status of the virtual network peering.)')]
        [string]
        [ValidateSet('Initiated', 'Connected', 'Disconnected')]
        $peeringState,
        [parameter(mandatory=$False,HelpMessage='The name of the resource group.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='The reference to the remote virtual network. The remote virtual network can be in the same or different region (preview). See here to register for the preview and learn more (https://docs.microsoft.com/en-us/azure/virtual-network/virtual-network-create-peering).)')]
        [SubResource]
        $remoteVirtualNetwork,
        [parameter(mandatory=$False,HelpMessage='The name of the resource that is unique within a resource group. This name can be used to access the resource.)')]
        [string]
        $name,
        [parameter(mandatory=$False,HelpMessage='Whether the VMs in the local virtual network space would be able to access the VMs in remote virtual network space.)')]
        [bool]
        $allowVirtualNetworkAccess,
        [parameter(mandatory=$False,HelpMessage='The reference to the remote virtual network address space.)')]
        [AddressSpace]
        $remoteAddressSpace,
        [parameter(mandatory=$False,HelpMessage='Whether the forwarded traffic from the VMs in the local virtual network will be allowed/disallowed in remote virtual network.)')]
        [bool]
        $allowForwardedTraffic,
        [parameter(mandatory=$False,HelpMessage='If remote gateways can be used on this virtual network. If the flag is set to true, and allowGatewayTransit on remote peering is also true, virtual network will use gateways of remote virtual network for transit. Only one peering can have this flag set to true. This flag cannot be set if virtual network already has a gateway.)')]
        [bool]
        $useRemoteGateways,
        [parameter(mandatory=$False,HelpMessage='Resource ID.)')]
        [string]
        $id,
        [parameter(mandatory=$False,HelpMessage='The name of the virtual network.)')]
        [string]
        $virtualNetworkName,
        [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:network:VirtualNetworkPeering")

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

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

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

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

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

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

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

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

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

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

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

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

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

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

        $global:pulumiresources += $resource
        return $resource
    }
}
class ExperimentEndpoint
{
    [string] $name
    [string] $endpoint
}
function New-AzureNativeTypeNetworkExperimentEndpoint
{
    param (
        [parameter(mandatory=$False,HelpMessage='The name of the endpoint)')]
        [string]
        $name,
        [parameter(mandatory=$False,HelpMessage='The endpoint URL)')]
        [string]
        $endpoint
    )

    process
    {
        return $([ExperimentEndpoint]$PSBoundParameters)
    }
}
function New-AzureNativeNetworkExperiment
{
    [Alias('azure_native_network_experiment')]
    param (
        [parameter(mandatory=$False,HelpMessage='The state of the Experiment)')]
        [string]
        [ValidateSet('Enabled', 'Disabled')]
        $enabledState,
        [parameter(mandatory=$False,HelpMessage='The Experiment identifier associated with the Experiment)')]
        [string]
        $experimentName,
        [parameter(mandatory=$False,HelpMessage='The endpoint A of an experiment)')]
        [ExperimentEndpoint]
        $endpointA,
        [parameter(mandatory=$False,HelpMessage='The Profile identifier associated with the Tenant and Partner)')]
        [string]
        $profileName,
        [parameter(mandatory=$False,HelpMessage='Name of the Resource group within the Azure subscription.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='The endpoint B of an experiment)')]
        [ExperimentEndpoint]
        $endpointB,
        [parameter(mandatory=$False,HelpMessage='Resource tags.)')]
        [hashtable]
        $tags,
        [parameter(mandatory=$False,HelpMessage='The description of the details or intents of the Experiment)')]
        [string]
        $description,
        [parameter(mandatory=$False,HelpMessage='Resource location.)')]
        [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:network:Experiment")

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

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

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

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

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

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

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

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

        $global:pulumiresources += $resource
        return $resource
    }
}
class ApplicationGatewaySslPolicy
{
    [ValidateSet('TLSv1_0', 'TLSv1_1', 'TLSv1_2')]
    [string] $minProtocolVersion
    [ValidateSet('TLSv1_0', 'TLSv1_1', 'TLSv1_2')]
    [string[]] $cipherSuites
    [ValidateSet('AppGwSslPolicy20150501', 'AppGwSslPolicy20170401', 'AppGwSslPolicy20170401S')]
    [string] $policyName
    [ValidateSet('Predefined', 'Custom')]
    [string] $policyType
    [ValidateSet('Predefined', 'Custom')]
    [string[]] $disabledSslProtocols
}
function New-AzureNativeTypeNetworkApplicationGatewaySslPolicy
{
    param (
        [parameter(mandatory=$False,HelpMessage='Minimum version of Ssl protocol to be supported on application gateway.)')]
        [string]
        [ValidateSet('TLSv1_0', 'TLSv1_1', 'TLSv1_2')]
        $minProtocolVersion,
        [parameter(mandatory=$False,HelpMessage='Ssl cipher suites to be enabled in the specified order to application gateway.)')]
        $cipherSuites,
        [parameter(mandatory=$False,HelpMessage='Name of Ssl predefined policy.)')]
        [string]
        [ValidateSet('AppGwSslPolicy20150501', 'AppGwSslPolicy20170401', 'AppGwSslPolicy20170401S')]
        $policyName,
        [parameter(mandatory=$False,HelpMessage='Type of Ssl Policy.)')]
        [string]
        [ValidateSet('Predefined', 'Custom')]
        $policyType,
        [parameter(mandatory=$False,HelpMessage='Ssl protocols to be disabled on application gateway.)')]
        $disabledSslProtocols
    )

    process
    {
        return $([ApplicationGatewaySslPolicy]$PSBoundParameters)
    }
}
class ApplicationGatewayFirewallExclusion
{
    [ValidateSet('Detection', 'Prevention')]
    [string] $selector
    [ValidateSet('Detection', 'Prevention')]
    [string] $selectorMatchOperator
    [ValidateSet('Detection', 'Prevention')]
    [string] $matchVariable
}
function New-AzureNativeTypeNetworkApplicationGatewayFirewallExclusion
{
    param (
        [parameter(mandatory=$False,HelpMessage='When matchVariable is a collection, operator used to specify which elements in the collection this exclusion applies to.)')]
        [string]
        $selector,
        [parameter(mandatory=$False,HelpMessage='When matchVariable is a collection, operate on the selector to specify which elements in the collection this exclusion applies to.)')]
        [string]
        $selectorMatchOperator,
        [parameter(mandatory=$False,HelpMessage='The variable to be excluded.)')]
        [string]
        $matchVariable
    )

    process
    {
        return $([ApplicationGatewayFirewallExclusion]$PSBoundParameters)
    }
}
class ApplicationGatewayFirewallDisabledRuleGroup
{
    [ValidateSet('Detection', 'Prevention')]
    [string] $ruleGroupName
    [ValidateSet('Detection', 'Prevention')]
    [int[]] $rules
}
function New-AzureNativeTypeNetworkApplicationGatewayFirewallDisabledRuleGroup
{
    param (
        [parameter(mandatory=$False,HelpMessage='The name of the rule group that will be disabled.)')]
        [string]
        $ruleGroupName,
        [parameter(mandatory=$False,HelpMessage='The list of rules that will be disabled. If null, all rules of the rule group will be disabled.)')]
        [int[]]
        $rules
    )

    process
    {
        return $([ApplicationGatewayFirewallDisabledRuleGroup]$PSBoundParameters)
    }
}
class ApplicationGatewayWebApplicationFirewallConfiguration
{
    [string] $ruleSetVersion
    [int] $maxRequestBodySizeInKb
    [ValidateSet('Detection', 'Prevention')]
    [string] $firewallMode
    [ValidateSet('Detection', 'Prevention')]
    [bool] $requestBodyCheck
    [ValidateSet('Detection', 'Prevention')]
    [int] $maxRequestBodySize
    [ValidateSet('Detection', 'Prevention')]
    [ApplicationGatewayFirewallExclusion[]] $exclusions
    [ValidateSet('Detection', 'Prevention')]
    [ApplicationGatewayFirewallDisabledRuleGroup[]] $disabledRuleGroups
    [ValidateSet('Detection', 'Prevention')]
    [string] $ruleSetType
    [ValidateSet('Detection', 'Prevention')]
    [int] $fileUploadLimitInMb
    [ValidateSet('Detection', 'Prevention')]
    [bool] $enabled
}
function New-AzureNativeTypeNetworkApplicationGatewayWebApplicationFirewallConfiguration
{
    param (
        [parameter(mandatory=$False,HelpMessage='The version of the rule set type.)')]
        [string]
        $ruleSetVersion,
        [parameter(mandatory=$False,HelpMessage='Maximum request body size in Kb for WAF.)')]
        [int]
        $maxRequestBodySizeInKb,
        [parameter(mandatory=$False,HelpMessage='Web application firewall mode.)')]
        [string]
        [ValidateSet('Detection', 'Prevention')]
        $firewallMode,
        [parameter(mandatory=$False,HelpMessage='Whether allow WAF to check request Body.)')]
        [bool]
        $requestBodyCheck,
        [parameter(mandatory=$False,HelpMessage='Maximum request body size for WAF.)')]
        [int]
        $maxRequestBodySize,
        [parameter(mandatory=$False,HelpMessage='The exclusion list.)')]
        $exclusions,
        [parameter(mandatory=$False,HelpMessage='The disabled rule groups.)')]
        $disabledRuleGroups,
        [parameter(mandatory=$False,HelpMessage='The type of the web application firewall rule set. Possible values are: ''OWASP''.)')]
        [string]
        $ruleSetType,
        [parameter(mandatory=$False,HelpMessage='Maximum file upload size in Mb for WAF.)')]
        [int]
        $fileUploadLimitInMb,
        [parameter(mandatory=$False,HelpMessage='Whether the web application firewall is enabled or not.)')]
        [bool]
        $enabled
    )

    process
    {
        return $([ApplicationGatewayWebApplicationFirewallConfiguration]$PSBoundParameters)
    }
}
class ApplicationGatewayAutoscaleConfiguration
{
    [int] $maxCapacity
    [int] $minCapacity
}
function New-AzureNativeTypeNetworkApplicationGatewayAutoscaleConfiguration
{
    param (
        [parameter(mandatory=$False,HelpMessage='Upper bound on number of Application Gateway capacity.)')]
        [int]
        $maxCapacity,
        [parameter(mandatory=$False,HelpMessage='Lower bound on number of Application Gateway capacity.)')]
        [int]
        $minCapacity
    )

    process
    {
        return $([ApplicationGatewayAutoscaleConfiguration]$PSBoundParameters)
    }
}
class ApplicationGatewaySku
{
    [int] $capacity
    [ValidateSet('Standard_Small', 'Standard_Medium', 'Standard_Large', 'WAF_Medium', 'WAF_Large', 'Standard_v2', 'WAF_v2')]
    [string] $name
    [ValidateSet('Standard', 'WAF', 'Standard_v2', 'WAF_v2')]
    [string] $tier
}
function New-AzureNativeTypeNetworkApplicationGatewaySku
{
    param (
        [parameter(mandatory=$False,HelpMessage='Capacity (instance count) of an application gateway.)')]
        [int]
        $capacity,
        [parameter(mandatory=$False,HelpMessage='Name of an application gateway SKU.)')]
        [string]
        [ValidateSet('Standard_Small', 'Standard_Medium', 'Standard_Large', 'WAF_Medium', 'WAF_Large', 'Standard_v2', 'WAF_v2')]
        $name,
        [parameter(mandatory=$False,HelpMessage='Tier of an application gateway.)')]
        [string]
        [ValidateSet('Standard', 'WAF', 'Standard_v2', 'WAF_v2')]
        $tier
    )

    process
    {
        return $([ApplicationGatewaySku]$PSBoundParameters)
    }
}
class ManagedServiceIdentity
{
    [ValidateSet('SystemAssigned', 'UserAssigned', 'SystemAssigned, UserAssigned', 'None')]
    [object] $type
    [ValidateSet('SystemAssigned', 'UserAssigned', 'SystemAssigned, UserAssigned', 'None')]
    [object] $userAssignedIdentities
}
function New-AzureNativeTypeNetworkManagedServiceIdentity
{
    param (
        [parameter(mandatory=$False,HelpMessage='The type of identity used for the resource. The type ''SystemAssigned, UserAssigned'' includes both an implicitly created identity and a set of user assigned identities. The type ''None'' will remove any identities from the virtual machine.)')]
        $type,
        [parameter(mandatory=$False,HelpMessage='The list of user identities associated with resource. The user identity dictionary key references will be ARM resource ids in the form: ''/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ManagedIdentity/userAssignedIdentities/{identityName}''.)')]
        [object]
        $userAssignedIdentities
    )

    process
    {
        return $([ManagedServiceIdentity]$PSBoundParameters)
    }
}
function New-AzureNativeNetworkApplicationGateway
{
    [Alias('azure_native_network_applicationgateway')]
    param (
        [parameter(mandatory=$False,HelpMessage='Backend http settings of the application gateway resource. For default limits, see [Application Gateway limits](https://docs.microsoft.com/azure/azure-subscription-service-limits#application-gateway-limits).)')]
        $backendHttpSettingsCollection,
        [parameter(mandatory=$False,HelpMessage='Frontend IP addresses of the application gateway resource. For default limits, see [Application Gateway limits](https://docs.microsoft.com/azure/azure-subscription-service-limits#application-gateway-limits).)')]
        $frontendIPConfigurations,
        [parameter(mandatory=$False,HelpMessage='Frontend ports of the application gateway resource. For default limits, see [Application Gateway limits](https://docs.microsoft.com/azure/azure-subscription-service-limits#application-gateway-limits).)')]
        $frontendPorts,
        [parameter(mandatory=$False,HelpMessage='SSL profiles of the application gateway resource. For default limits, see [Application Gateway limits](https://docs.microsoft.com/azure/azure-subscription-service-limits#application-gateway-limits).)')]
        $sslProfiles,
        [parameter(mandatory=$False,HelpMessage='Whether HTTP2 is enabled on the application gateway resource.)')]
        [bool]
        $enableHttp2,
        [parameter(mandatory=$False,HelpMessage='Custom error configurations of the application gateway resource.)')]
        $customErrorConfigurations,
        [parameter(mandatory=$False,HelpMessage='URL path map of the application gateway resource. For default limits, see [Application Gateway limits](https://docs.microsoft.com/azure/azure-subscription-service-limits#application-gateway-limits).)')]
        $urlPathMaps,
        [parameter(mandatory=$False,HelpMessage='Resource tags.)')]
        [hashtable]
        $tags,
        [parameter(mandatory=$False,HelpMessage='Request routing rules of the application gateway resource.)')]
        $requestRoutingRules,
        [parameter(mandatory=$False,HelpMessage='If true, associates a firewall policy with an application gateway regardless whether the policy differs from the WAF Config.)')]
        [bool]
        $forceFirewallPolicyAssociation,
        [parameter(mandatory=$False,HelpMessage='SSL policy of the application gateway resource.)')]
        [ApplicationGatewaySslPolicy]
        $sslPolicy,
        [parameter(mandatory=$False,HelpMessage='Http listeners of the application gateway resource. For default limits, see [Application Gateway limits](https://docs.microsoft.com/azure/azure-subscription-service-limits#application-gateway-limits).)')]
        $httpListeners,
        [parameter(mandatory=$False,HelpMessage='Rewrite rules for the application gateway resource.)')]
        $rewriteRuleSets,
        [parameter(mandatory=$False,HelpMessage='Redirect configurations of the application gateway resource. For default limits, see [Application Gateway limits](https://docs.microsoft.com/azure/azure-subscription-service-limits#application-gateway-limits).)')]
        $redirectConfigurations,
        [parameter(mandatory=$False,HelpMessage='SSL certificates of the application gateway resource. For default limits, see [Application Gateway limits](https://docs.microsoft.com/azure/azure-subscription-service-limits#application-gateway-limits).)')]
        $sslCertificates,
        [parameter(mandatory=$False,HelpMessage='Trusted Root certificates of the application gateway resource. For default limits, see [Application Gateway limits](https://docs.microsoft.com/azure/azure-subscription-service-limits#application-gateway-limits).)')]
        $trustedRootCertificates,
        [parameter(mandatory=$False,HelpMessage='Resource location.)')]
        [string]
        $location,
        [parameter(mandatory=$False,HelpMessage='Web application firewall configuration.)')]
        [ApplicationGatewayWebApplicationFirewallConfiguration]
        $webApplicationFirewallConfiguration,
        [parameter(mandatory=$False,HelpMessage='Reference to the FirewallPolicy resource.)')]
        [SubResource]
        $firewallPolicy,
        [parameter(mandatory=$False,HelpMessage='The name of the resource group.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='Authentication certificates of the application gateway resource. For default limits, see [Application Gateway limits](https://docs.microsoft.com/azure/azure-subscription-service-limits#application-gateway-limits).)')]
        $authenticationCertificates,
        [parameter(mandatory=$False,HelpMessage='PrivateLink configurations on application gateway.)')]
        $privateLinkConfigurations,
        [parameter(mandatory=$False,HelpMessage='Autoscale Configuration.)')]
        [ApplicationGatewayAutoscaleConfiguration]
        $autoscaleConfiguration,
        [parameter(mandatory=$False,HelpMessage='The name of the application gateway.)')]
        [string]
        $applicationGatewayName,
        [parameter(mandatory=$False,HelpMessage='SKU of the application gateway resource.)')]
        [ApplicationGatewaySku]
        $sku,
        [parameter(mandatory=$False,HelpMessage='Subnets of the application gateway resource. For default limits, see [Application Gateway limits](https://docs.microsoft.com/azure/azure-subscription-service-limits#application-gateway-limits).)')]
        $gatewayIPConfigurations,
        [parameter(mandatory=$False,HelpMessage='Whether FIPS is enabled on the application gateway resource.)')]
        [bool]
        $enableFips,
        [parameter(mandatory=$False,HelpMessage='Probes of the application gateway resource.)')]
        $probes,
        [parameter(mandatory=$False,HelpMessage='Trusted client certificates of the application gateway resource. For default limits, see [Application Gateway limits](https://docs.microsoft.com/azure/azure-subscription-service-limits#application-gateway-limits).)')]
        $trustedClientCertificates,
        [parameter(mandatory=$False,HelpMessage='The identity of the application gateway, if configured.)')]
        [ManagedServiceIdentity]
        $identity,
        [parameter(mandatory=$False,HelpMessage='A list of availability zones denoting where the resource needs to come from.)')]
        [string[]]
        $zones,
        [parameter(mandatory=$False,HelpMessage='Resource ID.)')]
        [string]
        $id,
        [parameter(mandatory=$False,HelpMessage='Backend address pool of the application gateway resource. For default limits, see [Application Gateway limits](https://docs.microsoft.com/azure/azure-subscription-service-limits#application-gateway-limits).)')]
        $backendAddressPools,
        [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:network:ApplicationGateway")

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

        $global:pulumiresources += $resource
        return $resource
    }
}
function New-AzureNativeNetworkDscpConfiguration
{
    [Alias('azure_native_network_dscpconfiguration')]
    param (
        [parameter(mandatory=$False,HelpMessage='RNM supported protocol types.)')]
        [string]
        [ValidateSet('DoNotUse', 'Icmp', 'Tcp', 'Udp', 'Gre', 'Esp', 'Ah', 'Vxlan', 'All')]
        $protocol,
        [parameter(mandatory=$False,HelpMessage='The name of the resource group.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='Source IP ranges.)')]
        $sourceIpRanges,
        [parameter(mandatory=$False,HelpMessage='Destination IP ranges.)')]
        $destinationIpRanges,
        [parameter(mandatory=$False,HelpMessage='Destination port ranges.)')]
        $destinationPortRanges,
        [parameter(mandatory=$False,HelpMessage='Resource ID.)')]
        [string]
        $id,
        [parameter(mandatory=$False,HelpMessage='The name of the resource.)')]
        [string]
        $dscpConfigurationName,
        [parameter(mandatory=$False,HelpMessage='Sources port ranges.)')]
        $sourcePortRanges,
        [parameter(mandatory=$False,HelpMessage='List of markings to be used in the configuration.)')]
        [int[]]
        $markings,
        [parameter(mandatory=$False,HelpMessage='Resource tags.)')]
        [hashtable]
        $tags,
        [parameter(mandatory=$False,HelpMessage='Resource location.)')]
        [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:network:DscpConfiguration")

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

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

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

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

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

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

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

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

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

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

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

        $global:pulumiresources += $resource
        return $resource
    }
}
function New-AzureNativeNetworkSecurityAdminConfiguration
{
    [Alias('azure_native_network_securityadminconfiguration')]
    param (
        [parameter(mandatory=$False,HelpMessage='The name of the resource group.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='Security Type.)')]
        [string]
        [ValidateSet('AdminPolicy', 'UserPolicy')]
        $securityType,
        [parameter(mandatory=$False,HelpMessage='A description of the security configuration.)')]
        [string]
        $description,
        [parameter(mandatory=$False,HelpMessage='A display name of the security configuration.)')]
        [string]
        $displayName,
        [parameter(mandatory=$False,HelpMessage='Flag if need to delete existing network security groups.)')]
        [string]
        [ValidateSet('False', 'True')]
        $deleteExistingNSGs,
        [parameter(mandatory=$False,HelpMessage='The name of the network manager security Configuration.)')]
        [string]
        $configurationName,
        [parameter(mandatory=$False,HelpMessage='The name of the network manager.)')]
        [string]
        $networkManagerName,
        [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:network:SecurityAdminConfiguration")

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

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

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

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

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

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

        $global:pulumiresources += $resource
        return $resource
    }
}
class FirewallPolicySNAT
{
    [string[]] $privateRanges
}
function New-AzureNativeTypeNetworkFirewallPolicySNAT
{
    param (
        [parameter(mandatory=$False,HelpMessage='List of private IP addresses/IP address ranges to not be SNAT.)')]
        [string[]]
        $privateRanges
    )

    process
    {
        return $([FirewallPolicySNAT]$PSBoundParameters)
    }
}
class DnsSettings
{
    [bool] $requireProxyForNetworkRules
    [string[]] $servers
    [bool] $enableProxy
}
function New-AzureNativeTypeNetworkDnsSettings
{
    param (
        [parameter(mandatory=$False,HelpMessage='FQDNs in Network Rules are supported when set to true.)')]
        [bool]
        $requireProxyForNetworkRules,
        [parameter(mandatory=$False,HelpMessage='List of Custom DNS Servers.)')]
        [string[]]
        $servers,
        [parameter(mandatory=$False,HelpMessage='Enable DNS Proxy on Firewalls attached to the Firewall Policy.)')]
        [bool]
        $enableProxy
    )

    process
    {
        return $([DnsSettings]$PSBoundParameters)
    }
}
class FirewallPolicyIntrusionDetectionSignatureSpecification
{
    [string] $id
    [ValidateSet('Off', 'Alert', 'Deny')]
    [string] $mode
}
function New-AzureNativeTypeNetworkFirewallPolicyIntrusionDetectionSignatureSpecification
{
    param (
        [parameter(mandatory=$False,HelpMessage='Signature id.)')]
        [string]
        $id,
        [parameter(mandatory=$False,HelpMessage='The signature state.)')]
        [string]
        [ValidateSet('Off', 'Alert', 'Deny')]
        $mode
    )

    process
    {
        return $([FirewallPolicyIntrusionDetectionSignatureSpecification]$PSBoundParameters)
    }
}
class FirewallPolicyIntrusionDetectionBypassTrafficSpecifications
{
    [string[]] $destinationPorts
    [string[]] $sourceAddresses
    [string[]] $destinationIpGroups
    [ValidateSet('TCP', 'UDP', 'ICMP', 'ANY')]
    [string] $protocol
    [ValidateSet('TCP', 'UDP', 'ICMP', 'ANY')]
    [string[]] $destinationAddresses
    [ValidateSet('TCP', 'UDP', 'ICMP', 'ANY')]
    [string] $description
    [ValidateSet('TCP', 'UDP', 'ICMP', 'ANY')]
    [string] $name
    [ValidateSet('TCP', 'UDP', 'ICMP', 'ANY')]
    [string[]] $sourceIpGroups
}
function New-AzureNativeTypeNetworkFirewallPolicyIntrusionDetectionBypassTrafficSpecifications
{
    param (
        [parameter(mandatory=$False,HelpMessage='List of destination ports or ranges.)')]
        [string[]]
        $destinationPorts,
        [parameter(mandatory=$False,HelpMessage='List of source IP addresses or ranges for this rule.)')]
        [string[]]
        $sourceAddresses,
        [parameter(mandatory=$False,HelpMessage='List of destination IpGroups for this rule.)')]
        [string[]]
        $destinationIpGroups,
        [parameter(mandatory=$False,HelpMessage='The rule bypass protocol.)')]
        [string]
        [ValidateSet('TCP', 'UDP', 'ICMP', 'ANY')]
        $protocol,
        [parameter(mandatory=$False,HelpMessage='List of destination IP addresses or ranges for this rule.)')]
        [string[]]
        $destinationAddresses,
        [parameter(mandatory=$False,HelpMessage='Description of the bypass traffic rule.)')]
        [string]
        $description,
        [parameter(mandatory=$False,HelpMessage='Name of the bypass traffic rule.)')]
        [string]
        $name,
        [parameter(mandatory=$False,HelpMessage='List of source IpGroups for this rule.)')]
        [string[]]
        $sourceIpGroups
    )

    process
    {
        return $([FirewallPolicyIntrusionDetectionBypassTrafficSpecifications]$PSBoundParameters)
    }
}
class FirewallPolicyIntrusionDetectionConfiguration
{
    [FirewallPolicyIntrusionDetectionSignatureSpecification[]] $signatureOverrides
    [FirewallPolicyIntrusionDetectionBypassTrafficSpecifications[]] $bypassTrafficSettings
}
function New-AzureNativeTypeNetworkFirewallPolicyIntrusionDetectionConfiguration
{
    param (
        [parameter(mandatory=$False,HelpMessage='List of specific signatures states.)')]
        $signatureOverrides,
        [parameter(mandatory=$False,HelpMessage='List of rules for traffic to bypass.)')]
        $bypassTrafficSettings
    )

    process
    {
        return $([FirewallPolicyIntrusionDetectionConfiguration]$PSBoundParameters)
    }
}
class FirewallPolicyIntrusionDetection
{
    [FirewallPolicyIntrusionDetectionConfiguration] $configuration
    [ValidateSet('Off', 'Alert', 'Deny')]
    [string] $mode
}
function New-AzureNativeTypeNetworkFirewallPolicyIntrusionDetection
{
    param (
        [parameter(mandatory=$False,HelpMessage='Intrusion detection configuration properties.)')]
        [FirewallPolicyIntrusionDetectionConfiguration]
        $configuration,
        [parameter(mandatory=$False,HelpMessage='Intrusion detection general state.)')]
        [string]
        [ValidateSet('Off', 'Alert', 'Deny')]
        $mode
    )

    process
    {
        return $([FirewallPolicyIntrusionDetection]$PSBoundParameters)
    }
}
class FirewallPolicyLogAnalyticsWorkspace
{
    [SubResource] $workspaceId
    [string] $region
}
function New-AzureNativeTypeNetworkFirewallPolicyLogAnalyticsWorkspace
{
    param (
        [parameter(mandatory=$False,HelpMessage='The workspace Id for Firewall Policy Insights.)')]
        [SubResource]
        $workspaceId,
        [parameter(mandatory=$False,HelpMessage='Region to configure the Workspace.)')]
        [string]
        $region
    )

    process
    {
        return $([FirewallPolicyLogAnalyticsWorkspace]$PSBoundParameters)
    }
}
class FirewallPolicyLogAnalyticsResources
{
    [FirewallPolicyLogAnalyticsWorkspace[]] $workspaces
    [SubResource] $defaultWorkspaceId
}
function New-AzureNativeTypeNetworkFirewallPolicyLogAnalyticsResources
{
    param (
        [parameter(mandatory=$False,HelpMessage='List of workspaces for Firewall Policy Insights.)')]
        $workspaces,
        [parameter(mandatory=$False,HelpMessage='The default workspace Id for Firewall Policy Insights.)')]
        [SubResource]
        $defaultWorkspaceId
    )

    process
    {
        return $([FirewallPolicyLogAnalyticsResources]$PSBoundParameters)
    }
}
class FirewallPolicyInsights
{
    [bool] $isEnabled
    [FirewallPolicyLogAnalyticsResources] $logAnalyticsResources
    [int] $retentionDays
}
function New-AzureNativeTypeNetworkFirewallPolicyInsights
{
    param (
        [parameter(mandatory=$False,HelpMessage='A flag to indicate if the insights are enabled on the policy.)')]
        [bool]
        $isEnabled,
        [parameter(mandatory=$False,HelpMessage='Workspaces needed to configure the Firewall Policy Insights.)')]
        [FirewallPolicyLogAnalyticsResources]
        $logAnalyticsResources,
        [parameter(mandatory=$False,HelpMessage='Number of days the insights should be enabled on the policy.)')]
        [int]
        $retentionDays
    )

    process
    {
        return $([FirewallPolicyInsights]$PSBoundParameters)
    }
}
class FirewallPolicyCertificateAuthority
{
    [string] $name
    [string] $keyVaultSecretId
}
function New-AzureNativeTypeNetworkFirewallPolicyCertificateAuthority
{
    param (
        [parameter(mandatory=$False,HelpMessage='Name of the CA certificate.)')]
        [string]
        $name,
        [parameter(mandatory=$False,HelpMessage='Secret Id of (base-64 encoded unencrypted pfx) ''Secret'' or ''Certificate'' object stored in KeyVault.)')]
        [string]
        $keyVaultSecretId
    )

    process
    {
        return $([FirewallPolicyCertificateAuthority]$PSBoundParameters)
    }
}
class FirewallPolicyTransportSecurity
{
    [FirewallPolicyCertificateAuthority] $certificateAuthority
}
function New-AzureNativeTypeNetworkFirewallPolicyTransportSecurity
{
    param (
        [parameter(mandatory=$False,HelpMessage='The CA used for intermediate CA generation.)')]
        [FirewallPolicyCertificateAuthority]
        $certificateAuthority
    )

    process
    {
        return $([FirewallPolicyTransportSecurity]$PSBoundParameters)
    }
}
class FirewallPolicySku
{
    [ValidateSet('Standard', 'Premium')]
    [string] $tier
}
function New-AzureNativeTypeNetworkFirewallPolicySku
{
    param (
        [parameter(mandatory=$False,HelpMessage='Tier of Firewall Policy.)')]
        [string]
        [ValidateSet('Standard', 'Premium')]
        $tier
    )

    process
    {
        return $([FirewallPolicySku]$PSBoundParameters)
    }
}
class FirewallPolicyThreatIntelWhitelist
{
    [string[]] $fqdns
    [string[]] $ipAddresses
}
function New-AzureNativeTypeNetworkFirewallPolicyThreatIntelWhitelist
{
    param (
        [parameter(mandatory=$False,HelpMessage='List of FQDNs for the ThreatIntel Whitelist.)')]
        [string[]]
        $fqdns,
        [parameter(mandatory=$False,HelpMessage='List of IP addresses for the ThreatIntel Whitelist.)')]
        [string[]]
        $ipAddresses
    )

    process
    {
        return $([FirewallPolicyThreatIntelWhitelist]$PSBoundParameters)
    }
}
function New-AzureNativeNetworkFirewallPolicy
{
    [Alias('azure_native_network_firewallpolicy')]
    param (
        [parameter(mandatory=$False,HelpMessage='The name of the Firewall Policy.)')]
        [string]
        $firewallPolicyName,
        [parameter(mandatory=$False,HelpMessage='Resource tags.)')]
        [hashtable]
        $tags,
        [parameter(mandatory=$False,HelpMessage='The private IP addresses/IP ranges to which traffic will not be SNAT.)')]
        [FirewallPolicySNAT]
        $snat,
        [parameter(mandatory=$False,HelpMessage='The operation mode for Threat Intelligence.)')]
        [string]
        [ValidateSet('Alert', 'Deny', 'Off')]
        $threatIntelMode,
        [parameter(mandatory=$False,HelpMessage='Resource location.)')]
        [string]
        $location,
        [parameter(mandatory=$False,HelpMessage='The parent firewall policy from which rules are inherited.)')]
        [SubResource]
        $basePolicy,
        [parameter(mandatory=$False,HelpMessage='The identity of the firewall policy.)')]
        [ManagedServiceIdentity]
        $identity,
        [parameter(mandatory=$False,HelpMessage='DNS Proxy Settings definition.)')]
        [DnsSettings]
        $dnsSettings,
        [parameter(mandatory=$False,HelpMessage='The configuration for Intrusion detection.)')]
        [FirewallPolicyIntrusionDetection]
        $intrusionDetection,
        [parameter(mandatory=$False,HelpMessage='Insights on Firewall Policy.)')]
        [FirewallPolicyInsights]
        $insights,
        [parameter(mandatory=$False,HelpMessage='TLS Configuration definition.)')]
        [FirewallPolicyTransportSecurity]
        $transportSecurity,
        [parameter(mandatory=$False,HelpMessage='The Firewall Policy SKU.)')]
        [FirewallPolicySku]
        $sku,
        [parameter(mandatory=$False,HelpMessage='The name of the resource group.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='Resource ID.)')]
        [string]
        $id,
        [parameter(mandatory=$False,HelpMessage='ThreatIntel Whitelist for Firewall Policy.)')]
        [FirewallPolicyThreatIntelWhitelist]
        $threatIntelWhitelist,
        [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:network:FirewallPolicy")

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

        $global:pulumiresources += $resource
        return $resource
    }
}
function New-AzureNativeNetworkPrivateDnsZoneGroup
{
    [Alias('azure_native_network_privatednszonegroup')]
    param (
        [parameter(mandatory=$False,HelpMessage='Name of the resource that is unique within a resource group. This name can be used to access the resource.)')]
        [string]
        $name,
        [parameter(mandatory=$False,HelpMessage='The name of the resource group.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='The name of the private endpoint.)')]
        [string]
        $privateEndpointName,
        [parameter(mandatory=$False,HelpMessage='The name of the private dns zone group.)')]
        [string]
        $privateDnsZoneGroupName,
        [parameter(mandatory=$False,HelpMessage='A collection of private dns zone configurations of the private dns zone group.)')]
        $privateDnsZoneConfigs,
        [parameter(mandatory=$False,HelpMessage='Resource ID.)')]
        [string]
        $id,
        [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:network:PrivateDnsZoneGroup")

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

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

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

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

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

        $global:pulumiresources += $resource
        return $resource
    }
}
class PublicIPPrefixSku
{
    [ValidateSet('Standard')]
    [string] $name
    [ValidateSet('Regional', 'Global')]
    [string] $tier
}
function New-AzureNativeTypeNetworkPublicIPPrefixSku
{
    param (
        [parameter(mandatory=$False,HelpMessage='Name of a public IP prefix SKU.)')]
        [string]
        [ValidateSet('Standard')]
        $name,
        [parameter(mandatory=$False,HelpMessage='Tier of a public IP prefix SKU.)')]
        [string]
        [ValidateSet('Regional', 'Global')]
        $tier
    )

    process
    {
        return $([PublicIPPrefixSku]$PSBoundParameters)
    }
}
function New-AzureNativeNetworkPublicIPPrefix
{
    [Alias('azure_native_network_publicipprefix')]
    param (
        [parameter(mandatory=$False,HelpMessage='The public IP prefix SKU.)')]
        [PublicIPPrefixSku]
        $sku,
        [parameter(mandatory=$False,HelpMessage='Resource tags.)')]
        [hashtable]
        $tags,
        [parameter(mandatory=$False,HelpMessage='The public IP address version.)')]
        [string]
        [ValidateSet('IPv4', 'IPv6')]
        $publicIPAddressVersion,
        [parameter(mandatory=$False,HelpMessage='The extended location of the public ip address.)')]
        [ExtendedLocation]
        $extendedLocation,
        [parameter(mandatory=$False,HelpMessage='The list of tags associated with the public IP prefix.)')]
        $ipTags,
        [parameter(mandatory=$False,HelpMessage='NatGateway of Public IP Prefix.)')]
        [NatGateway]
        $natGateway,
        [parameter(mandatory=$False,HelpMessage='A list of availability zones denoting the IP allocated for the resource needs to come from.)')]
        [string[]]
        $zones,
        [parameter(mandatory=$False,HelpMessage='The Length of the Public IP Prefix.)')]
        [int]
        $prefixLength,
        [parameter(mandatory=$False,HelpMessage='Resource location.)')]
        [string]
        $location,
        [parameter(mandatory=$False,HelpMessage='The name of the resource group.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='The name of the public IP prefix.)')]
        [string]
        $publicIpPrefixName,
        [parameter(mandatory=$False,HelpMessage='Resource ID.)')]
        [string]
        $id,
        [parameter(mandatory=$False,HelpMessage='The customIpPrefix that this prefix is associated with.)')]
        [SubResource]
        $customIPPrefix,
        [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:network:PublicIPPrefix")

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

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

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

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

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

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

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

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

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

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

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

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

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

        $global:pulumiresources += $resource
        return $resource
    }
}
function New-AzureNativeNetworkAdminRule
{
    [Alias('azure_native_network_adminrule')]
    param (
        [parameter(mandatory=$False,HelpMessage='The name of the network manager security Configuration rule collection.)')]
        [string]
        $ruleCollectionName,
        [parameter(mandatory=$False,HelpMessage='The name of the rule.)')]
        [string]
        $ruleName,
        [parameter(mandatory=$False,HelpMessage='The name of the resource group.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='The name of the network manager.)')]
        [string]
        $networkManagerName,
        [parameter(mandatory=$False,HelpMessage='Whether the rule is custom or default.)')]
        [string]
        [ValidateSet('Custom', 'Default')]
        $kind,
        [parameter(mandatory=$False,HelpMessage='The name of the network manager security Configuration.)')]
        [string]
        $configurationName,
        [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:network:AdminRule")

        $resource.properties["configurationName"] = $configurationName
        $resource.properties["kind"] = $kind
        $resource.properties["networkManagerName"] = $networkManagerName
        $resource.properties["resourceGroupName"] = $resourceGroupName
        $resource.properties["ruleCollectionName"] = $ruleCollectionName

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

        $global:pulumiresources += $resource
        return $resource
    }
}
function New-AzureNativeNetworkPublicIPAddress
{
    [Alias('azure_native_network_publicipaddress')]
    param (
        [parameter(mandatory=$False,HelpMessage='Migration phase of Public IP Address.)')]
        [string]
        [ValidateSet('None', 'Prepare', 'Commit', 'Abort', 'Committed')]
        $migrationPhase,
        [parameter(mandatory=$False,HelpMessage='The public IP address version.)')]
        [string]
        [ValidateSet('IPv4', 'IPv6')]
        $publicIPAddressVersion,
        [parameter(mandatory=$False,HelpMessage='The name of the resource group.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='Resource tags.)')]
        [hashtable]
        $tags,
        [parameter(mandatory=$False,HelpMessage='Resource location.)')]
        [string]
        $location,
        [parameter(mandatory=$False,HelpMessage='The IP address associated with the public IP address resource.)')]
        [string]
        $ipAddress,
        [parameter(mandatory=$False,HelpMessage='The name of the public IP address.)')]
        [string]
        $publicIpAddressName,
        [parameter(mandatory=$False,HelpMessage='The service public IP address of the public IP address resource.)')]
        [PublicIPAddress]
        $servicePublicIPAddress,
        [parameter(mandatory=$False,HelpMessage='Resource ID.)')]
        [string]
        $id,
        [parameter(mandatory=$False,HelpMessage='The Public IP Prefix this Public IP Address should be allocated from.)')]
        [SubResource]
        $publicIPPrefix,
        [parameter(mandatory=$False,HelpMessage='The public IP address SKU.)')]
        [PublicIPAddressSku]
        $sku,
        [parameter(mandatory=$False,HelpMessage='The idle timeout of the public IP address.)')]
        [int]
        $idleTimeoutInMinutes,
        [parameter(mandatory=$False,HelpMessage='The linked public IP address of the public IP address resource.)')]
        [PublicIPAddress]
        $linkedPublicIPAddress,
        [parameter(mandatory=$False,HelpMessage='The list of tags associated with the public IP address.)')]
        $ipTags,
        [parameter(mandatory=$False,HelpMessage='The extended location of the public ip address.)')]
        [ExtendedLocation]
        $extendedLocation,
        [parameter(mandatory=$False,HelpMessage='The NatGateway for the Public IP address.)')]
        [NatGateway]
        $natGateway,
        [parameter(mandatory=$False,HelpMessage='The FQDN of the DNS record associated with the public IP address.)')]
        [PublicIPAddressDnsSettings]
        $dnsSettings,
        [parameter(mandatory=$False,HelpMessage='The DDoS protection custom policy associated with the public IP address.)')]
        [DdosSettings]
        $ddosSettings,
        [parameter(mandatory=$False,HelpMessage='A list of availability zones denoting the IP allocated for the resource needs to come from.)')]
        [string[]]
        $zones,
        [parameter(mandatory=$False,HelpMessage='The public IP address allocation method.)')]
        [string]
        [ValidateSet('Static', 'Dynamic')]
        $publicIPAllocationMethod,
        [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:network:PublicIPAddress")

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

        $global:pulumiresources += $resource
        return $resource
    }
}
class O365BreakOutCategoryPolicies
{
    [bool] $optimize
    [bool] $allow
    [bool] $default
}
function New-AzureNativeTypeNetworkO365BreakOutCategoryPolicies
{
    param (
        [parameter(mandatory=$False,HelpMessage='Flag to control optimize category.)')]
        [bool]
        $optimize,
        [parameter(mandatory=$False,HelpMessage='Flag to control allow category.)')]
        [bool]
        $allow,
        [parameter(mandatory=$False,HelpMessage='Flag to control default category.)')]
        [bool]
        $default
    )

    process
    {
        return $([O365BreakOutCategoryPolicies]$PSBoundParameters)
    }
}
class O365PolicyProperties
{
    [O365BreakOutCategoryPolicies] $breakOutCategories
}
function New-AzureNativeTypeNetworkO365PolicyProperties
{
    param (
        [parameter(mandatory=$False,HelpMessage='Office365 breakout categories.)')]
        [O365BreakOutCategoryPolicies]
        $breakOutCategories
    )

    process
    {
        return $([O365PolicyProperties]$PSBoundParameters)
    }
}
class DeviceProperties
{
    [string] $deviceVendor
    [int] $linkSpeedInMbps
    [string] $deviceModel
}
function New-AzureNativeTypeNetworkDeviceProperties
{
    param (
        [parameter(mandatory=$False,HelpMessage='Name of the device Vendor.)')]
        [string]
        $deviceVendor,
        [parameter(mandatory=$False,HelpMessage='Link speed.)')]
        [int]
        $linkSpeedInMbps,
        [parameter(mandatory=$False,HelpMessage='Model of the device.)')]
        [string]
        $deviceModel
    )

    process
    {
        return $([DeviceProperties]$PSBoundParameters)
    }
}
function New-AzureNativeNetworkVpnSite
{
    [Alias('azure_native_network_vpnsite')]
    param (
        [parameter(mandatory=$False,HelpMessage='The set of bgp properties.)')]
        [BgpSettings]
        $bgpProperties,
        [parameter(mandatory=$False,HelpMessage='Resource tags.)')]
        [hashtable]
        $tags,
        [parameter(mandatory=$False,HelpMessage='The VirtualWAN to which the vpnSite belongs.)')]
        [SubResource]
        $virtualWan,
        [parameter(mandatory=$False,HelpMessage='List of all vpn site links.)')]
        $vpnSiteLinks,
        [parameter(mandatory=$False,HelpMessage='The name of the VpnSite being created or updated.)')]
        [string]
        $vpnSiteName,
        [parameter(mandatory=$False,HelpMessage='The ip-address for the vpn-site.)')]
        [string]
        $ipAddress,
        [parameter(mandatory=$False,HelpMessage='Resource location.)')]
        [string]
        $location,
        [parameter(mandatory=$False,HelpMessage='IsSecuritySite flag.)')]
        [bool]
        $isSecuritySite,
        [parameter(mandatory=$False,HelpMessage='Office365 Policy.)')]
        [O365PolicyProperties]
        $o365Policy,
        [parameter(mandatory=$False,HelpMessage='The resource group name of the VpnSite.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='The device properties.)')]
        [DeviceProperties]
        $deviceProperties,
        [parameter(mandatory=$False,HelpMessage='Resource ID.)')]
        [string]
        $id,
        [parameter(mandatory=$False,HelpMessage='The AddressSpace that contains an array of IP address ranges.)')]
        [AddressSpace]
        $addressSpace,
        [parameter(mandatory=$False,HelpMessage='The key for vpn-site that can be used for connections.)')]
        [string]
        $siteKey,
        [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:network:VpnSite")

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

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

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

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

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

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

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

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

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

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

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

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

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

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

        $global:pulumiresources += $resource
        return $resource
    }
}
function New-AzureNativeNetworkPrivateZone
{
    [Alias('azure_native_network_privatezone')]
    param (
        [parameter(mandatory=$False,HelpMessage='The name of the resource group.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='Resource tags.)')]
        [hashtable]
        $tags,
        [parameter(mandatory=$False,HelpMessage='The Azure Region where the resource lives)')]
        [string]
        $location,
        [parameter(mandatory=$False,HelpMessage='The name of the Private DNS zone (without a terminating dot).)')]
        [string]
        $privateZoneName,
        [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:network:PrivateZone")

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

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

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

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

        $global:pulumiresources += $resource
        return $resource
    }
}
function New-AzureNativeNetworkExpressRoutePortAuthorization
{
    [Alias('azure_native_network_expressrouteportauthorization')]
    param (
        [parameter(mandatory=$False,HelpMessage='The name of the resource group.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='The name of the express route port.)')]
        [string]
        $expressRoutePortName,
        [parameter(mandatory=$False,HelpMessage='The name of the authorization.)')]
        [string]
        $authorizationName,
        [parameter(mandatory=$False,HelpMessage='Resource ID.)')]
        [string]
        $id,
        [parameter(mandatory=$False,HelpMessage='The name of the resource that is unique within a resource group. This name can be used to access the resource.)')]
        [string]
        $name,
        [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:network:ExpressRoutePortAuthorization")

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

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

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

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

        $global:pulumiresources += $resource
        return $resource
    }
}
class PrivateLinkServicePropertiesVisibility
{
    [string[]] $subscriptions
}
function New-AzureNativeTypeNetworkPrivateLinkServicePropertiesVisibility
{
    param (
        [parameter(mandatory=$False,HelpMessage='The list of subscriptions.)')]
        [string[]]
        $subscriptions
    )

    process
    {
        return $([PrivateLinkServicePropertiesVisibility]$PSBoundParameters)
    }
}
class PrivateLinkServicePropertiesAutoApproval
{
    [string[]] $subscriptions
}
function New-AzureNativeTypeNetworkPrivateLinkServicePropertiesAutoApproval
{
    param (
        [parameter(mandatory=$False,HelpMessage='The list of subscriptions.)')]
        [string[]]
        $subscriptions
    )

    process
    {
        return $([PrivateLinkServicePropertiesAutoApproval]$PSBoundParameters)
    }
}
function New-AzureNativeNetworkPrivateLinkService
{
    [Alias('azure_native_network_privatelinkservice')]
    param (
        [parameter(mandatory=$False,HelpMessage='The name of the resource group.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='The extended location of the load balancer.)')]
        [ExtendedLocation]
        $extendedLocation,
        [parameter(mandatory=$False,HelpMessage='The list of Fqdn.)')]
        [string[]]
        $fqdns,
        [parameter(mandatory=$False,HelpMessage='The visibility list of the private link service.)')]
        [PrivateLinkServicePropertiesVisibility]
        $visibility,
        [parameter(mandatory=$False,HelpMessage='An array of references to the load balancer IP configurations.)')]
        $loadBalancerFrontendIpConfigurations,
        [parameter(mandatory=$False,HelpMessage='An array of private link service IP configurations.)')]
        $ipConfigurations,
        [parameter(mandatory=$False,HelpMessage='Resource ID.)')]
        [string]
        $id,
        [parameter(mandatory=$False,HelpMessage='Whether the private link service is enabled for proxy protocol or not.)')]
        [bool]
        $enableProxyProtocol,
        [parameter(mandatory=$False,HelpMessage='The auto-approval list of the private link service.)')]
        [PrivateLinkServicePropertiesAutoApproval]
        $autoApproval,
        [parameter(mandatory=$False,HelpMessage='Resource tags.)')]
        [hashtable]
        $tags,
        [parameter(mandatory=$False,HelpMessage='The name of the private link service.)')]
        [string]
        $serviceName,
        [parameter(mandatory=$False,HelpMessage='Resource location.)')]
        [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:network:PrivateLinkService")

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

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

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

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

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

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

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

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

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

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

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

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

        $global:pulumiresources += $resource
        return $resource
    }
}
function New-AzureNativeNetworkRouteFilterRule
{
    [Alias('azure_native_network_routefilterrule')]
    param (
        [parameter(mandatory=$False,HelpMessage='The name of the resource group.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='The collection for bgp community values to filter on. e.g. [''12076:5010'',''12076:5020''].)')]
        [string[]]
        $communities,
        [parameter(mandatory=$False,HelpMessage='The name of the route filter rule.)')]
        [string]
        $ruleName,
        [parameter(mandatory=$False,HelpMessage='The access type of the rule.)')]
        [string]
        [ValidateSet('Allow', 'Deny')]
        $access,
        [parameter(mandatory=$False,HelpMessage='The rule type of the rule.)')]
        [string]
        [ValidateSet('Community')]
        $routeFilterRuleType,
        [parameter(mandatory=$False,HelpMessage='Resource ID.)')]
        [string]
        $id,
        [parameter(mandatory=$False,HelpMessage='The name of the route filter.)')]
        [string]
        $routeFilterName,
        [parameter(mandatory=$False,HelpMessage='The name of the resource that is unique within a resource group. This name can be used to access the resource.)')]
        [string]
        $name,
        [parameter(mandatory=$False,HelpMessage='Resource location.)')]
        [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:network:RouteFilterRule")

        $resource.properties["access"] = $access
        $resource.properties["communities"] = $communities
        $resource.properties["resourceGroupName"] = $resourceGroupName
        $resource.properties["routeFilterName"] = $routeFilterName
        $resource.properties["routeFilterRuleType"] = $routeFilterRuleType

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

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

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

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

        $global:pulumiresources += $resource
        return $resource
    }
}
class LocalNetworkGateway
{
    [string] $gatewayIpAddress
    [string] $fqdn
    [object] $tags
    [string] $location
    [string] $id
    [BgpSettings] $bgpSettings
    [AddressSpace] $localNetworkAddressSpace
}
function New-AzureNativeTypeNetworkLocalNetworkGateway
{
    param (
        [parameter(mandatory=$False,HelpMessage='IP address of local network gateway.)')]
        [string]
        $gatewayIpAddress,
        [parameter(mandatory=$False,HelpMessage='FQDN of local network gateway.)')]
        [string]
        $fqdn,
        [parameter(mandatory=$False,HelpMessage='Resource tags.)')]
        [hashtable]
        $tags,
        [parameter(mandatory=$False,HelpMessage='Resource location.)')]
        [string]
        $location,
        [parameter(mandatory=$False,HelpMessage='Resource ID.)')]
        [string]
        $id,
        [parameter(mandatory=$False,HelpMessage='Local network gateway''s BGP speaker settings.)')]
        [BgpSettings]
        $bgpSettings,
        [parameter(mandatory=$False,HelpMessage='Local network site address space.)')]
        [AddressSpace]
        $localNetworkAddressSpace
    )

    process
    {
        return $([LocalNetworkGateway]$PSBoundParameters)
    }
}
class VirtualNetworkGatewayIPConfiguration
{
    [ValidateSet('PolicyBased', 'RouteBased')]
    [SubResource] $subnet
    [ValidateSet('PolicyBased', 'RouteBased')]
    [string] $id
    [ValidateSet('PolicyBased', 'RouteBased')]
    [SubResource] $publicIPAddress
    [ValidateSet('Static', 'Dynamic')]
    [string] $privateIPAllocationMethod
    [ValidateSet('Static', 'Dynamic')]
    [string] $name
}
function New-AzureNativeTypeNetworkVirtualNetworkGatewayIPConfiguration
{
    param (
        [parameter(mandatory=$False,HelpMessage='The reference to the subnet resource.)')]
        [SubResource]
        $subnet,
        [parameter(mandatory=$False,HelpMessage='Resource ID.)')]
        [string]
        $id,
        [parameter(mandatory=$False,HelpMessage='The reference to the public IP resource.)')]
        [SubResource]
        $publicIPAddress,
        [parameter(mandatory=$False,HelpMessage='The private IP address allocation method.)')]
        [string]
        [ValidateSet('Static', 'Dynamic')]
        $privateIPAllocationMethod,
        [parameter(mandatory=$False,HelpMessage='The name of the resource that is unique within a resource group. This name can be used to access the resource.)')]
        [string]
        $name
    )

    process
    {
        return $([VirtualNetworkGatewayIPConfiguration]$PSBoundParameters)
    }
}
class VirtualNetworkGatewaySku
{
    [ValidateSet('Basic', 'HighPerformance', 'Standard', 'UltraPerformance', 'VpnGw1', 'VpnGw2', 'VpnGw3', 'VpnGw4', 'VpnGw5', 'VpnGw1AZ', 'VpnGw2AZ', 'VpnGw3AZ', 'VpnGw4AZ', 'VpnGw5AZ', 'ErGw1AZ', 'ErGw2AZ', 'ErGw3AZ')]
    [string] $name
    [ValidateSet('Basic', 'HighPerformance', 'Standard', 'UltraPerformance', 'VpnGw1', 'VpnGw2', 'VpnGw3', 'VpnGw4', 'VpnGw5', 'VpnGw1AZ', 'VpnGw2AZ', 'VpnGw3AZ', 'VpnGw4AZ', 'VpnGw5AZ', 'ErGw1AZ', 'ErGw2AZ', 'ErGw3AZ')]
    [string] $tier
}
function New-AzureNativeTypeNetworkVirtualNetworkGatewaySku
{
    param (
        [parameter(mandatory=$False,HelpMessage='Gateway SKU name.)')]
        [string]
        [ValidateSet('Basic', 'HighPerformance', 'Standard', 'UltraPerformance', 'VpnGw1', 'VpnGw2', 'VpnGw3', 'VpnGw4', 'VpnGw5', 'VpnGw1AZ', 'VpnGw2AZ', 'VpnGw3AZ', 'VpnGw4AZ', 'VpnGw5AZ', 'ErGw1AZ', 'ErGw2AZ', 'ErGw3AZ')]
        $name,
        [parameter(mandatory=$False,HelpMessage='Gateway SKU tier.)')]
        [string]
        [ValidateSet('Basic', 'HighPerformance', 'Standard', 'UltraPerformance', 'VpnGw1', 'VpnGw2', 'VpnGw3', 'VpnGw4', 'VpnGw5', 'VpnGw1AZ', 'VpnGw2AZ', 'VpnGw3AZ', 'VpnGw4AZ', 'VpnGw5AZ', 'ErGw1AZ', 'ErGw2AZ', 'ErGw3AZ')]
        $tier
    )

    process
    {
        return $([VirtualNetworkGatewaySku]$PSBoundParameters)
    }
}
class VpnClientRootCertificate
{
    [ValidateSet('Vpn', 'ExpressRoute', 'LocalGateway')]
    [string] $id
    [ValidateSet('Vpn', 'ExpressRoute', 'LocalGateway')]
    [string] $publicCertData
    [ValidateSet('Vpn', 'ExpressRoute', 'LocalGateway')]
    [string] $name
}
function New-AzureNativeTypeNetworkVpnClientRootCertificate
{
    param (
        [parameter(mandatory=$False,HelpMessage='Resource ID.)')]
        [string]
        $id,
        [parameter(mandatory=$False,HelpMessage='The certificate public data.)')]
        [string]
        $publicCertData,
        [parameter(mandatory=$False,HelpMessage='The name of the resource that is unique within a resource group. This name can be used to access the resource.)')]
        [string]
        $name
    )

    process
    {
        return $([VpnClientRootCertificate]$PSBoundParameters)
    }
}
class VpnClientRevokedCertificate
{
    [ValidateSet('Vpn', 'ExpressRoute', 'LocalGateway')]
    [string] $id
    [ValidateSet('Vpn', 'ExpressRoute', 'LocalGateway')]
    [string] $thumbprint
    [ValidateSet('Vpn', 'ExpressRoute', 'LocalGateway')]
    [string] $name
}
function New-AzureNativeTypeNetworkVpnClientRevokedCertificate
{
    param (
        [parameter(mandatory=$False,HelpMessage='Resource ID.)')]
        [string]
        $id,
        [parameter(mandatory=$False,HelpMessage='The revoked VPN client certificate thumbprint.)')]
        [string]
        $thumbprint,
        [parameter(mandatory=$False,HelpMessage='The name of the resource that is unique within a resource group. This name can be used to access the resource.)')]
        [string]
        $name
    )

    process
    {
        return $([VpnClientRevokedCertificate]$PSBoundParameters)
    }
}
class RadiusServer
{
    [ValidateSet('Vpn', 'ExpressRoute', 'LocalGateway')]
    [string] $radiusServerSecret
    [ValidateSet('Vpn', 'ExpressRoute', 'LocalGateway')]
    [int] $radiusServerScore
    [ValidateSet('Vpn', 'ExpressRoute', 'LocalGateway')]
    [string] $radiusServerAddress
}
function New-AzureNativeTypeNetworkRadiusServer
{
    param (
        [parameter(mandatory=$False,HelpMessage='The secret used for this radius server.)')]
        [string]
        $radiusServerSecret,
        [parameter(mandatory=$False,HelpMessage='The initial score assigned to this radius server.)')]
        [int]
        $radiusServerScore,
        [parameter(mandatory=$False,HelpMessage='The address of this radius server.)')]
        [string]
        $radiusServerAddress
    )

    process
    {
        return $([RadiusServer]$PSBoundParameters)
    }
}
class IpsecPolicy
{
    [ValidateSet('DES', 'DES3', 'AES128', 'AES192', 'AES256', 'GCMAES256', 'GCMAES128')]
    [string] $ikeEncryption
    [ValidateSet('DES', 'DES3', 'AES128', 'AES192', 'AES256', 'GCMAES256', 'GCMAES128')]
    [int] $saLifeTimeSeconds
    [ValidateSet('None', 'DES', 'DES3', 'AES128', 'AES192', 'AES256', 'GCMAES128', 'GCMAES192', 'GCMAES256')]
    [string] $ipsecEncryption
    [ValidateSet('None', 'PFS1', 'PFS2', 'PFS2048', 'ECP256', 'ECP384', 'PFS24', 'PFS14', 'PFSMM')]
    [string] $pfsGroup
    [ValidateSet('MD5', 'SHA1', 'SHA256', 'GCMAES128', 'GCMAES192', 'GCMAES256')]
    [string] $ipsecIntegrity
    [ValidateSet('None', 'DHGroup1', 'DHGroup2', 'DHGroup14', 'DHGroup2048', 'ECP256', 'ECP384', 'DHGroup24')]
    [string] $dhGroup
    [ValidateSet('MD5', 'SHA1', 'SHA256', 'SHA384', 'GCMAES256', 'GCMAES128')]
    [string] $ikeIntegrity
    [ValidateSet('MD5', 'SHA1', 'SHA256', 'SHA384', 'GCMAES256', 'GCMAES128')]
    [int] $saDataSizeKilobytes
}
function New-AzureNativeTypeNetworkIpsecPolicy
{
    param (
        [parameter(mandatory=$False,HelpMessage='The IKE encryption algorithm (IKE phase 2).)')]
        [string]
        [ValidateSet('DES', 'DES3', 'AES128', 'AES192', 'AES256', 'GCMAES256', 'GCMAES128')]
        $ikeEncryption,
        [parameter(mandatory=$False,HelpMessage='The IPSec Security Association (also called Quick Mode or Phase 2 SA) lifetime in seconds for a site to site VPN tunnel.)')]
        [int]
        $saLifeTimeSeconds,
        [parameter(mandatory=$False,HelpMessage='The IPSec encryption algorithm (IKE phase 1).)')]
        [string]
        [ValidateSet('None', 'DES', 'DES3', 'AES128', 'AES192', 'AES256', 'GCMAES128', 'GCMAES192', 'GCMAES256')]
        $ipsecEncryption,
        [parameter(mandatory=$False,HelpMessage='The Pfs Group used in IKE Phase 2 for new child SA.)')]
        [string]
        [ValidateSet('None', 'PFS1', 'PFS2', 'PFS2048', 'ECP256', 'ECP384', 'PFS24', 'PFS14', 'PFSMM')]
        $pfsGroup,
        [parameter(mandatory=$False,HelpMessage='The IPSec integrity algorithm (IKE phase 1).)')]
        [string]
        [ValidateSet('MD5', 'SHA1', 'SHA256', 'GCMAES128', 'GCMAES192', 'GCMAES256')]
        $ipsecIntegrity,
        [parameter(mandatory=$False,HelpMessage='The DH Group used in IKE Phase 1 for initial SA.)')]
        [string]
        [ValidateSet('None', 'DHGroup1', 'DHGroup2', 'DHGroup14', 'DHGroup2048', 'ECP256', 'ECP384', 'DHGroup24')]
        $dhGroup,
        [parameter(mandatory=$False,HelpMessage='The IKE integrity algorithm (IKE phase 2).)')]
        [string]
        [ValidateSet('MD5', 'SHA1', 'SHA256', 'SHA384', 'GCMAES256', 'GCMAES128')]
        $ikeIntegrity,
        [parameter(mandatory=$False,HelpMessage='The IPSec Security Association (also called Quick Mode or Phase 2 SA) payload size in KB for a site to site VPN tunnel.)')]
        [int]
        $saDataSizeKilobytes
    )

    process
    {
        return $([IpsecPolicy]$PSBoundParameters)
    }
}
class VpnClientConfiguration
{
    [ValidateSet('Vpn', 'ExpressRoute', 'LocalGateway')]
    [string] $aadIssuer
    [ValidateSet('Vpn', 'ExpressRoute', 'LocalGateway')]
    [string] $radiusServerSecret
    [ValidateSet('Vpn', 'ExpressRoute', 'LocalGateway')]
    [VpnClientRootCertificate[]] $vpnClientRootCertificates
    [ValidateSet('Vpn', 'ExpressRoute', 'LocalGateway')]
    [string] $aadAudience
    [ValidateSet('Vpn', 'ExpressRoute', 'LocalGateway')]
    [string] $aadTenant
    [ValidateSet('Vpn', 'ExpressRoute', 'LocalGateway')]
    [string[]] $vpnAuthenticationTypes
    [ValidateSet('Vpn', 'ExpressRoute', 'LocalGateway')]
    [AddressSpace] $vpnClientAddressPool
    [ValidateSet('Vpn', 'ExpressRoute', 'LocalGateway')]
    [VpnClientRevokedCertificate[]] $vpnClientRevokedCertificates
    [ValidateSet('Vpn', 'ExpressRoute', 'LocalGateway')]
    [string] $radiusServerAddress
    [ValidateSet('Vpn', 'ExpressRoute', 'LocalGateway')]
    [RadiusServer[]] $radiusServers
    [ValidateSet('Vpn', 'ExpressRoute', 'LocalGateway')]
    [IpsecPolicy[]] $vpnClientIpsecPolicies
    [ValidateSet('Vpn', 'ExpressRoute', 'LocalGateway')]
    [string[]] $vpnClientProtocols
}
function New-AzureNativeTypeNetworkVpnClientConfiguration
{
    param (
        [parameter(mandatory=$False,HelpMessage='The AADIssuer property of the VirtualNetworkGateway resource for vpn client connection used for AAD authentication.)')]
        [string]
        $aadIssuer,
        [parameter(mandatory=$False,HelpMessage='The radius secret property of the VirtualNetworkGateway resource for vpn client connection.)')]
        [string]
        $radiusServerSecret,
        [parameter(mandatory=$False,HelpMessage='VpnClientRootCertificate for virtual network gateway.)')]
        $vpnClientRootCertificates,
        [parameter(mandatory=$False,HelpMessage='The AADAudience property of the VirtualNetworkGateway resource for vpn client connection used for AAD authentication.)')]
        [string]
        $aadAudience,
        [parameter(mandatory=$False,HelpMessage='The AADTenant property of the VirtualNetworkGateway resource for vpn client connection used for AAD authentication.)')]
        [string]
        $aadTenant,
        [parameter(mandatory=$False,HelpMessage='VPN authentication types for the virtual network gateway..)')]
        $vpnAuthenticationTypes,
        [parameter(mandatory=$False,HelpMessage='The reference to the address space resource which represents Address space for P2S VpnClient.)')]
        [AddressSpace]
        $vpnClientAddressPool,
        [parameter(mandatory=$False,HelpMessage='VpnClientRevokedCertificate for Virtual network gateway.)')]
        $vpnClientRevokedCertificates,
        [parameter(mandatory=$False,HelpMessage='The radius server address property of the VirtualNetworkGateway resource for vpn client connection.)')]
        [string]
        $radiusServerAddress,
        [parameter(mandatory=$False,HelpMessage='The radiusServers property for multiple radius server configuration.)')]
        $radiusServers,
        [parameter(mandatory=$False,HelpMessage='VpnClientIpsecPolicies for virtual network gateway P2S client.)')]
        $vpnClientIpsecPolicies,
        [parameter(mandatory=$False,HelpMessage='VpnClientProtocols for Virtual network gateway.)')]
        $vpnClientProtocols
    )

    process
    {
        return $([VpnClientConfiguration]$PSBoundParameters)
    }
}
class VirtualNetworkGateway
{
    [object] $tags
    [bool] $activeActive
    [AddressSpace] $customRoutes
    [bool] $enablePrivateIpAddress
    [SubResource] $gatewayDefaultSite
    [ValidateSet('PolicyBased', 'RouteBased')]
    [string] $vpnType
    [ValidateSet('PolicyBased', 'RouteBased')]
    [string] $id
    [ValidateSet('PolicyBased', 'RouteBased')]
    [string] $vNetExtendedLocationResourceId
    [ValidateSet('PolicyBased', 'RouteBased')]
    [VirtualNetworkGatewayIPConfiguration[]] $ipConfigurations
    [ValidateSet('PolicyBased', 'RouteBased')]
    [VirtualNetworkGatewaySku] $sku
    [ValidateSet('PolicyBased', 'RouteBased')]
    [ExtendedLocation] $extendedLocation
    [ValidateSet('PolicyBased', 'RouteBased')]
    [string] $location
    [ValidateSet('PolicyBased', 'RouteBased')]
    [bool] $enableDnsForwarding
    [ValidateSet('PolicyBased', 'RouteBased')]
    [BgpSettings] $bgpSettings
    [ValidateSet('PolicyBased', 'RouteBased')]
    [bool] $enableBgp
    [ValidateSet('Vpn', 'ExpressRoute', 'LocalGateway')]
    [string] $gatewayType
    [ValidateSet('Vpn', 'ExpressRoute', 'LocalGateway')]
    [VpnClientConfiguration] $vpnClientConfiguration
    [ValidateSet('None', 'Generation1', 'Generation2')]
    [string] $vpnGatewayGeneration
}
function New-AzureNativeTypeNetworkVirtualNetworkGateway
{
    param (
        [parameter(mandatory=$False,HelpMessage='Resource tags.)')]
        [hashtable]
        $tags,
        [parameter(mandatory=$False,HelpMessage='ActiveActive flag.)')]
        [bool]
        $activeActive,
        [parameter(mandatory=$False,HelpMessage='The reference to the address space resource which represents the custom routes address space specified by the customer for virtual network gateway and VpnClient.)')]
        [AddressSpace]
        $customRoutes,
        [parameter(mandatory=$False,HelpMessage='Whether private IP needs to be enabled on this gateway for connections or not.)')]
        [bool]
        $enablePrivateIpAddress,
        [parameter(mandatory=$False,HelpMessage='The reference to the LocalNetworkGateway resource which represents local network site having default routes. Assign Null value in case of removing existing default site setting.)')]
        [SubResource]
        $gatewayDefaultSite,
        [parameter(mandatory=$False,HelpMessage='The type of this virtual network gateway.)')]
        [string]
        [ValidateSet('PolicyBased', 'RouteBased')]
        $vpnType,
        [parameter(mandatory=$False,HelpMessage='Resource ID.)')]
        [string]
        $id,
        [parameter(mandatory=$False,HelpMessage='Customer vnet resource id. VirtualNetworkGateway of type local gateway is associated with the customer vnet.)')]
        [string]
        $vNetExtendedLocationResourceId,
        [parameter(mandatory=$False,HelpMessage='IP configurations for virtual network gateway.)')]
        $ipConfigurations,
        [parameter(mandatory=$False,HelpMessage='The reference to the VirtualNetworkGatewaySku resource which represents the SKU selected for Virtual network gateway.)')]
        [VirtualNetworkGatewaySku]
        $sku,
        [parameter(mandatory=$False,HelpMessage='The extended location of type local virtual network gateway.)')]
        [ExtendedLocation]
        $extendedLocation,
        [parameter(mandatory=$False,HelpMessage='Resource location.)')]
        [string]
        $location,
        [parameter(mandatory=$False,HelpMessage='Whether dns forwarding is enabled or not.)')]
        [bool]
        $enableDnsForwarding,
        [parameter(mandatory=$False,HelpMessage='Virtual network gateway''s BGP speaker settings.)')]
        [BgpSettings]
        $bgpSettings,
        [parameter(mandatory=$False,HelpMessage='Whether BGP is enabled for this virtual network gateway or not.)')]
        [bool]
        $enableBgp,
        [parameter(mandatory=$False,HelpMessage='The type of this virtual network gateway.)')]
        [string]
        [ValidateSet('Vpn', 'ExpressRoute', 'LocalGateway')]
        $gatewayType,
        [parameter(mandatory=$False,HelpMessage='The reference to the VpnClientConfiguration resource which represents the P2S VpnClient configurations.)')]
        [VpnClientConfiguration]
        $vpnClientConfiguration,
        [parameter(mandatory=$False,HelpMessage='The generation for this VirtualNetworkGateway. Must be None if gatewayType is not VPN.)')]
        [string]
        [ValidateSet('None', 'Generation1', 'Generation2')]
        $vpnGatewayGeneration
    )

    process
    {
        return $([VirtualNetworkGateway]$PSBoundParameters)
    }
}
function New-AzureNativeNetworkVirtualNetworkGatewayConnection
{
    [Alias('azure_native_network_virtualnetworkgatewayconnection')]
    param (
        [parameter(mandatory=$False,HelpMessage='The IPSec shared key.)')]
        [string]
        $sharedKey,
        [parameter(mandatory=$False,HelpMessage='The connection mode for this connection.)')]
        [string]
        [ValidateSet('Default', 'ResponderOnly', 'InitiatorOnly')]
        $connectionMode,
        [parameter(mandatory=$False,HelpMessage='The reference to local network gateway resource.)')]
        [LocalNetworkGateway]
        $localNetworkGateway2,
        [parameter(mandatory=$False,HelpMessage='Resource ID.)')]
        [string]
        $id,
        [parameter(mandatory=$False,HelpMessage='The name of the resource group.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='The IPSec Policies to be considered by this connection.)')]
        $ipsecPolicies,
        [parameter(mandatory=$False,HelpMessage='The Traffic Selector Policies to be considered by this connection.)')]
        $trafficSelectorPolicies,
        [parameter(mandatory=$False,HelpMessage='The authorizationKey.)')]
        [string]
        $authorizationKey,
        [parameter(mandatory=$False,HelpMessage='Bypass ExpressRoute Gateway for data forwarding.)')]
        [bool]
        $expressRouteGatewayBypass,
        [parameter(mandatory=$False,HelpMessage='Resource tags.)')]
        [hashtable]
        $tags,
        [parameter(mandatory=$False,HelpMessage='Gateway connection type.)')]
        [string]
        [ValidateSet('IPsec', 'Vnet2Vnet', 'ExpressRoute', 'VPNClient')]
        $connectionType,
        [parameter(mandatory=$False,HelpMessage='Use private local Azure IP for the connection.)')]
        [bool]
        $useLocalAzureIpAddress,
        [parameter(mandatory=$False,HelpMessage='The reference to peerings resource.)')]
        [SubResource]
        $peer,
        [parameter(mandatory=$False,HelpMessage='The routing weight.)')]
        [int]
        $routingWeight,
        [parameter(mandatory=$False,HelpMessage='The name of the virtual network gateway connection.)')]
        [string]
        $virtualNetworkGatewayConnectionName,
        [parameter(mandatory=$False,HelpMessage='The reference to virtual network gateway resource.)')]
        [VirtualNetworkGateway]
        $virtualNetworkGateway2,
        [parameter(mandatory=$False,HelpMessage='Enable policy-based traffic selectors.)')]
        [bool]
        $usePolicyBasedTrafficSelectors,
        [parameter(mandatory=$False,HelpMessage='The dead peer detection timeout of this connection in seconds.)')]
        [int]
        $dpdTimeoutSeconds,
        [parameter(mandatory=$False,HelpMessage='Resource location.)')]
        [string]
        $location,
        [parameter(mandatory=$False,HelpMessage='Connection protocol used for this connection.)')]
        [string]
        [ValidateSet('IKEv2', 'IKEv1')]
        $connectionProtocol,
        [parameter(mandatory=$False,HelpMessage='EnableBgp flag.)')]
        [bool]
        $enableBgp,
        [parameter(mandatory=$False,HelpMessage='The reference to virtual network gateway resource.)')]
        [VirtualNetworkGateway]
        $virtualNetworkGateway1,
        [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:network:VirtualNetworkGatewayConnection")

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

        $global:pulumiresources += $resource
        return $resource
    }
}
function New-AzureNativeNetworkSubscriptionNetworkManagerConnection
{
    [Alias('azure_native_network_subscriptionnetworkmanagerconnection')]
    param (
        [parameter(mandatory=$False,HelpMessage='A description of the scope connection.)')]
        [string]
        $description,
        [parameter(mandatory=$False,HelpMessage='Network Manager Id.)')]
        [string]
        $networkManagerId,
        [parameter(mandatory=$False,HelpMessage='Name for the network manager connection.)')]
        [string]
        $networkManagerConnectionName,
        [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:network:SubscriptionNetworkManagerConnection")


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

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

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

        $global:pulumiresources += $resource
        return $resource
    }
}
function New-AzureNativeNetworkServiceEndpointPolicy
{
    [Alias('azure_native_network_serviceendpointpolicy')]
    param (
        [parameter(mandatory=$False,HelpMessage='The name of the service endpoint policy.)')]
        [string]
        $serviceEndpointPolicyName,
        [parameter(mandatory=$False,HelpMessage='The name of the resource group.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='Resource tags.)')]
        [hashtable]
        $tags,
        [parameter(mandatory=$False,HelpMessage='A collection of service endpoint policy definitions of the service endpoint policy.)')]
        $serviceEndpointPolicyDefinitions,
        [parameter(mandatory=$False,HelpMessage='Resource ID.)')]
        [string]
        $id,
        [parameter(mandatory=$False,HelpMessage='Resource location.)')]
        [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:network:ServiceEndpointPolicy")

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

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

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

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

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

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

        $global:pulumiresources += $resource
        return $resource
    }
}
function New-AzureNativeNetworkPrivateLinkServicePrivateEndpointConnection
{
    [Alias('azure_native_network_privatelinkserviceprivateendpointconnection')]
    param (
        [parameter(mandatory=$False,HelpMessage='The name of the resource that is unique within a resource group. This name can be used to access the resource.)')]
        [string]
        $name,
        [parameter(mandatory=$False,HelpMessage='The name of the resource group.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='The name of the private end point connection.)')]
        [string]
        $peConnectionName,
        [parameter(mandatory=$False,HelpMessage='The name of the private link service.)')]
        [string]
        $serviceName,
        [parameter(mandatory=$False,HelpMessage='Resource ID.)')]
        [string]
        $id,
        [parameter(mandatory=$False,HelpMessage='A collection of information about the state of the connection between service consumer and provider.)')]
        [PrivateLinkServiceConnectionState]
        $privateLinkServiceConnectionState,
        [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:network:PrivateLinkServicePrivateEndpointConnection")

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

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

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

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

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

        $global:pulumiresources += $resource
        return $resource
    }
}
function New-AzureNativeNetworkP2sVpnGateway
{
    [Alias('azure_native_network_p2svpngateway')]
    param (
        [parameter(mandatory=$False,HelpMessage='List of all p2s connection configurations of the gateway.)')]
        $p2SConnectionConfigurations,
        [parameter(mandatory=$False,HelpMessage='The VirtualHub to which the gateway belongs.)')]
        [SubResource]
        $virtualHub,
        [parameter(mandatory=$False,HelpMessage='The VpnServerConfiguration to which the p2sVpnGateway is attached to.)')]
        [SubResource]
        $vpnServerConfiguration,
        [parameter(mandatory=$False,HelpMessage='The name of the gateway.)')]
        [string]
        $gatewayName,
        [parameter(mandatory=$False,HelpMessage='The resource group name of the P2SVpnGateway.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='Resource ID.)')]
        [string]
        $id,
        [parameter(mandatory=$False,HelpMessage='The scale unit for this p2s vpn gateway.)')]
        [int]
        $vpnGatewayScaleUnit,
        [parameter(mandatory=$False,HelpMessage='List of all customer specified DNS servers IP addresses.)')]
        [string[]]
        $customDnsServers,
        [parameter(mandatory=$False,HelpMessage='Enable Routing Preference property for the Public IP Interface of the P2SVpnGateway.)')]
        [bool]
        $isRoutingPreferenceInternet,
        [parameter(mandatory=$False,HelpMessage='Resource tags.)')]
        [hashtable]
        $tags,
        [parameter(mandatory=$False,HelpMessage='Resource location.)')]
        [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:network:P2sVpnGateway")

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

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

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

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

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

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

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

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

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

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

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

        $global:pulumiresources += $resource
        return $resource
    }
}
function New-AzureNativeNetworkStaticMember
{
    [Alias('azure_native_network_staticmember')]
    param (
        [parameter(mandatory=$False,HelpMessage='The name of the static member.)')]
        [string]
        $staticMemberName,
        [parameter(mandatory=$False,HelpMessage='The name of the resource group.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='The name of the network group.)')]
        [string]
        $networkGroupName,
        [parameter(mandatory=$False,HelpMessage='Resource Id.)')]
        [string]
        $resourceId,
        [parameter(mandatory=$False,HelpMessage='The name of the network manager.)')]
        [string]
        $networkManagerName,
        [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:network:StaticMember")

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

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

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

        $global:pulumiresources += $resource
        return $resource
    }
}
class NetworkInterfaceDnsSettings
{
    [string[]] $dnsServers
    [string] $internalDnsNameLabel
}
function New-AzureNativeTypeNetworkNetworkInterfaceDnsSettings
{
    param (
        [parameter(mandatory=$False,HelpMessage='List of DNS servers IP addresses. Use ''AzureProvidedDNS'' to switch to azure provided DNS resolution. ''AzureProvidedDNS'' value cannot be combined with other IPs, it must be the only value in dnsServers collection.)')]
        [string[]]
        $dnsServers,
        [parameter(mandatory=$False,HelpMessage='Relative DNS name for this NIC used for internal communications between VMs in the same virtual network.)')]
        [string]
        $internalDnsNameLabel
    )

    process
    {
        return $([NetworkInterfaceDnsSettings]$PSBoundParameters)
    }
}
class FrontendIPConfiguration
{
    [ValidateSet('IPv4', 'IPv6')]
    [string] $privateIPAddressVersion
    [ValidateSet('IPv4', 'IPv6')]
    [SubResource] $publicIPPrefix
    [ValidateSet('Static', 'Dynamic')]
    [string] $privateIPAllocationMethod
    [ValidateSet('Static', 'Dynamic')]
    [PublicIPAddress] $publicIPAddress
    [ValidateSet('Static', 'Dynamic')]
    [string] $id
    [ValidateSet('Static', 'Dynamic')]
    [Subnet] $subnet
    [ValidateSet('Static', 'Dynamic')]
    [string] $privateIPAddress
    [ValidateSet('Static', 'Dynamic')]
    [string[]] $zones
    [ValidateSet('Static', 'Dynamic')]
    [string] $name
}
function New-AzureNativeTypeNetworkFrontendIPConfiguration
{
    param (
        [parameter(mandatory=$False,HelpMessage='Whether the specific ipconfiguration is IPv4 or IPv6. Default is taken as IPv4.)')]
        [string]
        [ValidateSet('IPv4', 'IPv6')]
        $privateIPAddressVersion,
        [parameter(mandatory=$False,HelpMessage='The reference to the Public IP Prefix resource.)')]
        [SubResource]
        $publicIPPrefix,
        [parameter(mandatory=$False,HelpMessage='The Private IP allocation method.)')]
        [string]
        [ValidateSet('Static', 'Dynamic')]
        $privateIPAllocationMethod,
        [parameter(mandatory=$False,HelpMessage='The reference to the Public IP resource.)')]
        [PublicIPAddress]
        $publicIPAddress,
        [parameter(mandatory=$False,HelpMessage='Resource ID.)')]
        [string]
        $id,
        [parameter(mandatory=$False,HelpMessage='The reference to the subnet resource.)')]
        [Subnet]
        $subnet,
        [parameter(mandatory=$False,HelpMessage='The private IP address of the IP configuration.)')]
        [string]
        $privateIPAddress,
        [parameter(mandatory=$False,HelpMessage='A list of availability zones denoting the IP allocated for the resource needs to come from.)')]
        [string[]]
        $zones,
        [parameter(mandatory=$False,HelpMessage='The name of the resource that is unique within the set of frontend IP configurations used by the load balancer. This name can be used to access the resource.)')]
        [string]
        $name
    )

    process
    {
        return $([FrontendIPConfiguration]$PSBoundParameters)
    }
}
class PrivateLinkServiceIpConfiguration
{
    [string] $name
    [ValidateSet('IPv4', 'IPv6')]
    [string] $privateIPAddressVersion
    [ValidateSet('IPv4', 'IPv6')]
    [bool] $primary
    [ValidateSet('IPv4', 'IPv6')]
    [Subnet] $subnet
    [ValidateSet('IPv4', 'IPv6')]
    [string] $privateIPAddress
    [ValidateSet('IPv4', 'IPv6')]
    [string] $id
    [ValidateSet('Static', 'Dynamic')]
    [string] $privateIPAllocationMethod
}
function New-AzureNativeTypeNetworkPrivateLinkServiceIpConfiguration
{
    param (
        [parameter(mandatory=$False,HelpMessage='The name of private link service ip configuration.)')]
        [string]
        $name,
        [parameter(mandatory=$False,HelpMessage='Whether the specific IP configuration is IPv4 or IPv6. Default is IPv4.)')]
        [string]
        [ValidateSet('IPv4', 'IPv6')]
        $privateIPAddressVersion,
        [parameter(mandatory=$False,HelpMessage='Whether the ip configuration is primary or not.)')]
        [bool]
        $primary,
        [parameter(mandatory=$False,HelpMessage='The reference to the subnet resource.)')]
        [Subnet]
        $subnet,
        [parameter(mandatory=$False,HelpMessage='The private IP address of the IP configuration.)')]
        [string]
        $privateIPAddress,
        [parameter(mandatory=$False,HelpMessage='Resource ID.)')]
        [string]
        $id,
        [parameter(mandatory=$False,HelpMessage='The private IP address allocation method.)')]
        [string]
        [ValidateSet('Static', 'Dynamic')]
        $privateIPAllocationMethod
    )

    process
    {
        return $([PrivateLinkServiceIpConfiguration]$PSBoundParameters)
    }
}
class PrivateLinkService
{
    [ExtendedLocation] $extendedLocation
    [string[]] $fqdns
    [PrivateLinkServicePropertiesVisibility] $visibility
    [FrontendIPConfiguration[]] $loadBalancerFrontendIpConfigurations
    [PrivateLinkServiceIpConfiguration[]] $ipConfigurations
    [string] $id
    [bool] $enableProxyProtocol
    [PrivateLinkServicePropertiesAutoApproval] $autoApproval
    [object] $tags
    [string] $location
}
function New-AzureNativeTypeNetworkPrivateLinkService
{
    param (
        [parameter(mandatory=$False,HelpMessage='The extended location of the load balancer.)')]
        [ExtendedLocation]
        $extendedLocation,
        [parameter(mandatory=$False,HelpMessage='The list of Fqdn.)')]
        [string[]]
        $fqdns,
        [parameter(mandatory=$False,HelpMessage='The visibility list of the private link service.)')]
        [PrivateLinkServicePropertiesVisibility]
        $visibility,
        [parameter(mandatory=$False,HelpMessage='An array of references to the load balancer IP configurations.)')]
        $loadBalancerFrontendIpConfigurations,
        [parameter(mandatory=$False,HelpMessage='An array of private link service IP configurations.)')]
        $ipConfigurations,
        [parameter(mandatory=$False,HelpMessage='Resource ID.)')]
        [string]
        $id,
        [parameter(mandatory=$False,HelpMessage='Whether the private link service is enabled for proxy protocol or not.)')]
        [bool]
        $enableProxyProtocol,
        [parameter(mandatory=$False,HelpMessage='The auto-approval list of the private link service.)')]
        [PrivateLinkServicePropertiesAutoApproval]
        $autoApproval,
        [parameter(mandatory=$False,HelpMessage='Resource tags.)')]
        [hashtable]
        $tags,
        [parameter(mandatory=$False,HelpMessage='Resource location.)')]
        [string]
        $location
    )

    process
    {
        return $([PrivateLinkService]$PSBoundParameters)
    }
}
function New-AzureNativeNetworkNetworkInterface
{
    [Alias('azure_native_network_networkinterface')]
    param (
        [parameter(mandatory=$False,HelpMessage='The name of the resource group.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='Resource tags.)')]
        [hashtable]
        $tags,
        [parameter(mandatory=$False,HelpMessage='Migration phase of Network Interface resource.)')]
        [string]
        [ValidateSet('None', 'Prepare', 'Commit', 'Abort', 'Committed')]
        $migrationPhase,
        [parameter(mandatory=$False,HelpMessage='The extended location of the network interface.)')]
        [ExtendedLocation]
        $extendedLocation,
        [parameter(mandatory=$False,HelpMessage='The name of the network interface.)')]
        [string]
        $networkInterfaceName,
        [parameter(mandatory=$False,HelpMessage='Indicates whether IP forwarding is enabled on this network interface.)')]
        [bool]
        $enableIPForwarding,
        [parameter(mandatory=$False,HelpMessage='The DNS settings in network interface.)')]
        [NetworkInterfaceDnsSettings]
        $dnsSettings,
        [parameter(mandatory=$False,HelpMessage='A list of IPConfigurations of the network interface.)')]
        $ipConfigurations,
        [parameter(mandatory=$False,HelpMessage='Privatelinkservice of the network interface resource.)')]
        [PrivateLinkService]
        $privateLinkService,
        [parameter(mandatory=$False,HelpMessage='Resource location.)')]
        [string]
        $location,
        [parameter(mandatory=$False,HelpMessage='Type of Network Interface resource.)')]
        [string]
        [ValidateSet('Standard', 'Elastic')]
        $nicType,
        [parameter(mandatory=$False,HelpMessage='The reference to the NetworkSecurityGroup resource.)')]
        [NetworkSecurityGroup]
        $networkSecurityGroup,
        [parameter(mandatory=$False,HelpMessage='If the network interface is accelerated networking enabled.)')]
        [bool]
        $enableAcceleratedNetworking,
        [parameter(mandatory=$False,HelpMessage='Resource ID.)')]
        [string]
        $id,
        [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:network:NetworkInterface")

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

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

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

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

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

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

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

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

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

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

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

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

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

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

        $global:pulumiresources += $resource
        return $resource
    }
}
function New-AzureNativeNetworkFirewallPolicyRuleGroup
{
    [Alias('azure_native_network_firewallpolicyrulegroup')]
    param (
        [parameter(mandatory=$False,HelpMessage='The name of the resource that is unique within a resource group. This name can be used to access the resource.)')]
        [string]
        $name,
        [parameter(mandatory=$False,HelpMessage='The name of the Firewall Policy.)')]
        [string]
        $firewallPolicyName,
        [parameter(mandatory=$False,HelpMessage='Group of Firewall Policy rules.)')]
        $rules,
        [parameter(mandatory=$False,HelpMessage='The name of the resource group.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='The name of the FirewallPolicyRuleGroup.)')]
        [string]
        $ruleGroupName,
        [parameter(mandatory=$False,HelpMessage='Priority of the Firewall Policy Rule Group resource.)')]
        [int]
        $priority,
        [parameter(mandatory=$False,HelpMessage='Resource ID.)')]
        [string]
        $id,
        [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:network:FirewallPolicyRuleGroup")

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

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

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

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

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

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

        $global:pulumiresources += $resource
        return $resource
    }
}
class VirtualHubRoute
{
    [string] $nextHopIpAddress
    [string[]] $addressPrefixes
}
function New-AzureNativeTypeNetworkVirtualHubRoute
{
    param (
        [parameter(mandatory=$False,HelpMessage='NextHop ip address.)')]
        [string]
        $nextHopIpAddress,
        [parameter(mandatory=$False,HelpMessage='List of all addressPrefixes.)')]
        [string[]]
        $addressPrefixes
    )

    process
    {
        return $([VirtualHubRoute]$PSBoundParameters)
    }
}
class VirtualHubRouteTable
{
    [VirtualHubRoute[]] $routes
}
function New-AzureNativeTypeNetworkVirtualHubRouteTable
{
    param (
        [parameter(mandatory=$False,HelpMessage='List of all routes.)')]
        $routes
    )

    process
    {
        return $([VirtualHubRouteTable]$PSBoundParameters)
    }
}
function New-AzureNativeNetworkVirtualHub
{
    [Alias('azure_native_network_virtualhub')]
    param (
        [parameter(mandatory=$False,HelpMessage='Resource tags.)')]
        [hashtable]
        $tags,
        [parameter(mandatory=$False,HelpMessage='Address-prefix for this VirtualHub.)')]
        [string]
        $addressPrefix,
        [parameter(mandatory=$False,HelpMessage='Resource location.)')]
        [string]
        $location,
        [parameter(mandatory=$False,HelpMessage='The resource group name of the VirtualHub.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='The P2SVpnGateway associated with this VirtualHub.)')]
        [SubResource]
        $p2SVpnGateway,
        [parameter(mandatory=$False,HelpMessage='The name of the VirtualHub.)')]
        [string]
        $virtualHubName,
        [parameter(mandatory=$False,HelpMessage='List of all virtual hub route table v2s associated with this VirtualHub.)')]
        $virtualHubRouteTableV2s,
        [parameter(mandatory=$False,HelpMessage='Resource ID.)')]
        [string]
        $id,
        [parameter(mandatory=$False,HelpMessage='The sku of this VirtualHub.)')]
        [string]
        $sku,
        [parameter(mandatory=$False,HelpMessage='The VirtualWAN to which the VirtualHub belongs.)')]
        [SubResource]
        $virtualWan,
        [parameter(mandatory=$False,HelpMessage='The securityPartnerProvider associated with this VirtualHub.)')]
        [SubResource]
        $securityPartnerProvider,
        [parameter(mandatory=$False,HelpMessage='Flag to control transit for VirtualRouter hub.)')]
        [bool]
        $allowBranchToBranchTraffic,
        [parameter(mandatory=$False,HelpMessage='VirtualRouter ASN.)')]
        [int]
        $virtualRouterAsn,
        [parameter(mandatory=$False,HelpMessage='The routeTable associated with this virtual hub.)')]
        [VirtualHubRouteTable]
        $routeTable,
        [parameter(mandatory=$False,HelpMessage='VirtualRouter IPs.)')]
        [string[]]
        $virtualRouterIps,
        [parameter(mandatory=$False,HelpMessage='The expressRouteGateway associated with this VirtualHub.)')]
        [SubResource]
        $expressRouteGateway,
        [parameter(mandatory=$False,HelpMessage='The Security Provider name.)')]
        [string]
        $securityProviderName,
        [parameter(mandatory=$False,HelpMessage='The VpnGateway associated with this VirtualHub.)')]
        [SubResource]
        $vpnGateway,
        [parameter(mandatory=$False,HelpMessage='The azureFirewall associated with this VirtualHub.)')]
        [SubResource]
        $azureFirewall,
        [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:network:VirtualHub")

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

        $global:pulumiresources += $resource
        return $resource
    }
}
function New-AzureNativeNetworkExpressRouteCrossConnectionPeering
{
    [Alias('azure_native_network_expressroutecrossconnectionpeering')]
    param (
        [parameter(mandatory=$False,HelpMessage='The secondary address prefix.)')]
        [string]
        $secondaryPeerAddressPrefix,
        [parameter(mandatory=$False,HelpMessage='The name of the resource group.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='The peer ASN.)')]
        [int]
        $peerASN,
        [parameter(mandatory=$False,HelpMessage='The primary address prefix.)')]
        [string]
        $primaryPeerAddressPrefix,
        [parameter(mandatory=$False,HelpMessage='The shared key.)')]
        [string]
        $sharedKey,
        [parameter(mandatory=$False,HelpMessage='The VLAN ID.)')]
        [int]
        $vlanId,
        [parameter(mandatory=$False,HelpMessage='The Microsoft peering configuration.)')]
        [ExpressRouteCircuitPeeringConfig]
        $microsoftPeeringConfig,
        [parameter(mandatory=$False,HelpMessage='The GatewayManager Etag.)')]
        [string]
        $gatewayManagerEtag,
        [parameter(mandatory=$False,HelpMessage='The peering type.)')]
        [string]
        [ValidateSet('AzurePublicPeering', 'AzurePrivatePeering', 'MicrosoftPeering')]
        $peeringType,
        [parameter(mandatory=$False,HelpMessage='The IPv6 peering configuration.)')]
        [Ipv6ExpressRouteCircuitPeeringConfig]
        $ipv6PeeringConfig,
        [parameter(mandatory=$False,HelpMessage='The name of the resource that is unique within a resource group. This name can be used to access the resource.)')]
        [string]
        $name,
        [parameter(mandatory=$False,HelpMessage='The name of the ExpressRouteCrossConnection.)')]
        [string]
        $crossConnectionName,
        [parameter(mandatory=$False,HelpMessage='The peering state.)')]
        [string]
        [ValidateSet('Disabled', 'Enabled')]
        $state,
        [parameter(mandatory=$False,HelpMessage='Resource ID.)')]
        [string]
        $id,
        [parameter(mandatory=$False,HelpMessage='The name of the peering.)')]
        [string]
        $peeringName,
        [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:network:ExpressRouteCrossConnectionPeering")

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

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

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

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

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

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

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

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

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

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

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

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

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

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

        $global:pulumiresources += $resource
        return $resource
    }
}
function New-AzureNativeNetworkNetworkWatcher
{
    [Alias('azure_native_network_networkwatcher')]
    param (
        [parameter(mandatory=$False,HelpMessage='The name of the resource group.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='Resource ID.)')]
        [string]
        $id,
        [parameter(mandatory=$False,HelpMessage='Resource tags.)')]
        [hashtable]
        $tags,
        [parameter(mandatory=$False,HelpMessage='Resource location.)')]
        [string]
        $location,
        [parameter(mandatory=$False,HelpMessage='The name of the network watcher.)')]
        [string]
        $networkWatcherName,
        [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:network:NetworkWatcher")

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

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

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

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

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

        $global:pulumiresources += $resource
        return $resource
    }
}
function New-AzureNativeNetworkExpressRoutePort
{
    [Alias('azure_native_network_expressrouteport')]
    param (
        [parameter(mandatory=$False,HelpMessage='The name of the resource group.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='Resource location.)')]
        [string]
        $location,
        [parameter(mandatory=$False,HelpMessage='Encapsulation method on physical ports.)')]
        [string]
        [ValidateSet('Dot1Q', 'QinQ')]
        $encapsulation,
        [parameter(mandatory=$False,HelpMessage='The name of the peering location that the ExpressRoutePort is mapped to physically.)')]
        [string]
        $peeringLocation,
        [parameter(mandatory=$False,HelpMessage='Bandwidth of procured ports in Gbps.)')]
        [int]
        $bandwidthInGbps,
        [parameter(mandatory=$False,HelpMessage='The set of physical links of the ExpressRoutePort resource.)')]
        $links,
        [parameter(mandatory=$False,HelpMessage='Resource ID.)')]
        [string]
        $id,
        [parameter(mandatory=$False,HelpMessage='The name of the ExpressRoutePort resource.)')]
        [string]
        $expressRoutePortName,
        [parameter(mandatory=$False,HelpMessage='Resource tags.)')]
        [hashtable]
        $tags,
        [parameter(mandatory=$False,HelpMessage='The identity of ExpressRoutePort, if configured.)')]
        [ManagedServiceIdentity]
        $identity,
        [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:network:ExpressRoutePort")

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

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

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

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

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

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

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

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

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

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

        $global:pulumiresources += $resource
        return $resource
    }
}
class Ipv6CircuitConnectionConfig
{
    [string] $addressPrefix
}
function New-AzureNativeTypeNetworkIpv6CircuitConnectionConfig
{
    param (
        [parameter(mandatory=$False,HelpMessage='/125 IP address space to carve out customer addresses for global reach.)')]
        [string]
        $addressPrefix
    )

    process
    {
        return $([Ipv6CircuitConnectionConfig]$PSBoundParameters)
    }
}
function New-AzureNativeNetworkExpressRouteCircuitConnection
{
    [Alias('azure_native_network_expressroutecircuitconnection')]
    param (
        [parameter(mandatory=$False,HelpMessage='/29 IP address space to carve out Customer addresses for tunnels.)')]
        [string]
        $addressPrefix,
        [parameter(mandatory=$False,HelpMessage='The name of the peering.)')]
        [string]
        $peeringName,
        [parameter(mandatory=$False,HelpMessage='The authorization key.)')]
        [string]
        $authorizationKey,
        [parameter(mandatory=$False,HelpMessage='The name of the express route circuit connection.)')]
        [string]
        $connectionName,
        [parameter(mandatory=$False,HelpMessage='Resource ID.)')]
        [string]
        $id,
        [parameter(mandatory=$False,HelpMessage='Reference to Express Route Circuit Private Peering Resource of the peered circuit.)')]
        [SubResource]
        $peerExpressRouteCircuitPeering,
        [parameter(mandatory=$False,HelpMessage='IPv6 Address PrefixProperties of the express route circuit connection.)')]
        [Ipv6CircuitConnectionConfig]
        $ipv6CircuitConnectionConfig,
        [parameter(mandatory=$False,HelpMessage='The name of the resource group.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='Reference to Express Route Circuit Private Peering Resource of the circuit initiating connection.)')]
        [SubResource]
        $expressRouteCircuitPeering,
        [parameter(mandatory=$False,HelpMessage='The name of the resource that is unique within a resource group. This name can be used to access the resource.)')]
        [string]
        $name,
        [parameter(mandatory=$False,HelpMessage='The name of the express route circuit.)')]
        [string]
        $circuitName,
        [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:network:ExpressRouteCircuitConnection")

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

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

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

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

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

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

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

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

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

        $global:pulumiresources += $resource
        return $resource
    }
}
class NetworkManagerPropertiesNetworkManagerScopes
{
    [string[]] $subscriptions
    [string[]] $managementGroups
}
function New-AzureNativeTypeNetworkNetworkManagerPropertiesNetworkManagerScopes
{
    param (
        [parameter(mandatory=$False,HelpMessage='List of subscriptions.)')]
        [string[]]
        $subscriptions,
        [parameter(mandatory=$False,HelpMessage='List of management groups.)')]
        [string[]]
        $managementGroups
    )

    process
    {
        return $([NetworkManagerPropertiesNetworkManagerScopes]$PSBoundParameters)
    }
}
function New-AzureNativeNetworkNetworkManager
{
    [Alias('azure_native_network_networkmanager')]
    param (
        [parameter(mandatory=$False,HelpMessage='The name of the resource group.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='Scope of Network Manager.)')]
        [NetworkManagerPropertiesNetworkManagerScopes]
        $networkManagerScopes,
        [parameter(mandatory=$False,HelpMessage='A friendly name for the network manager.)')]
        [string]
        $displayName,
        [parameter(mandatory=$False,HelpMessage='Resource ID.)')]
        [string]
        $id,
        [parameter(mandatory=$False,HelpMessage='Scope Access.)')]
        $networkManagerScopeAccesses,
        [parameter(mandatory=$False,HelpMessage='Resource tags.)')]
        [hashtable]
        $tags,
        [parameter(mandatory=$False,HelpMessage='The name of the network manager.)')]
        [string]
        $networkManagerName,
        [parameter(mandatory=$False,HelpMessage='A description of the network manager.)')]
        [string]
        $description,
        [parameter(mandatory=$False,HelpMessage='Resource location.)')]
        [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:network:NetworkManager")

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

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

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

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

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

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

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

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

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

        $global:pulumiresources += $resource
        return $resource
    }
}
function New-AzureNativeNetworkDnsForwardingRuleset
{
    [Alias('azure_native_network_dnsforwardingruleset')]
    param (
        [parameter(mandatory=$False,HelpMessage='The name of the resource group. The name is case insensitive.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='The reference to the DNS resolver outbound endpoints that are used to route DNS queries matching the forwarding rules in the ruleset to the target DNS servers.)')]
        $dnsResolverOutboundEndpoints,
        [parameter(mandatory=$False,HelpMessage='The name of the DNS forwarding ruleset.)')]
        [string]
        $dnsForwardingRulesetName,
        [parameter(mandatory=$False,HelpMessage='Resource tags.)')]
        [hashtable]
        $tags,
        [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:network:DnsForwardingRuleset")

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

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

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

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

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

        $global:pulumiresources += $resource
        return $resource
    }
}
function New-AzureNativeNetworkVirtualRouterPeering
{
    [Alias('azure_native_network_virtualrouterpeering')]
    param (
        [parameter(mandatory=$False,HelpMessage='Name of the virtual router peering that is unique within a virtual router.)')]
        [string]
        $name,
        [parameter(mandatory=$False,HelpMessage='The name of the Virtual Router.)')]
        [string]
        $virtualRouterName,
        [parameter(mandatory=$False,HelpMessage='The name of the Virtual Router Peering.)')]
        [string]
        $peeringName,
        [parameter(mandatory=$False,HelpMessage='The name of the resource group.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='Peer ASN.)')]
        [int]
        $peerAsn,
        [parameter(mandatory=$False,HelpMessage='Resource ID.)')]
        [string]
        $id,
        [parameter(mandatory=$False,HelpMessage='Peer IP.)')]
        [string]
        $peerIp,
        [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:network:VirtualRouterPeering")

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

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

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

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

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

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

        $global:pulumiresources += $resource
        return $resource
    }
}
function New-AzureNativeNetworkP2sVpnServerConfiguration
{
    [Alias('azure_native_network_p2svpnserverconfiguration')]
    param (
        [parameter(mandatory=$False,HelpMessage='The name of the VirtualWan.)')]
        [string]
        $virtualWanName,
        [parameter(mandatory=$False,HelpMessage='The radius secret property of the P2SVpnServerConfiguration resource for point to site client connection.)')]
        [string]
        $radiusServerSecret,
        [parameter(mandatory=$False,HelpMessage='VPN client root certificate of P2SVpnServerConfiguration.)')]
        $p2SVpnServerConfigVpnClientRootCertificates,
        [parameter(mandatory=$False,HelpMessage='The radius server address property of the P2SVpnServerConfiguration resource for point to site client connection.)')]
        [string]
        $radiusServerAddress,
        [parameter(mandatory=$False,HelpMessage='The name of the P2SVpnServerConfiguration.)')]
        [string]
        $p2SVpnServerConfigurationName,
        [parameter(mandatory=$False,HelpMessage='Radius client root certificate of P2SVpnServerConfiguration.)')]
        $p2SVpnServerConfigRadiusClientRootCertificates,
        [parameter(mandatory=$False,HelpMessage='The resource group name of the VirtualWan.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='Radius Server root certificate of P2SVpnServerConfiguration.)')]
        $p2SVpnServerConfigRadiusServerRootCertificates,
        [parameter(mandatory=$False,HelpMessage='VPN client revoked certificate of P2SVpnServerConfiguration.)')]
        $p2SVpnServerConfigVpnClientRevokedCertificates,
        [parameter(mandatory=$False,HelpMessage='The name of the P2SVpnServerConfiguration that is unique within a VirtualWan in a resource group. This name can be used to access the resource along with Paren VirtualWan resource name.)')]
        [string]
        $name,
        [parameter(mandatory=$False,HelpMessage='VpnClientIpsecPolicies for P2SVpnServerConfiguration.)')]
        $vpnClientIpsecPolicies,
        [parameter(mandatory=$False,HelpMessage='VPN protocols for the P2SVpnServerConfiguration.)')]
        $vpnProtocols,
        [parameter(mandatory=$False,HelpMessage='Resource ID.)')]
        [string]
        $id,
        [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:network:P2sVpnServerConfiguration")

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

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

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

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

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

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

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

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

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

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

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

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

        $global:pulumiresources += $resource
        return $resource
    }
}
function New-AzureNativeNetworkNetworkExperimentProfile
{
    [Alias('azure_native_network_networkexperimentprofile')]
    param (
        [parameter(mandatory=$False,HelpMessage='The name of the Profile)')]
        [string]
        $name,
        [parameter(mandatory=$False,HelpMessage='Name of the Resource group within the Azure subscription.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='The state of the Experiment)')]
        [string]
        [ValidateSet('Enabled', 'Disabled')]
        $enabledState,
        [parameter(mandatory=$False,HelpMessage='Resource tags.)')]
        [hashtable]
        $tags,
        [parameter(mandatory=$False,HelpMessage='The Profile identifier associated with the Tenant and Partner)')]
        [string]
        $profileName,
        [parameter(mandatory=$False,HelpMessage='Resource location.)')]
        [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:network:NetworkExperimentProfile")

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

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

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

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

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

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

        $global:pulumiresources += $resource
        return $resource
    }
}
function New-AzureNativeNetworkScopeConnection
{
    [Alias('azure_native_network_scopeconnection')]
    param (
        [parameter(mandatory=$False,HelpMessage='The name of the resource group.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='Resource ID.)')]
        [string]
        $resourceId,
        [parameter(mandatory=$False,HelpMessage='A description of the scope connection.)')]
        [string]
        $description,
        [parameter(mandatory=$False,HelpMessage='Name for the cross-tenant connection.)')]
        [string]
        $scopeConnectionName,
        [parameter(mandatory=$False,HelpMessage='The name of the network manager.)')]
        [string]
        $networkManagerName,
        [parameter(mandatory=$False,HelpMessage='Tenant ID.)')]
        [string]
        $tenantId,
        [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:network:ScopeConnection")

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

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

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

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

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

        $global:pulumiresources += $resource
        return $resource
    }
}
function New-AzureNativeNetworkConfigurationPolicyGroup
{
    [Alias('azure_native_network_configurationpolicygroup')]
    param (
        [parameter(mandatory=$False,HelpMessage='The name of the ConfigurationPolicyGroup.)')]
        [string]
        $configurationPolicyGroupName,
        [parameter(mandatory=$False,HelpMessage='The name of the VpnServerConfiguration.)')]
        [string]
        $vpnServerConfigurationName,
        [parameter(mandatory=$False,HelpMessage='Multiple PolicyMembers for VpnServerConfigurationPolicyGroup.)')]
        $policyMembers,
        [parameter(mandatory=$False,HelpMessage='The name of the resource that is unique within a resource group. This name can be used to access the resource.)')]
        [string]
        $name,
        [parameter(mandatory=$False,HelpMessage='The resource group name of the ConfigurationPolicyGroup.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='Priority for VpnServerConfigurationPolicyGroup.)')]
        [int]
        $priority,
        [parameter(mandatory=$False,HelpMessage='Resource ID.)')]
        [string]
        $id,
        [parameter(mandatory=$False,HelpMessage='Shows if this is a Default VpnServerConfigurationPolicyGroup or not.)')]
        [bool]
        $isDefault,
        [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:network:ConfigurationPolicyGroup")

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

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

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

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

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

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

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

        $global:pulumiresources += $resource
        return $resource
    }
}
function New-AzureNativeNetworkIpAllocation
{
    [Alias('azure_native_network_ipallocation')]
    param (
        [parameter(mandatory=$False,HelpMessage='The name of the resource group.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='The address prefix length for the IpAllocation.)')]
        [int]
        $prefixLength,
        [parameter(mandatory=$False,HelpMessage='The name of the IpAllocation.)')]
        [string]
        $ipAllocationName,
        [parameter(mandatory=$False,HelpMessage='The IPAM allocation ID.)')]
        [string]
        $ipamAllocationId,
        [parameter(mandatory=$False,HelpMessage='Resource ID.)')]
        [string]
        $id,
        [parameter(mandatory=$False,HelpMessage='The type for the IpAllocation.)')]
        [string]
        [ValidateSet('Undefined', 'Hypernet')]
        $type,
        [parameter(mandatory=$False,HelpMessage='IpAllocation tags.)')]
        [hashtable]
        $allocationTags,
        [parameter(mandatory=$False,HelpMessage='Resource tags.)')]
        [hashtable]
        $tags,
        [parameter(mandatory=$False,HelpMessage='The address prefix Type for the IpAllocation.)')]
        [string]
        [ValidateSet('IPv4', 'IPv6')]
        $prefixType,
        [parameter(mandatory=$False,HelpMessage='The address prefix for the IpAllocation.)')]
        [string]
        $prefix,
        [parameter(mandatory=$False,HelpMessage='Resource location.)')]
        [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:network:IpAllocation")

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

        if($PSBoundParameters.Keys -icontains 'prefixLength')
        {
            $resource.properties["prefixLength"] = $prefixLength
        }

        if($PSBoundParameters.Keys -icontains 'ipAllocationName')
        {
            $resource.properties["ipAllocationName"] = $ipAllocationName
        }

        if($PSBoundParameters.Keys -icontains 'ipamAllocationId')
        {
            $resource.properties["ipamAllocationId"] = $ipamAllocationId
        }

        if($PSBoundParameters.Keys -icontains 'id')
        {
            $resource.properties["id"] = $id
        }

        if($PSBoundParameters.Keys -icontains 'type')
        {
            $resource.properties["type"] = $type
        }

        if($PSBoundParameters.Keys -icontains 'allocationTags')
        {
            $resource.properties["allocationTags"] = $allocationTags
        }

        if($PSBoundParameters.Keys -icontains 'tags')
        {
            $resource.properties["tags"] = $tags
        }

        if($PSBoundParameters.Keys -icontains 'prefixType')
        {
            $resource.properties["prefixType"] = $prefixType
        }

        if($PSBoundParameters.Keys -icontains 'prefix')
        {
            $resource.properties["prefix"] = $prefix
        }

        if($PSBoundParameters.Keys -icontains 'location')
        {
            $resource.properties["location"] = $location
        }

        $global:pulumiresources += $resource
        return $resource
    }
}
function New-AzureNativeNetworkNspAssociationsProxy
{
    [Alias('azure_native_network_nspassociationsproxy')]
    param (
        [parameter(mandatory=$False,HelpMessage='The name of the resource group.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='The name of the NSP association.)')]
        [string]
        $associationName,
        [parameter(mandatory=$False,HelpMessage='Profile id to which the PaaS resource is associated.)')]
        [SubResource]
        $profile,
        [parameter(mandatory=$False,HelpMessage='The name of the network security perimeter.)')]
        [string]
        $networkSecurityPerimeterName,
        [parameter(mandatory=$False,HelpMessage='Resource ID.)')]
        [string]
        $id,
        [parameter(mandatory=$False,HelpMessage='Access mode on the association.)')]
        [string]
        [ValidateSet('Learning', 'Enforced', 'Audit')]
        $accessMode,
        [parameter(mandatory=$False,HelpMessage='The PaaS resource to be associated.)')]
        [SubResource]
        $privateLinkResource,
        [parameter(mandatory=$False,HelpMessage='Resource tags.)')]
        [hashtable]
        $tags,
        [parameter(mandatory=$False,HelpMessage='The name of the resource that is unique within a resource group. This name can be used to access the resource.)')]
        [string]
        $name,
        [parameter(mandatory=$False,HelpMessage='Resource location.)')]
        [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:network:NspAssociationsProxy")

        $resource.properties["networkSecurityPerimeterName"] = $networkSecurityPerimeterName
        $resource.properties["resourceGroupName"] = $resourceGroupName

        if($PSBoundParameters.Keys -icontains 'associationName')
        {
            $resource.properties["associationName"] = $associationName
        }

        if($PSBoundParameters.Keys -icontains 'profile')
        {
            $resource.properties["profile"] = $profile
        }

        if($PSBoundParameters.Keys -icontains 'id')
        {
            $resource.properties["id"] = $id
        }

        if($PSBoundParameters.Keys -icontains 'accessMode')
        {
            $resource.properties["accessMode"] = $accessMode
        }

        if($PSBoundParameters.Keys -icontains 'privateLinkResource')
        {
            $resource.properties["privateLinkResource"] = $privateLinkResource
        }

        if($PSBoundParameters.Keys -icontains 'tags')
        {
            $resource.properties["tags"] = $tags
        }

        if($PSBoundParameters.Keys -icontains 'name')
        {
            $resource.properties["name"] = $name
        }

        if($PSBoundParameters.Keys -icontains 'location')
        {
            $resource.properties["location"] = $location
        }

        $global:pulumiresources += $resource
        return $resource
    }
}
class BackendPoolsSettings
{
    [int] $sendRecvTimeoutSeconds
    [ValidateSet('Enabled', 'Disabled')]
    [string] $enforceCertificateNameCheck
}
function New-AzureNativeTypeNetworkBackendPoolsSettings
{
    param (
        [parameter(mandatory=$False,HelpMessage='Send and receive timeout on forwarding request to the backend. When timeout is reached, the request fails and returns.)')]
        [int]
        $sendRecvTimeoutSeconds,
        [parameter(mandatory=$False,HelpMessage='Whether to enforce certificate name check on HTTPS requests to all backend pools. No effect on non-HTTPS requests.)')]
        [string]
        [ValidateSet('Enabled', 'Disabled')]
        $enforceCertificateNameCheck
    )

    process
    {
        return $([BackendPoolsSettings]$PSBoundParameters)
    }
}
function New-AzureNativeNetworkFrontDoor
{
    [Alias('azure_native_network_frontdoor')]
    param (
        [parameter(mandatory=$False,HelpMessage='Backend pools available to routing rules.)')]
        $backendPools,
        [parameter(mandatory=$False,HelpMessage='Frontend endpoints available to routing rules.)')]
        $frontendEndpoints,
        [parameter(mandatory=$False,HelpMessage='Health probe settings associated with this Front Door instance.)')]
        $healthProbeSettings,
        [parameter(mandatory=$False,HelpMessage='Settings for all backendPools)')]
        [BackendPoolsSettings]
        $backendPoolsSettings,
        [parameter(mandatory=$False,HelpMessage='Resource tags.)')]
        [hashtable]
        $tags,
        [parameter(mandatory=$False,HelpMessage='Name of the Front Door which is globally unique.)')]
        [string]
        $frontDoorName,
        [parameter(mandatory=$False,HelpMessage='Load balancing settings associated with this Front Door instance.)')]
        $loadBalancingSettings,
        [parameter(mandatory=$False,HelpMessage='Routing rules associated with this Front Door.)')]
        $routingRules,
        [parameter(mandatory=$False,HelpMessage='Operational status of the Front Door load balancer. Permitted values are ''Enabled'' or ''Disabled'')')]
        [string]
        [ValidateSet('Enabled', 'Disabled')]
        $enabledState,
        [parameter(mandatory=$False,HelpMessage='Name of the Resource group within the Azure subscription.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='A friendly name for the frontDoor)')]
        [string]
        $friendlyName,
        [parameter(mandatory=$False,HelpMessage='Resource location.)')]
        [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:network:FrontDoor")

        $resource.properties["resourceGroupName"] = $resourceGroupName

        if($PSBoundParameters.Keys -icontains 'backendPools')
        {
            $resource.properties["backendPools"] = $backendPools
        }

        if($PSBoundParameters.Keys -icontains 'frontendEndpoints')
        {
            $resource.properties["frontendEndpoints"] = $frontendEndpoints
        }

        if($PSBoundParameters.Keys -icontains 'healthProbeSettings')
        {
            $resource.properties["healthProbeSettings"] = $healthProbeSettings
        }

        if($PSBoundParameters.Keys -icontains 'backendPoolsSettings')
        {
            $resource.properties["backendPoolsSettings"] = $backendPoolsSettings
        }

        if($PSBoundParameters.Keys -icontains 'tags')
        {
            $resource.properties["tags"] = $tags
        }

        if($PSBoundParameters.Keys -icontains 'frontDoorName')
        {
            $resource.properties["frontDoorName"] = $frontDoorName
        }

        if($PSBoundParameters.Keys -icontains 'loadBalancingSettings')
        {
            $resource.properties["loadBalancingSettings"] = $loadBalancingSettings
        }

        if($PSBoundParameters.Keys -icontains 'routingRules')
        {
            $resource.properties["routingRules"] = $routingRules
        }

        if($PSBoundParameters.Keys -icontains 'enabledState')
        {
            $resource.properties["enabledState"] = $enabledState
        }

        if($PSBoundParameters.Keys -icontains 'friendlyName')
        {
            $resource.properties["friendlyName"] = $friendlyName
        }

        if($PSBoundParameters.Keys -icontains 'location')
        {
            $resource.properties["location"] = $location
        }

        $global:pulumiresources += $resource
        return $resource
    }
}
function New-AzureNativeNetworkBastionHost
{
    [Alias('azure_native_network_bastionhost')]
    param (
        [parameter(mandatory=$False,HelpMessage='FQDN for the endpoint on which bastion host is accessible.)')]
        [string]
        $dnsName,
        [parameter(mandatory=$False,HelpMessage='The name of the resource group.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='The name of the Bastion Host.)')]
        [string]
        $bastionHostName,
        [parameter(mandatory=$False,HelpMessage='Resource tags.)')]
        [hashtable]
        $tags,
        [parameter(mandatory=$False,HelpMessage='IP configuration of the Bastion Host resource.)')]
        $ipConfigurations,
        [parameter(mandatory=$False,HelpMessage='Resource ID.)')]
        [string]
        $id,
        [parameter(mandatory=$False,HelpMessage='Resource location.)')]
        [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:network:BastionHost")

        $resource.properties["resourceGroupName"] = $resourceGroupName

        if($PSBoundParameters.Keys -icontains 'dnsName')
        {
            $resource.properties["dnsName"] = $dnsName
        }

        if($PSBoundParameters.Keys -icontains 'bastionHostName')
        {
            $resource.properties["bastionHostName"] = $bastionHostName
        }

        if($PSBoundParameters.Keys -icontains 'tags')
        {
            $resource.properties["tags"] = $tags
        }

        if($PSBoundParameters.Keys -icontains 'ipConfigurations')
        {
            $resource.properties["ipConfigurations"] = $ipConfigurations
        }

        if($PSBoundParameters.Keys -icontains 'id')
        {
            $resource.properties["id"] = $id
        }

        if($PSBoundParameters.Keys -icontains 'location')
        {
            $resource.properties["location"] = $location
        }

        $global:pulumiresources += $resource
        return $resource
    }
}
function New-AzureNativeNetworkUserRule
{
    [Alias('azure_native_network_userrule')]
    param (
        [parameter(mandatory=$False,HelpMessage='The name of the network manager security Configuration rule collection.)')]
        [string]
        $ruleCollectionName,
        [parameter(mandatory=$False,HelpMessage='The name of the rule.)')]
        [string]
        $ruleName,
        [parameter(mandatory=$False,HelpMessage='The name of the resource group.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='The name of the network manager.)')]
        [string]
        $networkManagerName,
        [parameter(mandatory=$False,HelpMessage='Whether the rule is custom or default.)')]
        [string]
        [ValidateSet('Custom', 'Default')]
        $kind,
        [parameter(mandatory=$False,HelpMessage='The name of the network manager security Configuration.)')]
        [string]
        $configurationName,
        [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:network:UserRule")

        $resource.properties["configurationName"] = $configurationName
        $resource.properties["kind"] = $kind
        $resource.properties["networkManagerName"] = $networkManagerName
        $resource.properties["resourceGroupName"] = $resourceGroupName
        $resource.properties["ruleCollectionName"] = $ruleCollectionName

        if($PSBoundParameters.Keys -icontains 'ruleName')
        {
            $resource.properties["ruleName"] = $ruleName
        }

        $global:pulumiresources += $resource
        return $resource
    }
}
function New-AzureNativeNetworkVirtualHubRouteTableV2
{
    [Alias('azure_native_network_virtualhubroutetablev2')]
    param (
        [parameter(mandatory=$False,HelpMessage='The name of the resource that is unique within a resource group. This name can be used to access the resource.)')]
        [string]
        $name,
        [parameter(mandatory=$False,HelpMessage='The name of the VirtualHub.)')]
        [string]
        $virtualHubName,
        [parameter(mandatory=$False,HelpMessage='The resource group name of the VirtualHub.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='List of all connections attached to this route table v2.)')]
        [string[]]
        $attachedConnections,
        [parameter(mandatory=$False,HelpMessage='List of all routes.)')]
        $routes,
        [parameter(mandatory=$False,HelpMessage='Resource ID.)')]
        [string]
        $id,
        [parameter(mandatory=$False,HelpMessage='The name of the VirtualHubRouteTableV2.)')]
        [string]
        $routeTableName,
        [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:network:VirtualHubRouteTableV2")

        $resource.properties["resourceGroupName"] = $resourceGroupName
        $resource.properties["virtualHubName"] = $virtualHubName

        if($PSBoundParameters.Keys -icontains 'name')
        {
            $resource.properties["name"] = $name
        }

        if($PSBoundParameters.Keys -icontains 'attachedConnections')
        {
            $resource.properties["attachedConnections"] = $attachedConnections
        }

        if($PSBoundParameters.Keys -icontains 'routes')
        {
            $resource.properties["routes"] = $routes
        }

        if($PSBoundParameters.Keys -icontains 'id')
        {
            $resource.properties["id"] = $id
        }

        if($PSBoundParameters.Keys -icontains 'routeTableName')
        {
            $resource.properties["routeTableName"] = $routeTableName
        }

        $global:pulumiresources += $resource
        return $resource
    }
}
class DnsConfig
{
    [int] $ttl
    [string] $relativeName
}
function New-AzureNativeTypeNetworkDnsConfig
{
    param (
        [parameter(mandatory=$False,HelpMessage='The DNS Time-To-Live (TTL), in seconds. This informs the local DNS resolvers and DNS clients how long to cache DNS responses provided by this Traffic Manager profile.)')]
        [int]
        $ttl,
        [parameter(mandatory=$False,HelpMessage='The relative DNS name provided by this Traffic Manager profile. This value is combined with the DNS domain name used by Azure Traffic Manager to form the fully-qualified domain name (FQDN) of the profile.)')]
        [string]
        $relativeName
    )

    process
    {
        return $([DnsConfig]$PSBoundParameters)
    }
}
class MonitorConfigExpectedStatusCodeRanges
{
    [int] $min
    [int] $max
}
function New-AzureNativeTypeNetworkMonitorConfigExpectedStatusCodeRanges
{
    param (
        [parameter(mandatory=$False,HelpMessage='Min status code.)')]
        [int]
        $min,
        [parameter(mandatory=$False,HelpMessage='Max status code.)')]
        [int]
        $max
    )

    process
    {
        return $([MonitorConfigExpectedStatusCodeRanges]$PSBoundParameters)
    }
}
class MonitorConfigCustomHeaders
{
    [string] $name
    [string] $value
}
function New-AzureNativeTypeNetworkMonitorConfigCustomHeaders
{
    param (
        [parameter(mandatory=$False,HelpMessage='Header name.)')]
        [string]
        $name,
        [parameter(mandatory=$False,HelpMessage='Header value.)')]
        [string]
        $value
    )

    process
    {
        return $([MonitorConfigCustomHeaders]$PSBoundParameters)
    }
}
class MonitorConfig
{
    [MonitorConfigExpectedStatusCodeRanges[]] $expectedStatusCodeRanges
    [int] $timeoutInSeconds
    [MonitorConfigCustomHeaders[]] $customHeaders
    [int] $port
    [ValidateSet('HTTP', 'HTTPS', 'TCP')]
    [string] $protocol
    [ValidateSet('HTTP', 'HTTPS', 'TCP')]
    [int] $toleratedNumberOfFailures
    [ValidateSet('CheckingEndpoints', 'Online', 'Degraded', 'Disabled', 'Inactive')]
    [string] $profileMonitorStatus
    [ValidateSet('CheckingEndpoints', 'Online', 'Degraded', 'Disabled', 'Inactive')]
    [string] $path
    [ValidateSet('CheckingEndpoints', 'Online', 'Degraded', 'Disabled', 'Inactive')]
    [int] $intervalInSeconds
}
function New-AzureNativeTypeNetworkMonitorConfig
{
    param (
        [parameter(mandatory=$False,HelpMessage='List of expected status code ranges.)')]
        $expectedStatusCodeRanges,
        [parameter(mandatory=$False,HelpMessage='The monitor timeout for endpoints in this profile. This is the time that Traffic Manager allows endpoints in this profile to response to the health check.)')]
        [int]
        $timeoutInSeconds,
        [parameter(mandatory=$False,HelpMessage='List of custom headers.)')]
        $customHeaders,
        [parameter(mandatory=$False,HelpMessage='The TCP port used to probe for endpoint health.)')]
        [int]
        $port,
        [parameter(mandatory=$False,HelpMessage='The protocol (HTTP, HTTPS or TCP) used to probe for endpoint health.)')]
        [string]
        [ValidateSet('HTTP', 'HTTPS', 'TCP')]
        $protocol,
        [parameter(mandatory=$False,HelpMessage='The number of consecutive failed health check that Traffic Manager tolerates before declaring an endpoint in this profile Degraded after the next failed health check.)')]
        [int]
        $toleratedNumberOfFailures,
        [parameter(mandatory=$False,HelpMessage='The profile-level monitoring status of the Traffic Manager profile.)')]
        [string]
        [ValidateSet('CheckingEndpoints', 'Online', 'Degraded', 'Disabled', 'Inactive')]
        $profileMonitorStatus,
        [parameter(mandatory=$False,HelpMessage='The path relative to the endpoint domain name used to probe for endpoint health.)')]
        [string]
        $path,
        [parameter(mandatory=$False,HelpMessage='The monitor interval for endpoints in this profile. This is the interval at which Traffic Manager will check the health of each endpoint in this profile.)')]
        [int]
        $intervalInSeconds
    )

    process
    {
        return $([MonitorConfig]$PSBoundParameters)
    }
}
function New-AzureNativeNetworkProfile
{
    [Alias('azure_native_network_profile')]
    param (
        [parameter(mandatory=$False,HelpMessage='Resource tags.)')]
        [hashtable]
        $tags,
        [parameter(mandatory=$False,HelpMessage='Maximum number of endpoints to be returned for MultiValue routing type.)')]
        [int]
        $maxReturn,
        [parameter(mandatory=$False,HelpMessage='The type of the resource. Ex- Microsoft.Network/trafficManagerProfiles.)')]
        [string]
        $type,
        [parameter(mandatory=$False,HelpMessage='The DNS settings of the Traffic Manager profile.)')]
        [DnsConfig]
        $dnsConfig,
        [parameter(mandatory=$False,HelpMessage='The name of the resource group containing the Traffic Manager profile.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='The endpoint monitoring settings of the Traffic Manager profile.)')]
        [MonitorConfig]
        $monitorConfig,
        [parameter(mandatory=$False,HelpMessage='Indicates whether Traffic View is ''Enabled'' or ''Disabled'' for the Traffic Manager profile. Null, indicates ''Disabled''. Enabling this feature will increase the cost of the Traffic Manage profile.)')]
        [string]
        [ValidateSet('Enabled', 'Disabled')]
        $trafficViewEnrollmentStatus,
        [parameter(mandatory=$False,HelpMessage='The list of endpoints in the Traffic Manager profile.)')]
        $endpoints,
        [parameter(mandatory=$False,HelpMessage='The Azure Region where the resource lives)')]
        [string]
        $location,
        [parameter(mandatory=$False,HelpMessage='The status of the Traffic Manager profile.)')]
        [string]
        [ValidateSet('Enabled', 'Disabled')]
        $profileStatus,
        [parameter(mandatory=$False,HelpMessage='The list of allowed endpoint record types.)')]
        $allowedEndpointRecordTypes,
        [parameter(mandatory=$False,HelpMessage='The name of the resource)')]
        [string]
        $name,
        [parameter(mandatory=$False,HelpMessage='The name of the Traffic Manager profile.)')]
        [string]
        $profileName,
        [parameter(mandatory=$False,HelpMessage='Fully qualified resource Id for the resource. Ex - /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/trafficManagerProfiles/{resourceName})')]
        [string]
        $id,
        [parameter(mandatory=$False,HelpMessage='The traffic routing method of the Traffic Manager profile.)')]
        [string]
        [ValidateSet('Performance', 'Priority', 'Weighted', 'Geographic', 'MultiValue', 'Subnet')]
        $trafficRoutingMethod,
        [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:network:Profile")

        $resource.properties["resourceGroupName"] = $resourceGroupName

        if($PSBoundParameters.Keys -icontains 'tags')
        {
            $resource.properties["tags"] = $tags
        }

        if($PSBoundParameters.Keys -icontains 'maxReturn')
        {
            $resource.properties["maxReturn"] = $maxReturn
        }

        if($PSBoundParameters.Keys -icontains 'type')
        {
            $resource.properties["type"] = $type
        }

        if($PSBoundParameters.Keys -icontains 'dnsConfig')
        {
            $resource.properties["dnsConfig"] = $dnsConfig
        }

        if($PSBoundParameters.Keys -icontains 'monitorConfig')
        {
            $resource.properties["monitorConfig"] = $monitorConfig
        }

        if($PSBoundParameters.Keys -icontains 'trafficViewEnrollmentStatus')
        {
            $resource.properties["trafficViewEnrollmentStatus"] = $trafficViewEnrollmentStatus
        }

        if($PSBoundParameters.Keys -icontains 'endpoints')
        {
            $resource.properties["endpoints"] = $endpoints
        }

        if($PSBoundParameters.Keys -icontains 'location')
        {
            $resource.properties["location"] = $location
        }

        if($PSBoundParameters.Keys -icontains 'profileStatus')
        {
            $resource.properties["profileStatus"] = $profileStatus
        }

        if($PSBoundParameters.Keys -icontains 'allowedEndpointRecordTypes')
        {
            $resource.properties["allowedEndpointRecordTypes"] = $allowedEndpointRecordTypes
        }

        if($PSBoundParameters.Keys -icontains 'name')
        {
            $resource.properties["name"] = $name
        }

        if($PSBoundParameters.Keys -icontains 'profileName')
        {
            $resource.properties["profileName"] = $profileName
        }

        if($PSBoundParameters.Keys -icontains 'id')
        {
            $resource.properties["id"] = $id
        }

        if($PSBoundParameters.Keys -icontains 'trafficRoutingMethod')
        {
            $resource.properties["trafficRoutingMethod"] = $trafficRoutingMethod
        }

        $global:pulumiresources += $resource
        return $resource
    }
}
function New-AzureNativeNetworkVirtualNetworkGatewayNatRule
{
    [Alias('azure_native_network_virtualnetworkgatewaynatrule')]
    param (
        [parameter(mandatory=$False,HelpMessage='The Source NAT direction of a VPN NAT.)')]
        [string]
        [ValidateSet('EgressSnat', 'IngressSnat')]
        $mode,
        [parameter(mandatory=$False,HelpMessage='The type of NAT rule for VPN NAT.)')]
        [string]
        [ValidateSet('Static', 'Dynamic')]
        $type,
        [parameter(mandatory=$False,HelpMessage='The name of the nat rule.)')]
        [string]
        $natRuleName,
        [parameter(mandatory=$False,HelpMessage='The IP Configuration ID this NAT rule applies to.)')]
        [string]
        $ipConfigurationId,
        [parameter(mandatory=$False,HelpMessage='The private IP address internal mapping for NAT.)')]
        $internalMappings,
        [parameter(mandatory=$False,HelpMessage='Resource ID.)')]
        [string]
        $id,
        [parameter(mandatory=$False,HelpMessage='The private IP address external mapping for NAT.)')]
        $externalMappings,
        [parameter(mandatory=$False,HelpMessage='The resource group name of the Virtual Network Gateway.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='The name of the resource that is unique within a resource group. This name can be used to access the resource.)')]
        [string]
        $name,
        [parameter(mandatory=$False,HelpMessage='The name of the gateway.)')]
        [string]
        $virtualNetworkGatewayName,
        [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:network:VirtualNetworkGatewayNatRule")

        $resource.properties["resourceGroupName"] = $resourceGroupName
        $resource.properties["virtualNetworkGatewayName"] = $virtualNetworkGatewayName

        if($PSBoundParameters.Keys -icontains 'mode')
        {
            $resource.properties["mode"] = $mode
        }

        if($PSBoundParameters.Keys -icontains 'type')
        {
            $resource.properties["type"] = $type
        }

        if($PSBoundParameters.Keys -icontains 'natRuleName')
        {
            $resource.properties["natRuleName"] = $natRuleName
        }

        if($PSBoundParameters.Keys -icontains 'ipConfigurationId')
        {
            $resource.properties["ipConfigurationId"] = $ipConfigurationId
        }

        if($PSBoundParameters.Keys -icontains 'internalMappings')
        {
            $resource.properties["internalMappings"] = $internalMappings
        }

        if($PSBoundParameters.Keys -icontains 'id')
        {
            $resource.properties["id"] = $id
        }

        if($PSBoundParameters.Keys -icontains 'externalMappings')
        {
            $resource.properties["externalMappings"] = $externalMappings
        }

        if($PSBoundParameters.Keys -icontains 'name')
        {
            $resource.properties["name"] = $name
        }

        $global:pulumiresources += $resource
        return $resource
    }
}
class LoadBalancerBackendAddress
{
    [ValidateSet('Static', 'Dynamic')]
    [SubResource] $subnet
    [ValidateSet('Static', 'Dynamic')]
    [string] $name
    [ValidateSet('Static', 'Dynamic')]
    [string] $ipAddress
    [ValidateSet('Static', 'Dynamic')]
    [SubResource] $virtualNetwork
    [ValidateSet('Static', 'Dynamic')]
    [SubResource] $loadBalancerFrontendIPConfiguration
}
function New-AzureNativeTypeNetworkLoadBalancerBackendAddress
{
    param (
        [parameter(mandatory=$False,HelpMessage='Reference to an existing subnet.)')]
        [SubResource]
        $subnet,
        [parameter(mandatory=$False,HelpMessage='Name of the backend address.)')]
        [string]
        $name,
        [parameter(mandatory=$False,HelpMessage='IP Address belonging to the referenced virtual network.)')]
        [string]
        $ipAddress,
        [parameter(mandatory=$False,HelpMessage='Reference to an existing virtual network.)')]
        [SubResource]
        $virtualNetwork,
        [parameter(mandatory=$False,HelpMessage='Reference to the frontend ip address configuration defined in regional loadbalancer.)')]
        [SubResource]
        $loadBalancerFrontendIPConfiguration
    )

    process
    {
        return $([LoadBalancerBackendAddress]$PSBoundParameters)
    }
}
class BackendAddressPool
{
    [ValidateSet('Static', 'Dynamic')]
    [string] $id
    [ValidateSet('Static', 'Dynamic')]
    [LoadBalancerBackendAddress[]] $loadBalancerBackendAddresses
    [ValidateSet('Static', 'Dynamic')]
    [string] $name
}
function New-AzureNativeTypeNetworkBackendAddressPool
{
    param (
        [parameter(mandatory=$False,HelpMessage='Resource ID.)')]
        [string]
        $id,
        [parameter(mandatory=$False,HelpMessage='An array of backend addresses.)')]
        $loadBalancerBackendAddresses,
        [parameter(mandatory=$False,HelpMessage='The name of the resource that is unique within the set of backend address pools used by the load balancer. This name can be used to access the resource.)')]
        [string]
        $name
    )

    process
    {
        return $([BackendAddressPool]$PSBoundParameters)
    }
}
class ApplicationGatewayBackendAddress
{
    [ValidateSet('IPv4', 'IPv6')]
    [string] $fqdn
    [ValidateSet('IPv4', 'IPv6')]
    [string] $ipAddress
}
function New-AzureNativeTypeNetworkApplicationGatewayBackendAddress
{
    param (
        [parameter(mandatory=$False,HelpMessage='Fully qualified domain name (FQDN).)')]
        [string]
        $fqdn,
        [parameter(mandatory=$False,HelpMessage='IP address.)')]
        [string]
        $ipAddress
    )

    process
    {
        return $([ApplicationGatewayBackendAddress]$PSBoundParameters)
    }
}
class ApplicationGatewayBackendAddressPool
{
    [ValidateSet('IPv4', 'IPv6')]
    [string] $id
    [ValidateSet('IPv4', 'IPv6')]
    [ApplicationGatewayBackendAddress[]] $backendAddresses
    [ValidateSet('IPv4', 'IPv6')]
    [string] $name
}
function New-AzureNativeTypeNetworkApplicationGatewayBackendAddressPool
{
    param (
        [parameter(mandatory=$False,HelpMessage='Resource ID.)')]
        [string]
        $id,
        [parameter(mandatory=$False,HelpMessage='Backend addresses.)')]
        $backendAddresses,
        [parameter(mandatory=$False,HelpMessage='Name of the backend address pool that is unique within an Application Gateway.)')]
        [string]
        $name
    )

    process
    {
        return $([ApplicationGatewayBackendAddressPool]$PSBoundParameters)
    }
}
class InboundNatRule
{
    [ValidateSet('IPv4', 'IPv6')]
    [SubResource] $frontendIPConfiguration
    [ValidateSet('IPv4', 'IPv6')]
    [string] $id
    [ValidateSet('IPv4', 'IPv6')]
    [string] $name
    [ValidateSet('IPv4', 'IPv6')]
    [int] $frontendPort
    [ValidateSet('IPv4', 'IPv6')]
    [bool] $enableFloatingIP
    [ValidateSet('IPv4', 'IPv6')]
    [int] $backendPort
    [ValidateSet('Udp', 'Tcp', 'All')]
    [string] $protocol
    [ValidateSet('Udp', 'Tcp', 'All')]
    [bool] $enableTcpReset
    [ValidateSet('Udp', 'Tcp', 'All')]
    [int] $idleTimeoutInMinutes
}
function New-AzureNativeTypeNetworkInboundNatRule
{
    param (
        [parameter(mandatory=$False,HelpMessage='A reference to frontend IP addresses.)')]
        [SubResource]
        $frontendIPConfiguration,
        [parameter(mandatory=$False,HelpMessage='Resource ID.)')]
        [string]
        $id,
        [parameter(mandatory=$False,HelpMessage='The name of the resource that is unique within the set of inbound NAT rules used by the load balancer. This name can be used to access the resource.)')]
        [string]
        $name,
        [parameter(mandatory=$False,HelpMessage='The port for the external endpoint. Port numbers for each rule must be unique within the Load Balancer. Acceptable values range from 1 to 65534.)')]
        [int]
        $frontendPort,
        [parameter(mandatory=$False,HelpMessage='Configures a virtual machine''s endpoint for the floating IP capability required to configure a SQL AlwaysOn Availability Group. This setting is required when using the SQL AlwaysOn Availability Groups in SQL server. This setting can''t be changed after you create the endpoint.)')]
        [bool]
        $enableFloatingIP,
        [parameter(mandatory=$False,HelpMessage='The port used for the internal endpoint. Acceptable values range from 1 to 65535.)')]
        [int]
        $backendPort,
        [parameter(mandatory=$False,HelpMessage='The reference to the transport protocol used by the load balancing rule.)')]
        [string]
        [ValidateSet('Udp', 'Tcp', 'All')]
        $protocol,
        [parameter(mandatory=$False,HelpMessage='Receive bidirectional TCP Reset on TCP flow idle timeout or unexpected connection termination. This element is only used when the protocol is set to TCP.)')]
        [bool]
        $enableTcpReset,
        [parameter(mandatory=$False,HelpMessage='The timeout for the TCP idle connection. The value can be set between 4 and 30 minutes. The default value is 4 minutes. This element is only used when the protocol is set to TCP.)')]
        [int]
        $idleTimeoutInMinutes
    )

    process
    {
        return $([InboundNatRule]$PSBoundParameters)
    }
}
class NetworkInterfaceIPConfiguration
{
    [ValidateSet('Static', 'Dynamic')]
    [string] $privateIPAllocationMethod
    [ValidateSet('Static', 'Dynamic')]
    [Subnet] $subnet
    [ValidateSet('Static', 'Dynamic')]
    [BackendAddressPool[]] $loadBalancerBackendAddressPools
    [ValidateSet('Static', 'Dynamic')]
    [VirtualNetworkTap[]] $virtualNetworkTaps
    [ValidateSet('Static', 'Dynamic')]
    [string] $type
    [ValidateSet('Static', 'Dynamic')]
    [bool] $primary
    [ValidateSet('Static', 'Dynamic')]
    [PublicIPAddress] $publicIPAddress
    [ValidateSet('IPv4', 'IPv6')]
    [string] $privateIPAddressVersion
    [ValidateSet('IPv4', 'IPv6')]
    [ApplicationGatewayBackendAddressPool[]] $applicationGatewayBackendAddressPools
    [ValidateSet('IPv4', 'IPv6')]
    [string] $privateIPAddress
    [ValidateSet('IPv4', 'IPv6')]
    [InboundNatRule[]] $loadBalancerInboundNatRules
    [ValidateSet('IPv4', 'IPv6')]
    [string] $name
    [ValidateSet('IPv4', 'IPv6')]
    [string] $id
    [ValidateSet('IPv4', 'IPv6')]
    [ApplicationSecurityGroup[]] $applicationSecurityGroups
}
function New-AzureNativeTypeNetworkNetworkInterfaceIPConfiguration
{
    param (
        [parameter(mandatory=$False,HelpMessage='The private IP address allocation method.)')]
        [string]
        [ValidateSet('Static', 'Dynamic')]
        $privateIPAllocationMethod,
        [parameter(mandatory=$False,HelpMessage='Subnet bound to the IP configuration.)')]
        [Subnet]
        $subnet,
        [parameter(mandatory=$False,HelpMessage='The reference to LoadBalancerBackendAddressPool resource.)')]
        $loadBalancerBackendAddressPools,
        [parameter(mandatory=$False,HelpMessage='The reference to Virtual Network Taps.)')]
        $virtualNetworkTaps,
        [parameter(mandatory=$False,HelpMessage='Resource type.)')]
        [string]
        $type,
        [parameter(mandatory=$False,HelpMessage='Whether this is a primary customer address on the network interface.)')]
        [bool]
        $primary,
        [parameter(mandatory=$False,HelpMessage='Public IP address bound to the IP configuration.)')]
        [PublicIPAddress]
        $publicIPAddress,
        [parameter(mandatory=$False,HelpMessage='Whether the specific IP configuration is IPv4 or IPv6. Default is IPv4.)')]
        [string]
        [ValidateSet('IPv4', 'IPv6')]
        $privateIPAddressVersion,
        [parameter(mandatory=$False,HelpMessage='The reference to ApplicationGatewayBackendAddressPool resource.)')]
        $applicationGatewayBackendAddressPools,
        [parameter(mandatory=$False,HelpMessage='Private IP address of the IP configuration.)')]
        [string]
        $privateIPAddress,
        [parameter(mandatory=$False,HelpMessage='A list of references of LoadBalancerInboundNatRules.)')]
        $loadBalancerInboundNatRules,
        [parameter(mandatory=$False,HelpMessage='The name of the resource that is unique within a resource group. This name can be used to access the resource.)')]
        [string]
        $name,
        [parameter(mandatory=$False,HelpMessage='Resource ID.)')]
        [string]
        $id,
        [parameter(mandatory=$False,HelpMessage='Application security groups in which the IP configuration is included.)')]
        $applicationSecurityGroups
    )

    process
    {
        return $([NetworkInterfaceIPConfiguration]$PSBoundParameters)
    }
}
class VirtualNetworkTap
{
    [object] $tags
    [NetworkInterfaceIPConfiguration] $destinationNetworkInterfaceIPConfiguration
    [FrontendIPConfiguration] $destinationLoadBalancerFrontEndIPConfiguration
    [int] $destinationPort
    [string] $id
    [string] $location
}
function New-AzureNativeTypeNetworkVirtualNetworkTap
{
    param (
        [parameter(mandatory=$False,HelpMessage='Resource tags.)')]
        [hashtable]
        $tags,
        [parameter(mandatory=$False,HelpMessage='The reference to the private IP Address of the collector nic that will receive the tap.)')]
        [NetworkInterfaceIPConfiguration]
        $destinationNetworkInterfaceIPConfiguration,
        [parameter(mandatory=$False,HelpMessage='The reference to the private IP address on the internal Load Balancer that will receive the tap.)')]
        [FrontendIPConfiguration]
        $destinationLoadBalancerFrontEndIPConfiguration,
        [parameter(mandatory=$False,HelpMessage='The VXLAN destination port that will receive the tapped traffic.)')]
        [int]
        $destinationPort,
        [parameter(mandatory=$False,HelpMessage='Resource ID.)')]
        [string]
        $id,
        [parameter(mandatory=$False,HelpMessage='Resource location.)')]
        [string]
        $location
    )

    process
    {
        return $([VirtualNetworkTap]$PSBoundParameters)
    }
}
function New-AzureNativeNetworkNetworkInterfaceTapConfiguration
{
    [Alias('azure_native_network_networkinterfacetapconfiguration')]
    param (
        [parameter(mandatory=$False,HelpMessage='The name of the resource that is unique within a resource group. This name can be used to access the resource.)')]
        [string]
        $name,
        [parameter(mandatory=$False,HelpMessage='The name of the resource group.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='The name of the tap configuration.)')]
        [string]
        $tapConfigurationName,
        [parameter(mandatory=$False,HelpMessage='The reference to the Virtual Network Tap resource.)')]
        [VirtualNetworkTap]
        $virtualNetworkTap,
        [parameter(mandatory=$False,HelpMessage='Resource ID.)')]
        [string]
        $id,
        [parameter(mandatory=$False,HelpMessage='The name of the network interface.)')]
        [string]
        $networkInterfaceName,
        [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:network:NetworkInterfaceTapConfiguration")

        $resource.properties["networkInterfaceName"] = $networkInterfaceName
        $resource.properties["resourceGroupName"] = $resourceGroupName

        if($PSBoundParameters.Keys -icontains 'name')
        {
            $resource.properties["name"] = $name
        }

        if($PSBoundParameters.Keys -icontains 'tapConfigurationName')
        {
            $resource.properties["tapConfigurationName"] = $tapConfigurationName
        }

        if($PSBoundParameters.Keys -icontains 'virtualNetworkTap')
        {
            $resource.properties["virtualNetworkTap"] = $virtualNetworkTap
        }

        if($PSBoundParameters.Keys -icontains 'id')
        {
            $resource.properties["id"] = $id
        }

        $global:pulumiresources += $resource
        return $resource
    }
}
function New-AzureNativeNetworkIpGroup
{
    [Alias('azure_native_network_ipgroup')]
    param (
        [parameter(mandatory=$False,HelpMessage='IpAddresses/IpAddressPrefixes in the IpGroups resource.)')]
        [string[]]
        $ipAddresses,
        [parameter(mandatory=$False,HelpMessage='The name of the resource group.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='Resource tags.)')]
        [hashtable]
        $tags,
        [parameter(mandatory=$False,HelpMessage='The name of the ipGroups.)')]
        [string]
        $ipGroupsName,
        [parameter(mandatory=$False,HelpMessage='Resource ID.)')]
        [string]
        $id,
        [parameter(mandatory=$False,HelpMessage='Resource location.)')]
        [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:network:IpGroup")

        $resource.properties["resourceGroupName"] = $resourceGroupName

        if($PSBoundParameters.Keys -icontains 'ipAddresses')
        {
            $resource.properties["ipAddresses"] = $ipAddresses
        }

        if($PSBoundParameters.Keys -icontains 'tags')
        {
            $resource.properties["tags"] = $tags
        }

        if($PSBoundParameters.Keys -icontains 'ipGroupsName')
        {
            $resource.properties["ipGroupsName"] = $ipGroupsName
        }

        if($PSBoundParameters.Keys -icontains 'id')
        {
            $resource.properties["id"] = $id
        }

        if($PSBoundParameters.Keys -icontains 'location')
        {
            $resource.properties["location"] = $location
        }

        $global:pulumiresources += $resource
        return $resource
    }
}
function New-AzureNativeNetworkRouteTable
{
    [Alias('azure_native_network_routetable')]
    param (
        [parameter(mandatory=$False,HelpMessage='Collection of routes contained within a route table.)')]
        $routes,
        [parameter(mandatory=$False,HelpMessage='The name of the resource group.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='Whether to disable the routes learned by BGP on that route table. True means disable.)')]
        [bool]
        $disableBgpRoutePropagation,
        [parameter(mandatory=$False,HelpMessage='Resource tags.)')]
        [hashtable]
        $tags,
        [parameter(mandatory=$False,HelpMessage='The name of the route table.)')]
        [string]
        $routeTableName,
        [parameter(mandatory=$False,HelpMessage='Resource ID.)')]
        [string]
        $id,
        [parameter(mandatory=$False,HelpMessage='Resource location.)')]
        [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:network:RouteTable")

        $resource.properties["resourceGroupName"] = $resourceGroupName

        if($PSBoundParameters.Keys -icontains 'routes')
        {
            $resource.properties["routes"] = $routes
        }

        if($PSBoundParameters.Keys -icontains 'disableBgpRoutePropagation')
        {
            $resource.properties["disableBgpRoutePropagation"] = $disableBgpRoutePropagation
        }

        if($PSBoundParameters.Keys -icontains 'tags')
        {
            $resource.properties["tags"] = $tags
        }

        if($PSBoundParameters.Keys -icontains 'routeTableName')
        {
            $resource.properties["routeTableName"] = $routeTableName
        }

        if($PSBoundParameters.Keys -icontains 'id')
        {
            $resource.properties["id"] = $id
        }

        if($PSBoundParameters.Keys -icontains 'location')
        {
            $resource.properties["location"] = $location
        }

        $global:pulumiresources += $resource
        return $resource
    }
}
class ExpressRouteCircuitPeeringId
{
    [string] $id
}
function New-AzureNativeTypeNetworkExpressRouteCircuitPeeringId
{
    param (
        [parameter(mandatory=$False,HelpMessage='The ID of the ExpressRoute circuit peering.)')]
        [string]
        $id
    )

    process
    {
        return $([ExpressRouteCircuitPeeringId]$PSBoundParameters)
    }
}
function New-AzureNativeNetworkExpressRouteConnection
{
    [Alias('azure_native_network_expressrouteconnection')]
    param (
        [parameter(mandatory=$False,HelpMessage='Authorization key to establish the connection.)')]
        [string]
        $authorizationKey,
        [parameter(mandatory=$False,HelpMessage='Resource ID.)')]
        [string]
        $id,
        [parameter(mandatory=$False,HelpMessage='Enable internet security.)')]
        [bool]
        $enableInternetSecurity,
        [parameter(mandatory=$False,HelpMessage='The name of the resource.)')]
        [string]
        $name,
        [parameter(mandatory=$False,HelpMessage='The name of the connection subresource.)')]
        [string]
        $connectionName,
        [parameter(mandatory=$False,HelpMessage='The Routing Configuration indicating the associated and propagated route tables on this connection.)')]
        [RoutingConfiguration]
        $routingConfiguration,
        [parameter(mandatory=$False,HelpMessage='Enable FastPath to vWan Firewall hub.)')]
        [bool]
        $expressRouteGatewayBypass,
        [parameter(mandatory=$False,HelpMessage='The routing weight associated to the connection.)')]
        [int]
        $routingWeight,
        [parameter(mandatory=$False,HelpMessage='The name of the resource group.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='The ExpressRoute circuit peering.)')]
        [ExpressRouteCircuitPeeringId]
        $expressRouteCircuitPeering,
        [parameter(mandatory=$False,HelpMessage='The name of the ExpressRoute gateway.)')]
        [string]
        $expressRouteGatewayName,
        [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:network:ExpressRouteConnection")

        $resource.properties["expressRouteCircuitPeering"] = $expressRouteCircuitPeering
        $resource.properties["expressRouteGatewayName"] = $expressRouteGatewayName
        $resource.properties["name"] = $name
        $resource.properties["resourceGroupName"] = $resourceGroupName

        if($PSBoundParameters.Keys -icontains 'authorizationKey')
        {
            $resource.properties["authorizationKey"] = $authorizationKey
        }

        if($PSBoundParameters.Keys -icontains 'id')
        {
            $resource.properties["id"] = $id
        }

        if($PSBoundParameters.Keys -icontains 'enableInternetSecurity')
        {
            $resource.properties["enableInternetSecurity"] = $enableInternetSecurity
        }

        if($PSBoundParameters.Keys -icontains 'connectionName')
        {
            $resource.properties["connectionName"] = $connectionName
        }

        if($PSBoundParameters.Keys -icontains 'routingConfiguration')
        {
            $resource.properties["routingConfiguration"] = $routingConfiguration
        }

        if($PSBoundParameters.Keys -icontains 'expressRouteGatewayBypass')
        {
            $resource.properties["expressRouteGatewayBypass"] = $expressRouteGatewayBypass
        }

        if($PSBoundParameters.Keys -icontains 'routingWeight')
        {
            $resource.properties["routingWeight"] = $routingWeight
        }

        $global:pulumiresources += $resource
        return $resource
    }
}
function New-AzureNativeNetworkVirtualHubBgpConnection
{
    [Alias('azure_native_network_virtualhubbgpconnection')]
    param (
        [parameter(mandatory=$False,HelpMessage='Name of the connection.)')]
        [string]
        $name,
        [parameter(mandatory=$False,HelpMessage='Peer IP.)')]
        [string]
        $peerIp,
        [parameter(mandatory=$False,HelpMessage='The resource group name of the VirtualHub.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='Peer ASN.)')]
        [int]
        $peerAsn,
        [parameter(mandatory=$False,HelpMessage='The name of the VirtualHub.)')]
        [string]
        $virtualHubName,
        [parameter(mandatory=$False,HelpMessage='Resource ID.)')]
        [string]
        $id,
        [parameter(mandatory=$False,HelpMessage='The name of the connection.)')]
        [string]
        $connectionName,
        [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:network:VirtualHubBgpConnection")

        $resource.properties["resourceGroupName"] = $resourceGroupName
        $resource.properties["virtualHubName"] = $virtualHubName

        if($PSBoundParameters.Keys -icontains 'name')
        {
            $resource.properties["name"] = $name
        }

        if($PSBoundParameters.Keys -icontains 'peerIp')
        {
            $resource.properties["peerIp"] = $peerIp
        }

        if($PSBoundParameters.Keys -icontains 'peerAsn')
        {
            $resource.properties["peerAsn"] = $peerAsn
        }

        if($PSBoundParameters.Keys -icontains 'id')
        {
            $resource.properties["id"] = $id
        }

        if($PSBoundParameters.Keys -icontains 'connectionName')
        {
            $resource.properties["connectionName"] = $connectionName
        }

        $global:pulumiresources += $resource
        return $resource
    }
}
function New-AzureNativeNetworkNetworkSecurityGroup
{
    [Alias('azure_native_network_networksecuritygroup')]
    param (
        [parameter(mandatory=$False,HelpMessage='The name of the network security group.)')]
        [string]
        $networkSecurityGroupName,
        [parameter(mandatory=$False,HelpMessage='The name of the resource group.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='Resource tags.)')]
        [hashtable]
        $tags,
        [parameter(mandatory=$False,HelpMessage='A collection of security rules of the network security group.)')]
        $securityRules,
        [parameter(mandatory=$False,HelpMessage='Resource ID.)')]
        [string]
        $id,
        [parameter(mandatory=$False,HelpMessage='Resource location.)')]
        [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:network:NetworkSecurityGroup")

        $resource.properties["resourceGroupName"] = $resourceGroupName

        if($PSBoundParameters.Keys -icontains 'networkSecurityGroupName')
        {
            $resource.properties["networkSecurityGroupName"] = $networkSecurityGroupName
        }

        if($PSBoundParameters.Keys -icontains 'tags')
        {
            $resource.properties["tags"] = $tags
        }

        if($PSBoundParameters.Keys -icontains 'securityRules')
        {
            $resource.properties["securityRules"] = $securityRules
        }

        if($PSBoundParameters.Keys -icontains 'id')
        {
            $resource.properties["id"] = $id
        }

        if($PSBoundParameters.Keys -icontains 'location')
        {
            $resource.properties["location"] = $location
        }

        $global:pulumiresources += $resource
        return $resource
    }
}
class VirtualApplianceSkuProperties
{
    [string] $vendor
    [string] $bundledScaleUnit
    [string] $marketPlaceVersion
}
function New-AzureNativeTypeNetworkVirtualApplianceSkuProperties
{
    param (
        [parameter(mandatory=$False,HelpMessage='Virtual Appliance Vendor.)')]
        [string]
        $vendor,
        [parameter(mandatory=$False,HelpMessage='Virtual Appliance Scale Unit.)')]
        [string]
        $bundledScaleUnit,
        [parameter(mandatory=$False,HelpMessage='Virtual Appliance Version.)')]
        [string]
        $marketPlaceVersion
    )

    process
    {
        return $([VirtualApplianceSkuProperties]$PSBoundParameters)
    }
}
function New-AzureNativeNetworkNetworkVirtualAppliance
{
    [Alias('azure_native_network_networkvirtualappliance')]
    param (
        [parameter(mandatory=$False,HelpMessage='CloudInitConfigurationBlob storage URLs.)')]
        [string[]]
        $cloudInitConfigurationBlobs,
        [parameter(mandatory=$False,HelpMessage='The Virtual Hub where Network Virtual Appliance is being deployed.)')]
        [SubResource]
        $virtualHub,
        [parameter(mandatory=$False,HelpMessage='The service principal that has read access to cloud-init and config blob.)')]
        [ManagedServiceIdentity]
        $identity,
        [parameter(mandatory=$False,HelpMessage='The name of Network Virtual Appliance.)')]
        [string]
        $networkVirtualApplianceName,
        [parameter(mandatory=$False,HelpMessage='The name of the resource group.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='Network Virtual Appliance SKU.)')]
        [VirtualApplianceSkuProperties]
        $nvaSku,
        [parameter(mandatory=$False,HelpMessage='Resource ID.)')]
        [string]
        $id,
        [parameter(mandatory=$False,HelpMessage='VirtualAppliance ASN.)')]
        [int]
        $virtualApplianceAsn,
        [parameter(mandatory=$False,HelpMessage='Resource tags.)')]
        [hashtable]
        $tags,
        [parameter(mandatory=$False,HelpMessage='BootStrapConfigurationBlobs storage URLs.)')]
        [string[]]
        $bootStrapConfigurationBlobs,
        [parameter(mandatory=$False,HelpMessage='CloudInitConfiguration string in plain text.)')]
        [string]
        $cloudInitConfiguration,
        [parameter(mandatory=$False,HelpMessage='Resource location.)')]
        [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:network:NetworkVirtualAppliance")

        $resource.properties["resourceGroupName"] = $resourceGroupName

        if($PSBoundParameters.Keys -icontains 'cloudInitConfigurationBlobs')
        {
            $resource.properties["cloudInitConfigurationBlobs"] = $cloudInitConfigurationBlobs
        }

        if($PSBoundParameters.Keys -icontains 'virtualHub')
        {
            $resource.properties["virtualHub"] = $virtualHub
        }

        if($PSBoundParameters.Keys -icontains 'identity')
        {
            $resource.properties["identity"] = $identity
        }

        if($PSBoundParameters.Keys -icontains 'networkVirtualApplianceName')
        {
            $resource.properties["networkVirtualApplianceName"] = $networkVirtualApplianceName
        }

        if($PSBoundParameters.Keys -icontains 'nvaSku')
        {
            $resource.properties["nvaSku"] = $nvaSku
        }

        if($PSBoundParameters.Keys -icontains 'id')
        {
            $resource.properties["id"] = $id
        }

        if($PSBoundParameters.Keys -icontains 'virtualApplianceAsn')
        {
            $resource.properties["virtualApplianceAsn"] = $virtualApplianceAsn
        }

        if($PSBoundParameters.Keys -icontains 'tags')
        {
            $resource.properties["tags"] = $tags
        }

        if($PSBoundParameters.Keys -icontains 'bootStrapConfigurationBlobs')
        {
            $resource.properties["bootStrapConfigurationBlobs"] = $bootStrapConfigurationBlobs
        }

        if($PSBoundParameters.Keys -icontains 'cloudInitConfiguration')
        {
            $resource.properties["cloudInitConfiguration"] = $cloudInitConfiguration
        }

        if($PSBoundParameters.Keys -icontains 'location')
        {
            $resource.properties["location"] = $location
        }

        $global:pulumiresources += $resource
        return $resource
    }
}
class VirtualHubId
{
    [string] $id
}
function New-AzureNativeTypeNetworkVirtualHubId
{
    param (
        [parameter(mandatory=$False,HelpMessage='The resource URI for the Virtual Hub where the ExpressRoute gateway is or will be deployed. The Virtual Hub resource and the ExpressRoute gateway resource reside in the same subscription.)')]
        [string]
        $id
    )

    process
    {
        return $([VirtualHubId]$PSBoundParameters)
    }
}
class ExpressRouteGatewayPropertiesBounds
{
    [int] $min
    [int] $max
}
function New-AzureNativeTypeNetworkExpressRouteGatewayPropertiesBounds
{
    param (
        [parameter(mandatory=$False,HelpMessage='Minimum number of scale units deployed for ExpressRoute gateway.)')]
        [int]
        $min,
        [parameter(mandatory=$False,HelpMessage='Maximum number of scale units deployed for ExpressRoute gateway.)')]
        [int]
        $max
    )

    process
    {
        return $([ExpressRouteGatewayPropertiesBounds]$PSBoundParameters)
    }
}
class ExpressRouteGatewayPropertiesAutoScaleConfiguration
{
    [ExpressRouteGatewayPropertiesBounds] $bounds
}
function New-AzureNativeTypeNetworkExpressRouteGatewayPropertiesAutoScaleConfiguration
{
    param (
        [parameter(mandatory=$False,HelpMessage='Minimum and maximum number of scale units to deploy.)')]
        [ExpressRouteGatewayPropertiesBounds]
        $bounds
    )

    process
    {
        return $([ExpressRouteGatewayPropertiesAutoScaleConfiguration]$PSBoundParameters)
    }
}
function New-AzureNativeNetworkExpressRouteGateway
{
    [Alias('azure_native_network_expressroutegateway')]
    param (
        [parameter(mandatory=$False,HelpMessage='The Virtual Hub where the ExpressRoute gateway is or will be deployed.)')]
        [VirtualHubId]
        $virtualHub,
        [parameter(mandatory=$False,HelpMessage='The name of the ExpressRoute gateway.)')]
        [string]
        $expressRouteGatewayName,
        [parameter(mandatory=$False,HelpMessage='The name of the resource group.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='Resource tags.)')]
        [hashtable]
        $tags,
        [parameter(mandatory=$False,HelpMessage='Configuration for auto scaling.)')]
        [ExpressRouteGatewayPropertiesAutoScaleConfiguration]
        $autoScaleConfiguration,
        [parameter(mandatory=$False,HelpMessage='Resource ID.)')]
        [string]
        $id,
        [parameter(mandatory=$False,HelpMessage='Resource location.)')]
        [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:network:ExpressRouteGateway")

        $resource.properties["resourceGroupName"] = $resourceGroupName
        $resource.properties["virtualHub"] = $virtualHub

        if($PSBoundParameters.Keys -icontains 'expressRouteGatewayName')
        {
            $resource.properties["expressRouteGatewayName"] = $expressRouteGatewayName
        }

        if($PSBoundParameters.Keys -icontains 'tags')
        {
            $resource.properties["tags"] = $tags
        }

        if($PSBoundParameters.Keys -icontains 'autoScaleConfiguration')
        {
            $resource.properties["autoScaleConfiguration"] = $autoScaleConfiguration
        }

        if($PSBoundParameters.Keys -icontains 'id')
        {
            $resource.properties["id"] = $id
        }

        if($PSBoundParameters.Keys -icontains 'location')
        {
            $resource.properties["location"] = $location
        }

        $global:pulumiresources += $resource
        return $resource
    }
}
function New-AzureNativeNetworkVirtualRouter
{
    [Alias('azure_native_network_virtualrouter')]
    param (
        [parameter(mandatory=$False,HelpMessage='The name of the resource group.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='Resource location.)')]
        [string]
        $location,
        [parameter(mandatory=$False,HelpMessage='VirtualRouter IPs.)')]
        [string[]]
        $virtualRouterIps,
        [parameter(mandatory=$False,HelpMessage='VirtualRouter ASN.)')]
        [int]
        $virtualRouterAsn,
        [parameter(mandatory=$False,HelpMessage='Resource ID.)')]
        [string]
        $id,
        [parameter(mandatory=$False,HelpMessage='The name of the Virtual Router.)')]
        [string]
        $virtualRouterName,
        [parameter(mandatory=$False,HelpMessage='Resource tags.)')]
        [hashtable]
        $tags,
        [parameter(mandatory=$False,HelpMessage='The Gateway on which VirtualRouter is hosted.)')]
        [SubResource]
        $hostedGateway,
        [parameter(mandatory=$False,HelpMessage='The Subnet on which VirtualRouter is hosted.)')]
        [SubResource]
        $hostedSubnet,
        [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:network:VirtualRouter")

        $resource.properties["resourceGroupName"] = $resourceGroupName

        if($PSBoundParameters.Keys -icontains 'location')
        {
            $resource.properties["location"] = $location
        }

        if($PSBoundParameters.Keys -icontains 'virtualRouterIps')
        {
            $resource.properties["virtualRouterIps"] = $virtualRouterIps
        }

        if($PSBoundParameters.Keys -icontains 'virtualRouterAsn')
        {
            $resource.properties["virtualRouterAsn"] = $virtualRouterAsn
        }

        if($PSBoundParameters.Keys -icontains 'id')
        {
            $resource.properties["id"] = $id
        }

        if($PSBoundParameters.Keys -icontains 'virtualRouterName')
        {
            $resource.properties["virtualRouterName"] = $virtualRouterName
        }

        if($PSBoundParameters.Keys -icontains 'tags')
        {
            $resource.properties["tags"] = $tags
        }

        if($PSBoundParameters.Keys -icontains 'hostedGateway')
        {
            $resource.properties["hostedGateway"] = $hostedGateway
        }

        if($PSBoundParameters.Keys -icontains 'hostedSubnet')
        {
            $resource.properties["hostedSubnet"] = $hostedSubnet
        }

        $global:pulumiresources += $resource
        return $resource
    }
}
function New-AzureNativeNetworkRulesEngine
{
    [Alias('azure_native_network_rulesengine')]
    param (
        [parameter(mandatory=$False,HelpMessage='A list of rules that define a particular Rules Engine Configuration.)')]
        $rules,
        [parameter(mandatory=$False,HelpMessage='Name of the Resource group within the Azure subscription.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='Name of the Front Door which is globally unique.)')]
        [string]
        $frontDoorName,
        [parameter(mandatory=$False,HelpMessage='Name of the Rules Engine which is unique within the Front Door.)')]
        [string]
        $rulesEngineName,
        [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:network:RulesEngine")

        $resource.properties["frontDoorName"] = $frontDoorName
        $resource.properties["resourceGroupName"] = $resourceGroupName

        if($PSBoundParameters.Keys -icontains 'rules')
        {
            $resource.properties["rules"] = $rules
        }

        if($PSBoundParameters.Keys -icontains 'rulesEngineName')
        {
            $resource.properties["rulesEngineName"] = $rulesEngineName
        }

        $global:pulumiresources += $resource
        return $resource
    }
}
class BreakOutCategoryPolicies
{
    [bool] $optimize
    [bool] $allow
    [bool] $default
}
function New-AzureNativeTypeNetworkBreakOutCategoryPolicies
{
    param (
        [parameter(mandatory=$False,HelpMessage='Flag to control breakout of o365 optimize category.)')]
        [bool]
        $optimize,
        [parameter(mandatory=$False,HelpMessage='Flag to control breakout of o365 allow category.)')]
        [bool]
        $allow,
        [parameter(mandatory=$False,HelpMessage='Flag to control breakout of o365 default category.)')]
        [bool]
        $default
    )

    process
    {
        return $([BreakOutCategoryPolicies]$PSBoundParameters)
    }
}
class Office365PolicyProperties
{
    [BreakOutCategoryPolicies] $breakOutCategories
}
function New-AzureNativeTypeNetworkOffice365PolicyProperties
{
    param (
        [parameter(mandatory=$False,HelpMessage='Office 365 breakout categories.)')]
        [BreakOutCategoryPolicies]
        $breakOutCategories
    )

    process
    {
        return $([Office365PolicyProperties]$PSBoundParameters)
    }
}
function New-AzureNativeNetworkVirtualApplianceSite
{
    [Alias('azure_native_network_virtualappliancesite')]
    param (
        [parameter(mandatory=$False,HelpMessage='Name of the virtual appliance site.)')]
        [string]
        $name,
        [parameter(mandatory=$False,HelpMessage='The name of the resource group.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='Address Prefix.)')]
        [string]
        $addressPrefix,
        [parameter(mandatory=$False,HelpMessage='The name of the Network Virtual Appliance.)')]
        [string]
        $networkVirtualApplianceName,
        [parameter(mandatory=$False,HelpMessage='Office 365 Policy.)')]
        [Office365PolicyProperties]
        $o365Policy,
        [parameter(mandatory=$False,HelpMessage='Resource ID.)')]
        [string]
        $id,
        [parameter(mandatory=$False,HelpMessage='The name of the site.)')]
        [string]
        $siteName,
        [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:network:VirtualApplianceSite")

        $resource.properties["networkVirtualApplianceName"] = $networkVirtualApplianceName
        $resource.properties["resourceGroupName"] = $resourceGroupName

        if($PSBoundParameters.Keys -icontains 'name')
        {
            $resource.properties["name"] = $name
        }

        if($PSBoundParameters.Keys -icontains 'addressPrefix')
        {
            $resource.properties["addressPrefix"] = $addressPrefix
        }

        if($PSBoundParameters.Keys -icontains 'o365Policy')
        {
            $resource.properties["o365Policy"] = $o365Policy
        }

        if($PSBoundParameters.Keys -icontains 'id')
        {
            $resource.properties["id"] = $id
        }

        if($PSBoundParameters.Keys -icontains 'siteName')
        {
            $resource.properties["siteName"] = $siteName
        }

        $global:pulumiresources += $resource
        return $resource
    }
}
function New-AzureNativeNetworkDefaultAdminRule
{
    [Alias('azure_native_network_defaultadminrule')]
    param (
        [parameter(mandatory=$False,HelpMessage='The name of the network manager security Configuration rule collection.)')]
        [string]
        $ruleCollectionName,
        [parameter(mandatory=$False,HelpMessage='The name of the rule.)')]
        [string]
        $ruleName,
        [parameter(mandatory=$False,HelpMessage='The name of the resource group.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='Default rule flag.)')]
        [string]
        $flag,
        [parameter(mandatory=$False,HelpMessage='Whether the rule is custom or default.
Expected value is ''Default''.)'
)]
        [string]
        $kind,
        [parameter(mandatory=$False,HelpMessage='The name of the network manager security Configuration.)')]
        [string]
        $configurationName,
        [parameter(mandatory=$False,HelpMessage='The name of the network manager.)')]
        [string]
        $networkManagerName,
        [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:network:DefaultAdminRule")

        $resource.properties["configurationName"] = $configurationName
        $resource.properties["kind"] = $kind
        $resource.properties["networkManagerName"] = $networkManagerName
        $resource.properties["resourceGroupName"] = $resourceGroupName
        $resource.properties["ruleCollectionName"] = $ruleCollectionName

        if($PSBoundParameters.Keys -icontains 'ruleName')
        {
            $resource.properties["ruleName"] = $ruleName
        }

        if($PSBoundParameters.Keys -icontains 'flag')
        {
            $resource.properties["flag"] = $flag
        }

        $global:pulumiresources += $resource
        return $resource
    }
}
class ConnectionMonitorSource
{
    [int] $port
    [string] $resourceId
}
function New-AzureNativeTypeNetworkConnectionMonitorSource
{
    param (
        [parameter(mandatory=$False,HelpMessage='The source port used by connection monitor.)')]
        [int]
        $port,
        [parameter(mandatory=$False,HelpMessage='The ID of the resource used as the source by connection monitor.)')]
        [string]
        $resourceId
    )

    process
    {
        return $([ConnectionMonitorSource]$PSBoundParameters)
    }
}
class ConnectionMonitorDestination
{
    [string] $address
    [string] $resourceId
    [int] $port
}
function New-AzureNativeTypeNetworkConnectionMonitorDestination
{
    param (
        [parameter(mandatory=$False,HelpMessage='Address of the connection monitor destination (IP or domain name).)')]
        [string]
        $address,
        [parameter(mandatory=$False,HelpMessage='The ID of the resource used as the destination by connection monitor.)')]
        [string]
        $resourceId,
        [parameter(mandatory=$False,HelpMessage='The destination port used by connection monitor.)')]
        [int]
        $port
    )

    process
    {
        return $([ConnectionMonitorDestination]$PSBoundParameters)
    }
}
function New-AzureNativeNetworkConnectionMonitor
{
    [Alias('azure_native_network_connectionmonitor')]
    param (
        [parameter(mandatory=$False,HelpMessage='List of connection monitor outputs.)')]
        $outputs,
        [parameter(mandatory=$False,HelpMessage='Connection monitor tags.)')]
        [hashtable]
        $tags,
        [parameter(mandatory=$False,HelpMessage='Monitoring interval in seconds.)')]
        [int]
        $monitoringIntervalInSeconds,
        [parameter(mandatory=$False,HelpMessage='Describes the source of connection monitor.)')]
        [ConnectionMonitorSource]
        $source,
        [parameter(mandatory=$False,HelpMessage='Describes the destination of connection monitor.)')]
        [ConnectionMonitorDestination]
        $destination,
        [parameter(mandatory=$False,HelpMessage='List of connection monitor test groups.)')]
        $testGroups,
        [parameter(mandatory=$False,HelpMessage='Determines if the connection monitor will start automatically once created.)')]
        [bool]
        $autoStart,
        [parameter(mandatory=$False,HelpMessage='List of connection monitor endpoints.)')]
        $endpoints,
        [parameter(mandatory=$False,HelpMessage='Connection monitor location.)')]
        [string]
        $location,
        [parameter(mandatory=$False,HelpMessage='The name of the connection monitor.)')]
        [string]
        $connectionMonitorName,
        [parameter(mandatory=$False,HelpMessage='Value indicating whether connection monitor V1 should be migrated to V2 format.)')]
        [string]
        $migrate,
        [parameter(mandatory=$False,HelpMessage='The name of the Network Watcher resource.)')]
        [string]
        $networkWatcherName,
        [parameter(mandatory=$False,HelpMessage='The name of the resource group containing Network Watcher.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='List of connection monitor test configurations.)')]
        $testConfigurations,
        [parameter(mandatory=$False,HelpMessage='Optional notes to be associated with the connection monitor.)')]
        [string]
        $notes,
        [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:network:ConnectionMonitor")

        $resource.properties["networkWatcherName"] = $networkWatcherName
        $resource.properties["resourceGroupName"] = $resourceGroupName

        if($PSBoundParameters.Keys -icontains 'outputs')
        {
            $resource.properties["outputs"] = $outputs
        }

        if($PSBoundParameters.Keys -icontains 'tags')
        {
            $resource.properties["tags"] = $tags
        }

        if($PSBoundParameters.Keys -icontains 'monitoringIntervalInSeconds')
        {
            $resource.properties["monitoringIntervalInSeconds"] = $monitoringIntervalInSeconds
        }

        if($PSBoundParameters.Keys -icontains 'source')
        {
            $resource.properties["source"] = $source
        }

        if($PSBoundParameters.Keys -icontains 'destination')
        {
            $resource.properties["destination"] = $destination
        }

        if($PSBoundParameters.Keys -icontains 'testGroups')
        {
            $resource.properties["testGroups"] = $testGroups
        }

        if($PSBoundParameters.Keys -icontains 'autoStart')
        {
            $resource.properties["autoStart"] = $autoStart
        }

        if($PSBoundParameters.Keys -icontains 'endpoints')
        {
            $resource.properties["endpoints"] = $endpoints
        }

        if($PSBoundParameters.Keys -icontains 'location')
        {
            $resource.properties["location"] = $location
        }

        if($PSBoundParameters.Keys -icontains 'connectionMonitorName')
        {
            $resource.properties["connectionMonitorName"] = $connectionMonitorName
        }

        if($PSBoundParameters.Keys -icontains 'migrate')
        {
            $resource.properties["migrate"] = $migrate
        }

        if($PSBoundParameters.Keys -icontains 'testConfigurations')
        {
            $resource.properties["testConfigurations"] = $testConfigurations
        }

        if($PSBoundParameters.Keys -icontains 'notes')
        {
            $resource.properties["notes"] = $notes
        }

        $global:pulumiresources += $resource
        return $resource
    }
}
function New-AzureNativeNetworkVirtualNetworkTap
{
    [Alias('azure_native_network_virtualnetworktap')]
    param (
        [parameter(mandatory=$False,HelpMessage='The reference to the private IP address on the internal Load Balancer that will receive the tap.)')]
        [FrontendIPConfiguration]
        $destinationLoadBalancerFrontEndIPConfiguration,
        [parameter(mandatory=$False,HelpMessage='Resource tags.)')]
        [hashtable]
        $tags,
        [parameter(mandatory=$False,HelpMessage='The VXLAN destination port that will receive the tapped traffic.)')]
        [int]
        $destinationPort,
        [parameter(mandatory=$False,HelpMessage='The name of the virtual network tap.)')]
        [string]
        $tapName,
        [parameter(mandatory=$False,HelpMessage='Resource location.)')]
        [string]
        $location,
        [parameter(mandatory=$False,HelpMessage='The reference to the private IP Address of the collector nic that will receive the tap.)')]
        [NetworkInterfaceIPConfiguration]
        $destinationNetworkInterfaceIPConfiguration,
        [parameter(mandatory=$False,HelpMessage='The name of the resource group.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='Resource ID.)')]
        [string]
        $id,
        [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:network:VirtualNetworkTap")

        $resource.properties["resourceGroupName"] = $resourceGroupName

        if($PSBoundParameters.Keys -icontains 'destinationLoadBalancerFrontEndIPConfiguration')
        {
            $resource.properties["destinationLoadBalancerFrontEndIPConfiguration"] = $destinationLoadBalancerFrontEndIPConfiguration
        }

        if($PSBoundParameters.Keys -icontains 'tags')
        {
            $resource.properties["tags"] = $tags
        }

        if($PSBoundParameters.Keys -icontains 'destinationPort')
        {
            $resource.properties["destinationPort"] = $destinationPort
        }

        if($PSBoundParameters.Keys -icontains 'tapName')
        {
            $resource.properties["tapName"] = $tapName
        }

        if($PSBoundParameters.Keys -icontains 'location')
        {
            $resource.properties["location"] = $location
        }

        if($PSBoundParameters.Keys -icontains 'destinationNetworkInterfaceIPConfiguration')
        {
            $resource.properties["destinationNetworkInterfaceIPConfiguration"] = $destinationNetworkInterfaceIPConfiguration
        }

        if($PSBoundParameters.Keys -icontains 'id')
        {
            $resource.properties["id"] = $id
        }

        $global:pulumiresources += $resource
        return $resource
    }
}
function New-AzureNativeNetworkHubVirtualNetworkConnection
{
    [Alias('azure_native_network_hubvirtualnetworkconnection')]
    param (
        [parameter(mandatory=$False,HelpMessage='The name of the HubVirtualNetworkConnection.)')]
        [string]
        $connectionName,
        [parameter(mandatory=$False,HelpMessage='Reference to the remote virtual network.)')]
        [SubResource]
        $remoteVirtualNetwork,
        [parameter(mandatory=$False,HelpMessage='Enable internet security.)')]
        [bool]
        $enableInternetSecurity,
        [parameter(mandatory=$False,HelpMessage='The resource group name of the HubVirtualNetworkConnection.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='The Routing Configuration indicating the associated and propagated route tables on this connection.)')]
        [RoutingConfiguration]
        $routingConfiguration,
        [parameter(mandatory=$False,HelpMessage='Resource ID.)')]
        [string]
        $id,
        [parameter(mandatory=$False,HelpMessage='Deprecated: VirtualHub to RemoteVnet transit to enabled or not.)')]
        [bool]
        $allowHubToRemoteVnetTransit,
        [parameter(mandatory=$False,HelpMessage='Deprecated: Allow RemoteVnet to use Virtual Hub''s gateways.)')]
        [bool]
        $allowRemoteVnetToUseHubVnetGateways,
        [parameter(mandatory=$False,HelpMessage='The name of the VirtualHub.)')]
        [string]
        $virtualHubName,
        [parameter(mandatory=$False,HelpMessage='The name of the resource that is unique within a resource group. This name can be used to access the resource.)')]
        [string]
        $name,
        [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:network:HubVirtualNetworkConnection")

        $resource.properties["resourceGroupName"] = $resourceGroupName
        $resource.properties["virtualHubName"] = $virtualHubName

        if($PSBoundParameters.Keys -icontains 'connectionName')
        {
            $resource.properties["connectionName"] = $connectionName
        }

        if($PSBoundParameters.Keys -icontains 'remoteVirtualNetwork')
        {
            $resource.properties["remoteVirtualNetwork"] = $remoteVirtualNetwork
        }

        if($PSBoundParameters.Keys -icontains 'enableInternetSecurity')
        {
            $resource.properties["enableInternetSecurity"] = $enableInternetSecurity
        }

        if($PSBoundParameters.Keys -icontains 'routingConfiguration')
        {
            $resource.properties["routingConfiguration"] = $routingConfiguration
        }

        if($PSBoundParameters.Keys -icontains 'id')
        {
            $resource.properties["id"] = $id
        }

        if($PSBoundParameters.Keys -icontains 'allowHubToRemoteVnetTransit')
        {
            $resource.properties["allowHubToRemoteVnetTransit"] = $allowHubToRemoteVnetTransit
        }

        if($PSBoundParameters.Keys -icontains 'allowRemoteVnetToUseHubVnetGateways')
        {
            $resource.properties["allowRemoteVnetToUseHubVnetGateways"] = $allowRemoteVnetToUseHubVnetGateways
        }

        if($PSBoundParameters.Keys -icontains 'name')
        {
            $resource.properties["name"] = $name
        }

        $global:pulumiresources += $resource
        return $resource
    }
}
function New-AzureNativeNetworkDdosCustomPolicy
{
    [Alias('azure_native_network_ddoscustompolicy')]
    param (
        [parameter(mandatory=$False,HelpMessage='The name of the DDoS custom policy.)')]
        [string]
        $ddosCustomPolicyName,
        [parameter(mandatory=$False,HelpMessage='The protocol-specific DDoS policy customization parameters.)')]
        $protocolCustomSettings,
        [parameter(mandatory=$False,HelpMessage='The name of the resource group.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='Resource tags.)')]
        [hashtable]
        $tags,
        [parameter(mandatory=$False,HelpMessage='Resource ID.)')]
        [string]
        $id,
        [parameter(mandatory=$False,HelpMessage='Resource location.)')]
        [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:network:DdosCustomPolicy")

        $resource.properties["resourceGroupName"] = $resourceGroupName

        if($PSBoundParameters.Keys -icontains 'ddosCustomPolicyName')
        {
            $resource.properties["ddosCustomPolicyName"] = $ddosCustomPolicyName
        }

        if($PSBoundParameters.Keys -icontains 'protocolCustomSettings')
        {
            $resource.properties["protocolCustomSettings"] = $protocolCustomSettings
        }

        if($PSBoundParameters.Keys -icontains 'tags')
        {
            $resource.properties["tags"] = $tags
        }

        if($PSBoundParameters.Keys -icontains 'id')
        {
            $resource.properties["id"] = $id
        }

        if($PSBoundParameters.Keys -icontains 'location')
        {
            $resource.properties["location"] = $location
        }

        $global:pulumiresources += $resource
        return $resource
    }
}
function New-AzureNativeNetworkNspAccessRule
{
    [Alias('azure_native_network_nspaccessrule')]
    param (
        [parameter(mandatory=$False,HelpMessage='Subscription id in the ARM id format.)')]
        [string[]]
        $subscriptions,
        [parameter(mandatory=$False,HelpMessage='Resource tags.)')]
        [hashtable]
        $tags,
        [parameter(mandatory=$False,HelpMessage='The name of the resource group.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='The name of the NSP profile.)')]
        [string]
        $profileName,
        [parameter(mandatory=$False,HelpMessage='Inbound rule specified by the perimeter id.)')]
        $networkSecurityPerimeters,
        [parameter(mandatory=$False,HelpMessage='The name of the network security perimeter.)')]
        [string]
        $networkSecurityPerimeterName,
        [parameter(mandatory=$False,HelpMessage='Resource ID.)')]
        [string]
        $id,
        [parameter(mandatory=$False,HelpMessage='Outbound rules fully qualified domain name format.)')]
        [string[]]
        $fullyQualifiedDomainNames,
        [parameter(mandatory=$False,HelpMessage='Resource location.)')]
        [string]
        $location,
        [parameter(mandatory=$False,HelpMessage='Direction that specifies whether the access rules is inbound/outbound.)')]
        [string]
        [ValidateSet('Inbound', 'Outbound')]
        $direction,
        [parameter(mandatory=$False,HelpMessage='The name of the access rule that is unique within a profile. This name can be used to access the resource.)')]
        [string]
        $name,
        [parameter(mandatory=$False,HelpMessage='The name of the NSP access rule.)')]
        [string]
        $accessRuleName,
        [parameter(mandatory=$False,HelpMessage='Inbound address prefixes (IPv4/IPv6))')]
        [string[]]
        $addressPrefixes,
        [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:network:NspAccessRule")

        $resource.properties["networkSecurityPerimeterName"] = $networkSecurityPerimeterName
        $resource.properties["profileName"] = $profileName
        $resource.properties["resourceGroupName"] = $resourceGroupName

        if($PSBoundParameters.Keys -icontains 'subscriptions')
        {
            $resource.properties["subscriptions"] = $subscriptions
        }

        if($PSBoundParameters.Keys -icontains 'tags')
        {
            $resource.properties["tags"] = $tags
        }

        if($PSBoundParameters.Keys -icontains 'networkSecurityPerimeters')
        {
            $resource.properties["networkSecurityPerimeters"] = $networkSecurityPerimeters
        }

        if($PSBoundParameters.Keys -icontains 'id')
        {
            $resource.properties["id"] = $id
        }

        if($PSBoundParameters.Keys -icontains 'fullyQualifiedDomainNames')
        {
            $resource.properties["fullyQualifiedDomainNames"] = $fullyQualifiedDomainNames
        }

        if($PSBoundParameters.Keys -icontains 'location')
        {
            $resource.properties["location"] = $location
        }

        if($PSBoundParameters.Keys -icontains 'direction')
        {
            $resource.properties["direction"] = $direction
        }

        if($PSBoundParameters.Keys -icontains 'name')
        {
            $resource.properties["name"] = $name
        }

        if($PSBoundParameters.Keys -icontains 'accessRuleName')
        {
            $resource.properties["accessRuleName"] = $accessRuleName
        }

        if($PSBoundParameters.Keys -icontains 'addressPrefixes')
        {
            $resource.properties["addressPrefixes"] = $addressPrefixes
        }

        $global:pulumiresources += $resource
        return $resource
    }
}
function New-AzureNativeNetworkApplicationSecurityGroup
{
    [Alias('azure_native_network_applicationsecuritygroup')]
    param (
        [parameter(mandatory=$False,HelpMessage='The name of the resource group.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='Resource ID.)')]
        [string]
        $id,
        [parameter(mandatory=$False,HelpMessage='Resource tags.)')]
        [hashtable]
        $tags,
        [parameter(mandatory=$False,HelpMessage='The name of the application security group.)')]
        [string]
        $applicationSecurityGroupName,
        [parameter(mandatory=$False,HelpMessage='Resource location.)')]
        [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:network:ApplicationSecurityGroup")

        $resource.properties["resourceGroupName"] = $resourceGroupName

        if($PSBoundParameters.Keys -icontains 'id')
        {
            $resource.properties["id"] = $id
        }

        if($PSBoundParameters.Keys -icontains 'tags')
        {
            $resource.properties["tags"] = $tags
        }

        if($PSBoundParameters.Keys -icontains 'applicationSecurityGroupName')
        {
            $resource.properties["applicationSecurityGroupName"] = $applicationSecurityGroupName
        }

        if($PSBoundParameters.Keys -icontains 'location')
        {
            $resource.properties["location"] = $location
        }

        $global:pulumiresources += $resource
        return $resource
    }
}
function New-AzureNativeNetworkForwardingRule
{
    [Alias('azure_native_network_forwardingrule')]
    param (
        [parameter(mandatory=$False,HelpMessage='The name of the resource group. The name is case insensitive.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='The domain name for the forwarding rule.)')]
        [string]
        $domainName,
        [parameter(mandatory=$False,HelpMessage='The name of the DNS forwarding ruleset.)')]
        [string]
        $dnsForwardingRulesetName,
        [parameter(mandatory=$False,HelpMessage='Metadata attached to the forwarding rule.)')]
        [hashtable]
        $metadata,
        [parameter(mandatory=$False,HelpMessage='DNS servers to forward the DNS query to.)')]
        $targetDnsServers,
        [parameter(mandatory=$False,HelpMessage='The name of the forwarding rule.)')]
        [string]
        $forwardingRuleName,
        [parameter(mandatory=$False,HelpMessage='The state of forwarding rule.)')]
        [string]
        [ValidateSet('Enabled', 'Disabled')]
        $forwardingRuleState,
        [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:network:ForwardingRule")

        $resource.properties["dnsForwardingRulesetName"] = $dnsForwardingRulesetName
        $resource.properties["domainName"] = $domainName
        $resource.properties["resourceGroupName"] = $resourceGroupName
        $resource.properties["targetDnsServers"] = $targetDnsServers

        if($PSBoundParameters.Keys -icontains 'metadata')
        {
            $resource.properties["metadata"] = $metadata
        }

        if($PSBoundParameters.Keys -icontains 'forwardingRuleName')
        {
            $resource.properties["forwardingRuleName"] = $forwardingRuleName
        }

        if($PSBoundParameters.Keys -icontains 'forwardingRuleState')
        {
            $resource.properties["forwardingRuleState"] = $forwardingRuleState
        }

        $global:pulumiresources += $resource
        return $resource
    }
}
class RetentionPolicyParameters
{
    [bool] $enabled
    [int] $days
}
function New-AzureNativeTypeNetworkRetentionPolicyParameters
{
    param (
        [parameter(mandatory=$False,HelpMessage='Flag to enable/disable retention.)')]
        [bool]
        $enabled,
        [parameter(mandatory=$False,HelpMessage='Number of days to retain flow log records.)')]
        [int]
        $days
    )

    process
    {
        return $([RetentionPolicyParameters]$PSBoundParameters)
    }
}
class FlowLogFormatParameters
{
    [int] $version
    [ValidateSet('JSON')]
    [string] $type
}
function New-AzureNativeTypeNetworkFlowLogFormatParameters
{
    param (
        [parameter(mandatory=$False,HelpMessage='The version (revision) of the flow log.)')]
        [int]
        $version,
        [parameter(mandatory=$False,HelpMessage='The file type of flow log.)')]
        [string]
        [ValidateSet('JSON')]
        $type
    )

    process
    {
        return $([FlowLogFormatParameters]$PSBoundParameters)
    }
}
class TrafficAnalyticsConfigurationProperties
{
    [string] $workspaceId
    [string] $workspaceResourceId
    [bool] $enabled
    [string] $workspaceRegion
    [int] $trafficAnalyticsInterval
}
function New-AzureNativeTypeNetworkTrafficAnalyticsConfigurationProperties
{
    param (
        [parameter(mandatory=$False,HelpMessage='The resource guid of the attached workspace.)')]
        [string]
        $workspaceId,
        [parameter(mandatory=$False,HelpMessage='Resource Id of the attached workspace.)')]
        [string]
        $workspaceResourceId,
        [parameter(mandatory=$False,HelpMessage='Flag to enable/disable traffic analytics.)')]
        [bool]
        $enabled,
        [parameter(mandatory=$False,HelpMessage='The location of the attached workspace.)')]
        [string]
        $workspaceRegion,
        [parameter(mandatory=$False,HelpMessage='The interval in minutes which would decide how frequently TA service should do flow analytics.)')]
        [int]
        $trafficAnalyticsInterval
    )

    process
    {
        return $([TrafficAnalyticsConfigurationProperties]$PSBoundParameters)
    }
}
class TrafficAnalyticsProperties
{
    [TrafficAnalyticsConfigurationProperties] $networkWatcherFlowAnalyticsConfiguration
}
function New-AzureNativeTypeNetworkTrafficAnalyticsProperties
{
    param (
        [parameter(mandatory=$False,HelpMessage='Parameters that define the configuration of traffic analytics.)')]
        [TrafficAnalyticsConfigurationProperties]
        $networkWatcherFlowAnalyticsConfiguration
    )

    process
    {
        return $([TrafficAnalyticsProperties]$PSBoundParameters)
    }
}
function New-AzureNativeNetworkFlowLog
{
    [Alias('azure_native_network_flowlog')]
    param (
        [parameter(mandatory=$False,HelpMessage='The name of the resource group.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='ID of network security group to which flow log will be applied.)')]
        [string]
        $targetResourceId,
        [parameter(mandatory=$False,HelpMessage='The name of the flow log.)')]
        [string]
        $flowLogName,
        [parameter(mandatory=$False,HelpMessage='ID of the storage account which is used to store the flow log.)')]
        [string]
        $storageId,
        [parameter(mandatory=$False,HelpMessage='Parameters that define the retention policy for flow log.)')]
        [RetentionPolicyParameters]
        $retentionPolicy,
        [parameter(mandatory=$False,HelpMessage='Resource ID.)')]
        [string]
        $id,
        [parameter(mandatory=$False,HelpMessage='Flag to enable/disable flow logging.)')]
        [bool]
        $enabled,
        [parameter(mandatory=$False,HelpMessage='Parameters that define the flow log format.)')]
        [FlowLogFormatParameters]
        $format,
        [parameter(mandatory=$False,HelpMessage='Resource tags.)')]
        [hashtable]
        $tags,
        [parameter(mandatory=$False,HelpMessage='The name of the network watcher.)')]
        [string]
        $networkWatcherName,
        [parameter(mandatory=$False,HelpMessage='Parameters that define the configuration of traffic analytics.)')]
        [TrafficAnalyticsProperties]
        $flowAnalyticsConfiguration,
        [parameter(mandatory=$False,HelpMessage='Resource location.)')]
        [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:network:FlowLog")

        $resource.properties["networkWatcherName"] = $networkWatcherName
        $resource.properties["resourceGroupName"] = $resourceGroupName
        $resource.properties["storageId"] = $storageId
        $resource.properties["targetResourceId"] = $targetResourceId

        if($PSBoundParameters.Keys -icontains 'flowLogName')
        {
            $resource.properties["flowLogName"] = $flowLogName
        }

        if($PSBoundParameters.Keys -icontains 'retentionPolicy')
        {
            $resource.properties["retentionPolicy"] = $retentionPolicy
        }

        if($PSBoundParameters.Keys -icontains 'id')
        {
            $resource.properties["id"] = $id
        }

        if($PSBoundParameters.Keys -icontains 'enabled')
        {
            $resource.properties["enabled"] = $enabled
        }

        if($PSBoundParameters.Keys -icontains 'format')
        {
            $resource.properties["format"] = $format
        }

        if($PSBoundParameters.Keys -icontains 'tags')
        {
            $resource.properties["tags"] = $tags
        }

        if($PSBoundParameters.Keys -icontains 'flowAnalyticsConfiguration')
        {
            $resource.properties["flowAnalyticsConfiguration"] = $flowAnalyticsConfiguration
        }

        if($PSBoundParameters.Keys -icontains 'location')
        {
            $resource.properties["location"] = $location
        }

        $global:pulumiresources += $resource
        return $resource
    }
}
function New-AzureNativeNetworkOutboundEndpoint
{
    [Alias('azure_native_network_outboundendpoint')]
    param (
        [parameter(mandatory=$False,HelpMessage='Resource tags.)')]
        [hashtable]
        $tags,
        [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 DNS resolver.)')]
        [string]
        $dnsResolverName,
        [parameter(mandatory=$False,HelpMessage='The name of the outbound endpoint for the DNS resolver.)')]
        [string]
        $outboundEndpointName,
        [parameter(mandatory=$False,HelpMessage='The reference to the subnet used for the outbound endpoint.)')]
        [SubResource]
        $subnet,
        [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:network:OutboundEndpoint")

        $resource.properties["dnsResolverName"] = $dnsResolverName
        $resource.properties["resourceGroupName"] = $resourceGroupName

        if($PSBoundParameters.Keys -icontains 'tags')
        {
            $resource.properties["tags"] = $tags
        }

        if($PSBoundParameters.Keys -icontains 'outboundEndpointName')
        {
            $resource.properties["outboundEndpointName"] = $outboundEndpointName
        }

        if($PSBoundParameters.Keys -icontains 'subnet')
        {
            $resource.properties["subnet"] = $subnet
        }

        if($PSBoundParameters.Keys -icontains 'location')
        {
            $resource.properties["location"] = $location
        }

        $global:pulumiresources += $resource
        return $resource
    }
}
function New-AzureNativeNetworkDdosProtectionPlan
{
    [Alias('azure_native_network_ddosprotectionplan')]
    param (
        [parameter(mandatory=$False,HelpMessage='The name of the resource group.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='Resource tags.)')]
        [hashtable]
        $tags,
        [parameter(mandatory=$False,HelpMessage='Resource location.)')]
        [string]
        $location,
        [parameter(mandatory=$False,HelpMessage='The name of the DDoS protection plan.)')]
        [string]
        $ddosProtectionPlanName,
        [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:network:DdosProtectionPlan")

        $resource.properties["resourceGroupName"] = $resourceGroupName

        if($PSBoundParameters.Keys -icontains 'tags')
        {
            $resource.properties["tags"] = $tags
        }

        if($PSBoundParameters.Keys -icontains 'location')
        {
            $resource.properties["location"] = $location
        }

        if($PSBoundParameters.Keys -icontains 'ddosProtectionPlanName')
        {
            $resource.properties["ddosProtectionPlanName"] = $ddosProtectionPlanName
        }

        $global:pulumiresources += $resource
        return $resource
    }
}
function New-AzureNativeNetworkVirtualNetworkGateway
{
    [Alias('azure_native_network_virtualnetworkgateway')]
    param (
        [parameter(mandatory=$False,HelpMessage='Resource tags.)')]
        [hashtable]
        $tags,
        [parameter(mandatory=$False,HelpMessage='ActiveActive flag.)')]
        [bool]
        $activeActive,
        [parameter(mandatory=$False,HelpMessage='The reference to the address space resource which represents the custom routes address space specified by the customer for virtual network gateway and VpnClient.)')]
        [AddressSpace]
        $customRoutes,
        [parameter(mandatory=$False,HelpMessage='The name of the resource group.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='Whether private IP needs to be enabled on this gateway for connections or not.)')]
        [bool]
        $enablePrivateIpAddress,
        [parameter(mandatory=$False,HelpMessage='The name of the virtual network gateway.)')]
        [string]
        $virtualNetworkGatewayName,
        [parameter(mandatory=$False,HelpMessage='The reference to the LocalNetworkGateway resource which represents local network site having default routes. Assign Null value in case of removing existing default site setting.)')]
        [SubResource]
        $gatewayDefaultSite,
        [parameter(mandatory=$False,HelpMessage='The type of this virtual network gateway.)')]
        [string]
        [ValidateSet('PolicyBased', 'RouteBased')]
        $vpnType,
        [parameter(mandatory=$False,HelpMessage='Resource ID.)')]
        [string]
        $id,
        [parameter(mandatory=$False,HelpMessage='Customer vnet resource id. VirtualNetworkGateway of type local gateway is associated with the customer vnet.)')]
        [string]
        $vNetExtendedLocationResourceId,
        [parameter(mandatory=$False,HelpMessage='IP configurations for virtual network gateway.)')]
        $ipConfigurations,
        [parameter(mandatory=$False,HelpMessage='The reference to the VirtualNetworkGatewaySku resource which represents the SKU selected for Virtual network gateway.)')]
        [VirtualNetworkGatewaySku]
        $sku,
        [parameter(mandatory=$False,HelpMessage='The extended location of type local virtual network gateway.)')]
        [ExtendedLocation]
        $extendedLocation,
        [parameter(mandatory=$False,HelpMessage='Resource location.)')]
        [string]
        $location,
        [parameter(mandatory=$False,HelpMessage='Whether dns forwarding is enabled or not.)')]
        [bool]
        $enableDnsForwarding,
        [parameter(mandatory=$False,HelpMessage='Virtual network gateway''s BGP speaker settings.)')]
        [BgpSettings]
        $bgpSettings,
        [parameter(mandatory=$False,HelpMessage='Whether BGP is enabled for this virtual network gateway or not.)')]
        [bool]
        $enableBgp,
        [parameter(mandatory=$False,HelpMessage='The type of this virtual network gateway.)')]
        [string]
        [ValidateSet('Vpn', 'ExpressRoute', 'LocalGateway')]
        $gatewayType,
        [parameter(mandatory=$False,HelpMessage='The reference to the VpnClientConfiguration resource which represents the P2S VpnClient configurations.)')]
        [VpnClientConfiguration]
        $vpnClientConfiguration,
        [parameter(mandatory=$False,HelpMessage='The generation for this VirtualNetworkGateway. Must be None if gatewayType is not VPN.)')]
        [string]
        [ValidateSet('None', 'Generation1', 'Generation2')]
        $vpnGatewayGeneration,
        [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:network:VirtualNetworkGateway")

        $resource.properties["resourceGroupName"] = $resourceGroupName

        if($PSBoundParameters.Keys -icontains 'tags')
        {
            $resource.properties["tags"] = $tags
        }

        if($PSBoundParameters.Keys -icontains 'activeActive')
        {
            $resource.properties["activeActive"] = $activeActive
        }

        if($PSBoundParameters.Keys -icontains 'customRoutes')
        {
            $resource.properties["customRoutes"] = $customRoutes
        }

        if($PSBoundParameters.Keys -icontains 'enablePrivateIpAddress')
        {
            $resource.properties["enablePrivateIpAddress"] = $enablePrivateIpAddress
        }

        if($PSBoundParameters.Keys -icontains 'virtualNetworkGatewayName')
        {
            $resource.properties["virtualNetworkGatewayName"] = $virtualNetworkGatewayName
        }

        if($PSBoundParameters.Keys -icontains 'gatewayDefaultSite')
        {
            $resource.properties["gatewayDefaultSite"] = $gatewayDefaultSite
        }

        if($PSBoundParameters.Keys -icontains 'vpnType')
        {
            $resource.properties["vpnType"] = $vpnType
        }

        if($PSBoundParameters.Keys -icontains 'id')
        {
            $resource.properties["id"] = $id
        }

        if($PSBoundParameters.Keys -icontains 'vNetExtendedLocationResourceId')
        {
            $resource.properties["vNetExtendedLocationResourceId"] = $vNetExtendedLocationResourceId
        }

        if($PSBoundParameters.Keys -icontains 'ipConfigurations')
        {
            $resource.properties["ipConfigurations"] = $ipConfigurations
        }

        if($PSBoundParameters.Keys -icontains 'sku')
        {
            $resource.properties["sku"] = $sku
        }

        if($PSBoundParameters.Keys -icontains 'extendedLocation')
        {
            $resource.properties["extendedLocation"] = $extendedLocation
        }

        if($PSBoundParameters.Keys -icontains 'location')
        {
            $resource.properties["location"] = $location
        }

        if($PSBoundParameters.Keys -icontains 'enableDnsForwarding')
        {
            $resource.properties["enableDnsForwarding"] = $enableDnsForwarding
        }

        if($PSBoundParameters.Keys -icontains 'bgpSettings')
        {
            $resource.properties["bgpSettings"] = $bgpSettings
        }

        if($PSBoundParameters.Keys -icontains 'enableBgp')
        {
            $resource.properties["enableBgp"] = $enableBgp
        }

        if($PSBoundParameters.Keys -icontains 'gatewayType')
        {
            $resource.properties["gatewayType"] = $gatewayType
        }

        if($PSBoundParameters.Keys -icontains 'vpnClientConfiguration')
        {
            $resource.properties["vpnClientConfiguration"] = $vpnClientConfiguration
        }

        if($PSBoundParameters.Keys -icontains 'vpnGatewayGeneration')
        {
            $resource.properties["vpnGatewayGeneration"] = $vpnGatewayGeneration
        }

        $global:pulumiresources += $resource
        return $resource
    }
}
function New-AzureNativeNetworkNspAssociation
{
    [Alias('azure_native_network_nspassociation')]
    param (
        [parameter(mandatory=$False,HelpMessage='The name of the resource group.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='The name of the NSP association.)')]
        [string]
        $associationName,
        [parameter(mandatory=$False,HelpMessage='Profile id to which the PaaS resource is associated.)')]
        [SubResource]
        $profile,
        [parameter(mandatory=$False,HelpMessage='The name of the network security perimeter.)')]
        [string]
        $networkSecurityPerimeterName,
        [parameter(mandatory=$False,HelpMessage='Resource ID.)')]
        [string]
        $id,
        [parameter(mandatory=$False,HelpMessage='Access mode on the association.)')]
        [string]
        [ValidateSet('Learning', 'Enforced', 'Audit')]
        $accessMode,
        [parameter(mandatory=$False,HelpMessage='The PaaS resource to be associated.)')]
        [SubResource]
        $privateLinkResource,
        [parameter(mandatory=$False,HelpMessage='Resource tags.)')]
        [hashtable]
        $tags,
        [parameter(mandatory=$False,HelpMessage='The name of the resource that is unique within a resource group. This name can be used to access the resource.)')]
        [string]
        $name,
        [parameter(mandatory=$False,HelpMessage='Resource location.)')]
        [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:network:NspAssociation")

        $resource.properties["networkSecurityPerimeterName"] = $networkSecurityPerimeterName
        $resource.properties["resourceGroupName"] = $resourceGroupName

        if($PSBoundParameters.Keys -icontains 'associationName')
        {
            $resource.properties["associationName"] = $associationName
        }

        if($PSBoundParameters.Keys -icontains 'profile')
        {
            $resource.properties["profile"] = $profile
        }

        if($PSBoundParameters.Keys -icontains 'id')
        {
            $resource.properties["id"] = $id
        }

        if($PSBoundParameters.Keys -icontains 'accessMode')
        {
            $resource.properties["accessMode"] = $accessMode
        }

        if($PSBoundParameters.Keys -icontains 'privateLinkResource')
        {
            $resource.properties["privateLinkResource"] = $privateLinkResource
        }

        if($PSBoundParameters.Keys -icontains 'tags')
        {
            $resource.properties["tags"] = $tags
        }

        if($PSBoundParameters.Keys -icontains 'name')
        {
            $resource.properties["name"] = $name
        }

        if($PSBoundParameters.Keys -icontains 'location')
        {
            $resource.properties["location"] = $location
        }

        $global:pulumiresources += $resource
        return $resource
    }
}
function New-AzureNativeNetworkAdminRuleCollection
{
    [Alias('azure_native_network_adminrulecollection')]
    param (
        [parameter(mandatory=$False,HelpMessage='The name of the resource group.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='A description of the rule collection.)')]
        [string]
        $description,
        [parameter(mandatory=$False,HelpMessage='Groups for configuration)')]
        $appliesToGroups,
        [parameter(mandatory=$False,HelpMessage='A display name of the rule collection.)')]
        [string]
        $displayName,
        [parameter(mandatory=$False,HelpMessage='The name of the network manager security Configuration.)')]
        [string]
        $configurationName,
        [parameter(mandatory=$False,HelpMessage='The name of the network manager security Configuration rule collection.)')]
        [string]
        $ruleCollectionName,
        [parameter(mandatory=$False,HelpMessage='The name of the network manager.)')]
        [string]
        $networkManagerName,
        [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:network:AdminRuleCollection")

        $resource.properties["configurationName"] = $configurationName
        $resource.properties["networkManagerName"] = $networkManagerName
        $resource.properties["resourceGroupName"] = $resourceGroupName

        if($PSBoundParameters.Keys -icontains 'description')
        {
            $resource.properties["description"] = $description
        }

        if($PSBoundParameters.Keys -icontains 'appliesToGroups')
        {
            $resource.properties["appliesToGroups"] = $appliesToGroups
        }

        if($PSBoundParameters.Keys -icontains 'displayName')
        {
            $resource.properties["displayName"] = $displayName
        }

        if($PSBoundParameters.Keys -icontains 'ruleCollectionName')
        {
            $resource.properties["ruleCollectionName"] = $ruleCollectionName
        }

        $global:pulumiresources += $resource
        return $resource
    }
}
function New-AzureNativeNetworkNatRule
{
    [Alias('azure_native_network_natrule')]
    param (
        [parameter(mandatory=$False,HelpMessage='The Source NAT direction of a VPN NAT.)')]
        [string]
        [ValidateSet('EgressSnat', 'IngressSnat')]
        $mode,
        [parameter(mandatory=$False,HelpMessage='The type of NAT rule for VPN NAT.)')]
        [string]
        [ValidateSet('Static', 'Dynamic')]
        $type,
        [parameter(mandatory=$False,HelpMessage='The name of the gateway.)')]
        [string]
        $gatewayName,
        [parameter(mandatory=$False,HelpMessage='The IP Configuration ID this NAT rule applies to.)')]
        [string]
        $ipConfigurationId,
        [parameter(mandatory=$False,HelpMessage='The private IP address internal mapping for NAT.)')]
        $internalMappings,
        [parameter(mandatory=$False,HelpMessage='Resource ID.)')]
        [string]
        $id,
        [parameter(mandatory=$False,HelpMessage='The private IP address external mapping for NAT.)')]
        $externalMappings,
        [parameter(mandatory=$False,HelpMessage='The name of the nat rule.)')]
        [string]
        $natRuleName,
        [parameter(mandatory=$False,HelpMessage='The resource group name of the VpnGateway.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='The name of the resource that is unique within a resource group. This name can be used to access the resource.)')]
        [string]
        $name,
        [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:network:NatRule")

        $resource.properties["gatewayName"] = $gatewayName
        $resource.properties["resourceGroupName"] = $resourceGroupName

        if($PSBoundParameters.Keys -icontains 'mode')
        {
            $resource.properties["mode"] = $mode
        }

        if($PSBoundParameters.Keys -icontains 'type')
        {
            $resource.properties["type"] = $type
        }

        if($PSBoundParameters.Keys -icontains 'ipConfigurationId')
        {
            $resource.properties["ipConfigurationId"] = $ipConfigurationId
        }

        if($PSBoundParameters.Keys -icontains 'internalMappings')
        {
            $resource.properties["internalMappings"] = $internalMappings
        }

        if($PSBoundParameters.Keys -icontains 'id')
        {
            $resource.properties["id"] = $id
        }

        if($PSBoundParameters.Keys -icontains 'externalMappings')
        {
            $resource.properties["externalMappings"] = $externalMappings
        }

        if($PSBoundParameters.Keys -icontains 'natRuleName')
        {
            $resource.properties["natRuleName"] = $natRuleName
        }

        if($PSBoundParameters.Keys -icontains 'name')
        {
            $resource.properties["name"] = $name
        }

        $global:pulumiresources += $resource
        return $resource
    }
}
function New-AzureNativeNetworkVirtualWan
{
    [Alias('azure_native_network_virtualwan')]
    param (
        [parameter(mandatory=$False,HelpMessage='The resource group name of the VirtualWan.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='True if branch to branch traffic is allowed.)')]
        [bool]
        $allowBranchToBranchTraffic,
        [parameter(mandatory=$False,HelpMessage='The type of the VirtualWAN.)')]
        [string]
        $type,
        [parameter(mandatory=$False,HelpMessage='Vpn encryption to be disabled or not.)')]
        [bool]
        $disableVpnEncryption,
        [parameter(mandatory=$False,HelpMessage='Resource ID.)')]
        [string]
        $id,
        [parameter(mandatory=$False,HelpMessage='True if Vnet to Vnet traffic is allowed.)')]
        [bool]
        $allowVnetToVnetTraffic,
        [parameter(mandatory=$False,HelpMessage='The name of the VirtualWAN being created or updated.)')]
        [string]
        $virtualWANName,
        [parameter(mandatory=$False,HelpMessage='Resource tags.)')]
        [hashtable]
        $tags,
        [parameter(mandatory=$False,HelpMessage='Resource location.)')]
        [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:network:VirtualWan")

        $resource.properties["resourceGroupName"] = $resourceGroupName

        if($PSBoundParameters.Keys -icontains 'allowBranchToBranchTraffic')
        {
            $resource.properties["allowBranchToBranchTraffic"] = $allowBranchToBranchTraffic
        }

        if($PSBoundParameters.Keys -icontains 'type')
        {
            $resource.properties["type"] = $type
        }

        if($PSBoundParameters.Keys -icontains 'disableVpnEncryption')
        {
            $resource.properties["disableVpnEncryption"] = $disableVpnEncryption
        }

        if($PSBoundParameters.Keys -icontains 'id')
        {
            $resource.properties["id"] = $id
        }

        if($PSBoundParameters.Keys -icontains 'allowVnetToVnetTraffic')
        {
            $resource.properties["allowVnetToVnetTraffic"] = $allowVnetToVnetTraffic
        }

        if($PSBoundParameters.Keys -icontains 'virtualWANName')
        {
            $resource.properties["virtualWANName"] = $virtualWANName
        }

        if($PSBoundParameters.Keys -icontains 'tags')
        {
            $resource.properties["tags"] = $tags
        }

        if($PSBoundParameters.Keys -icontains 'location')
        {
            $resource.properties["location"] = $location
        }

        $global:pulumiresources += $resource
        return $resource
    }
}
function New-AzureNativeNetworkEndpoint
{
    [Alias('azure_native_network_endpoint')]
    param (
        [parameter(mandatory=$False,HelpMessage='Specifies the location of the external or nested endpoints when using the ''Performance'' traffic routing method.)')]
        [string]
        $endpointLocation,
        [parameter(mandatory=$False,HelpMessage='The monitoring status of the endpoint.)')]
        [string]
        [ValidateSet('CheckingEndpoint', 'Online', 'Degraded', 'Disabled', 'Inactive', 'Stopped')]
        $endpointMonitorStatus,
        [parameter(mandatory=$False,HelpMessage='The minimum number of endpoints that must be available in the child profile in order for the parent profile to be considered available. Only applicable to endpoint of type ''NestedEndpoints''.)')]
        [int]
        $minChildEndpoints,
        [parameter(mandatory=$False,HelpMessage='The minimum number of IPv6 (DNS record type AAAA) endpoints that must be available in the child profile in order for the parent profile to be considered available. Only applicable to endpoint of type ''NestedEndpoints''.)')]
        [int]
        $minChildEndpointsIPv6,
        [parameter(mandatory=$False,HelpMessage='The name of the resource group containing the Traffic Manager endpoint to be created or updated.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='The Azure Resource URI of the of the endpoint. Not applicable to endpoints of type ''ExternalEndpoints''.)')]
        [string]
        $targetResourceId,
        [parameter(mandatory=$False,HelpMessage='The list of countries/regions mapped to this endpoint when using the ''Geographic'' traffic routing method. Please consult Traffic Manager Geographic documentation for a full list of accepted values.)')]
        [string[]]
        $geoMapping,
        [parameter(mandatory=$False,HelpMessage='Fully qualified resource Id for the resource. Ex - /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/trafficManagerProfiles/{resourceName})')]
        [string]
        $id,
        [parameter(mandatory=$False,HelpMessage='The priority of this endpoint when using the ''Priority'' traffic routing method. Possible values are from 1 to 1000, lower values represent higher priority. This is an optional parameter. If specified, it must be specified on all endpoints, and no two endpoints can share the same priority value.)')]
        [int]
        $priority,
        [parameter(mandatory=$False,HelpMessage='The type of the resource. Ex- Microsoft.Network/trafficManagerProfiles.)')]
        [string]
        $type,
        [parameter(mandatory=$False,HelpMessage='The fully-qualified DNS name or IP address of the endpoint. Traffic Manager returns this value in DNS responses to direct traffic to this endpoint.)')]
        [string]
        $target,
        [parameter(mandatory=$False,HelpMessage='The type of the Traffic Manager endpoint to be created or updated.)')]
        [string]
        $endpointType,
        [parameter(mandatory=$False,HelpMessage='The list of subnets, IP addresses, and/or address ranges mapped to this endpoint when using the ''Subnet'' traffic routing method. An empty list will match all ranges not covered by other endpoints.)')]
        $subnets,
        [parameter(mandatory=$False,HelpMessage='The weight of this endpoint when using the ''Weighted'' traffic routing method. Possible values are from 1 to 1000.)')]
        [int]
        $weight,
        [parameter(mandatory=$False,HelpMessage='List of custom headers.)')]
        $customHeaders,
        [parameter(mandatory=$False,HelpMessage='The name of the Traffic Manager endpoint to be created or updated.)')]
        [string]
        $endpointName,
        [parameter(mandatory=$False,HelpMessage='The name of the Traffic Manager profile.)')]
        [string]
        $profileName,
        [parameter(mandatory=$False,HelpMessage='The name of the resource)')]
        [string]
        $name,
        [parameter(mandatory=$False,HelpMessage='The minimum number of IPv4 (DNS record type A) endpoints that must be available in the child profile in order for the parent profile to be considered available. Only applicable to endpoint of type ''NestedEndpoints''.)')]
        [int]
        $minChildEndpointsIPv4,
        [parameter(mandatory=$False,HelpMessage='The status of the endpoint. If the endpoint is Enabled, it is probed for endpoint health and is included in the traffic routing method.)')]
        [string]
        [ValidateSet('Enabled', 'Disabled')]
        $endpointStatus,
        [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:network:Endpoint")

        $resource.properties["endpointType"] = $endpointType
        $resource.properties["profileName"] = $profileName
        $resource.properties["resourceGroupName"] = $resourceGroupName

        if($PSBoundParameters.Keys -icontains 'endpointLocation')
        {
            $resource.properties["endpointLocation"] = $endpointLocation
        }

        if($PSBoundParameters.Keys -icontains 'endpointMonitorStatus')
        {
            $resource.properties["endpointMonitorStatus"] = $endpointMonitorStatus
        }

        if($PSBoundParameters.Keys -icontains 'minChildEndpoints')
        {
            $resource.properties["minChildEndpoints"] = $minChildEndpoints
        }

        if($PSBoundParameters.Keys -icontains 'minChildEndpointsIPv6')
        {
            $resource.properties["minChildEndpointsIPv6"] = $minChildEndpointsIPv6
        }

        if($PSBoundParameters.Keys -icontains 'targetResourceId')
        {
            $resource.properties["targetResourceId"] = $targetResourceId
        }

        if($PSBoundParameters.Keys -icontains 'geoMapping')
        {
            $resource.properties["geoMapping"] = $geoMapping
        }

        if($PSBoundParameters.Keys -icontains 'id')
        {
            $resource.properties["id"] = $id
        }

        if($PSBoundParameters.Keys -icontains 'priority')
        {
            $resource.properties["priority"] = $priority
        }

        if($PSBoundParameters.Keys -icontains 'type')
        {
            $resource.properties["type"] = $type
        }

        if($PSBoundParameters.Keys -icontains 'target')
        {
            $resource.properties["target"] = $target
        }

        if($PSBoundParameters.Keys -icontains 'subnets')
        {
            $resource.properties["subnets"] = $subnets
        }

        if($PSBoundParameters.Keys -icontains 'weight')
        {
            $resource.properties["weight"] = $weight
        }

        if($PSBoundParameters.Keys -icontains 'customHeaders')
        {
            $resource.properties["customHeaders"] = $customHeaders
        }

        if($PSBoundParameters.Keys -icontains 'endpointName')
        {
            $resource.properties["endpointName"] = $endpointName
        }

        if($PSBoundParameters.Keys -icontains 'name')
        {
            $resource.properties["name"] = $name
        }

        if($PSBoundParameters.Keys -icontains 'minChildEndpointsIPv4')
        {
            $resource.properties["minChildEndpointsIPv4"] = $minChildEndpointsIPv4
        }

        if($PSBoundParameters.Keys -icontains 'endpointStatus')
        {
            $resource.properties["endpointStatus"] = $endpointStatus
        }

        $global:pulumiresources += $resource
        return $resource
    }
}
function New-AzureNativeNetworkDnsResolver
{
    [Alias('azure_native_network_dnsresolver')]
    param (
        [parameter(mandatory=$False,HelpMessage='The reference to the virtual network. This cannot be changed after creation.)')]
        [SubResource]
        $virtualNetwork,
        [parameter(mandatory=$False,HelpMessage='The name of the DNS resolver.)')]
        [string]
        $dnsResolverName,
        [parameter(mandatory=$False,HelpMessage='The name of the resource group. The name is case insensitive.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='Resource tags.)')]
        [hashtable]
        $tags,
        [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:network:DnsResolver")

        $resource.properties["resourceGroupName"] = $resourceGroupName
        $resource.properties["virtualNetwork"] = $virtualNetwork

        if($PSBoundParameters.Keys -icontains 'dnsResolverName')
        {
            $resource.properties["dnsResolverName"] = $dnsResolverName
        }

        if($PSBoundParameters.Keys -icontains 'tags')
        {
            $resource.properties["tags"] = $tags
        }

        if($PSBoundParameters.Keys -icontains 'location')
        {
            $resource.properties["location"] = $location
        }

        $global:pulumiresources += $resource
        return $resource
    }
}
function New-AzureNativeNetworkRouteFilter
{
    [Alias('azure_native_network_routefilter')]
    param (
        [parameter(mandatory=$False,HelpMessage='The name of the resource group.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='Collection of RouteFilterRules contained within a route filter.)')]
        $rules,
        [parameter(mandatory=$False,HelpMessage='Resource tags.)')]
        [hashtable]
        $tags,
        [parameter(mandatory=$False,HelpMessage='The name of the route filter.)')]
        [string]
        $routeFilterName,
        [parameter(mandatory=$False,HelpMessage='Resource ID.)')]
        [string]
        $id,
        [parameter(mandatory=$False,HelpMessage='Resource location.)')]
        [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:network:RouteFilter")

        $resource.properties["resourceGroupName"] = $resourceGroupName

        if($PSBoundParameters.Keys -icontains 'rules')
        {
            $resource.properties["rules"] = $rules
        }

        if($PSBoundParameters.Keys -icontains 'tags')
        {
            $resource.properties["tags"] = $tags
        }

        if($PSBoundParameters.Keys -icontains 'routeFilterName')
        {
            $resource.properties["routeFilterName"] = $routeFilterName
        }

        if($PSBoundParameters.Keys -icontains 'id')
        {
            $resource.properties["id"] = $id
        }

        if($PSBoundParameters.Keys -icontains 'location')
        {
            $resource.properties["location"] = $location
        }

        $global:pulumiresources += $resource
        return $resource
    }
}
function New-AzureNativeNetworkCustomIPPrefix
{
    [Alias('azure_native_network_customipprefix')]
    param (
        [parameter(mandatory=$False,HelpMessage='The name of the resource group.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='Resource ID.)')]
        [string]
        $id,
        [parameter(mandatory=$False,HelpMessage='The extended location of the custom IP prefix.)')]
        [ExtendedLocation]
        $extendedLocation,
        [parameter(mandatory=$False,HelpMessage='The prefix range in CIDR notation. Should include the start address and the prefix length.)')]
        [string]
        $cidr,
        [parameter(mandatory=$False,HelpMessage='The name of the custom IP prefix.)')]
        [string]
        $customIpPrefixName,
        [parameter(mandatory=$False,HelpMessage='A list of availability zones denoting the IP allocated for the resource needs to come from.)')]
        [string[]]
        $zones,
        [parameter(mandatory=$False,HelpMessage='Resource tags.)')]
        [hashtable]
        $tags,
        [parameter(mandatory=$False,HelpMessage='The commissioned state of the Custom IP Prefix.)')]
        [string]
        [ValidateSet('Provisioning', 'Provisioned', 'Commissioning', 'Commissioned', 'Decommissioning', 'Deprovisioning')]
        $commissionedState,
        [parameter(mandatory=$False,HelpMessage='Resource location.)')]
        [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:network:CustomIPPrefix")

        $resource.properties["resourceGroupName"] = $resourceGroupName

        if($PSBoundParameters.Keys -icontains 'id')
        {
            $resource.properties["id"] = $id
        }

        if($PSBoundParameters.Keys -icontains 'extendedLocation')
        {
            $resource.properties["extendedLocation"] = $extendedLocation
        }

        if($PSBoundParameters.Keys -icontains 'cidr')
        {
            $resource.properties["cidr"] = $cidr
        }

        if($PSBoundParameters.Keys -icontains 'customIpPrefixName')
        {
            $resource.properties["customIpPrefixName"] = $customIpPrefixName
        }

        if($PSBoundParameters.Keys -icontains 'zones')
        {
            $resource.properties["zones"] = $zones
        }

        if($PSBoundParameters.Keys -icontains 'tags')
        {
            $resource.properties["tags"] = $tags
        }

        if($PSBoundParameters.Keys -icontains 'commissionedState')
        {
            $resource.properties["commissionedState"] = $commissionedState
        }

        if($PSBoundParameters.Keys -icontains 'location')
        {
            $resource.properties["location"] = $location
        }

        $global:pulumiresources += $resource
        return $resource
    }
}