pspulumiyaml.azurenative.scheduler.psm1

using module pspulumiyaml
function Invoke-AzureNativeFunctionSchedulerGetJobCollection
{
    param (
        [parameter(mandatory=$False,HelpMessage='The job collection name.)')]
        [string]
        $jobCollectionName,
        [parameter(mandatory=$False,HelpMessage='The resource group name.)')]
        [string]
        $resourceGroupName
    )

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

        $functionObject = Invoke-PulumiFunction -Name azure-native:scheduler:getJobCollection -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionSchedulerGetJob
{
    param (
        [parameter(mandatory=$False,HelpMessage='The resource group name.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='The job name.)')]
        [string]
        $jobName,
        [parameter(mandatory=$False,HelpMessage='The job collection name.)')]
        [string]
        $jobCollectionName
    )

    process
    {
        $arguments = @{}
        $arguments["jobCollectionName"] = $jobCollectionName
        $arguments["jobName"] = $jobName
        $arguments["resourceGroupName"] = $resourceGroupName

        $functionObject = Invoke-PulumiFunction -Name azure-native:scheduler:getJob -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
class JobRecurrenceScheduleMonthlyOccurrence
{
    [ValidateSet('Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday', 'Sunday')]
    [object] $day
    [ValidateSet('Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday', 'Sunday')]
    [int] $occurrence
}
function New-AzureNativeTypeSchedulerJobRecurrenceScheduleMonthlyOccurrence
{
    param (
        [parameter(mandatory=$False,HelpMessage='Gets or sets the day. Must be one of monday, tuesday, wednesday, thursday, friday, saturday, sunday.)')]
        $day,
        [parameter(mandatory=$False,HelpMessage='Gets or sets the occurrence. Must be between -5 and 5.)')]
        [int]
        $occurrence
    )

    process
    {
        return $([JobRecurrenceScheduleMonthlyOccurrence]$PSBoundParameters)
    }
}
class JobRecurrenceSchedule
{
    [ValidateSet('Enabled', 'Disabled', 'Faulted', 'Completed')]
    [int[]] $monthDays
    [ValidateSet('Enabled', 'Disabled', 'Faulted', 'Completed')]
    [int[]] $minutes
    [ValidateSet('Enabled', 'Disabled', 'Faulted', 'Completed')]
    [JobRecurrenceScheduleMonthlyOccurrence[]] $monthlyOccurrences
    [ValidateSet('Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday')]
    [string] $weekDays
    [ValidateSet('Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday')]
    [int[]] $hours
}
function New-AzureNativeTypeSchedulerJobRecurrenceSchedule
{
    param (
        [parameter(mandatory=$False,HelpMessage='Gets or sets the days of the month that the job should execute on. Must be between 1 and 31.)')]
        [int[]]
        $monthDays,
        [parameter(mandatory=$False,HelpMessage='Gets or sets the minutes of the hour that the job should execute at.)')]
        [int[]]
        $minutes,
        [parameter(mandatory=$False,HelpMessage='Gets or sets the occurrences of days within a month.)')]
        $monthlyOccurrences,
        [parameter(mandatory=$False,HelpMessage='Gets or sets the days of the week that the job should execute on.)')]
        $weekDays,
        [parameter(mandatory=$False,HelpMessage='Gets or sets the hours of the day that the job should execute at.)')]
        [int[]]
        $hours
    )

    process
    {
        return $([JobRecurrenceSchedule]$PSBoundParameters)
    }
}
class JobRecurrence
{
    [ValidateSet('Enabled', 'Disabled', 'Faulted', 'Completed')]
    [string] $endTime
    [ValidateSet('Enabled', 'Disabled', 'Faulted', 'Completed')]
    [JobRecurrenceSchedule] $schedule
    [ValidateSet('Enabled', 'Disabled', 'Faulted', 'Completed')]
    [int] $count
    [ValidateSet('Minute', 'Hour', 'Day', 'Week', 'Month')]
    [object] $frequency
    [ValidateSet('Minute', 'Hour', 'Day', 'Week', 'Month')]
    [int] $interval
}
function New-AzureNativeTypeSchedulerJobRecurrence
{
    param (
        [parameter(mandatory=$False,HelpMessage='Gets or sets the time at which the job will complete.)')]
        [string]
        $endTime,
        [parameter(mandatory=$False,HelpMessage=')')]
        [JobRecurrenceSchedule]
        $schedule,
        [parameter(mandatory=$False,HelpMessage='Gets or sets the maximum number of times that the job should run.)')]
        [int]
        $count,
        [parameter(mandatory=$False,HelpMessage='Gets or sets the frequency of recurrence (second, minute, hour, day, week, month).)')]
        $frequency,
        [parameter(mandatory=$False,HelpMessage='Gets or sets the interval between retries.)')]
        [int]
        $interval
    )

    process
    {
        return $([JobRecurrence]$PSBoundParameters)
    }
}
class ServiceBusBrokeredMessageProperties
{
    [ValidateSet('Enabled', 'Disabled', 'Faulted', 'Completed')]
    [string] $correlationId
    [ValidateSet('Enabled', 'Disabled', 'Faulted', 'Completed')]
    [string] $sessionId
    [ValidateSet('Enabled', 'Disabled', 'Faulted', 'Completed')]
    [string] $contentType
    [ValidateSet('Enabled', 'Disabled', 'Faulted', 'Completed')]
    [string] $messageId
    [ValidateSet('Enabled', 'Disabled', 'Faulted', 'Completed')]
    [string] $partitionKey
    [ValidateSet('Enabled', 'Disabled', 'Faulted', 'Completed')]
    [string] $replyTo
    [ValidateSet('Enabled', 'Disabled', 'Faulted', 'Completed')]
    [string] $to
    [ValidateSet('Enabled', 'Disabled', 'Faulted', 'Completed')]
    [string] $timeToLive
    [ValidateSet('Enabled', 'Disabled', 'Faulted', 'Completed')]
    [string] $viaPartitionKey
    [ValidateSet('Enabled', 'Disabled', 'Faulted', 'Completed')]
    [bool] $forcePersistence
    [ValidateSet('Enabled', 'Disabled', 'Faulted', 'Completed')]
    [string] $scheduledEnqueueTimeUtc
    [ValidateSet('Enabled', 'Disabled', 'Faulted', 'Completed')]
    [string] $replyToSessionId
    [ValidateSet('Enabled', 'Disabled', 'Faulted', 'Completed')]
    [string] $label
}
function New-AzureNativeTypeSchedulerServiceBusBrokeredMessageProperties
{
    param (
        [parameter(mandatory=$False,HelpMessage='Gets or sets the correlation ID.)')]
        [string]
        $correlationId,
        [parameter(mandatory=$False,HelpMessage='Gets or sets the session ID.)')]
        [string]
        $sessionId,
        [parameter(mandatory=$False,HelpMessage='Gets or sets the content type.)')]
        [string]
        $contentType,
        [parameter(mandatory=$False,HelpMessage='Gets or sets the message ID.)')]
        [string]
        $messageId,
        [parameter(mandatory=$False,HelpMessage='Gets or sets the partition key.)')]
        [string]
        $partitionKey,
        [parameter(mandatory=$False,HelpMessage='Gets or sets the reply to.)')]
        [string]
        $replyTo,
        [parameter(mandatory=$False,HelpMessage='Gets or sets the to.)')]
        [string]
        $to,
        [parameter(mandatory=$False,HelpMessage='Gets or sets the time to live.)')]
        [string]
        $timeToLive,
        [parameter(mandatory=$False,HelpMessage='Gets or sets the via partition key.)')]
        [string]
        $viaPartitionKey,
        [parameter(mandatory=$False,HelpMessage='Gets or sets the force persistence.)')]
        [bool]
        $forcePersistence,
        [parameter(mandatory=$False,HelpMessage='Gets or sets the scheduled enqueue time UTC.)')]
        [string]
        $scheduledEnqueueTimeUtc,
        [parameter(mandatory=$False,HelpMessage='Gets or sets the reply to session ID.)')]
        [string]
        $replyToSessionId,
        [parameter(mandatory=$False,HelpMessage='Gets or sets the label.)')]
        [string]
        $label
    )

    process
    {
        return $([ServiceBusBrokeredMessageProperties]$PSBoundParameters)
    }
}
class ServiceBusAuthentication
{
    [ValidateSet('Enabled', 'Disabled', 'Faulted', 'Completed')]
    [string] $sasKey
    [ValidateSet('NotSpecified', 'SharedAccessKey')]
    [object] $type
    [ValidateSet('NotSpecified', 'SharedAccessKey')]
    [string] $sasKeyName
}
function New-AzureNativeTypeSchedulerServiceBusAuthentication
{
    param (
        [parameter(mandatory=$False,HelpMessage='Gets or sets the SAS key.)')]
        [string]
        $sasKey,
        [parameter(mandatory=$False,HelpMessage='Gets or sets the authentication type.)')]
        $type,
        [parameter(mandatory=$False,HelpMessage='Gets or sets the SAS key name.)')]
        [string]
        $sasKeyName
    )

    process
    {
        return $([ServiceBusAuthentication]$PSBoundParameters)
    }
}
class ServiceBusQueueMessage
{
    [ValidateSet('Enabled', 'Disabled', 'Faulted', 'Completed')]
    [ServiceBusBrokeredMessageProperties] $brokeredMessageProperties
    [ValidateSet('Enabled', 'Disabled', 'Faulted', 'Completed')]
    [string] $queueName
    [ValidateSet('Enabled', 'Disabled', 'Faulted', 'Completed')]
    [string] $namespace
    [ValidateSet('Enabled', 'Disabled', 'Faulted', 'Completed')]
    [ServiceBusAuthentication] $authentication
    [ValidateSet('Enabled', 'Disabled', 'Faulted', 'Completed')]
    [object] $customMessageProperties
    [ValidateSet('Enabled', 'Disabled', 'Faulted', 'Completed')]
    [string] $message
    [ValidateSet('NotSpecified', 'NetMessaging', 'AMQP')]
    [object] $transportType
}
function New-AzureNativeTypeSchedulerServiceBusQueueMessage
{
    param (
        [parameter(mandatory=$False,HelpMessage='Gets or sets the brokered message properties.)')]
        [ServiceBusBrokeredMessageProperties]
        $brokeredMessageProperties,
        [parameter(mandatory=$False,HelpMessage='Gets or sets the queue name.)')]
        [string]
        $queueName,
        [parameter(mandatory=$False,HelpMessage='Gets or sets the namespace.)')]
        [string]
        $namespace,
        [parameter(mandatory=$False,HelpMessage='Gets or sets the Service Bus authentication.)')]
        [ServiceBusAuthentication]
        $authentication,
        [parameter(mandatory=$False,HelpMessage='Gets or sets the custom message properties.)')]
        [hashtable]
        $customMessageProperties,
        [parameter(mandatory=$False,HelpMessage='Gets or sets the message.)')]
        [string]
        $message,
        [parameter(mandatory=$False,HelpMessage='Gets or sets the transport type.)')]
        $transportType
    )

    process
    {
        return $([ServiceBusQueueMessage]$PSBoundParameters)
    }
}
class RetryPolicy
{
    [ValidateSet('None', 'Fixed')]
    [object] $retryType
    [ValidateSet('None', 'Fixed')]
    [int] $retryCount
    [ValidateSet('None', 'Fixed')]
    [string] $retryInterval
}
function New-AzureNativeTypeSchedulerRetryPolicy
{
    param (
        [parameter(mandatory=$False,HelpMessage='Gets or sets the retry strategy to be used.)')]
        $retryType,
        [parameter(mandatory=$False,HelpMessage='Gets or sets the number of times a retry should be attempted.)')]
        [int]
        $retryCount,
        [parameter(mandatory=$False,HelpMessage='Gets or sets the retry interval between retries, specify duration in ISO 8601 format.)')]
        [string]
        $retryInterval
    )

    process
    {
        return $([RetryPolicy]$PSBoundParameters)
    }
}
class StorageQueueMessage
{
    [ValidateSet('Http', 'Https', 'StorageQueue', 'ServiceBusQueue', 'ServiceBusTopic')]
    [string] $queueName
    [ValidateSet('Http', 'Https', 'StorageQueue', 'ServiceBusQueue', 'ServiceBusTopic')]
    [string] $storageAccount
    [ValidateSet('Http', 'Https', 'StorageQueue', 'ServiceBusQueue', 'ServiceBusTopic')]
    [string] $sasToken
    [ValidateSet('Http', 'Https', 'StorageQueue', 'ServiceBusQueue', 'ServiceBusTopic')]
    [string] $message
}
function New-AzureNativeTypeSchedulerStorageQueueMessage
{
    param (
        [parameter(mandatory=$False,HelpMessage='Gets or sets the queue name.)')]
        [string]
        $queueName,
        [parameter(mandatory=$False,HelpMessage='Gets or sets the storage account name.)')]
        [string]
        $storageAccount,
        [parameter(mandatory=$False,HelpMessage='Gets or sets the SAS key.)')]
        [string]
        $sasToken,
        [parameter(mandatory=$False,HelpMessage='Gets or sets the message.)')]
        [string]
        $message
    )

    process
    {
        return $([StorageQueueMessage]$PSBoundParameters)
    }
}
class HttpRequest
{
    [ValidateSet('Http', 'Https', 'StorageQueue', 'ServiceBusQueue', 'ServiceBusTopic')]
    [object] $headers
    [ValidateSet('Http', 'Https', 'StorageQueue', 'ServiceBusQueue', 'ServiceBusTopic')]
    [string] $body
    [ValidateSet('Http', 'Https', 'StorageQueue', 'ServiceBusQueue', 'ServiceBusTopic')]
    [string] $method
    [ValidateSet('Http', 'Https', 'StorageQueue', 'ServiceBusQueue', 'ServiceBusTopic')]
    [string] $uri
    [object] $authentication #todo add class here
}
class OAuthAuthentication
{
    [string] $audience
    [string] $secret
    [string] $type
    [string] $clientId
    [string] $tenant
}
function New-AzureNativeTypeSchedulerOAuthAuthentication
{
    param (
        [parameter(mandatory=$False,HelpMessage='Gets or sets the audience.)')]
        [string]
        $audience,
        [parameter(mandatory=$False,HelpMessage='Gets or sets the secret, return value will always be empty.)')]
        [string]
        $secret,
        [parameter(mandatory=$False,HelpMessage='Gets or sets the HTTP authentication type.
Expected value is ''ActiveDirectoryOAuth''.)'
)]
        [string]
        $type,
        [parameter(mandatory=$False,HelpMessage='Gets or sets the client identifier.)')]
        [string]
        $clientId,
        [parameter(mandatory=$False,HelpMessage='Gets or sets the tenant.)')]
        [string]
        $tenant
    )

    process
    {
        return $([OAuthAuthentication]$PSBoundParameters)
    }
}
function New-AzureNativeTypeSchedulerHttpRequest
{
    param (
        [parameter(mandatory=$False,HelpMessage='Gets or sets the headers.)')]
        [hashtable]
        $headers,
        [parameter(mandatory=$False,HelpMessage='Gets or sets the request body.)')]
        [string]
        $body,
        [parameter(mandatory=$False,HelpMessage='Gets or sets the method of the request.)')]
        [string]
        $method,
        [parameter(mandatory=$False,HelpMessage='Gets or sets the URI of the request.)')]
        [string]
        $uri,
        [parameter(mandatory=$False,HelpMessage='Gets or sets the authentication method of the request.)')]
        [OAuthAuthentication]
        $authentication
    )

    process
    {
        return $([HttpRequest]$PSBoundParameters)
    }
}
class ServiceBusTopicMessage
{
    [ValidateSet('Http', 'Https', 'StorageQueue', 'ServiceBusQueue', 'ServiceBusTopic')]
    [string] $topicPath
    [ValidateSet('Http', 'Https', 'StorageQueue', 'ServiceBusQueue', 'ServiceBusTopic')]
    [ServiceBusBrokeredMessageProperties] $brokeredMessageProperties
    [ValidateSet('Http', 'Https', 'StorageQueue', 'ServiceBusQueue', 'ServiceBusTopic')]
    [string] $namespace
    [ValidateSet('Http', 'Https', 'StorageQueue', 'ServiceBusQueue', 'ServiceBusTopic')]
    [ServiceBusAuthentication] $authentication
    [ValidateSet('Http', 'Https', 'StorageQueue', 'ServiceBusQueue', 'ServiceBusTopic')]
    [object] $customMessageProperties
    [ValidateSet('Http', 'Https', 'StorageQueue', 'ServiceBusQueue', 'ServiceBusTopic')]
    [string] $message
    [ValidateSet('NotSpecified', 'NetMessaging', 'AMQP')]
    [object] $transportType
}
function New-AzureNativeTypeSchedulerServiceBusTopicMessage
{
    param (
        [parameter(mandatory=$False,HelpMessage='Gets or sets the topic path.)')]
        [string]
        $topicPath,
        [parameter(mandatory=$False,HelpMessage='Gets or sets the brokered message properties.)')]
        [ServiceBusBrokeredMessageProperties]
        $brokeredMessageProperties,
        [parameter(mandatory=$False,HelpMessage='Gets or sets the namespace.)')]
        [string]
        $namespace,
        [parameter(mandatory=$False,HelpMessage='Gets or sets the Service Bus authentication.)')]
        [ServiceBusAuthentication]
        $authentication,
        [parameter(mandatory=$False,HelpMessage='Gets or sets the custom message properties.)')]
        [hashtable]
        $customMessageProperties,
        [parameter(mandatory=$False,HelpMessage='Gets or sets the message.)')]
        [string]
        $message,
        [parameter(mandatory=$False,HelpMessage='Gets or sets the transport type.)')]
        $transportType
    )

    process
    {
        return $([ServiceBusTopicMessage]$PSBoundParameters)
    }
}
class JobErrorAction
{
    [ValidateSet('Http', 'Https', 'StorageQueue', 'ServiceBusQueue', 'ServiceBusTopic')]
    [ServiceBusQueueMessage] $serviceBusQueueMessage
    [ValidateSet('Http', 'Https', 'StorageQueue', 'ServiceBusQueue', 'ServiceBusTopic')]
    [object] $type
    [ValidateSet('Http', 'Https', 'StorageQueue', 'ServiceBusQueue', 'ServiceBusTopic')]
    [StorageQueueMessage] $queueMessage
    [ValidateSet('Http', 'Https', 'StorageQueue', 'ServiceBusQueue', 'ServiceBusTopic')]
    [HttpRequest] $request
    [ValidateSet('Http', 'Https', 'StorageQueue', 'ServiceBusQueue', 'ServiceBusTopic')]
    [RetryPolicy] $retryPolicy
    [ValidateSet('Http', 'Https', 'StorageQueue', 'ServiceBusQueue', 'ServiceBusTopic')]
    [ServiceBusTopicMessage] $serviceBusTopicMessage
}
function New-AzureNativeTypeSchedulerJobErrorAction
{
    param (
        [parameter(mandatory=$False,HelpMessage='Gets or sets the service bus queue message.)')]
        [ServiceBusQueueMessage]
        $serviceBusQueueMessage,
        [parameter(mandatory=$False,HelpMessage='Gets or sets the job error action type.)')]
        $type,
        [parameter(mandatory=$False,HelpMessage='Gets or sets the storage queue message.)')]
        [StorageQueueMessage]
        $queueMessage,
        [parameter(mandatory=$False,HelpMessage='Gets or sets the http requests.)')]
        [HttpRequest]
        $request,
        [parameter(mandatory=$False,HelpMessage='Gets or sets the retry policy.)')]
        [RetryPolicy]
        $retryPolicy,
        [parameter(mandatory=$False,HelpMessage='Gets or sets the service bus topic message.)')]
        [ServiceBusTopicMessage]
        $serviceBusTopicMessage
    )

    process
    {
        return $([JobErrorAction]$PSBoundParameters)
    }
}
class JobAction
{
    [ValidateSet('Enabled', 'Disabled', 'Faulted', 'Completed')]
    [ServiceBusQueueMessage] $serviceBusQueueMessage
    [ValidateSet('Enabled', 'Disabled', 'Faulted', 'Completed')]
    [RetryPolicy] $retryPolicy
    [ValidateSet('Http', 'Https', 'StorageQueue', 'ServiceBusQueue', 'ServiceBusTopic')]
    [object] $type
    [ValidateSet('Http', 'Https', 'StorageQueue', 'ServiceBusQueue', 'ServiceBusTopic')]
    [StorageQueueMessage] $queueMessage
    [ValidateSet('Http', 'Https', 'StorageQueue', 'ServiceBusQueue', 'ServiceBusTopic')]
    [HttpRequest] $request
    [ValidateSet('Http', 'Https', 'StorageQueue', 'ServiceBusQueue', 'ServiceBusTopic')]
    [JobErrorAction] $errorAction
    [ValidateSet('Http', 'Https', 'StorageQueue', 'ServiceBusQueue', 'ServiceBusTopic')]
    [ServiceBusTopicMessage] $serviceBusTopicMessage
}
function New-AzureNativeTypeSchedulerJobAction
{
    param (
        [parameter(mandatory=$False,HelpMessage='Gets or sets the service bus queue message.)')]
        [ServiceBusQueueMessage]
        $serviceBusQueueMessage,
        [parameter(mandatory=$False,HelpMessage='Gets or sets the retry policy.)')]
        [RetryPolicy]
        $retryPolicy,
        [parameter(mandatory=$False,HelpMessage='Gets or sets the job action type.)')]
        $type,
        [parameter(mandatory=$False,HelpMessage='Gets or sets the storage queue message.)')]
        [StorageQueueMessage]
        $queueMessage,
        [parameter(mandatory=$False,HelpMessage='Gets or sets the http requests.)')]
        [HttpRequest]
        $request,
        [parameter(mandatory=$False,HelpMessage='Gets or sets the error action.)')]
        [JobErrorAction]
        $errorAction,
        [parameter(mandatory=$False,HelpMessage='Gets or sets the service bus topic message.)')]
        [ServiceBusTopicMessage]
        $serviceBusTopicMessage
    )

    process
    {
        return $([JobAction]$PSBoundParameters)
    }
}
class JobProperties
{
    [ValidateSet('Enabled', 'Disabled', 'Faulted', 'Completed')]
    [object] $state
    [ValidateSet('Enabled', 'Disabled', 'Faulted', 'Completed')]
    [JobRecurrence] $recurrence
    [ValidateSet('Enabled', 'Disabled', 'Faulted', 'Completed')]
    [JobAction] $action
    [ValidateSet('Enabled', 'Disabled', 'Faulted', 'Completed')]
    [string] $startTime
}
function New-AzureNativeTypeSchedulerJobProperties
{
    param (
        [parameter(mandatory=$False,HelpMessage='Gets or set the job state.)')]
        $state,
        [parameter(mandatory=$False,HelpMessage='Gets or sets the job recurrence.)')]
        [JobRecurrence]
        $recurrence,
        [parameter(mandatory=$False,HelpMessage='Gets or sets the job action.)')]
        [JobAction]
        $action,
        [parameter(mandatory=$False,HelpMessage='Gets or sets the job start time.)')]
        [string]
        $startTime
    )

    process
    {
        return $([JobProperties]$PSBoundParameters)
    }
}
function New-AzureNativeSchedulerJob
{
    [Alias('azure_native_scheduler_job')]
    param (
        [parameter(mandatory=$False,HelpMessage='The resource group name.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='The job name.)')]
        [string]
        $jobName,
        [parameter(mandatory=$False,HelpMessage='The job collection name.)')]
        [string]
        $jobCollectionName,
        [parameter(mandatory=$False,HelpMessage='Gets or sets the job properties.)')]
        [JobProperties]
        $properties,
        [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:scheduler:Job")

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

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

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

        $global:pulumiresources += $resource
        return $resource
    }
}
class Sku
{
    [ValidateSet('Standard', 'Free', 'P10Premium', 'P20Premium')]
    [object] $name
}
function New-AzureNativeTypeSchedulerSku
{
    param (
        [parameter(mandatory=$False,HelpMessage='Gets or set the SKU.)')]
        $name
    )

    process
    {
        return $([Sku]$PSBoundParameters)
    }
}
class JobMaxRecurrence
{
    [ValidateSet('Minute', 'Hour', 'Day', 'Week', 'Month')]
    [object] $frequency
    [ValidateSet('Minute', 'Hour', 'Day', 'Week', 'Month')]
    [int] $interval
}
function New-AzureNativeTypeSchedulerJobMaxRecurrence
{
    param (
        [parameter(mandatory=$False,HelpMessage='Gets or sets the frequency of recurrence (second, minute, hour, day, week, month).)')]
        $frequency,
        [parameter(mandatory=$False,HelpMessage='Gets or sets the interval between retries.)')]
        [int]
        $interval
    )

    process
    {
        return $([JobMaxRecurrence]$PSBoundParameters)
    }
}
class JobCollectionQuota
{
    [int] $maxJobCount
    [int] $maxJobOccurrence
    [JobMaxRecurrence] $maxRecurrence
}
function New-AzureNativeTypeSchedulerJobCollectionQuota
{
    param (
        [parameter(mandatory=$False,HelpMessage='Gets or set the maximum job count.)')]
        [int]
        $maxJobCount,
        [parameter(mandatory=$False,HelpMessage='Gets or sets the maximum job occurrence.)')]
        [int]
        $maxJobOccurrence,
        [parameter(mandatory=$False,HelpMessage='Gets or set the maximum recurrence.)')]
        [JobMaxRecurrence]
        $maxRecurrence
    )

    process
    {
        return $([JobCollectionQuota]$PSBoundParameters)
    }
}
class JobCollectionProperties
{
    [Sku] $sku
    [JobCollectionQuota] $quota
    [ValidateSet('Enabled', 'Disabled', 'Suspended', 'Deleted')]
    [object] $state
}
function New-AzureNativeTypeSchedulerJobCollectionProperties
{
    param (
        [parameter(mandatory=$False,HelpMessage='Gets or sets the SKU.)')]
        [Sku]
        $sku,
        [parameter(mandatory=$False,HelpMessage='Gets or sets the job collection quota.)')]
        [JobCollectionQuota]
        $quota,
        [parameter(mandatory=$False,HelpMessage='Gets or sets the state.)')]
        $state
    )

    process
    {
        return $([JobCollectionProperties]$PSBoundParameters)
    }
}
function New-AzureNativeSchedulerJobCollection
{
    [Alias('azure_native_scheduler_jobcollection')]
    param (
        [parameter(mandatory=$False,HelpMessage='The job collection name.)')]
        [string]
        $jobCollectionName,
        [parameter(mandatory=$False,HelpMessage='The resource group name.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='Gets or sets the tags.)')]
        [hashtable]
        $tags,
        [parameter(mandatory=$False,HelpMessage='Gets or sets the job collection properties.)')]
        [JobCollectionProperties]
        $properties,
        [parameter(mandatory=$False,HelpMessage='Gets or sets the job collection resource name.)')]
        [string]
        $name,
        [parameter(mandatory=$False,HelpMessage='Gets or sets the storage account 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:scheduler:JobCollection")

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

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

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

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

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

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

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