pspulumiyaml.azurenative.databoxedge.psm1

using module pspulumiyaml
function Invoke-AzureNativeFunctionDataboxedgeListOrderDCAccessCode
{
    param (
        [parameter(mandatory=$False,HelpMessage='The resource group name.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='The device name)')]
        [string]
        $deviceName
    )

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

        $functionObject = Invoke-PulumiFunction -Name azure-native:databoxedge:listOrderDCAccessCode -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionDataboxedgeGetKubernetesRole
{
    param (
        [parameter(mandatory=$False,HelpMessage='The resource group name.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='The role name.)')]
        [string]
        $name,
        [parameter(mandatory=$False,HelpMessage='The device name.)')]
        [string]
        $deviceName
    )

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

        $functionObject = Invoke-PulumiFunction -Name azure-native:databoxedge:getKubernetesRole -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionDataboxedgeGetBandwidthSchedule
{
    param (
        [parameter(mandatory=$False,HelpMessage='The resource group name.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='The bandwidth schedule name.)')]
        [string]
        $name,
        [parameter(mandatory=$False,HelpMessage='The device name.)')]
        [string]
        $deviceName
    )

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

        $functionObject = Invoke-PulumiFunction -Name azure-native:databoxedge:getBandwidthSchedule -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionDataboxedgeGetDeviceExtendedInformation
{
    param (
        [parameter(mandatory=$False,HelpMessage='The resource group name.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='The device name.)')]
        [string]
        $deviceName
    )

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

        $functionObject = Invoke-PulumiFunction -Name azure-native:databoxedge:getDeviceExtendedInformation -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionDataboxedgeGetAddon
{
    param (
        [parameter(mandatory=$False,HelpMessage='The addon name.)')]
        [string]
        $addonName,
        [parameter(mandatory=$False,HelpMessage='The resource group name.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='The role name.)')]
        [string]
        $roleName,
        [parameter(mandatory=$False,HelpMessage='The device name.)')]
        [string]
        $deviceName
    )

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

        $functionObject = Invoke-PulumiFunction -Name azure-native:databoxedge:getAddon -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionDataboxedgeGetMECRole
{
    param (
        [parameter(mandatory=$False,HelpMessage='The resource group name.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='The role name.)')]
        [string]
        $name,
        [parameter(mandatory=$False,HelpMessage='The device name.)')]
        [string]
        $deviceName
    )

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

        $functionObject = Invoke-PulumiFunction -Name azure-native:databoxedge:getMECRole -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionDataboxedgeGetMonitoringConfig
{
    param (
        [parameter(mandatory=$False,HelpMessage='The role name.)')]
        [string]
        $roleName,
        [parameter(mandatory=$False,HelpMessage='The resource group name.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='The device name.)')]
        [string]
        $deviceName
    )

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

        $functionObject = Invoke-PulumiFunction -Name azure-native:databoxedge:getMonitoringConfig -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionDataboxedgeGetRole
{
    param (
        [parameter(mandatory=$False,HelpMessage='The resource group name.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='The role name.)')]
        [string]
        $name,
        [parameter(mandatory=$False,HelpMessage='The device name.)')]
        [string]
        $deviceName
    )

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

        $functionObject = Invoke-PulumiFunction -Name azure-native:databoxedge:getRole -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionDataboxedgeGetDevice
{
    param (
        [parameter(mandatory=$False,HelpMessage='The resource group name.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='The device name.)')]
        [string]
        $deviceName
    )

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

        $functionObject = Invoke-PulumiFunction -Name azure-native:databoxedge:getDevice -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionDataboxedgeGetOrder
{
    param (
        [parameter(mandatory=$False,HelpMessage='The resource group name.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='The device name.)')]
        [string]
        $deviceName
    )

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

        $functionObject = Invoke-PulumiFunction -Name azure-native:databoxedge:getOrder -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionDataboxedgeGetIoTAddon
{
    param (
        [parameter(mandatory=$False,HelpMessage='The addon name.)')]
        [string]
        $addonName,
        [parameter(mandatory=$False,HelpMessage='The resource group name.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='The role name.)')]
        [string]
        $roleName,
        [parameter(mandatory=$False,HelpMessage='The device name.)')]
        [string]
        $deviceName
    )

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

        $functionObject = Invoke-PulumiFunction -Name azure-native:databoxedge:getIoTAddon -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionDataboxedgeGetContainer
{
    param (
        [parameter(mandatory=$False,HelpMessage='The container Name)')]
        [string]
        $containerName,
        [parameter(mandatory=$False,HelpMessage='The resource group name.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='The device name.)')]
        [string]
        $deviceName,
        [parameter(mandatory=$False,HelpMessage='The Storage Account Name)')]
        [string]
        $storageAccountName
    )

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

        $functionObject = Invoke-PulumiFunction -Name azure-native:databoxedge:getContainer -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionDataboxedgeGetFileEventTrigger
{
    param (
        [parameter(mandatory=$False,HelpMessage='The resource group name.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='The trigger name.)')]
        [string]
        $name,
        [parameter(mandatory=$False,HelpMessage='The device name.)')]
        [string]
        $deviceName
    )

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

        $functionObject = Invoke-PulumiFunction -Name azure-native:databoxedge:getFileEventTrigger -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionDataboxedgeGetPeriodicTimerEventTrigger
{
    param (
        [parameter(mandatory=$False,HelpMessage='The resource group name.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='The trigger name.)')]
        [string]
        $name,
        [parameter(mandatory=$False,HelpMessage='The device name.)')]
        [string]
        $deviceName
    )

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

        $functionObject = Invoke-PulumiFunction -Name azure-native:databoxedge:getPeriodicTimerEventTrigger -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionDataboxedgeGetArcAddon
{
    param (
        [parameter(mandatory=$False,HelpMessage='The addon name.)')]
        [string]
        $addonName,
        [parameter(mandatory=$False,HelpMessage='The resource group name.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='The role name.)')]
        [string]
        $roleName,
        [parameter(mandatory=$False,HelpMessage='The device name.)')]
        [string]
        $deviceName
    )

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

        $functionObject = Invoke-PulumiFunction -Name azure-native:databoxedge:getArcAddon -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionDataboxedgeGetStorageAccount
{
    param (
        [parameter(mandatory=$False,HelpMessage='The resource group name.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='The device name.)')]
        [string]
        $deviceName,
        [parameter(mandatory=$False,HelpMessage='The storage account name.)')]
        [string]
        $storageAccountName
    )

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

        $functionObject = Invoke-PulumiFunction -Name azure-native:databoxedge:getStorageAccount -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionDataboxedgeGetCloudEdgeManagementRole
{
    param (
        [parameter(mandatory=$False,HelpMessage='The resource group name.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='The role name.)')]
        [string]
        $name,
        [parameter(mandatory=$False,HelpMessage='The device name.)')]
        [string]
        $deviceName
    )

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

        $functionObject = Invoke-PulumiFunction -Name azure-native:databoxedge:getCloudEdgeManagementRole -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionDataboxedgeGetStorageAccountCredential
{
    param (
        [parameter(mandatory=$False,HelpMessage='The resource group name.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='The storage account credential name.)')]
        [string]
        $name,
        [parameter(mandatory=$False,HelpMessage='The device name.)')]
        [string]
        $deviceName
    )

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

        $functionObject = Invoke-PulumiFunction -Name azure-native:databoxedge:getStorageAccountCredential -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionDataboxedgeGetUser
{
    param (
        [parameter(mandatory=$False,HelpMessage='The resource group name.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='The user name.)')]
        [string]
        $name,
        [parameter(mandatory=$False,HelpMessage='The device name.)')]
        [string]
        $deviceName
    )

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

        $functionObject = Invoke-PulumiFunction -Name azure-native:databoxedge:getUser -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionDataboxedgeGetTrigger
{
    param (
        [parameter(mandatory=$False,HelpMessage='The resource group name.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='The trigger name.)')]
        [string]
        $name,
        [parameter(mandatory=$False,HelpMessage='The device name.)')]
        [string]
        $deviceName
    )

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

        $functionObject = Invoke-PulumiFunction -Name azure-native:databoxedge:getTrigger -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionDataboxedgeGetIoTRole
{
    param (
        [parameter(mandatory=$False,HelpMessage='The resource group name.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='The role name.)')]
        [string]
        $name,
        [parameter(mandatory=$False,HelpMessage='The device name.)')]
        [string]
        $deviceName
    )

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

        $functionObject = Invoke-PulumiFunction -Name azure-native:databoxedge:getIoTRole -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionDataboxedgeGetShare
{
    param (
        [parameter(mandatory=$False,HelpMessage='The resource group name.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='The share name.)')]
        [string]
        $name,
        [parameter(mandatory=$False,HelpMessage='The device name.)')]
        [string]
        $deviceName
    )

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

        $functionObject = Invoke-PulumiFunction -Name azure-native:databoxedge:getShare -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
class RoleSinkInfo
{
    [string] $roleId
}
function New-AzureNativeTypeDataboxedgeRoleSinkInfo
{
    param (
        [parameter(mandatory=$False,HelpMessage='Compute role ID.)')]
        [string]
        $roleId
    )

    process
    {
        return $([RoleSinkInfo]$PSBoundParameters)
    }
}
class FileSourceInfo
{
    [string] $shareId
}
function New-AzureNativeTypeDataboxedgeFileSourceInfo
{
    param (
        [parameter(mandatory=$False,HelpMessage='File share ID.)')]
        [string]
        $shareId
    )

    process
    {
        return $([FileSourceInfo]$PSBoundParameters)
    }
}
function New-AzureNativeDataboxedgeFileEventTrigger
{
    [Alias('azure_native_databoxedge_fileeventtrigger')]
    param (
        [parameter(mandatory=$False,HelpMessage='The trigger name.)')]
        [string]
        $name,
        [parameter(mandatory=$False,HelpMessage='The resource group name.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='Role sink info.)')]
        [RoleSinkInfo]
        $sinkInfo,
        [parameter(mandatory=$False,HelpMessage='Creates or updates a trigger)')]
        [string]
        $deviceName,
        [parameter(mandatory=$False,HelpMessage='Trigger Kind.
Expected value is ''FileEvent''.)'
)]
        [string]
        $kind,
        [parameter(mandatory=$False,HelpMessage='File event source details.)')]
        [FileSourceInfo]
        $sourceInfo,
        [parameter(mandatory=$False,HelpMessage='A custom context tag typically used to correlate the trigger against its usage. For example, if a periodic timer trigger is intended for certain specific IoT modules in the device, the tag can be the name or the image URL of the module.)')]
        [string]
        $customContextTag,
        [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:databoxedge:FileEventTrigger")

        $resource.properties["deviceName"] = $deviceName
        $resource.properties["kind"] = $kind
        $resource.properties["resourceGroupName"] = $resourceGroupName
        $resource.properties["sinkInfo"] = $sinkInfo
        $resource.properties["sourceInfo"] = $sourceInfo

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

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

        $global:pulumiresources += $resource
        return $resource
    }
}
function New-AzureNativeDataboxedgeAddon
{
    [Alias('azure_native_databoxedge_addon')]
    param (
        [parameter(mandatory=$False,HelpMessage='The role name.)')]
        [string]
        $roleName,
        [parameter(mandatory=$False,HelpMessage='The addon name.)')]
        [string]
        $addonName,
        [parameter(mandatory=$False,HelpMessage='The resource group name.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='Addon type.)')]
        [string]
        [ValidateSet('IotEdge', 'ArcForKubernetes')]
        $kind,
        [parameter(mandatory=$False,HelpMessage='The device name.)')]
        [string]
        $deviceName,
        [parameter(mandatory,HelpMessage='The reference to call when you want to make a dependency to another resource')]
        [string]
        $pulumiid
    )

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

        $resource.properties["deviceName"] = $deviceName
        $resource.properties["kind"] = $kind
        $resource.properties["resourceGroupName"] = $resourceGroupName
        $resource.properties["roleName"] = $roleName

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

        $global:pulumiresources += $resource
        return $resource
    }
}
function New-AzureNativeDataboxedgeContainer
{
    [Alias('azure_native_databoxedge_container')]
    param (
        [parameter(mandatory=$False,HelpMessage='The container name.)')]
        [string]
        $containerName,
        [parameter(mandatory=$False,HelpMessage='The resource group name.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='DataFormat for Container)')]
        [string]
        [ValidateSet('BlockBlob', 'PageBlob', 'AzureFile')]
        $dataFormat,
        [parameter(mandatory=$False,HelpMessage='The device name.)')]
        [string]
        $deviceName,
        [parameter(mandatory=$False,HelpMessage='The Storage Account Name)')]
        [string]
        $storageAccountName,
        [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:databoxedge:Container")

        $resource.properties["dataFormat"] = $dataFormat
        $resource.properties["deviceName"] = $deviceName
        $resource.properties["resourceGroupName"] = $resourceGroupName
        $resource.properties["storageAccountName"] = $storageAccountName

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

        $global:pulumiresources += $resource
        return $resource
    }
}
class AsymmetricEncryptedSecret
{
    [ValidateSet('None', 'AES256', 'RSAES_PKCS1_v_1_5')]
    [string] $encryptionAlgorithm
    [ValidateSet('None', 'AES256', 'RSAES_PKCS1_v_1_5')]
    [string] $value
    [ValidateSet('None', 'AES256', 'RSAES_PKCS1_v_1_5')]
    [string] $encryptionCertThumbprint
}
function New-AzureNativeTypeDataboxedgeAsymmetricEncryptedSecret
{
    param (
        [parameter(mandatory=$False,HelpMessage='The algorithm used to encrypt "Value".)')]
        [string]
        [ValidateSet('None', 'AES256', 'RSAES_PKCS1_v_1_5')]
        $encryptionAlgorithm,
        [parameter(mandatory=$False,HelpMessage='The value of the secret.)')]
        [string]
        $value,
        [parameter(mandatory=$False,HelpMessage='Thumbprint certificate used to encrypt \"Value\". If the value is unencrypted, it will be null.)')]
        [string]
        $encryptionCertThumbprint
    )

    process
    {
        return $([AsymmetricEncryptedSecret]$PSBoundParameters)
    }
}
function New-AzureNativeDataboxedgeMECRole
{
    [Alias('azure_native_databoxedge_mecrole')]
    param (
        [parameter(mandatory=$False,HelpMessage='The role name.)')]
        [string]
        $name,
        [parameter(mandatory=$False,HelpMessage='Activation key of the MEC.)')]
        [AsymmetricEncryptedSecret]
        $connectionString,
        [parameter(mandatory=$False,HelpMessage='The resource group name.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='The device name.)')]
        [string]
        $deviceName,
        [parameter(mandatory=$False,HelpMessage='Role type.
Expected value is ''MEC''.)'
)]
        [string]
        $kind,
        [parameter(mandatory=$False,HelpMessage='Role status.)')]
        [string]
        [ValidateSet('Enabled', 'Disabled')]
        $roleStatus,
        [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:databoxedge:MECRole")

        $resource.properties["deviceName"] = $deviceName
        $resource.properties["kind"] = $kind
        $resource.properties["resourceGroupName"] = $resourceGroupName
        $resource.properties["roleStatus"] = $roleStatus

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

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

        $global:pulumiresources += $resource
        return $resource
    }
}
function New-AzureNativeDataboxedgeArcAddon
{
    [Alias('azure_native_databoxedge_arcaddon')]
    param (
        [parameter(mandatory=$False,HelpMessage='Arc resource subscription Id)')]
        [string]
        $subscriptionId,
        [parameter(mandatory=$False,HelpMessage='The addon name.)')]
        [string]
        $addonName,
        [parameter(mandatory=$False,HelpMessage='The device name.)')]
        [string]
        $deviceName,
        [parameter(mandatory=$False,HelpMessage='The resource group name.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='Arc resource location)')]
        [string]
        $resourceLocation,
        [parameter(mandatory=$False,HelpMessage='The role name.)')]
        [string]
        $roleName,
        [parameter(mandatory=$False,HelpMessage='Addon type.
Expected value is ''ArcForKubernetes''.)'
)]
        [string]
        $kind,
        [parameter(mandatory=$False,HelpMessage='Arc resource Name)')]
        [string]
        $resourceName,
        [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:databoxedge:ArcAddon")

        $resource.properties["deviceName"] = $deviceName
        $resource.properties["kind"] = $kind
        $resource.properties["resourceGroupName"] = $resourceGroupName
        $resource.properties["resourceLocation"] = $resourceLocation
        $resource.properties["resourceName"] = $resourceName
        $resource.properties["roleName"] = $roleName
        $resource.properties["subscriptionId"] = $subscriptionId

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

        $global:pulumiresources += $resource
        return $resource
    }
}
function New-AzureNativeDataboxedgeCloudEdgeManagementRole
{
    [Alias('azure_native_databoxedge_cloudedgemanagementrole')]
    param (
        [parameter(mandatory=$False,HelpMessage='The resource group name.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='Role type.
Expected value is ''CloudEdgeManagement''.)'
)]
        [string]
        $kind,
        [parameter(mandatory=$False,HelpMessage='The role name.)')]
        [string]
        $name,
        [parameter(mandatory=$False,HelpMessage='Role status.)')]
        [string]
        [ValidateSet('Enabled', 'Disabled')]
        $roleStatus,
        [parameter(mandatory=$False,HelpMessage='The device name.)')]
        [string]
        $deviceName,
        [parameter(mandatory,HelpMessage='The reference to call when you want to make a dependency to another resource')]
        [string]
        $pulumiid
    )

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

        $resource.properties["deviceName"] = $deviceName
        $resource.properties["kind"] = $kind
        $resource.properties["resourceGroupName"] = $resourceGroupName
        $resource.properties["roleStatus"] = $roleStatus

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

        $global:pulumiresources += $resource
        return $resource
    }
}
class Sku
{
    [ValidateSet('Gateway', 'Edge', 'TEA_1Node', 'TEA_1Node_UPS', 'TEA_1Node_Heater', 'TEA_1Node_UPS_Heater', 'TEA_4Node_Heater', 'TEA_4Node_UPS_Heater', 'TMA', 'TDC', 'TCA_Small', 'GPU', 'TCA_Large', 'EdgeP_Base', 'EdgeP_High', 'EdgePR_Base', 'EdgePR_Base_UPS', 'EdgeMR_Mini', 'RCA_Small', 'RCA_Large', 'RDC')]
    [string] $name
    [ValidateSet('Standard')]
    [string] $tier
}
function New-AzureNativeTypeDataboxedgeSku
{
    param (
        [parameter(mandatory=$False,HelpMessage='SKU name.)')]
        [string]
        [ValidateSet('Gateway', 'Edge', 'TEA_1Node', 'TEA_1Node_UPS', 'TEA_1Node_Heater', 'TEA_1Node_UPS_Heater', 'TEA_4Node_Heater', 'TEA_4Node_UPS_Heater', 'TMA', 'TDC', 'TCA_Small', 'GPU', 'TCA_Large', 'EdgeP_Base', 'EdgeP_High', 'EdgePR_Base', 'EdgePR_Base_UPS', 'EdgeMR_Mini', 'RCA_Small', 'RCA_Large', 'RDC')]
        $name,
        [parameter(mandatory=$False,HelpMessage='The SKU tier. This is based on the SKU name.)')]
        [string]
        [ValidateSet('Standard')]
        $tier
    )

    process
    {
        return $([Sku]$PSBoundParameters)
    }
}
class ResourceIdentity
{
    [ValidateSet('None', 'SystemAssigned', 'UserAssigned')]
    [string] $type
}
function New-AzureNativeTypeDataboxedgeResourceIdentity
{
    param (
        [parameter(mandatory=$False,HelpMessage='Identity type)')]
        [string]
        [ValidateSet('None', 'SystemAssigned', 'UserAssigned')]
        $type
    )

    process
    {
        return $([ResourceIdentity]$PSBoundParameters)
    }
}
function New-AzureNativeDataboxedgeDevice
{
    [Alias('azure_native_databoxedge_device')]
    param (
        [parameter(mandatory=$False,HelpMessage='The resource group name.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='The SKU type.)')]
        [Sku]
        $sku,
        [parameter(mandatory=$False,HelpMessage='The status of the Data Box Edge/Gateway device.)')]
        [string]
        [ValidateSet('ReadyToSetup', 'Online', 'Offline', 'NeedsAttention', 'Disconnected', 'PartiallyDisconnected', 'Maintenance')]
        $dataBoxEdgeDeviceStatus,
        [parameter(mandatory=$False,HelpMessage='The device name.)')]
        [string]
        $deviceName,
        [parameter(mandatory=$False,HelpMessage='Msi identity of the resource)')]
        [ResourceIdentity]
        $identity,
        [parameter(mandatory=$False,HelpMessage='The list of tags that describe the device. These tags can be used to view and group this device (across resource groups).)')]
        [hashtable]
        $tags,
        [parameter(mandatory=$False,HelpMessage='The location of the device. This is a supported and registered Azure geographical region (for example, West US, East US, or Southeast Asia). The geographical region of a device cannot be changed once it is created, but if an identical geographical region is specified on update, the request will succeed.)')]
        [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:databoxedge:Device")

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

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

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

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

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

        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-AzureNativeDataboxedgeRole
{
    [Alias('azure_native_databoxedge_role')]
    param (
        [parameter(mandatory=$False,HelpMessage='The resource group name.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='Role type.)')]
        [string]
        [ValidateSet('IOT', 'ASA', 'Functions', 'Cognitive', 'MEC', 'CloudEdgeManagement', 'Kubernetes')]
        $kind,
        [parameter(mandatory=$False,HelpMessage='The role name.)')]
        [string]
        $name,
        [parameter(mandatory=$False,HelpMessage='The device name.)')]
        [string]
        $deviceName,
        [parameter(mandatory,HelpMessage='The reference to call when you want to make a dependency to another resource')]
        [string]
        $pulumiid
    )

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

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

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

        $global:pulumiresources += $resource
        return $resource
    }
}
class SymmetricKey
{
    [AsymmetricEncryptedSecret] $connectionString
}
function New-AzureNativeTypeDataboxedgeSymmetricKey
{
    param (
        [parameter(mandatory=$False,HelpMessage='Connection string based on the symmetric key.)')]
        [AsymmetricEncryptedSecret]
        $connectionString
    )

    process
    {
        return $([SymmetricKey]$PSBoundParameters)
    }
}
class Authentication
{
    [SymmetricKey] $symmetricKey
}
function New-AzureNativeTypeDataboxedgeAuthentication
{
    param (
        [parameter(mandatory=$False,HelpMessage='Symmetric key for authentication.)')]
        [SymmetricKey]
        $symmetricKey
    )

    process
    {
        return $([Authentication]$PSBoundParameters)
    }
}
class IoTDeviceInfo
{
    [string] $ioTHostHub
    [string] $deviceId
    [string] $ioTHostHubId
    [Authentication] $authentication
}
function New-AzureNativeTypeDataboxedgeIoTDeviceInfo
{
    param (
        [parameter(mandatory=$False,HelpMessage='Host name for the IoT hub associated to the device.)')]
        [string]
        $ioTHostHub,
        [parameter(mandatory=$False,HelpMessage='ID of the IoT device/edge device.)')]
        [string]
        $deviceId,
        [parameter(mandatory=$False,HelpMessage='Id for the IoT hub associated to the device.)')]
        [string]
        $ioTHostHubId,
        [parameter(mandatory=$False,HelpMessage='Encrypted IoT device/IoT edge device connection string.)')]
        [Authentication]
        $authentication
    )

    process
    {
        return $([IoTDeviceInfo]$PSBoundParameters)
    }
}
function New-AzureNativeDataboxedgeIoTAddon
{
    [Alias('azure_native_databoxedge_iotaddon')]
    param (
        [parameter(mandatory=$False,HelpMessage='Addon type.
Expected value is ''IotEdge''.)'
)]
        [string]
        $kind,
        [parameter(mandatory=$False,HelpMessage='The resource group name.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='The device name.)')]
        [string]
        $deviceName,
        [parameter(mandatory=$False,HelpMessage='IoT edge device to which the IoT Addon needs to be configured.)')]
        [IoTDeviceInfo]
        $ioTEdgeDeviceDetails,
        [parameter(mandatory=$False,HelpMessage='IoT device metadata to which appliance needs to be connected.)')]
        [IoTDeviceInfo]
        $ioTDeviceDetails,
        [parameter(mandatory=$False,HelpMessage='The role name.)')]
        [string]
        $roleName,
        [parameter(mandatory=$False,HelpMessage='The addon name.)')]
        [string]
        $addonName,
        [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:databoxedge:IoTAddon")

        $resource.properties["deviceName"] = $deviceName
        $resource.properties["ioTDeviceDetails"] = $ioTDeviceDetails
        $resource.properties["ioTEdgeDeviceDetails"] = $ioTEdgeDeviceDetails
        $resource.properties["kind"] = $kind
        $resource.properties["resourceGroupName"] = $resourceGroupName
        $resource.properties["roleName"] = $roleName

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

        $global:pulumiresources += $resource
        return $resource
    }
}
function New-AzureNativeDataboxedgeTrigger
{
    [Alias('azure_native_databoxedge_trigger')]
    param (
        [parameter(mandatory=$False,HelpMessage='The resource group name.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='Trigger Kind.)')]
        [string]
        [ValidateSet('FileEvent', 'PeriodicTimerEvent')]
        $kind,
        [parameter(mandatory=$False,HelpMessage='The trigger name.)')]
        [string]
        $name,
        [parameter(mandatory=$False,HelpMessage='Creates or updates a trigger)')]
        [string]
        $deviceName,
        [parameter(mandatory,HelpMessage='The reference to call when you want to make a dependency to another resource')]
        [string]
        $pulumiid
    )

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

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

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

        $global:pulumiresources += $resource
        return $resource
    }
}
function New-AzureNativeDataboxedgeBandwidthSchedule
{
    [Alias('azure_native_databoxedge_bandwidthschedule')]
    param (
        [parameter(mandatory=$False,HelpMessage='The bandwidth schedule name which needs to be added/updated.)')]
        [string]
        $name,
        [parameter(mandatory=$False,HelpMessage='The bandwidth rate in Mbps.)')]
        [int]
        $rateInMbps,
        [parameter(mandatory=$False,HelpMessage='The device name.)')]
        [string]
        $deviceName,
        [parameter(mandatory=$False,HelpMessage='The stop time of the schedule in UTC.)')]
        [string]
        $stop,
        [parameter(mandatory=$False,HelpMessage='The start time of the schedule in UTC.)')]
        [string]
        $start,
        [parameter(mandatory=$False,HelpMessage='The resource group name.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='The days of the week when this schedule is applicable.)')]
        $days,
        [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:databoxedge:BandwidthSchedule")

        $resource.properties["days"] = $days
        $resource.properties["deviceName"] = $deviceName
        $resource.properties["rateInMbps"] = $rateInMbps
        $resource.properties["resourceGroupName"] = $resourceGroupName
        $resource.properties["start"] = $start
        $resource.properties["stop"] = $stop

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

        $global:pulumiresources += $resource
        return $resource
    }
}
class AzureContainerInfo
{
    [string] $containerName
    [string] $storageAccountCredentialId
    [ValidateSet('BlockBlob', 'PageBlob', 'AzureFile')]
    [string] $dataFormat
}
function New-AzureNativeTypeDataboxedgeAzureContainerInfo
{
    param (
        [parameter(mandatory=$False,HelpMessage='Container name (Based on the data format specified, this represents the name of Azure Files/Page blob/Block blob).)')]
        [string]
        $containerName,
        [parameter(mandatory=$False,HelpMessage='ID of the storage account credential used to access storage.)')]
        [string]
        $storageAccountCredentialId,
        [parameter(mandatory=$False,HelpMessage='Storage format used for the file represented by the share.)')]
        [string]
        [ValidateSet('BlockBlob', 'PageBlob', 'AzureFile')]
        $dataFormat
    )

    process
    {
        return $([AzureContainerInfo]$PSBoundParameters)
    }
}
class RefreshDetails
{
    [string] $inProgressRefreshJobId
    [string] $errorManifestFile
    [string] $lastCompletedRefreshJobTimeInUTC
    [string] $lastJob
}
function New-AzureNativeTypeDataboxedgeRefreshDetails
{
    param (
        [parameter(mandatory=$False,HelpMessage='If a refresh job is currently in progress on this share or container, this field indicates the ARM resource ID of that job. The field is empty if no job is in progress.)')]
        [string]
        $inProgressRefreshJobId,
        [parameter(mandatory=$False,HelpMessage='Indicates the relative path of the error xml for the last refresh job on this particular share or container, if any. This could be a failed job or a successful job.)')]
        [string]
        $errorManifestFile,
        [parameter(mandatory=$False,HelpMessage='Indicates the completed time for the last refresh job on this particular share or container, if any.This could be a failed job or a successful job.)')]
        [string]
        $lastCompletedRefreshJobTimeInUTC,
        [parameter(mandatory=$False,HelpMessage='Indicates the id of the last refresh job on this particular share or container,if any. This could be a failed job or a successful job.)')]
        [string]
        $lastJob
    )

    process
    {
        return $([RefreshDetails]$PSBoundParameters)
    }
}
function New-AzureNativeDataboxedgeShare
{
    [Alias('azure_native_databoxedge_share')]
    param (
        [parameter(mandatory=$False,HelpMessage='List of IP addresses and corresponding access rights on the share(required for NFS protocol).)')]
        $clientAccessRights,
        [parameter(mandatory=$False,HelpMessage='The resource group name.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='Access protocol to be used by the share.)')]
        [string]
        [ValidateSet('SMB', 'NFS')]
        $accessProtocol,
        [parameter(mandatory=$False,HelpMessage='The device name.)')]
        [string]
        $deviceName,
        [parameter(mandatory=$False,HelpMessage='Current monitoring status of the share.)')]
        [string]
        [ValidateSet('Enabled', 'Disabled')]
        $monitoringStatus,
        [parameter(mandatory=$False,HelpMessage='Current status of the share.)')]
        [string]
        [ValidateSet('Offline', 'Unknown', 'OK', 'Updating', 'NeedsAttention')]
        $shareStatus,
        [parameter(mandatory=$False,HelpMessage='Mapping of users and corresponding access rights on the share (required for SMB protocol).)')]
        $userAccessRights,
        [parameter(mandatory=$False,HelpMessage='Data policy of the share.)')]
        [string]
        [ValidateSet('Cloud', 'Local')]
        $dataPolicy,
        [parameter(mandatory=$False,HelpMessage='Azure container mapping for the share.)')]
        [AzureContainerInfo]
        $azureContainerInfo,
        [parameter(mandatory=$False,HelpMessage='Description for the share.)')]
        [string]
        $description,
        [parameter(mandatory=$False,HelpMessage='The share name.)')]
        [string]
        $name,
        [parameter(mandatory=$False,HelpMessage='Details of the refresh job on this share.)')]
        [RefreshDetails]
        $refreshDetails,
        [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:databoxedge:Share")

        $resource.properties["accessProtocol"] = $accessProtocol
        $resource.properties["deviceName"] = $deviceName
        $resource.properties["monitoringStatus"] = $monitoringStatus
        $resource.properties["resourceGroupName"] = $resourceGroupName
        $resource.properties["shareStatus"] = $shareStatus

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

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

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

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

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

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

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

        $global:pulumiresources += $resource
        return $resource
    }
}
class ImageRepositoryCredential
{
    [string] $userName
    [string] $imageRepositoryUrl
    [AsymmetricEncryptedSecret] $password
}
function New-AzureNativeTypeDataboxedgeImageRepositoryCredential
{
    param (
        [parameter(mandatory=$False,HelpMessage='Repository user name.)')]
        [string]
        $userName,
        [parameter(mandatory=$False,HelpMessage='Image repository url (e.g.: mcr.microsoft.com).)')]
        [string]
        $imageRepositoryUrl,
        [parameter(mandatory=$False,HelpMessage='Repository user password.)')]
        [AsymmetricEncryptedSecret]
        $password
    )

    process
    {
        return $([ImageRepositoryCredential]$PSBoundParameters)
    }
}
class IoTEdgeAgentInfo
{
    [ImageRepositoryCredential] $imageRepository
    [string] $imageName
    [string] $tag
}
function New-AzureNativeTypeDataboxedgeIoTEdgeAgentInfo
{
    param (
        [parameter(mandatory=$False,HelpMessage='Image repository details.)')]
        [ImageRepositoryCredential]
        $imageRepository,
        [parameter(mandatory=$False,HelpMessage='Name of the IoT edge agent image.)')]
        [string]
        $imageName,
        [parameter(mandatory=$False,HelpMessage='Image Tag.)')]
        [string]
        $tag
    )

    process
    {
        return $([IoTEdgeAgentInfo]$PSBoundParameters)
    }
}
class ComputeResource
{
    [int] $memoryInGB
    [int] $processorCount
}
function New-AzureNativeTypeDataboxedgeComputeResource
{
    param (
        [parameter(mandatory=$False,HelpMessage='Memory in GB)')]
        [int]
        $memoryInGB,
        [parameter(mandatory=$False,HelpMessage='Processor count)')]
        [int]
        $processorCount
    )

    process
    {
        return $([ComputeResource]$PSBoundParameters)
    }
}
function New-AzureNativeDataboxedgeIoTRole
{
    [Alias('azure_native_databoxedge_iotrole')]
    param (
        [parameter(mandatory=$False,HelpMessage='The resource group name.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='Mount points of shares in role(s).)')]
        $shareMappings,
        [parameter(mandatory=$False,HelpMessage='The device name.)')]
        [string]
        $deviceName,
        [parameter(mandatory=$False,HelpMessage='IoT edge device to which the IoT role needs to be configured.)')]
        [IoTDeviceInfo]
        $ioTEdgeDeviceDetails,
        [parameter(mandatory=$False,HelpMessage='Iot edge agent details to download the agent and bootstrap iot runtime.)')]
        [IoTEdgeAgentInfo]
        $ioTEdgeAgentInfo,
        [parameter(mandatory=$False,HelpMessage='Host OS supported by the IoT role.)')]
        [string]
        [ValidateSet('Windows', 'Linux')]
        $hostPlatform,
        [parameter(mandatory=$False,HelpMessage='Role type.
Expected value is ''IOT''.)'
)]
        [string]
        $kind,
        [parameter(mandatory=$False,HelpMessage='Role status.)')]
        [string]
        [ValidateSet('Enabled', 'Disabled')]
        $roleStatus,
        [parameter(mandatory=$False,HelpMessage='IoT device metadata to which data box edge device needs to be connected.)')]
        [IoTDeviceInfo]
        $ioTDeviceDetails,
        [parameter(mandatory=$False,HelpMessage='The role name.)')]
        [string]
        $name,
        [parameter(mandatory=$False,HelpMessage='Resource allocation)')]
        [ComputeResource]
        $computeResource,
        [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:databoxedge:IoTRole")

        $resource.properties["deviceName"] = $deviceName
        $resource.properties["hostPlatform"] = $hostPlatform
        $resource.properties["ioTDeviceDetails"] = $ioTDeviceDetails
        $resource.properties["ioTEdgeDeviceDetails"] = $ioTEdgeDeviceDetails
        $resource.properties["kind"] = $kind
        $resource.properties["resourceGroupName"] = $resourceGroupName
        $resource.properties["roleStatus"] = $roleStatus

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

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

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

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

        $global:pulumiresources += $resource
        return $resource
    }
}
class PeriodicTimerSourceInfo
{
    [string] $topic
    [string] $startTime
    [string] $schedule
}
function New-AzureNativeTypeDataboxedgePeriodicTimerSourceInfo
{
    param (
        [parameter(mandatory=$False,HelpMessage='Topic where periodic events are published to IoT device.)')]
        [string]
        $topic,
        [parameter(mandatory=$False,HelpMessage='The time of the day that results in a valid trigger. Schedule is computed with reference to the time specified upto seconds. If timezone is not specified the time will considered to be in device timezone. The value will always be returned as UTC time.)')]
        [string]
        $startTime,
        [parameter(mandatory=$False,HelpMessage='Periodic frequency at which timer event needs to be raised. Supports daily, hourly, minutes, and seconds.)')]
        [string]
        $schedule
    )

    process
    {
        return $([PeriodicTimerSourceInfo]$PSBoundParameters)
    }
}
function New-AzureNativeDataboxedgePeriodicTimerEventTrigger
{
    [Alias('azure_native_databoxedge_periodictimereventtrigger')]
    param (
        [parameter(mandatory=$False,HelpMessage='The trigger name.)')]
        [string]
        $name,
        [parameter(mandatory=$False,HelpMessage='The resource group name.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='Role Sink information.)')]
        [RoleSinkInfo]
        $sinkInfo,
        [parameter(mandatory=$False,HelpMessage='Creates or updates a trigger)')]
        [string]
        $deviceName,
        [parameter(mandatory=$False,HelpMessage='Trigger Kind.
Expected value is ''PeriodicTimerEvent''.)'
)]
        [string]
        $kind,
        [parameter(mandatory=$False,HelpMessage='Periodic timer details.)')]
        [PeriodicTimerSourceInfo]
        $sourceInfo,
        [parameter(mandatory=$False,HelpMessage='A custom context tag typically used to correlate the trigger against its usage. For example, if a periodic timer trigger is intended for certain specific IoT modules in the device, the tag can be the name or the image URL of the module.)')]
        [string]
        $customContextTag,
        [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:databoxedge:PeriodicTimerEventTrigger")

        $resource.properties["deviceName"] = $deviceName
        $resource.properties["kind"] = $kind
        $resource.properties["resourceGroupName"] = $resourceGroupName
        $resource.properties["sinkInfo"] = $sinkInfo
        $resource.properties["sourceInfo"] = $sourceInfo

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

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

        $global:pulumiresources += $resource
        return $resource
    }
}
class KubernetesClusterInfo
{
    [string] $version
}
function New-AzureNativeTypeDataboxedgeKubernetesClusterInfo
{
    param (
        [parameter(mandatory=$False,HelpMessage='Kubernetes cluster version)')]
        [string]
        $version
    )

    process
    {
        return $([KubernetesClusterInfo]$PSBoundParameters)
    }
}
class MountPointMap
{
    [string] $shareId
}
function New-AzureNativeTypeDataboxedgeMountPointMap
{
    param (
        [parameter(mandatory=$False,HelpMessage='ID of the share mounted to the role VM.)')]
        [string]
        $shareId
    )

    process
    {
        return $([MountPointMap]$PSBoundParameters)
    }
}
class KubernetesRoleStorage
{
    [MountPointMap[]] $endpoints
}
function New-AzureNativeTypeDataboxedgeKubernetesRoleStorage
{
    param (
        [parameter(mandatory=$False,HelpMessage='Mount points of shares in role(s).)')]
        $endpoints
    )

    process
    {
        return $([KubernetesRoleStorage]$PSBoundParameters)
    }
}
class KubernetesRoleCompute
{
    [string] $vmProfile
}
function New-AzureNativeTypeDataboxedgeKubernetesRoleCompute
{
    param (
        [parameter(mandatory=$False,HelpMessage='VM profile)')]
        [string]
        $vmProfile
    )

    process
    {
        return $([KubernetesRoleCompute]$PSBoundParameters)
    }
}
class KubernetesRoleResources
{
    [KubernetesRoleStorage] $storage
    [KubernetesRoleCompute] $compute
}
function New-AzureNativeTypeDataboxedgeKubernetesRoleResources
{
    param (
        [parameter(mandatory=$False,HelpMessage='Kubernetes role storage resource)')]
        [KubernetesRoleStorage]
        $storage,
        [parameter(mandatory=$False,HelpMessage='Kubernetes role compute resource)')]
        [KubernetesRoleCompute]
        $compute
    )

    process
    {
        return $([KubernetesRoleResources]$PSBoundParameters)
    }
}
function New-AzureNativeDataboxedgeKubernetesRole
{
    [Alias('azure_native_databoxedge_kubernetesrole')]
    param (
        [parameter(mandatory=$False,HelpMessage='Role status.)')]
        [string]
        [ValidateSet('Enabled', 'Disabled')]
        $roleStatus,
        [parameter(mandatory=$False,HelpMessage='Role type.
Expected value is ''Kubernetes''.)'
)]
        [string]
        $kind,
        [parameter(mandatory=$False,HelpMessage='Kubernetes cluster configuration)')]
        [KubernetesClusterInfo]
        $kubernetesClusterInfo,
        [parameter(mandatory=$False,HelpMessage='The device name.)')]
        [string]
        $deviceName,
        [parameter(mandatory=$False,HelpMessage='Kubernetes role resources)')]
        [KubernetesRoleResources]
        $kubernetesRoleResources,
        [parameter(mandatory=$False,HelpMessage='The role name.)')]
        [string]
        $name,
        [parameter(mandatory=$False,HelpMessage='Host OS supported by the Kubernetes role.)')]
        [string]
        [ValidateSet('Windows', 'Linux')]
        $hostPlatform,
        [parameter(mandatory=$False,HelpMessage='The resource group name.)')]
        [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:databoxedge:KubernetesRole")

        $resource.properties["deviceName"] = $deviceName
        $resource.properties["hostPlatform"] = $hostPlatform
        $resource.properties["kind"] = $kind
        $resource.properties["kubernetesClusterInfo"] = $kubernetesClusterInfo
        $resource.properties["kubernetesRoleResources"] = $kubernetesRoleResources
        $resource.properties["resourceGroupName"] = $resourceGroupName
        $resource.properties["roleStatus"] = $roleStatus

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

        $global:pulumiresources += $resource
        return $resource
    }
}
function New-AzureNativeDataboxedgeUser
{
    [Alias('azure_native_databoxedge_user')]
    param (
        [parameter(mandatory=$False,HelpMessage='The password details.)')]
        [AsymmetricEncryptedSecret]
        $encryptedPassword,
        [parameter(mandatory=$False,HelpMessage='The resource group name.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='The user name.)')]
        [string]
        $name,
        [parameter(mandatory=$False,HelpMessage='Type of the user.)')]
        [string]
        [ValidateSet('Share', 'LocalManagement', 'ARM')]
        $userType,
        [parameter(mandatory=$False,HelpMessage='The device name.)')]
        [string]
        $deviceName,
        [parameter(mandatory,HelpMessage='The reference to call when you want to make a dependency to another resource')]
        [string]
        $pulumiid
    )

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

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

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

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

        $global:pulumiresources += $resource
        return $resource
    }
}
function New-AzureNativeDataboxedgeStorageAccount
{
    [Alias('azure_native_databoxedge_storageaccount')]
    param (
        [parameter(mandatory=$False,HelpMessage='The resource group name.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='Data policy of the storage Account.)')]
        [string]
        [ValidateSet('Cloud', 'Local')]
        $dataPolicy,
        [parameter(mandatory=$False,HelpMessage='Description for the storage Account.)')]
        [string]
        $description,
        [parameter(mandatory=$False,HelpMessage='Current status of the storage account)')]
        [string]
        [ValidateSet('OK', 'Offline', 'Unknown', 'Updating', 'NeedsAttention')]
        $storageAccountStatus,
        [parameter(mandatory=$False,HelpMessage='The device name.)')]
        [string]
        $deviceName,
        [parameter(mandatory=$False,HelpMessage='The StorageAccount name.)')]
        [string]
        $storageAccountName,
        [parameter(mandatory=$False,HelpMessage='Storage Account Credential Id)')]
        [string]
        $storageAccountCredentialId,
        [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:databoxedge:StorageAccount")

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

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

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

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

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

        $global:pulumiresources += $resource
        return $resource
    }
}
function New-AzureNativeDataboxedgeMonitoringConfig
{
    [Alias('azure_native_databoxedge_monitoringconfig')]
    param (
        [parameter(mandatory=$False,HelpMessage='The metrics configuration details)')]
        $metricConfigurations,
        [parameter(mandatory=$False,HelpMessage='The resource group name.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='The role name.)')]
        [string]
        $roleName,
        [parameter(mandatory=$False,HelpMessage='The device name.)')]
        [string]
        $deviceName,
        [parameter(mandatory,HelpMessage='The reference to call when you want to make a dependency to another resource')]
        [string]
        $pulumiid
    )

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

        $resource.properties["deviceName"] = $deviceName
        $resource.properties["metricConfigurations"] = $metricConfigurations
        $resource.properties["resourceGroupName"] = $resourceGroupName
        $resource.properties["roleName"] = $roleName

        $global:pulumiresources += $resource
        return $resource
    }
}
class ContactDetails
{
    [string] $companyName
    [string] $phone
    [string[]] $emailList
    [string] $contactPerson
}
function New-AzureNativeTypeDataboxedgeContactDetails
{
    param (
        [parameter(mandatory=$False,HelpMessage='The name of the company.)')]
        [string]
        $companyName,
        [parameter(mandatory=$False,HelpMessage='The phone number.)')]
        [string]
        $phone,
        [parameter(mandatory=$False,HelpMessage='The email list.)')]
        [string[]]
        $emailList,
        [parameter(mandatory=$False,HelpMessage='The contact person name.)')]
        [string]
        $contactPerson
    )

    process
    {
        return $([ContactDetails]$PSBoundParameters)
    }
}
class Address
{
    [string] $addressLine3
    [string] $postalCode
    [string] $addressLine1
    [string] $addressLine2
    [string] $country
    [string] $city
    [string] $state
}
function New-AzureNativeTypeDataboxedgeAddress
{
    param (
        [parameter(mandatory=$False,HelpMessage='The address line3.)')]
        [string]
        $addressLine3,
        [parameter(mandatory=$False,HelpMessage='The postal code.)')]
        [string]
        $postalCode,
        [parameter(mandatory=$False,HelpMessage='The address line1.)')]
        [string]
        $addressLine1,
        [parameter(mandatory=$False,HelpMessage='The address line2.)')]
        [string]
        $addressLine2,
        [parameter(mandatory=$False,HelpMessage='The country name.)')]
        [string]
        $country,
        [parameter(mandatory=$False,HelpMessage='The city name.)')]
        [string]
        $city,
        [parameter(mandatory=$False,HelpMessage='The state name.)')]
        [string]
        $state
    )

    process
    {
        return $([Address]$PSBoundParameters)
    }
}
function New-AzureNativeDataboxedgeOrder
{
    [Alias('azure_native_databoxedge_order')]
    param (
        [parameter(mandatory=$False,HelpMessage='ShipmentType of the order)')]
        [string]
        [ValidateSet('NotApplicable', 'ShippedToCustomer', 'SelfPickup')]
        $shipmentType,
        [parameter(mandatory=$False,HelpMessage='The resource group name.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='The contact details.)')]
        [ContactDetails]
        $contactInformation,
        [parameter(mandatory=$False,HelpMessage='The shipping address.)')]
        [Address]
        $shippingAddress,
        [parameter(mandatory=$False,HelpMessage='The order details of a device.)')]
        [string]
        $deviceName,
        [parameter(mandatory,HelpMessage='The reference to call when you want to make a dependency to another resource')]
        [string]
        $pulumiid
    )

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

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

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

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

        $global:pulumiresources += $resource
        return $resource
    }
}
function New-AzureNativeDataboxedgeStorageAccountCredential
{
    [Alias('azure_native_databoxedge_storageaccountcredential')]
    param (
        [parameter(mandatory=$False,HelpMessage='Blob end point for private clouds.)')]
        [string]
        $blobDomainName,
        [parameter(mandatory=$False,HelpMessage='The storage account credential name.)')]
        [string]
        $name,
        [parameter(mandatory=$False,HelpMessage='Connection string for the storage account. Use this string if username and account key are not specified.)')]
        [string]
        $connectionString,
        [parameter(mandatory=$False,HelpMessage='Id of the storage account.)')]
        [string]
        $storageAccountId,
        [parameter(mandatory=$False,HelpMessage='The device name.)')]
        [string]
        $deviceName,
        [parameter(mandatory=$False,HelpMessage='Type of storage accessed on the storage account.)')]
        [string]
        [ValidateSet('GeneralPurposeStorage', 'BlobStorage')]
        $accountType,
        [parameter(mandatory=$False,HelpMessage='Username for the storage account.)')]
        [string]
        $userName,
        [parameter(mandatory=$False,HelpMessage='The resource group name.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='Encrypted storage key.)')]
        [AsymmetricEncryptedSecret]
        $accountKey,
        [parameter(mandatory=$False,HelpMessage='Alias for the storage account.)')]
        [string]
        $alias,
        [parameter(mandatory=$False,HelpMessage='Signifies whether SSL needs to be enabled or not.)')]
        [string]
        [ValidateSet('Enabled', 'Disabled')]
        $sslStatus,
        [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:databoxedge:StorageAccountCredential")

        $resource.properties["accountType"] = $accountType
        $resource.properties["alias"] = $alias
        $resource.properties["deviceName"] = $deviceName
        $resource.properties["resourceGroupName"] = $resourceGroupName
        $resource.properties["sslStatus"] = $sslStatus

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

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

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

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

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

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

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