# coding=utf-8
# *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. ***
# *** Do not edit by hand unless you're certain you know what you are doing! ***

import copy
import warnings
import pulumi
import pulumi.runtime
from typing import Any, Mapping, Optional, Sequence, Union, overload
from . import _utilities

__all__ = [
    'ClusterAutoscaleArgs',
    'ClusterAwsAttributesArgs',
    'ClusterAzureAttributesArgs',
    'ClusterClusterLogConfArgs',
    'ClusterClusterLogConfDbfsArgs',
    'ClusterClusterLogConfS3Args',
    'ClusterClusterMountInfoArgs',
    'ClusterClusterMountInfoNetworkFilesystemInfoArgs',
    'ClusterDockerImageArgs',
    'ClusterDockerImageBasicAuthArgs',
    'ClusterGcpAttributesArgs',
    'ClusterInitScriptArgs',
    'ClusterInitScriptAbfssArgs',
    'ClusterInitScriptDbfsArgs',
    'ClusterInitScriptFileArgs',
    'ClusterInitScriptGcsArgs',
    'ClusterInitScriptS3Args',
    'ClusterLibraryArgs',
    'ClusterLibraryCranArgs',
    'ClusterLibraryMavenArgs',
    'ClusterLibraryPypiArgs',
    'ClusterWorkloadTypeArgs',
    'ClusterWorkloadTypeClientsArgs',
    'GrantsGrantArgs',
    'InstancePoolAwsAttributesArgs',
    'InstancePoolAzureAttributesArgs',
    'InstancePoolDiskSpecArgs',
    'InstancePoolDiskSpecDiskTypeArgs',
    'InstancePoolGcpAttributesArgs',
    'InstancePoolInstancePoolFleetAttributesArgs',
    'InstancePoolInstancePoolFleetAttributesFleetOnDemandOptionArgs',
    'InstancePoolInstancePoolFleetAttributesFleetSpotOptionArgs',
    'InstancePoolInstancePoolFleetAttributesLaunchTemplateOverrideArgs',
    'InstancePoolPreloadedDockerImageArgs',
    'InstancePoolPreloadedDockerImageBasicAuthArgs',
    'JobContinuousArgs',
    'JobDbtTaskArgs',
    'JobEmailNotificationsArgs',
    'JobGitSourceArgs',
    'JobJobClusterArgs',
    'JobJobClusterNewClusterArgs',
    'JobJobClusterNewClusterAutoscaleArgs',
    'JobJobClusterNewClusterAwsAttributesArgs',
    'JobJobClusterNewClusterAzureAttributesArgs',
    'JobJobClusterNewClusterClusterLogConfArgs',
    'JobJobClusterNewClusterClusterLogConfDbfsArgs',
    'JobJobClusterNewClusterClusterLogConfS3Args',
    'JobJobClusterNewClusterClusterMountInfoArgs',
    'JobJobClusterNewClusterClusterMountInfoNetworkFilesystemInfoArgs',
    'JobJobClusterNewClusterDockerImageArgs',
    'JobJobClusterNewClusterDockerImageBasicAuthArgs',
    'JobJobClusterNewClusterGcpAttributesArgs',
    'JobJobClusterNewClusterInitScriptArgs',
    'JobJobClusterNewClusterInitScriptAbfssArgs',
    'JobJobClusterNewClusterInitScriptDbfsArgs',
    'JobJobClusterNewClusterInitScriptFileArgs',
    'JobJobClusterNewClusterInitScriptGcsArgs',
    'JobJobClusterNewClusterInitScriptS3Args',
    'JobJobClusterNewClusterWorkloadTypeArgs',
    'JobJobClusterNewClusterWorkloadTypeClientsArgs',
    'JobLibraryArgs',
    'JobLibraryCranArgs',
    'JobLibraryMavenArgs',
    'JobLibraryPypiArgs',
    'JobNewClusterArgs',
    'JobNewClusterAutoscaleArgs',
    'JobNewClusterAwsAttributesArgs',
    'JobNewClusterAzureAttributesArgs',
    'JobNewClusterClusterLogConfArgs',
    'JobNewClusterClusterLogConfDbfsArgs',
    'JobNewClusterClusterLogConfS3Args',
    'JobNewClusterClusterMountInfoArgs',
    'JobNewClusterClusterMountInfoNetworkFilesystemInfoArgs',
    'JobNewClusterDockerImageArgs',
    'JobNewClusterDockerImageBasicAuthArgs',
    'JobNewClusterGcpAttributesArgs',
    'JobNewClusterInitScriptArgs',
    'JobNewClusterInitScriptAbfssArgs',
    'JobNewClusterInitScriptDbfsArgs',
    'JobNewClusterInitScriptFileArgs',
    'JobNewClusterInitScriptGcsArgs',
    'JobNewClusterInitScriptS3Args',
    'JobNewClusterWorkloadTypeArgs',
    'JobNewClusterWorkloadTypeClientsArgs',
    'JobNotebookTaskArgs',
    'JobPipelineTaskArgs',
    'JobPythonWheelTaskArgs',
    'JobScheduleArgs',
    'JobSparkJarTaskArgs',
    'JobSparkPythonTaskArgs',
    'JobSparkSubmitTaskArgs',
    'JobTaskArgs',
    'JobTaskDbtTaskArgs',
    'JobTaskDependsOnArgs',
    'JobTaskEmailNotificationsArgs',
    'JobTaskLibraryArgs',
    'JobTaskLibraryCranArgs',
    'JobTaskLibraryMavenArgs',
    'JobTaskLibraryPypiArgs',
    'JobTaskNewClusterArgs',
    'JobTaskNewClusterAutoscaleArgs',
    'JobTaskNewClusterAwsAttributesArgs',
    'JobTaskNewClusterAzureAttributesArgs',
    'JobTaskNewClusterClusterLogConfArgs',
    'JobTaskNewClusterClusterLogConfDbfsArgs',
    'JobTaskNewClusterClusterLogConfS3Args',
    'JobTaskNewClusterClusterMountInfoArgs',
    'JobTaskNewClusterClusterMountInfoNetworkFilesystemInfoArgs',
    'JobTaskNewClusterDockerImageArgs',
    'JobTaskNewClusterDockerImageBasicAuthArgs',
    'JobTaskNewClusterGcpAttributesArgs',
    'JobTaskNewClusterInitScriptArgs',
    'JobTaskNewClusterInitScriptAbfssArgs',
    'JobTaskNewClusterInitScriptDbfsArgs',
    'JobTaskNewClusterInitScriptFileArgs',
    'JobTaskNewClusterInitScriptGcsArgs',
    'JobTaskNewClusterInitScriptS3Args',
    'JobTaskNewClusterWorkloadTypeArgs',
    'JobTaskNewClusterWorkloadTypeClientsArgs',
    'JobTaskNotebookTaskArgs',
    'JobTaskPipelineTaskArgs',
    'JobTaskPythonWheelTaskArgs',
    'JobTaskSparkJarTaskArgs',
    'JobTaskSparkPythonTaskArgs',
    'JobTaskSparkSubmitTaskArgs',
    'JobTaskSqlTaskArgs',
    'JobTaskSqlTaskAlertArgs',
    'JobTaskSqlTaskDashboardArgs',
    'JobTaskSqlTaskQueryArgs',
    'JobWebhookNotificationsArgs',
    'JobWebhookNotificationsOnFailureArgs',
    'JobWebhookNotificationsOnStartArgs',
    'JobWebhookNotificationsOnSuccessArgs',
    'LibraryCranArgs',
    'LibraryMavenArgs',
    'LibraryPypiArgs',
    'MetastoreDataAccessAwsIamRoleArgs',
    'MetastoreDataAccessAzureManagedIdentityArgs',
    'MetastoreDataAccessAzureServicePrincipalArgs',
    'MetastoreDataAccessGcpServiceAccountKeyArgs',
    'MlflowModelTagArgs',
    'MlflowWebhookHttpUrlSpecArgs',
    'MlflowWebhookJobSpecArgs',
    'MountAbfsArgs',
    'MountAdlArgs',
    'MountGsArgs',
    'MountS3Args',
    'MountWasbArgs',
    'MwsCustomerManagedKeysAwsKeyInfoArgs',
    'MwsCustomerManagedKeysGcpKeyInfoArgs',
    'MwsNetworksErrorMessageArgs',
    'MwsNetworksGcpNetworkInfoArgs',
    'MwsNetworksVpcEndpointsArgs',
    'MwsWorkspacesCloudResourceContainerArgs',
    'MwsWorkspacesCloudResourceContainerGcpArgs',
    'MwsWorkspacesExternalCustomerInfoArgs',
    'MwsWorkspacesGcpManagedNetworkConfigArgs',
    'MwsWorkspacesGkeConfigArgs',
    'MwsWorkspacesTokenArgs',
    'PermissionsAccessControlArgs',
    'PipelineClusterArgs',
    'PipelineClusterAutoscaleArgs',
    'PipelineClusterAwsAttributesArgs',
    'PipelineClusterAzureAttributesArgs',
    'PipelineClusterClusterLogConfArgs',
    'PipelineClusterClusterLogConfDbfsArgs',
    'PipelineClusterClusterLogConfS3Args',
    'PipelineClusterGcpAttributesArgs',
    'PipelineClusterInitScriptArgs',
    'PipelineClusterInitScriptAbfssArgs',
    'PipelineClusterInitScriptDbfsArgs',
    'PipelineClusterInitScriptFileArgs',
    'PipelineClusterInitScriptGcsArgs',
    'PipelineClusterInitScriptS3Args',
    'PipelineFiltersArgs',
    'PipelineLibraryArgs',
    'PipelineLibraryFileArgs',
    'PipelineLibraryMavenArgs',
    'PipelineLibraryNotebookArgs',
    'RecipientIpAccessListArgs',
    'RecipientTokenArgs',
    'RepoSparseCheckoutArgs',
    'SecretScopeKeyvaultMetadataArgs',
    'ShareObjectArgs',
    'ShareObjectPartitionArgs',
    'ShareObjectPartitionValueArgs',
    'SqlEndpointChannelArgs',
    'SqlEndpointOdbcParamsArgs',
    'SqlEndpointTagsArgs',
    'SqlEndpointTagsCustomTagArgs',
    'SqlPermissionsPrivilegeAssignmentArgs',
    'SqlQueryParameterArgs',
    'SqlQueryParameterDateArgs',
    'SqlQueryParameterDateRangeArgs',
    'SqlQueryParameterDateRangeRangeArgs',
    'SqlQueryParameterDatetimeArgs',
    'SqlQueryParameterDatetimeRangeArgs',
    'SqlQueryParameterDatetimeRangeRangeArgs',
    'SqlQueryParameterDatetimesecArgs',
    'SqlQueryParameterDatetimesecRangeArgs',
    'SqlQueryParameterDatetimesecRangeRangeArgs',
    'SqlQueryParameterEnumArgs',
    'SqlQueryParameterEnumMultipleArgs',
    'SqlQueryParameterNumberArgs',
    'SqlQueryParameterQueryArgs',
    'SqlQueryParameterQueryMultipleArgs',
    'SqlQueryParameterTextArgs',
    'SqlQueryScheduleArgs',
    'SqlQueryScheduleContinuousArgs',
    'SqlQueryScheduleDailyArgs',
    'SqlQueryScheduleWeeklyArgs',
    'SqlWidgetParameterArgs',
    'SqlWidgetPositionArgs',
    'StorageCredentialAwsIamRoleArgs',
    'StorageCredentialAzureManagedIdentityArgs',
    'StorageCredentialAzureServicePrincipalArgs',
    'StorageCredentialGcpServiceAccountKeyArgs',
    'TableColumnArgs',
    'GetClusterClusterInfoArgs',
    'GetClusterClusterInfoAutoscaleArgs',
    'GetClusterClusterInfoAwsAttributesArgs',
    'GetClusterClusterInfoAzureAttributesArgs',
    'GetClusterClusterInfoClusterLogConfArgs',
    'GetClusterClusterInfoClusterLogConfDbfsArgs',
    'GetClusterClusterInfoClusterLogConfS3Args',
    'GetClusterClusterInfoClusterLogStatusArgs',
    'GetClusterClusterInfoDockerImageArgs',
    'GetClusterClusterInfoDockerImageBasicAuthArgs',
    'GetClusterClusterInfoDriverArgs',
    'GetClusterClusterInfoDriverNodeAwsAttributesArgs',
    'GetClusterClusterInfoExecutorArgs',
    'GetClusterClusterInfoExecutorNodeAwsAttributesArgs',
    'GetClusterClusterInfoGcpAttributesArgs',
    'GetClusterClusterInfoInitScriptArgs',
    'GetClusterClusterInfoInitScriptDbfsArgs',
    'GetClusterClusterInfoInitScriptS3Args',
    'GetClusterClusterInfoTerminationReasonArgs',
    'GetInstancePoolPoolInfoArgs',
    'GetInstancePoolPoolInfoAwsAttributesArgs',
    'GetInstancePoolPoolInfoAzureAttributesArgs',
    'GetInstancePoolPoolInfoDiskSpecArgs',
    'GetInstancePoolPoolInfoDiskSpecDiskTypeArgs',
    'GetInstancePoolPoolInfoGcpAttributesArgs',
    'GetInstancePoolPoolInfoInstancePoolFleetAttributeArgs',
    'GetInstancePoolPoolInfoInstancePoolFleetAttributeFleetOnDemandOptionArgs',
    'GetInstancePoolPoolInfoInstancePoolFleetAttributeFleetSpotOptionArgs',
    'GetInstancePoolPoolInfoInstancePoolFleetAttributeLaunchTemplateOverrideArgs',
    'GetInstancePoolPoolInfoPreloadedDockerImageArgs',
    'GetInstancePoolPoolInfoPreloadedDockerImageBasicAuthArgs',
    'GetInstancePoolPoolInfoStatsArgs',
    'GetJobJobSettingsArgs',
    'GetJobJobSettingsSettingsArgs',
    'GetJobJobSettingsSettingsContinuousArgs',
    'GetJobJobSettingsSettingsDbtTaskArgs',
    'GetJobJobSettingsSettingsEmailNotificationsArgs',
    'GetJobJobSettingsSettingsGitSourceArgs',
    'GetJobJobSettingsSettingsJobClusterArgs',
    'GetJobJobSettingsSettingsJobClusterNewClusterArgs',
    'GetJobJobSettingsSettingsJobClusterNewClusterAutoscaleArgs',
    'GetJobJobSettingsSettingsJobClusterNewClusterAwsAttributesArgs',
    'GetJobJobSettingsSettingsJobClusterNewClusterAzureAttributesArgs',
    'GetJobJobSettingsSettingsJobClusterNewClusterClusterLogConfArgs',
    'GetJobJobSettingsSettingsJobClusterNewClusterClusterLogConfDbfsArgs',
    'GetJobJobSettingsSettingsJobClusterNewClusterClusterLogConfS3Args',
    'GetJobJobSettingsSettingsJobClusterNewClusterClusterMountInfoArgs',
    'GetJobJobSettingsSettingsJobClusterNewClusterClusterMountInfoNetworkFilesystemInfoArgs',
    'GetJobJobSettingsSettingsJobClusterNewClusterDockerImageArgs',
    'GetJobJobSettingsSettingsJobClusterNewClusterDockerImageBasicAuthArgs',
    'GetJobJobSettingsSettingsJobClusterNewClusterGcpAttributesArgs',
    'GetJobJobSettingsSettingsJobClusterNewClusterInitScriptArgs',
    'GetJobJobSettingsSettingsJobClusterNewClusterInitScriptAbfssArgs',
    'GetJobJobSettingsSettingsJobClusterNewClusterInitScriptDbfsArgs',
    'GetJobJobSettingsSettingsJobClusterNewClusterInitScriptFileArgs',
    'GetJobJobSettingsSettingsJobClusterNewClusterInitScriptGcsArgs',
    'GetJobJobSettingsSettingsJobClusterNewClusterInitScriptS3Args',
    'GetJobJobSettingsSettingsJobClusterNewClusterWorkloadTypeArgs',
    'GetJobJobSettingsSettingsJobClusterNewClusterWorkloadTypeClientsArgs',
    'GetJobJobSettingsSettingsLibraryArgs',
    'GetJobJobSettingsSettingsLibraryCranArgs',
    'GetJobJobSettingsSettingsLibraryMavenArgs',
    'GetJobJobSettingsSettingsLibraryPypiArgs',
    'GetJobJobSettingsSettingsNewClusterArgs',
    'GetJobJobSettingsSettingsNewClusterAutoscaleArgs',
    'GetJobJobSettingsSettingsNewClusterAwsAttributesArgs',
    'GetJobJobSettingsSettingsNewClusterAzureAttributesArgs',
    'GetJobJobSettingsSettingsNewClusterClusterLogConfArgs',
    'GetJobJobSettingsSettingsNewClusterClusterLogConfDbfsArgs',
    'GetJobJobSettingsSettingsNewClusterClusterLogConfS3Args',
    'GetJobJobSettingsSettingsNewClusterClusterMountInfoArgs',
    'GetJobJobSettingsSettingsNewClusterClusterMountInfoNetworkFilesystemInfoArgs',
    'GetJobJobSettingsSettingsNewClusterDockerImageArgs',
    'GetJobJobSettingsSettingsNewClusterDockerImageBasicAuthArgs',
    'GetJobJobSettingsSettingsNewClusterGcpAttributesArgs',
    'GetJobJobSettingsSettingsNewClusterInitScriptArgs',
    'GetJobJobSettingsSettingsNewClusterInitScriptAbfssArgs',
    'GetJobJobSettingsSettingsNewClusterInitScriptDbfsArgs',
    'GetJobJobSettingsSettingsNewClusterInitScriptFileArgs',
    'GetJobJobSettingsSettingsNewClusterInitScriptGcsArgs',
    'GetJobJobSettingsSettingsNewClusterInitScriptS3Args',
    'GetJobJobSettingsSettingsNewClusterWorkloadTypeArgs',
    'GetJobJobSettingsSettingsNewClusterWorkloadTypeClientsArgs',
    'GetJobJobSettingsSettingsNotebookTaskArgs',
    'GetJobJobSettingsSettingsPipelineTaskArgs',
    'GetJobJobSettingsSettingsPythonWheelTaskArgs',
    'GetJobJobSettingsSettingsScheduleArgs',
    'GetJobJobSettingsSettingsSparkJarTaskArgs',
    'GetJobJobSettingsSettingsSparkPythonTaskArgs',
    'GetJobJobSettingsSettingsSparkSubmitTaskArgs',
    'GetJobJobSettingsSettingsTaskArgs',
    'GetJobJobSettingsSettingsTaskDbtTaskArgs',
    'GetJobJobSettingsSettingsTaskDependsOnArgs',
    'GetJobJobSettingsSettingsTaskEmailNotificationsArgs',
    'GetJobJobSettingsSettingsTaskLibraryArgs',
    'GetJobJobSettingsSettingsTaskLibraryCranArgs',
    'GetJobJobSettingsSettingsTaskLibraryMavenArgs',
    'GetJobJobSettingsSettingsTaskLibraryPypiArgs',
    'GetJobJobSettingsSettingsTaskNewClusterArgs',
    'GetJobJobSettingsSettingsTaskNewClusterAutoscaleArgs',
    'GetJobJobSettingsSettingsTaskNewClusterAwsAttributesArgs',
    'GetJobJobSettingsSettingsTaskNewClusterAzureAttributesArgs',
    'GetJobJobSettingsSettingsTaskNewClusterClusterLogConfArgs',
    'GetJobJobSettingsSettingsTaskNewClusterClusterLogConfDbfsArgs',
    'GetJobJobSettingsSettingsTaskNewClusterClusterLogConfS3Args',
    'GetJobJobSettingsSettingsTaskNewClusterClusterMountInfoArgs',
    'GetJobJobSettingsSettingsTaskNewClusterClusterMountInfoNetworkFilesystemInfoArgs',
    'GetJobJobSettingsSettingsTaskNewClusterDockerImageArgs',
    'GetJobJobSettingsSettingsTaskNewClusterDockerImageBasicAuthArgs',
    'GetJobJobSettingsSettingsTaskNewClusterGcpAttributesArgs',
    'GetJobJobSettingsSettingsTaskNewClusterInitScriptArgs',
    'GetJobJobSettingsSettingsTaskNewClusterInitScriptAbfssArgs',
    'GetJobJobSettingsSettingsTaskNewClusterInitScriptDbfsArgs',
    'GetJobJobSettingsSettingsTaskNewClusterInitScriptFileArgs',
    'GetJobJobSettingsSettingsTaskNewClusterInitScriptGcsArgs',
    'GetJobJobSettingsSettingsTaskNewClusterInitScriptS3Args',
    'GetJobJobSettingsSettingsTaskNewClusterWorkloadTypeArgs',
    'GetJobJobSettingsSettingsTaskNewClusterWorkloadTypeClientsArgs',
    'GetJobJobSettingsSettingsTaskNotebookTaskArgs',
    'GetJobJobSettingsSettingsTaskPipelineTaskArgs',
    'GetJobJobSettingsSettingsTaskPythonWheelTaskArgs',
    'GetJobJobSettingsSettingsTaskSparkJarTaskArgs',
    'GetJobJobSettingsSettingsTaskSparkPythonTaskArgs',
    'GetJobJobSettingsSettingsTaskSparkSubmitTaskArgs',
    'GetJobJobSettingsSettingsTaskSqlTaskArgs',
    'GetJobJobSettingsSettingsTaskSqlTaskAlertArgs',
    'GetJobJobSettingsSettingsTaskSqlTaskDashboardArgs',
    'GetJobJobSettingsSettingsTaskSqlTaskQueryArgs',
    'GetJobJobSettingsSettingsWebhookNotificationsArgs',
    'GetJobJobSettingsSettingsWebhookNotificationsOnFailureArgs',
    'GetJobJobSettingsSettingsWebhookNotificationsOnStartArgs',
    'GetJobJobSettingsSettingsWebhookNotificationsOnSuccessArgs',
    'GetShareObjectArgs',
    'GetShareObjectPartitionArgs',
    'GetShareObjectPartitionValueArgs',
    'GetSqlWarehouseChannelArgs',
    'GetSqlWarehouseOdbcParamsArgs',
    'GetSqlWarehouseTagsArgs',
    'GetSqlWarehouseTagsCustomTagArgs',
]

@pulumi.input_type
class ClusterAutoscaleArgs:
    def __init__(__self__, *,
                 max_workers: Optional[pulumi.Input[int]] = None,
                 min_workers: Optional[pulumi.Input[int]] = None):
        if max_workers is not None:
            pulumi.set(__self__, "max_workers", max_workers)
        if min_workers is not None:
            pulumi.set(__self__, "min_workers", min_workers)

    @property
    @pulumi.getter(name="maxWorkers")
    def max_workers(self) -> Optional[pulumi.Input[int]]:
        return pulumi.get(self, "max_workers")

    @max_workers.setter
    def max_workers(self, value: Optional[pulumi.Input[int]]):
        pulumi.set(self, "max_workers", value)

    @property
    @pulumi.getter(name="minWorkers")
    def min_workers(self) -> Optional[pulumi.Input[int]]:
        return pulumi.get(self, "min_workers")

    @min_workers.setter
    def min_workers(self, value: Optional[pulumi.Input[int]]):
        pulumi.set(self, "min_workers", value)


@pulumi.input_type
class ClusterAwsAttributesArgs:
    def __init__(__self__, *,
                 availability: Optional[pulumi.Input[str]] = None,
                 ebs_volume_count: Optional[pulumi.Input[int]] = None,
                 ebs_volume_size: Optional[pulumi.Input[int]] = None,
                 ebs_volume_type: Optional[pulumi.Input[str]] = None,
                 first_on_demand: Optional[pulumi.Input[int]] = None,
                 instance_profile_arn: Optional[pulumi.Input[str]] = None,
                 spot_bid_price_percent: Optional[pulumi.Input[int]] = None,
                 zone_id: Optional[pulumi.Input[str]] = None):
        if availability is not None:
            pulumi.set(__self__, "availability", availability)
        if ebs_volume_count is not None:
            pulumi.set(__self__, "ebs_volume_count", ebs_volume_count)
        if ebs_volume_size is not None:
            pulumi.set(__self__, "ebs_volume_size", ebs_volume_size)
        if ebs_volume_type is not None:
            pulumi.set(__self__, "ebs_volume_type", ebs_volume_type)
        if first_on_demand is not None:
            pulumi.set(__self__, "first_on_demand", first_on_demand)
        if instance_profile_arn is not None:
            pulumi.set(__self__, "instance_profile_arn", instance_profile_arn)
        if spot_bid_price_percent is not None:
            pulumi.set(__self__, "spot_bid_price_percent", spot_bid_price_percent)
        if zone_id is not None:
            pulumi.set(__self__, "zone_id", zone_id)

    @property
    @pulumi.getter
    def availability(self) -> Optional[pulumi.Input[str]]:
        return pulumi.get(self, "availability")

    @availability.setter
    def availability(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "availability", value)

    @property
    @pulumi.getter(name="ebsVolumeCount")
    def ebs_volume_count(self) -> Optional[pulumi.Input[int]]:
        return pulumi.get(self, "ebs_volume_count")

    @ebs_volume_count.setter
    def ebs_volume_count(self, value: Optional[pulumi.Input[int]]):
        pulumi.set(self, "ebs_volume_count", value)

    @property
    @pulumi.getter(name="ebsVolumeSize")
    def ebs_volume_size(self) -> Optional[pulumi.Input[int]]:
        return pulumi.get(self, "ebs_volume_size")

    @ebs_volume_size.setter
    def ebs_volume_size(self, value: Optional[pulumi.Input[int]]):
        pulumi.set(self, "ebs_volume_size", value)

    @property
    @pulumi.getter(name="ebsVolumeType")
    def ebs_volume_type(self) -> Optional[pulumi.Input[str]]:
        return pulumi.get(self, "ebs_volume_type")

    @ebs_volume_type.setter
    def ebs_volume_type(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "ebs_volume_type", value)

    @property
    @pulumi.getter(name="firstOnDemand")
    def first_on_demand(self) -> Optional[pulumi.Input[int]]:
        return pulumi.get(self, "first_on_demand")

    @first_on_demand.setter
    def first_on_demand(self, value: Optional[pulumi.Input[int]]):
        pulumi.set(self, "first_on_demand", value)

    @property
    @pulumi.getter(name="instanceProfileArn")
    def instance_profile_arn(self) -> Optional[pulumi.Input[str]]:
        return pulumi.get(self, "instance_profile_arn")

    @instance_profile_arn.setter
    def instance_profile_arn(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "instance_profile_arn", value)

    @property
    @pulumi.getter(name="spotBidPricePercent")
    def spot_bid_price_percent(self) -> Optional[pulumi.Input[int]]:
        return pulumi.get(self, "spot_bid_price_percent")

    @spot_bid_price_percent.setter
    def spot_bid_price_percent(self, value: Optional[pulumi.Input[int]]):
        pulumi.set(self, "spot_bid_price_percent", value)

    @property
    @pulumi.getter(name="zoneId")
    def zone_id(self) -> Optional[pulumi.Input[str]]:
        return pulumi.get(self, "zone_id")

    @zone_id.setter
    def zone_id(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "zone_id", value)


@pulumi.input_type
class ClusterAzureAttributesArgs:
    def __init__(__self__, *,
                 availability: Optional[pulumi.Input[str]] = None,
                 first_on_demand: Optional[pulumi.Input[int]] = None,
                 spot_bid_max_price: Optional[pulumi.Input[float]] = None):
        if availability is not None:
            pulumi.set(__self__, "availability", availability)
        if first_on_demand is not None:
            pulumi.set(__self__, "first_on_demand", first_on_demand)
        if spot_bid_max_price is not None:
            pulumi.set(__self__, "spot_bid_max_price", spot_bid_max_price)

    @property
    @pulumi.getter
    def availability(self) -> Optional[pulumi.Input[str]]:
        return pulumi.get(self, "availability")

    @availability.setter
    def availability(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "availability", value)

    @property
    @pulumi.getter(name="firstOnDemand")
    def first_on_demand(self) -> Optional[pulumi.Input[int]]:
        return pulumi.get(self, "first_on_demand")

    @first_on_demand.setter
    def first_on_demand(self, value: Optional[pulumi.Input[int]]):
        pulumi.set(self, "first_on_demand", value)

    @property
    @pulumi.getter(name="spotBidMaxPrice")
    def spot_bid_max_price(self) -> Optional[pulumi.Input[float]]:
        return pulumi.get(self, "spot_bid_max_price")

    @spot_bid_max_price.setter
    def spot_bid_max_price(self, value: Optional[pulumi.Input[float]]):
        pulumi.set(self, "spot_bid_max_price", value)


@pulumi.input_type
class ClusterClusterLogConfArgs:
    def __init__(__self__, *,
                 dbfs: Optional[pulumi.Input['ClusterClusterLogConfDbfsArgs']] = None,
                 s3: Optional[pulumi.Input['ClusterClusterLogConfS3Args']] = None):
        if dbfs is not None:
            pulumi.set(__self__, "dbfs", dbfs)
        if s3 is not None:
            pulumi.set(__self__, "s3", s3)

    @property
    @pulumi.getter
    def dbfs(self) -> Optional[pulumi.Input['ClusterClusterLogConfDbfsArgs']]:
        return pulumi.get(self, "dbfs")

    @dbfs.setter
    def dbfs(self, value: Optional[pulumi.Input['ClusterClusterLogConfDbfsArgs']]):
        pulumi.set(self, "dbfs", value)

    @property
    @pulumi.getter
    def s3(self) -> Optional[pulumi.Input['ClusterClusterLogConfS3Args']]:
        return pulumi.get(self, "s3")

    @s3.setter
    def s3(self, value: Optional[pulumi.Input['ClusterClusterLogConfS3Args']]):
        pulumi.set(self, "s3", value)


@pulumi.input_type
class ClusterClusterLogConfDbfsArgs:
    def __init__(__self__, *,
                 destination: pulumi.Input[str]):
        pulumi.set(__self__, "destination", destination)

    @property
    @pulumi.getter
    def destination(self) -> pulumi.Input[str]:
        return pulumi.get(self, "destination")

    @destination.setter
    def destination(self, value: pulumi.Input[str]):
        pulumi.set(self, "destination", value)


@pulumi.input_type
class ClusterClusterLogConfS3Args:
    def __init__(__self__, *,
                 destination: pulumi.Input[str],
                 canned_acl: Optional[pulumi.Input[str]] = None,
                 enable_encryption: Optional[pulumi.Input[bool]] = None,
                 encryption_type: Optional[pulumi.Input[str]] = None,
                 endpoint: Optional[pulumi.Input[str]] = None,
                 kms_key: Optional[pulumi.Input[str]] = None,
                 region: Optional[pulumi.Input[str]] = None):
        pulumi.set(__self__, "destination", destination)
        if canned_acl is not None:
            pulumi.set(__self__, "canned_acl", canned_acl)
        if enable_encryption is not None:
            pulumi.set(__self__, "enable_encryption", enable_encryption)
        if encryption_type is not None:
            pulumi.set(__self__, "encryption_type", encryption_type)
        if endpoint is not None:
            pulumi.set(__self__, "endpoint", endpoint)
        if kms_key is not None:
            pulumi.set(__self__, "kms_key", kms_key)
        if region is not None:
            pulumi.set(__self__, "region", region)

    @property
    @pulumi.getter
    def destination(self) -> pulumi.Input[str]:
        return pulumi.get(self, "destination")

    @destination.setter
    def destination(self, value: pulumi.Input[str]):
        pulumi.set(self, "destination", value)

    @property
    @pulumi.getter(name="cannedAcl")
    def canned_acl(self) -> Optional[pulumi.Input[str]]:
        return pulumi.get(self, "canned_acl")

    @canned_acl.setter
    def canned_acl(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "canned_acl", value)

    @property
    @pulumi.getter(name="enableEncryption")
    def enable_encryption(self) -> Optional[pulumi.Input[bool]]:
        return pulumi.get(self, "enable_encryption")

    @enable_encryption.setter
    def enable_encryption(self, value: Optional[pulumi.Input[bool]]):
        pulumi.set(self, "enable_encryption", value)

    @property
    @pulumi.getter(name="encryptionType")
    def encryption_type(self) -> Optional[pulumi.Input[str]]:
        return pulumi.get(self, "encryption_type")

    @encryption_type.setter
    def encryption_type(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "encryption_type", value)

    @property
    @pulumi.getter
    def endpoint(self) -> Optional[pulumi.Input[str]]:
        return pulumi.get(self, "endpoint")

    @endpoint.setter
    def endpoint(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "endpoint", value)

    @property
    @pulumi.getter(name="kmsKey")
    def kms_key(self) -> Optional[pulumi.Input[str]]:
        return pulumi.get(self, "kms_key")

    @kms_key.setter
    def kms_key(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "kms_key", value)

    @property
    @pulumi.getter
    def region(self) -> Optional[pulumi.Input[str]]:
        return pulumi.get(self, "region")

    @region.setter
    def region(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "region", value)


@pulumi.input_type
class ClusterClusterMountInfoArgs:
    def __init__(__self__, *,
                 local_mount_dir_path: pulumi.Input[str],
                 network_filesystem_info: pulumi.Input['ClusterClusterMountInfoNetworkFilesystemInfoArgs'],
                 remote_mount_dir_path: Optional[pulumi.Input[str]] = None):
        pulumi.set(__self__, "local_mount_dir_path", local_mount_dir_path)
        pulumi.set(__self__, "network_filesystem_info", network_filesystem_info)
        if remote_mount_dir_path is not None:
            pulumi.set(__self__, "remote_mount_dir_path", remote_mount_dir_path)

    @property
    @pulumi.getter(name="localMountDirPath")
    def local_mount_dir_path(self) -> pulumi.Input[str]:
        return pulumi.get(self, "local_mount_dir_path")

    @local_mount_dir_path.setter
    def local_mount_dir_path(self, value: pulumi.Input[str]):
        pulumi.set(self, "local_mount_dir_path", value)

    @property
    @pulumi.getter(name="networkFilesystemInfo")
    def network_filesystem_info(self) -> pulumi.Input['ClusterClusterMountInfoNetworkFilesystemInfoArgs']:
        return pulumi.get(self, "network_filesystem_info")

    @network_filesystem_info.setter
    def network_filesystem_info(self, value: pulumi.Input['ClusterClusterMountInfoNetworkFilesystemInfoArgs']):
        pulumi.set(self, "network_filesystem_info", value)

    @property
    @pulumi.getter(name="remoteMountDirPath")
    def remote_mount_dir_path(self) -> Optional[pulumi.Input[str]]:
        return pulumi.get(self, "remote_mount_dir_path")

    @remote_mount_dir_path.setter
    def remote_mount_dir_path(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "remote_mount_dir_path", value)


@pulumi.input_type
class ClusterClusterMountInfoNetworkFilesystemInfoArgs:
    def __init__(__self__, *,
                 server_address: pulumi.Input[str],
                 mount_options: Optional[pulumi.Input[str]] = None):
        pulumi.set(__self__, "server_address", server_address)
        if mount_options is not None:
            pulumi.set(__self__, "mount_options", mount_options)

    @property
    @pulumi.getter(name="serverAddress")
    def server_address(self) -> pulumi.Input[str]:
        return pulumi.get(self, "server_address")

    @server_address.setter
    def server_address(self, value: pulumi.Input[str]):
        pulumi.set(self, "server_address", value)

    @property
    @pulumi.getter(name="mountOptions")
    def mount_options(self) -> Optional[pulumi.Input[str]]:
        return pulumi.get(self, "mount_options")

    @mount_options.setter
    def mount_options(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "mount_options", value)


@pulumi.input_type
class ClusterDockerImageArgs:
    def __init__(__self__, *,
                 url: pulumi.Input[str],
                 basic_auth: Optional[pulumi.Input['ClusterDockerImageBasicAuthArgs']] = None):
        pulumi.set(__self__, "url", url)
        if basic_auth is not None:
            pulumi.set(__self__, "basic_auth", basic_auth)

    @property
    @pulumi.getter
    def url(self) -> pulumi.Input[str]:
        return pulumi.get(self, "url")

    @url.setter
    def url(self, value: pulumi.Input[str]):
        pulumi.set(self, "url", value)

    @property
    @pulumi.getter(name="basicAuth")
    def basic_auth(self) -> Optional[pulumi.Input['ClusterDockerImageBasicAuthArgs']]:
        return pulumi.get(self, "basic_auth")

    @basic_auth.setter
    def basic_auth(self, value: Optional[pulumi.Input['ClusterDockerImageBasicAuthArgs']]):
        pulumi.set(self, "basic_auth", value)


@pulumi.input_type
class ClusterDockerImageBasicAuthArgs:
    def __init__(__self__, *,
                 password: pulumi.Input[str],
                 username: pulumi.Input[str]):
        pulumi.set(__self__, "password", password)
        pulumi.set(__self__, "username", username)

    @property
    @pulumi.getter
    def password(self) -> pulumi.Input[str]:
        return pulumi.get(self, "password")

    @password.setter
    def password(self, value: pulumi.Input[str]):
        pulumi.set(self, "password", value)

    @property
    @pulumi.getter
    def username(self) -> pulumi.Input[str]:
        return pulumi.get(self, "username")

    @username.setter
    def username(self, value: pulumi.Input[str]):
        pulumi.set(self, "username", value)


@pulumi.input_type
class ClusterGcpAttributesArgs:
    def __init__(__self__, *,
                 availability: Optional[pulumi.Input[str]] = None,
                 boot_disk_size: Optional[pulumi.Input[int]] = None,
                 google_service_account: Optional[pulumi.Input[str]] = None,
                 use_preemptible_executors: Optional[pulumi.Input[bool]] = None,
                 zone_id: Optional[pulumi.Input[str]] = None):
        if availability is not None:
            pulumi.set(__self__, "availability", availability)
        if boot_disk_size is not None:
            pulumi.set(__self__, "boot_disk_size", boot_disk_size)
        if google_service_account is not None:
            pulumi.set(__self__, "google_service_account", google_service_account)
        if use_preemptible_executors is not None:
            pulumi.set(__self__, "use_preemptible_executors", use_preemptible_executors)
        if zone_id is not None:
            pulumi.set(__self__, "zone_id", zone_id)

    @property
    @pulumi.getter
    def availability(self) -> Optional[pulumi.Input[str]]:
        return pulumi.get(self, "availability")

    @availability.setter
    def availability(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "availability", value)

    @property
    @pulumi.getter(name="bootDiskSize")
    def boot_disk_size(self) -> Optional[pulumi.Input[int]]:
        return pulumi.get(self, "boot_disk_size")

    @boot_disk_size.setter
    def boot_disk_size(self, value: Optional[pulumi.Input[int]]):
        pulumi.set(self, "boot_disk_size", value)

    @property
    @pulumi.getter(name="googleServiceAccount")
    def google_service_account(self) -> Optional[pulumi.Input[str]]:
        return pulumi.get(self, "google_service_account")

    @google_service_account.setter
    def google_service_account(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "google_service_account", value)

    @property
    @pulumi.getter(name="usePreemptibleExecutors")
    def use_preemptible_executors(self) -> Optional[pulumi.Input[bool]]:
        return pulumi.get(self, "use_preemptible_executors")

    @use_preemptible_executors.setter
    def use_preemptible_executors(self, value: Optional[pulumi.Input[bool]]):
        pulumi.set(self, "use_preemptible_executors", value)

    @property
    @pulumi.getter(name="zoneId")
    def zone_id(self) -> Optional[pulumi.Input[str]]:
        return pulumi.get(self, "zone_id")

    @zone_id.setter
    def zone_id(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "zone_id", value)


@pulumi.input_type
class ClusterInitScriptArgs:
    def __init__(__self__, *,
                 abfss: Optional[pulumi.Input['ClusterInitScriptAbfssArgs']] = None,
                 dbfs: Optional[pulumi.Input['ClusterInitScriptDbfsArgs']] = None,
                 file: Optional[pulumi.Input['ClusterInitScriptFileArgs']] = None,
                 gcs: Optional[pulumi.Input['ClusterInitScriptGcsArgs']] = None,
                 s3: Optional[pulumi.Input['ClusterInitScriptS3Args']] = None):
        if abfss is not None:
            pulumi.set(__self__, "abfss", abfss)
        if dbfs is not None:
            pulumi.set(__self__, "dbfs", dbfs)
        if file is not None:
            pulumi.set(__self__, "file", file)
        if gcs is not None:
            pulumi.set(__self__, "gcs", gcs)
        if s3 is not None:
            pulumi.set(__self__, "s3", s3)

    @property
    @pulumi.getter
    def abfss(self) -> Optional[pulumi.Input['ClusterInitScriptAbfssArgs']]:
        return pulumi.get(self, "abfss")

    @abfss.setter
    def abfss(self, value: Optional[pulumi.Input['ClusterInitScriptAbfssArgs']]):
        pulumi.set(self, "abfss", value)

    @property
    @pulumi.getter
    def dbfs(self) -> Optional[pulumi.Input['ClusterInitScriptDbfsArgs']]:
        return pulumi.get(self, "dbfs")

    @dbfs.setter
    def dbfs(self, value: Optional[pulumi.Input['ClusterInitScriptDbfsArgs']]):
        pulumi.set(self, "dbfs", value)

    @property
    @pulumi.getter
    def file(self) -> Optional[pulumi.Input['ClusterInitScriptFileArgs']]:
        return pulumi.get(self, "file")

    @file.setter
    def file(self, value: Optional[pulumi.Input['ClusterInitScriptFileArgs']]):
        pulumi.set(self, "file", value)

    @property
    @pulumi.getter
    def gcs(self) -> Optional[pulumi.Input['ClusterInitScriptGcsArgs']]:
        return pulumi.get(self, "gcs")

    @gcs.setter
    def gcs(self, value: Optional[pulumi.Input['ClusterInitScriptGcsArgs']]):
        pulumi.set(self, "gcs", value)

    @property
    @pulumi.getter
    def s3(self) -> Optional[pulumi.Input['ClusterInitScriptS3Args']]:
        return pulumi.get(self, "s3")

    @s3.setter
    def s3(self, value: Optional[pulumi.Input['ClusterInitScriptS3Args']]):
        pulumi.set(self, "s3", value)


@pulumi.input_type
class ClusterInitScriptAbfssArgs:
    def __init__(__self__, *,
                 destination: Optional[pulumi.Input[str]] = None):
        if destination is not None:
            pulumi.set(__self__, "destination", destination)

    @property
    @pulumi.getter
    def destination(self) -> Optional[pulumi.Input[str]]:
        return pulumi.get(self, "destination")

    @destination.setter
    def destination(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "destination", value)


@pulumi.input_type
class ClusterInitScriptDbfsArgs:
    def __init__(__self__, *,
                 destination: pulumi.Input[str]):
        pulumi.set(__self__, "destination", destination)

    @property
    @pulumi.getter
    def destination(self) -> pulumi.Input[str]:
        return pulumi.get(self, "destination")

    @destination.setter
    def destination(self, value: pulumi.Input[str]):
        pulumi.set(self, "destination", value)


@pulumi.input_type
class ClusterInitScriptFileArgs:
    def __init__(__self__, *,
                 destination: Optional[pulumi.Input[str]] = None):
        if destination is not None:
            pulumi.set(__self__, "destination", destination)

    @property
    @pulumi.getter
    def destination(self) -> Optional[pulumi.Input[str]]:
        return pulumi.get(self, "destination")

    @destination.setter
    def destination(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "destination", value)


@pulumi.input_type
class ClusterInitScriptGcsArgs:
    def __init__(__self__, *,
                 destination: Optional[pulumi.Input[str]] = None):
        if destination is not None:
            pulumi.set(__self__, "destination", destination)

    @property
    @pulumi.getter
    def destination(self) -> Optional[pulumi.Input[str]]:
        return pulumi.get(self, "destination")

    @destination.setter
    def destination(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "destination", value)


@pulumi.input_type
class ClusterInitScriptS3Args:
    def __init__(__self__, *,
                 destination: pulumi.Input[str],
                 canned_acl: Optional[pulumi.Input[str]] = None,
                 enable_encryption: Optional[pulumi.Input[bool]] = None,
                 encryption_type: Optional[pulumi.Input[str]] = None,
                 endpoint: Optional[pulumi.Input[str]] = None,
                 kms_key: Optional[pulumi.Input[str]] = None,
                 region: Optional[pulumi.Input[str]] = None):
        pulumi.set(__self__, "destination", destination)
        if canned_acl is not None:
            pulumi.set(__self__, "canned_acl", canned_acl)
        if enable_encryption is not None:
            pulumi.set(__self__, "enable_encryption", enable_encryption)
        if encryption_type is not None:
            pulumi.set(__self__, "encryption_type", encryption_type)
        if endpoint is not None:
            pulumi.set(__self__, "endpoint", endpoint)
        if kms_key is not None:
            pulumi.set(__self__, "kms_key", kms_key)
        if region is not None:
            pulumi.set(__self__, "region", region)

    @property
    @pulumi.getter
    def destination(self) -> pulumi.Input[str]:
        return pulumi.get(self, "destination")

    @destination.setter
    def destination(self, value: pulumi.Input[str]):
        pulumi.set(self, "destination", value)

    @property
    @pulumi.getter(name="cannedAcl")
    def canned_acl(self) -> Optional[pulumi.Input[str]]:
        return pulumi.get(self, "canned_acl")

    @canned_acl.setter
    def canned_acl(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "canned_acl", value)

    @property
    @pulumi.getter(name="enableEncryption")
    def enable_encryption(self) -> Optional[pulumi.Input[bool]]:
        return pulumi.get(self, "enable_encryption")

    @enable_encryption.setter
    def enable_encryption(self, value: Optional[pulumi.Input[bool]]):
        pulumi.set(self, "enable_encryption", value)

    @property
    @pulumi.getter(name="encryptionType")
    def encryption_type(self) -> Optional[pulumi.Input[str]]:
        return pulumi.get(self, "encryption_type")

    @encryption_type.setter
    def encryption_type(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "encryption_type", value)

    @property
    @pulumi.getter
    def endpoint(self) -> Optional[pulumi.Input[str]]:
        return pulumi.get(self, "endpoint")

    @endpoint.setter
    def endpoint(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "endpoint", value)

    @property
    @pulumi.getter(name="kmsKey")
    def kms_key(self) -> Optional[pulumi.Input[str]]:
        return pulumi.get(self, "kms_key")

    @kms_key.setter
    def kms_key(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "kms_key", value)

    @property
    @pulumi.getter
    def region(self) -> Optional[pulumi.Input[str]]:
        return pulumi.get(self, "region")

    @region.setter
    def region(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "region", value)


@pulumi.input_type
class ClusterLibraryArgs:
    def __init__(__self__, *,
                 cran: Optional[pulumi.Input['ClusterLibraryCranArgs']] = None,
                 egg: Optional[pulumi.Input[str]] = None,
                 jar: Optional[pulumi.Input[str]] = None,
                 maven: Optional[pulumi.Input['ClusterLibraryMavenArgs']] = None,
                 pypi: Optional[pulumi.Input['ClusterLibraryPypiArgs']] = None,
                 whl: Optional[pulumi.Input[str]] = None):
        if cran is not None:
            pulumi.set(__self__, "cran", cran)
        if egg is not None:
            pulumi.set(__self__, "egg", egg)
        if jar is not None:
            pulumi.set(__self__, "jar", jar)
        if maven is not None:
            pulumi.set(__self__, "maven", maven)
        if pypi is not None:
            pulumi.set(__self__, "pypi", pypi)
        if whl is not None:
            pulumi.set(__self__, "whl", whl)

    @property
    @pulumi.getter
    def cran(self) -> Optional[pulumi.Input['ClusterLibraryCranArgs']]:
        return pulumi.get(self, "cran")

    @cran.setter
    def cran(self, value: Optional[pulumi.Input['ClusterLibraryCranArgs']]):
        pulumi.set(self, "cran", value)

    @property
    @pulumi.getter
    def egg(self) -> Optional[pulumi.Input[str]]:
        return pulumi.get(self, "egg")

    @egg.setter
    def egg(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "egg", value)

    @property
    @pulumi.getter
    def jar(self) -> Optional[pulumi.Input[str]]:
        return pulumi.get(self, "jar")

    @jar.setter
    def jar(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "jar", value)

    @property
    @pulumi.getter
    def maven(self) -> Optional[pulumi.Input['ClusterLibraryMavenArgs']]:
        return pulumi.get(self, "maven")

    @maven.setter
    def maven(self, value: Optional[pulumi.Input['ClusterLibraryMavenArgs']]):
        pulumi.set(self, "maven", value)

    @property
    @pulumi.getter
    def pypi(self) -> Optional[pulumi.Input['ClusterLibraryPypiArgs']]:
        return pulumi.get(self, "pypi")

    @pypi.setter
    def pypi(self, value: Optional[pulumi.Input['ClusterLibraryPypiArgs']]):
        pulumi.set(self, "pypi", value)

    @property
    @pulumi.getter
    def whl(self) -> Optional[pulumi.Input[str]]:
        return pulumi.get(self, "whl")

    @whl.setter
    def whl(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "whl", value)


@pulumi.input_type
class ClusterLibraryCranArgs:
    def __init__(__self__, *,
                 package: pulumi.Input[str],
                 repo: Optional[pulumi.Input[str]] = None):
        pulumi.set(__self__, "package", package)
        if repo is not None:
            pulumi.set(__self__, "repo", repo)

    @property
    @pulumi.getter
    def package(self) -> pulumi.Input[str]:
        return pulumi.get(self, "package")

    @package.setter
    def package(self, value: pulumi.Input[str]):
        pulumi.set(self, "package", value)

    @property
    @pulumi.getter
    def repo(self) -> Optional[pulumi.Input[str]]:
        return pulumi.get(self, "repo")

    @repo.setter
    def repo(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "repo", value)


@pulumi.input_type
class ClusterLibraryMavenArgs:
    def __init__(__self__, *,
                 coordinates: pulumi.Input[str],
                 exclusions: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None,
                 repo: Optional[pulumi.Input[str]] = None):
        pulumi.set(__self__, "coordinates", coordinates)
        if exclusions is not None:
            pulumi.set(__self__, "exclusions", exclusions)
        if repo is not None:
            pulumi.set(__self__, "repo", repo)

    @property
    @pulumi.getter
    def coordinates(self) -> pulumi.Input[str]:
        return pulumi.get(self, "coordinates")

    @coordinates.setter
    def coordinates(self, value: pulumi.Input[str]):
        pulumi.set(self, "coordinates", value)

    @property
    @pulumi.getter
    def exclusions(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]:
        return pulumi.get(self, "exclusions")

    @exclusions.setter
    def exclusions(self, value: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]):
        pulumi.set(self, "exclusions", value)

    @property
    @pulumi.getter
    def repo(self) -> Optional[pulumi.Input[str]]:
        return pulumi.get(self, "repo")

    @repo.setter
    def repo(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "repo", value)


@pulumi.input_type
class ClusterLibraryPypiArgs:
    def __init__(__self__, *,
                 package: pulumi.Input[str],
                 repo: Optional[pulumi.Input[str]] = None):
        pulumi.set(__self__, "package", package)
        if repo is not None:
            pulumi.set(__self__, "repo", repo)

    @property
    @pulumi.getter
    def package(self) -> pulumi.Input[str]:
        return pulumi.get(self, "package")

    @package.setter
    def package(self, value: pulumi.Input[str]):
        pulumi.set(self, "package", value)

    @property
    @pulumi.getter
    def repo(self) -> Optional[pulumi.Input[str]]:
        return pulumi.get(self, "repo")

    @repo.setter
    def repo(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "repo", value)


@pulumi.input_type
class ClusterWorkloadTypeArgs:
    def __init__(__self__, *,
                 clients: pulumi.Input['ClusterWorkloadTypeClientsArgs']):
        pulumi.set(__self__, "clients", clients)

    @property
    @pulumi.getter
    def clients(self) -> pulumi.Input['ClusterWorkloadTypeClientsArgs']:
        return pulumi.get(self, "clients")

    @clients.setter
    def clients(self, value: pulumi.Input['ClusterWorkloadTypeClientsArgs']):
        pulumi.set(self, "clients", value)


@pulumi.input_type
class ClusterWorkloadTypeClientsArgs:
    def __init__(__self__, *,
                 jobs: Optional[pulumi.Input[bool]] = None,
                 notebooks: Optional[pulumi.Input[bool]] = None):
        if jobs is not None:
            pulumi.set(__self__, "jobs", jobs)
        if notebooks is not None:
            pulumi.set(__self__, "notebooks", notebooks)

    @property
    @pulumi.getter
    def jobs(self) -> Optional[pulumi.Input[bool]]:
        return pulumi.get(self, "jobs")

    @jobs.setter
    def jobs(self, value: Optional[pulumi.Input[bool]]):
        pulumi.set(self, "jobs", value)

    @property
    @pulumi.getter
    def notebooks(self) -> Optional[pulumi.Input[bool]]:
        return pulumi.get(self, "notebooks")

    @notebooks.setter
    def notebooks(self, value: Optional[pulumi.Input[bool]]):
        pulumi.set(self, "notebooks", value)


@pulumi.input_type
class GrantsGrantArgs:
    def __init__(__self__, *,
                 principal: pulumi.Input[str],
                 privileges: pulumi.Input[Sequence[pulumi.Input[str]]]):
        pulumi.set(__self__, "principal", principal)
        pulumi.set(__self__, "privileges", privileges)

    @property
    @pulumi.getter
    def principal(self) -> pulumi.Input[str]:
        return pulumi.get(self, "principal")

    @principal.setter
    def principal(self, value: pulumi.Input[str]):
        pulumi.set(self, "principal", value)

    @property
    @pulumi.getter
    def privileges(self) -> pulumi.Input[Sequence[pulumi.Input[str]]]:
        return pulumi.get(self, "privileges")

    @privileges.setter
    def privileges(self, value: pulumi.Input[Sequence[pulumi.Input[str]]]):
        pulumi.set(self, "privileges", value)


@pulumi.input_type
class InstancePoolAwsAttributesArgs:
    def __init__(__self__, *,
                 availability: Optional[pulumi.Input[str]] = None,
                 spot_bid_price_percent: Optional[pulumi.Input[int]] = None,
                 zone_id: Optional[pulumi.Input[str]] = None):
        """
        :param pulumi.Input[str] availability: (String) Availability type used for all instances in the pool. Only `ON_DEMAND` and `SPOT` are supported.
        :param pulumi.Input[int] spot_bid_price_percent: (Integer) The max price for AWS spot instances, as a percentage of the corresponding instance type’s on-demand price. For example, if this field is set to 50, and the instance pool needs a new i3.xlarge spot instance, then the max price is half of the price of on-demand i3.xlarge instances. Similarly, if this field is set to 200, the max price is twice the price of on-demand i3.xlarge instances. If not specified, the *default value is 100*. When spot instances are requested for this instance pool, only spot instances whose max price percentage matches this field are considered. *For safety, this field cannot be greater than 10000.*
        :param pulumi.Input[str] zone_id: (String) Identifier for the availability zone/datacenter in which the instance pool resides. This string is of the form like `"us-west-2a"`. The provided availability zone must be in the same region as the Databricks deployment. For example, `"us-west-2a"` is not a valid zone ID if the Databricks deployment resides in the `"us-east-1"` region. If not specified, a default zone is used. You can find the list of available zones as well as the default value by using the [List Zones API](https://docs.databricks.com/dev-tools/api/latest/clusters.html#clusterclusterservicelistavailablezones).
        """
        if availability is not None:
            pulumi.set(__self__, "availability", availability)
        if spot_bid_price_percent is not None:
            pulumi.set(__self__, "spot_bid_price_percent", spot_bid_price_percent)
        if zone_id is not None:
            pulumi.set(__self__, "zone_id", zone_id)

    @property
    @pulumi.getter
    def availability(self) -> Optional[pulumi.Input[str]]:
        """
        (String) Availability type used for all instances in the pool. Only `ON_DEMAND` and `SPOT` are supported.
        """
        return pulumi.get(self, "availability")

    @availability.setter
    def availability(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "availability", value)

    @property
    @pulumi.getter(name="spotBidPricePercent")
    def spot_bid_price_percent(self) -> Optional[pulumi.Input[int]]:
        """
        (Integer) The max price for AWS spot instances, as a percentage of the corresponding instance type’s on-demand price. For example, if this field is set to 50, and the instance pool needs a new i3.xlarge spot instance, then the max price is half of the price of on-demand i3.xlarge instances. Similarly, if this field is set to 200, the max price is twice the price of on-demand i3.xlarge instances. If not specified, the *default value is 100*. When spot instances are requested for this instance pool, only spot instances whose max price percentage matches this field are considered. *For safety, this field cannot be greater than 10000.*
        """
        return pulumi.get(self, "spot_bid_price_percent")

    @spot_bid_price_percent.setter
    def spot_bid_price_percent(self, value: Optional[pulumi.Input[int]]):
        pulumi.set(self, "spot_bid_price_percent", value)

    @property
    @pulumi.getter(name="zoneId")
    def zone_id(self) -> Optional[pulumi.Input[str]]:
        """
        (String) Identifier for the availability zone/datacenter in which the instance pool resides. This string is of the form like `"us-west-2a"`. The provided availability zone must be in the same region as the Databricks deployment. For example, `"us-west-2a"` is not a valid zone ID if the Databricks deployment resides in the `"us-east-1"` region. If not specified, a default zone is used. You can find the list of available zones as well as the default value by using the [List Zones API](https://docs.databricks.com/dev-tools/api/latest/clusters.html#clusterclusterservicelistavailablezones).
        """
        return pulumi.get(self, "zone_id")

    @zone_id.setter
    def zone_id(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "zone_id", value)


@pulumi.input_type
class InstancePoolAzureAttributesArgs:
    def __init__(__self__, *,
                 availability: Optional[pulumi.Input[str]] = None,
                 spot_bid_max_price: Optional[pulumi.Input[float]] = None):
        """
        :param pulumi.Input[str] availability: Availability type used for all nodes. Valid values are `PREEMPTIBLE_GCP`, `PREEMPTIBLE_WITH_FALLBACK_GCP` and `ON_DEMAND_GCP`, default: `ON_DEMAND_GCP`.
        :param pulumi.Input[float] spot_bid_max_price: The max price for Azure spot instances.  Use `-1` to specify the lowest price.
        """
        if availability is not None:
            pulumi.set(__self__, "availability", availability)
        if spot_bid_max_price is not None:
            pulumi.set(__self__, "spot_bid_max_price", spot_bid_max_price)

    @property
    @pulumi.getter
    def availability(self) -> Optional[pulumi.Input[str]]:
        """
        Availability type used for all nodes. Valid values are `PREEMPTIBLE_GCP`, `PREEMPTIBLE_WITH_FALLBACK_GCP` and `ON_DEMAND_GCP`, default: `ON_DEMAND_GCP`.
        """
        return pulumi.get(self, "availability")

    @availability.setter
    def availability(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "availability", value)

    @property
    @pulumi.getter(name="spotBidMaxPrice")
    def spot_bid_max_price(self) -> Optional[pulumi.Input[float]]:
        """
        The max price for Azure spot instances.  Use `-1` to specify the lowest price.
        """
        return pulumi.get(self, "spot_bid_max_price")

    @spot_bid_max_price.setter
    def spot_bid_max_price(self, value: Optional[pulumi.Input[float]]):
        pulumi.set(self, "spot_bid_max_price", value)


@pulumi.input_type
class InstancePoolDiskSpecArgs:
    def __init__(__self__, *,
                 disk_count: Optional[pulumi.Input[int]] = None,
                 disk_size: Optional[pulumi.Input[int]] = None,
                 disk_type: Optional[pulumi.Input['InstancePoolDiskSpecDiskTypeArgs']] = None):
        """
        :param pulumi.Input[int] disk_count: (Integer) The number of disks to attach to each instance. This feature is only enabled for supported node types. Users can choose up to the limit of the disks supported by the node type. For node types with no local disk, at least one disk needs to be specified.
        :param pulumi.Input[int] disk_size: (Integer) The size of each disk (in GiB) to attach.
        """
        if disk_count is not None:
            pulumi.set(__self__, "disk_count", disk_count)
        if disk_size is not None:
            pulumi.set(__self__, "disk_size", disk_size)
        if disk_type is not None:
            pulumi.set(__self__, "disk_type", disk_type)

    @property
    @pulumi.getter(name="diskCount")
    def disk_count(self) -> Optional[pulumi.Input[int]]:
        """
        (Integer) The number of disks to attach to each instance. This feature is only enabled for supported node types. Users can choose up to the limit of the disks supported by the node type. For node types with no local disk, at least one disk needs to be specified.
        """
        return pulumi.get(self, "disk_count")

    @disk_count.setter
    def disk_count(self, value: Optional[pulumi.Input[int]]):
        pulumi.set(self, "disk_count", value)

    @property
    @pulumi.getter(name="diskSize")
    def disk_size(self) -> Optional[pulumi.Input[int]]:
        """
        (Integer) The size of each disk (in GiB) to attach.
        """
        return pulumi.get(self, "disk_size")

    @disk_size.setter
    def disk_size(self, value: Optional[pulumi.Input[int]]):
        pulumi.set(self, "disk_size", value)

    @property
    @pulumi.getter(name="diskType")
    def disk_type(self) -> Optional[pulumi.Input['InstancePoolDiskSpecDiskTypeArgs']]:
        return pulumi.get(self, "disk_type")

    @disk_type.setter
    def disk_type(self, value: Optional[pulumi.Input['InstancePoolDiskSpecDiskTypeArgs']]):
        pulumi.set(self, "disk_type", value)


@pulumi.input_type
class InstancePoolDiskSpecDiskTypeArgs:
    def __init__(__self__, *,
                 azure_disk_volume_type: Optional[pulumi.Input[str]] = None,
                 ebs_volume_type: Optional[pulumi.Input[str]] = None):
        if azure_disk_volume_type is not None:
            pulumi.set(__self__, "azure_disk_volume_type", azure_disk_volume_type)
        if ebs_volume_type is not None:
            pulumi.set(__self__, "ebs_volume_type", ebs_volume_type)

    @property
    @pulumi.getter(name="azureDiskVolumeType")
    def azure_disk_volume_type(self) -> Optional[pulumi.Input[str]]:
        return pulumi.get(self, "azure_disk_volume_type")

    @azure_disk_volume_type.setter
    def azure_disk_volume_type(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "azure_disk_volume_type", value)

    @property
    @pulumi.getter(name="ebsVolumeType")
    def ebs_volume_type(self) -> Optional[pulumi.Input[str]]:
        return pulumi.get(self, "ebs_volume_type")

    @ebs_volume_type.setter
    def ebs_volume_type(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "ebs_volume_type", value)


@pulumi.input_type
class InstancePoolGcpAttributesArgs:
    def __init__(__self__, *,
                 gcp_availability: Optional[pulumi.Input[str]] = None):
        if gcp_availability is not None:
            pulumi.set(__self__, "gcp_availability", gcp_availability)

    @property
    @pulumi.getter(name="gcpAvailability")
    def gcp_availability(self) -> Optional[pulumi.Input[str]]:
        return pulumi.get(self, "gcp_availability")

    @gcp_availability.setter
    def gcp_availability(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "gcp_availability", value)


@pulumi.input_type
class InstancePoolInstancePoolFleetAttributesArgs:
    def __init__(__self__, *,
                 launch_template_overrides: pulumi.Input[Sequence[pulumi.Input['InstancePoolInstancePoolFleetAttributesLaunchTemplateOverrideArgs']]],
                 fleet_on_demand_option: Optional[pulumi.Input['InstancePoolInstancePoolFleetAttributesFleetOnDemandOptionArgs']] = None,
                 fleet_spot_option: Optional[pulumi.Input['InstancePoolInstancePoolFleetAttributesFleetSpotOptionArgs']] = None):
        pulumi.set(__self__, "launch_template_overrides", launch_template_overrides)
        if fleet_on_demand_option is not None:
            pulumi.set(__self__, "fleet_on_demand_option", fleet_on_demand_option)
        if fleet_spot_option is not None:
            pulumi.set(__self__, "fleet_spot_option", fleet_spot_option)

    @property
    @pulumi.getter(name="launchTemplateOverrides")
    def launch_template_overrides(self) -> pulumi.Input[Sequence[pulumi.Input['InstancePoolInstancePoolFleetAttributesLaunchTemplateOverrideArgs']]]:
        return pulumi.get(self, "launch_template_overrides")

    @launch_template_overrides.setter
    def launch_template_overrides(self, value: pulumi.Input[Sequence[pulumi.Input['InstancePoolInstancePoolFleetAttributesLaunchTemplateOverrideArgs']]]):
        pulumi.set(self, "launch_template_overrides", value)

    @property
    @pulumi.getter(name="fleetOnDemandOption")
    def fleet_on_demand_option(self) -> Optional[pulumi.Input['InstancePoolInstancePoolFleetAttributesFleetOnDemandOptionArgs']]:
        return pulumi.get(self, "fleet_on_demand_option")

    @fleet_on_demand_option.setter
    def fleet_on_demand_option(self, value: Optional[pulumi.Input['InstancePoolInstancePoolFleetAttributesFleetOnDemandOptionArgs']]):
        pulumi.set(self, "fleet_on_demand_option", value)

    @property
    @pulumi.getter(name="fleetSpotOption")
    def fleet_spot_option(self) -> Optional[pulumi.Input['InstancePoolInstancePoolFleetAttributesFleetSpotOptionArgs']]:
        return pulumi.get(self, "fleet_spot_option")

    @fleet_spot_option.setter
    def fleet_spot_option(self, value: Optional[pulumi.Input['InstancePoolInstancePoolFleetAttributesFleetSpotOptionArgs']]):
        pulumi.set(self, "fleet_spot_option", value)


@pulumi.input_type
class InstancePoolInstancePoolFleetAttributesFleetOnDemandOptionArgs:
    def __init__(__self__, *,
                 allocation_strategy: pulumi.Input[str],
                 instance_pools_to_use_count: Optional[pulumi.Input[int]] = None):
        pulumi.set(__self__, "allocation_strategy", allocation_strategy)
        if instance_pools_to_use_count is not None:
            pulumi.set(__self__, "instance_pools_to_use_count", instance_pools_to_use_count)

    @property
    @pulumi.getter(name="allocationStrategy")
    def allocation_strategy(self) -> pulumi.Input[str]:
        return pulumi.get(self, "allocation_strategy")

    @allocation_strategy.setter
    def allocation_strategy(self, value: pulumi.Input[str]):
        pulumi.set(self, "allocation_strategy", value)

    @property
    @pulumi.getter(name="instancePoolsToUseCount")
    def instance_pools_to_use_count(self) -> Optional[pulumi.Input[int]]:
        return pulumi.get(self, "instance_pools_to_use_count")

    @instance_pools_to_use_count.setter
    def instance_pools_to_use_count(self, value: Optional[pulumi.Input[int]]):
        pulumi.set(self, "instance_pools_to_use_count", value)


@pulumi.input_type
class InstancePoolInstancePoolFleetAttributesFleetSpotOptionArgs:
    def __init__(__self__, *,
                 allocation_strategy: pulumi.Input[str],
                 instance_pools_to_use_count: Optional[pulumi.Input[int]] = None):
        pulumi.set(__self__, "allocation_strategy", allocation_strategy)
        if instance_pools_to_use_count is not None:
            pulumi.set(__self__, "instance_pools_to_use_count", instance_pools_to_use_count)

    @property
    @pulumi.getter(name="allocationStrategy")
    def allocation_strategy(self) -> pulumi.Input[str]:
        return pulumi.get(self, "allocation_strategy")

    @allocation_strategy.setter
    def allocation_strategy(self, value: pulumi.Input[str]):
        pulumi.set(self, "allocation_strategy", value)

    @property
    @pulumi.getter(name="instancePoolsToUseCount")
    def instance_pools_to_use_count(self) -> Optional[pulumi.Input[int]]:
        return pulumi.get(self, "instance_pools_to_use_count")

    @instance_pools_to_use_count.setter
    def instance_pools_to_use_count(self, value: Optional[pulumi.Input[int]]):
        pulumi.set(self, "instance_pools_to_use_count", value)


@pulumi.input_type
class InstancePoolInstancePoolFleetAttributesLaunchTemplateOverrideArgs:
    def __init__(__self__, *,
                 availability_zone: pulumi.Input[str],
                 instance_type: pulumi.Input[str]):
        pulumi.set(__self__, "availability_zone", availability_zone)
        pulumi.set(__self__, "instance_type", instance_type)

    @property
    @pulumi.getter(name="availabilityZone")
    def availability_zone(self) -> pulumi.Input[str]:
        return pulumi.get(self, "availability_zone")

    @availability_zone.setter
    def availability_zone(self, value: pulumi.Input[str]):
        pulumi.set(self, "availability_zone", value)

    @property
    @pulumi.getter(name="instanceType")
    def instance_type(self) -> pulumi.Input[str]:
        return pulumi.get(self, "instance_type")

    @instance_type.setter
    def instance_type(self, value: pulumi.Input[str]):
        pulumi.set(self, "instance_type", value)


@pulumi.input_type
class InstancePoolPreloadedDockerImageArgs:
    def __init__(__self__, *,
                 url: pulumi.Input[str],
                 basic_auth: Optional[pulumi.Input['InstancePoolPreloadedDockerImageBasicAuthArgs']] = None):
        pulumi.set(__self__, "url", url)
        if basic_auth is not None:
            pulumi.set(__self__, "basic_auth", basic_auth)

    @property
    @pulumi.getter
    def url(self) -> pulumi.Input[str]:
        return pulumi.get(self, "url")

    @url.setter
    def url(self, value: pulumi.Input[str]):
        pulumi.set(self, "url", value)

    @property
    @pulumi.getter(name="basicAuth")
    def basic_auth(self) -> Optional[pulumi.Input['InstancePoolPreloadedDockerImageBasicAuthArgs']]:
        return pulumi.get(self, "basic_auth")

    @basic_auth.setter
    def basic_auth(self, value: Optional[pulumi.Input['InstancePoolPreloadedDockerImageBasicAuthArgs']]):
        pulumi.set(self, "basic_auth", value)


@pulumi.input_type
class InstancePoolPreloadedDockerImageBasicAuthArgs:
    def __init__(__self__, *,
                 password: pulumi.Input[str],
                 username: pulumi.Input[str]):
        pulumi.set(__self__, "password", password)
        pulumi.set(__self__, "username", username)

    @property
    @pulumi.getter
    def password(self) -> pulumi.Input[str]:
        return pulumi.get(self, "password")

    @password.setter
    def password(self, value: pulumi.Input[str]):
        pulumi.set(self, "password", value)

    @property
    @pulumi.getter
    def username(self) -> pulumi.Input[str]:
        return pulumi.get(self, "username")

    @username.setter
    def username(self, value: pulumi.Input[str]):
        pulumi.set(self, "username", value)


@pulumi.input_type
class JobContinuousArgs:
    def __init__(__self__, *,
                 pause_status: Optional[pulumi.Input[str]] = None):
        """
        :param pulumi.Input[str] pause_status: Indicate whether this schedule is paused or not. Either “PAUSED” or “UNPAUSED”. When the pause_status field is omitted and a schedule is provided, the server will default to using "UNPAUSED" as a value for pause_status.
        """
        if pause_status is not None:
            pulumi.set(__self__, "pause_status", pause_status)

    @property
    @pulumi.getter(name="pauseStatus")
    def pause_status(self) -> Optional[pulumi.Input[str]]:
        """
        Indicate whether this schedule is paused or not. Either “PAUSED” or “UNPAUSED”. When the pause_status field is omitted and a schedule is provided, the server will default to using "UNPAUSED" as a value for pause_status.
        """
        return pulumi.get(self, "pause_status")

    @pause_status.setter
    def pause_status(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "pause_status", value)


@pulumi.input_type
class JobDbtTaskArgs:
    def __init__(__self__, *,
                 commands: pulumi.Input[Sequence[pulumi.Input[str]]],
                 catalog: Optional[pulumi.Input[str]] = None,
                 profiles_directory: Optional[pulumi.Input[str]] = None,
                 project_directory: Optional[pulumi.Input[str]] = None,
                 schema: Optional[pulumi.Input[str]] = None,
                 warehouse_id: Optional[pulumi.Input[str]] = None):
        """
        :param pulumi.Input[Sequence[pulumi.Input[str]]] commands: (Array) Series of dbt commands to execute in sequence. Every command must start with "dbt".
        :param pulumi.Input[str] catalog: The name of the catalog to use inside Unity Catalog.
        :param pulumi.Input[str] profiles_directory: The relative path to the directory in the repository specified by `git_source` where dbt should look in for the `profiles.yml` file. If not specified, defaults to the repository's root directory. Equivalent to passing `--profile-dir` to a dbt command.
        :param pulumi.Input[str] project_directory: The relative path to the directory in the repository specified in `git_source` where dbt should look in for the `dbt_project.yml` file. If not specified, defaults to the repository's root directory. Equivalent to passing `--project-dir` to a dbt command.
        :param pulumi.Input[str] schema: The name of the schema dbt should run in. Defaults to `default`.
        :param pulumi.Input[str] warehouse_id: The ID of the SQL warehouse that dbt should execute against.
        """
        pulumi.set(__self__, "commands", commands)
        if catalog is not None:
            pulumi.set(__self__, "catalog", catalog)
        if profiles_directory is not None:
            pulumi.set(__self__, "profiles_directory", profiles_directory)
        if project_directory is not None:
            pulumi.set(__self__, "project_directory", project_directory)
        if schema is not None:
            pulumi.set(__self__, "schema", schema)
        if warehouse_id is not None:
            pulumi.set(__self__, "warehouse_id", warehouse_id)

    @property
    @pulumi.getter
    def commands(self) -> pulumi.Input[Sequence[pulumi.Input[str]]]:
        """
        (Array) Series of dbt commands to execute in sequence. Every command must start with "dbt".
        """
        return pulumi.get(self, "commands")

    @commands.setter
    def commands(self, value: pulumi.Input[Sequence[pulumi.Input[str]]]):
        pulumi.set(self, "commands", value)

    @property
    @pulumi.getter
    def catalog(self) -> Optional[pulumi.Input[str]]:
        """
        The name of the catalog to use inside Unity Catalog.
        """
        return pulumi.get(self, "catalog")

    @catalog.setter
    def catalog(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "catalog", value)

    @property
    @pulumi.getter(name="profilesDirectory")
    def profiles_directory(self) -> Optional[pulumi.Input[str]]:
        """
        The relative path to the directory in the repository specified by `git_source` where dbt should look in for the `profiles.yml` file. If not specified, defaults to the repository's root directory. Equivalent to passing `--profile-dir` to a dbt command.
        """
        return pulumi.get(self, "profiles_directory")

    @profiles_directory.setter
    def profiles_directory(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "profiles_directory", value)

    @property
    @pulumi.getter(name="projectDirectory")
    def project_directory(self) -> Optional[pulumi.Input[str]]:
        """
        The relative path to the directory in the repository specified in `git_source` where dbt should look in for the `dbt_project.yml` file. If not specified, defaults to the repository's root directory. Equivalent to passing `--project-dir` to a dbt command.
        """
        return pulumi.get(self, "project_directory")

    @project_directory.setter
    def project_directory(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "project_directory", value)

    @property
    @pulumi.getter
    def schema(self) -> Optional[pulumi.Input[str]]:
        """
        The name of the schema dbt should run in. Defaults to `default`.
        """
        return pulumi.get(self, "schema")

    @schema.setter
    def schema(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "schema", value)

    @property
    @pulumi.getter(name="warehouseId")
    def warehouse_id(self) -> Optional[pulumi.Input[str]]:
        """
        The ID of the SQL warehouse that dbt should execute against.
        """
        return pulumi.get(self, "warehouse_id")

    @warehouse_id.setter
    def warehouse_id(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "warehouse_id", value)


@pulumi.input_type
class JobEmailNotificationsArgs:
    def __init__(__self__, *,
                 alert_on_last_attempt: Optional[pulumi.Input[bool]] = None,
                 no_alert_for_skipped_runs: Optional[pulumi.Input[bool]] = None,
                 on_failures: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None,
                 on_starts: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None,
                 on_successes: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None):
        """
        :param pulumi.Input[bool] no_alert_for_skipped_runs: (Bool) don't send alert for skipped runs.
        :param pulumi.Input[Sequence[pulumi.Input[str]]] on_failures: (List) list of emails to notify when the run fails.
        :param pulumi.Input[Sequence[pulumi.Input[str]]] on_starts: (List) list of emails to notify when the run starts.
        :param pulumi.Input[Sequence[pulumi.Input[str]]] on_successes: (List) list of emails to notify when the run completes successfully.
        """
        if alert_on_last_attempt is not None:
            pulumi.set(__self__, "alert_on_last_attempt", alert_on_last_attempt)
        if no_alert_for_skipped_runs is not None:
            pulumi.set(__self__, "no_alert_for_skipped_runs", no_alert_for_skipped_runs)
        if on_failures is not None:
            pulumi.set(__self__, "on_failures", on_failures)
        if on_starts is not None:
            pulumi.set(__self__, "on_starts", on_starts)
        if on_successes is not None:
            pulumi.set(__self__, "on_successes", on_successes)

    @property
    @pulumi.getter(name="alertOnLastAttempt")
    def alert_on_last_attempt(self) -> Optional[pulumi.Input[bool]]:
        return pulumi.get(self, "alert_on_last_attempt")

    @alert_on_last_attempt.setter
    def alert_on_last_attempt(self, value: Optional[pulumi.Input[bool]]):
        pulumi.set(self, "alert_on_last_attempt", value)

    @property
    @pulumi.getter(name="noAlertForSkippedRuns")
    def no_alert_for_skipped_runs(self) -> Optional[pulumi.Input[bool]]:
        """
        (Bool) don't send alert for skipped runs.
        """
        return pulumi.get(self, "no_alert_for_skipped_runs")

    @no_alert_for_skipped_runs.setter
    def no_alert_for_skipped_runs(self, value: Optional[pulumi.Input[bool]]):
        pulumi.set(self, "no_alert_for_skipped_runs", value)

    @property
    @pulumi.getter(name="onFailures")
    def on_failures(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]:
        """
        (List) list of emails to notify when the run fails.
        """
        return pulumi.get(self, "on_failures")

    @on_failures.setter
    def on_failures(self, value: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]):
        pulumi.set(self, "on_failures", value)

    @property
    @pulumi.getter(name="onStarts")
    def on_starts(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]:
        """
        (List) list of emails to notify when the run starts.
        """
        return pulumi.get(self, "on_starts")

    @on_starts.setter
    def on_starts(self, value: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]):
        pulumi.set(self, "on_starts", value)

    @property
    @pulumi.getter(name="onSuccesses")
    def on_successes(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]:
        """
        (List) list of emails to notify when the run completes successfully.
        """
        return pulumi.get(self, "on_successes")

    @on_successes.setter
    def on_successes(self, value: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]):
        pulumi.set(self, "on_successes", value)


@pulumi.input_type
class JobGitSourceArgs:
    def __init__(__self__, *,
                 url: pulumi.Input[str],
                 branch: Optional[pulumi.Input[str]] = None,
                 commit: Optional[pulumi.Input[str]] = None,
                 provider: Optional[pulumi.Input[str]] = None,
                 tag: Optional[pulumi.Input[str]] = None):
        """
        :param pulumi.Input[str] url: URL of the Git repository to use.
        :param pulumi.Input[str] branch: name of the Git branch to use. Conflicts with `tag` and `commit`.
        :param pulumi.Input[str] commit: hash of Git commit to use. Conflicts with `branch` and `tag`.
        :param pulumi.Input[str] provider: case insensitive name of the Git provider.  Following values are supported right now (could be a subject for change, consult [Repos API documentation](https://docs.databricks.com/dev-tools/api/latest/repos.html)): `gitHub`, `gitHubEnterprise`, `bitbucketCloud`, `bitbucketServer`, `azureDevOpsServices`, `gitLab`, `gitLabEnterpriseEdition`.
        :param pulumi.Input[str] tag: name of the Git branch to use. Conflicts with `branch` and `commit`.
        """
        pulumi.set(__self__, "url", url)
        if branch is not None:
            pulumi.set(__self__, "branch", branch)
        if commit is not None:
            pulumi.set(__self__, "commit", commit)
        if provider is not None:
            pulumi.set(__self__, "provider", provider)
        if tag is not None:
            pulumi.set(__self__, "tag", tag)

    @property
    @pulumi.getter
    def url(self) -> pulumi.Input[str]:
        """
        URL of the Git repository to use.
        """
        return pulumi.get(self, "url")

    @url.setter
    def url(self, value: pulumi.Input[str]):
        pulumi.set(self, "url", value)

    @property
    @pulumi.getter
    def branch(self) -> Optional[pulumi.Input[str]]:
        """
        name of the Git branch to use. Conflicts with `tag` and `commit`.
        """
        return pulumi.get(self, "branch")

    @branch.setter
    def branch(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "branch", value)

    @property
    @pulumi.getter
    def commit(self) -> Optional[pulumi.Input[str]]:
        """
        hash of Git commit to use. Conflicts with `branch` and `tag`.
        """
        return pulumi.get(self, "commit")

    @commit.setter
    def commit(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "commit", value)

    @property
    @pulumi.getter
    def provider(self) -> Optional[pulumi.Input[str]]:
        """
        case insensitive name of the Git provider.  Following values are supported right now (could be a subject for change, consult [Repos API documentation](https://docs.databricks.com/dev-tools/api/latest/repos.html)): `gitHub`, `gitHubEnterprise`, `bitbucketCloud`, `bitbucketServer`, `azureDevOpsServices`, `gitLab`, `gitLabEnterpriseEdition`.
        """
        return pulumi.get(self, "provider")

    @provider.setter
    def provider(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "provider", value)

    @property
    @pulumi.getter
    def tag(self) -> Optional[pulumi.Input[str]]:
        """
        name of the Git branch to use. Conflicts with `branch` and `commit`.
        """
        return pulumi.get(self, "tag")

    @tag.setter
    def tag(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "tag", value)


@pulumi.input_type
class JobJobClusterArgs:
    def __init__(__self__, *,
                 job_cluster_key: Optional[pulumi.Input[str]] = None,
                 new_cluster: Optional[pulumi.Input['JobJobClusterNewClusterArgs']] = None):
        """
        :param pulumi.Input[str] job_cluster_key: Identifier that can be referenced in `task` block, so that cluster is shared between tasks
        :param pulumi.Input['JobJobClusterNewClusterArgs'] new_cluster: Same set of parameters as for Cluster resource.
        """
        if job_cluster_key is not None:
            pulumi.set(__self__, "job_cluster_key", job_cluster_key)
        if new_cluster is not None:
            pulumi.set(__self__, "new_cluster", new_cluster)

    @property
    @pulumi.getter(name="jobClusterKey")
    def job_cluster_key(self) -> Optional[pulumi.Input[str]]:
        """
        Identifier that can be referenced in `task` block, so that cluster is shared between tasks
        """
        return pulumi.get(self, "job_cluster_key")

    @job_cluster_key.setter
    def job_cluster_key(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "job_cluster_key", value)

    @property
    @pulumi.getter(name="newCluster")
    def new_cluster(self) -> Optional[pulumi.Input['JobJobClusterNewClusterArgs']]:
        """
        Same set of parameters as for Cluster resource.
        """
        return pulumi.get(self, "new_cluster")

    @new_cluster.setter
    def new_cluster(self, value: Optional[pulumi.Input['JobJobClusterNewClusterArgs']]):
        pulumi.set(self, "new_cluster", value)


@pulumi.input_type
class JobJobClusterNewClusterArgs:
    def __init__(__self__, *,
                 spark_version: pulumi.Input[str],
                 apply_policy_default_values: Optional[pulumi.Input[bool]] = None,
                 autoscale: Optional[pulumi.Input['JobJobClusterNewClusterAutoscaleArgs']] = None,
                 autotermination_minutes: Optional[pulumi.Input[int]] = None,
                 aws_attributes: Optional[pulumi.Input['JobJobClusterNewClusterAwsAttributesArgs']] = None,
                 azure_attributes: Optional[pulumi.Input['JobJobClusterNewClusterAzureAttributesArgs']] = None,
                 cluster_id: Optional[pulumi.Input[str]] = None,
                 cluster_log_conf: Optional[pulumi.Input['JobJobClusterNewClusterClusterLogConfArgs']] = None,
                 cluster_mount_infos: Optional[pulumi.Input[Sequence[pulumi.Input['JobJobClusterNewClusterClusterMountInfoArgs']]]] = None,
                 cluster_name: Optional[pulumi.Input[str]] = None,
                 custom_tags: Optional[pulumi.Input[Mapping[str, Any]]] = None,
                 data_security_mode: Optional[pulumi.Input[str]] = None,
                 docker_image: Optional[pulumi.Input['JobJobClusterNewClusterDockerImageArgs']] = None,
                 driver_instance_pool_id: Optional[pulumi.Input[str]] = None,
                 driver_node_type_id: Optional[pulumi.Input[str]] = None,
                 enable_elastic_disk: Optional[pulumi.Input[bool]] = None,
                 enable_local_disk_encryption: Optional[pulumi.Input[bool]] = None,
                 gcp_attributes: Optional[pulumi.Input['JobJobClusterNewClusterGcpAttributesArgs']] = None,
                 idempotency_token: Optional[pulumi.Input[str]] = None,
                 init_scripts: Optional[pulumi.Input[Sequence[pulumi.Input['JobJobClusterNewClusterInitScriptArgs']]]] = None,
                 instance_pool_id: Optional[pulumi.Input[str]] = None,
                 node_type_id: Optional[pulumi.Input[str]] = None,
                 num_workers: Optional[pulumi.Input[int]] = None,
                 policy_id: Optional[pulumi.Input[str]] = None,
                 runtime_engine: Optional[pulumi.Input[str]] = None,
                 single_user_name: Optional[pulumi.Input[str]] = None,
                 spark_conf: Optional[pulumi.Input[Mapping[str, Any]]] = None,
                 spark_env_vars: Optional[pulumi.Input[Mapping[str, Any]]] = None,
                 ssh_public_keys: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None,
                 workload_type: Optional[pulumi.Input['JobJobClusterNewClusterWorkloadTypeArgs']] = None):
        pulumi.set(__self__, "spark_version", spark_version)
        if apply_policy_default_values is not None:
            pulumi.set(__self__, "apply_policy_default_values", apply_policy_default_values)
        if autoscale is not None:
            pulumi.set(__self__, "autoscale", autoscale)
        if autotermination_minutes is not None:
            pulumi.set(__self__, "autotermination_minutes", autotermination_minutes)
        if aws_attributes is not None:
            pulumi.set(__self__, "aws_attributes", aws_attributes)
        if azure_attributes is not None:
            pulumi.set(__self__, "azure_attributes", azure_attributes)
        if cluster_id is not None:
            pulumi.set(__self__, "cluster_id", cluster_id)
        if cluster_log_conf is not None:
            pulumi.set(__self__, "cluster_log_conf", cluster_log_conf)
        if cluster_mount_infos is not None:
            pulumi.set(__self__, "cluster_mount_infos", cluster_mount_infos)
        if cluster_name is not None:
            pulumi.set(__self__, "cluster_name", cluster_name)
        if custom_tags is not None:
            pulumi.set(__self__, "custom_tags", custom_tags)
        if data_security_mode is not None:
            pulumi.set(__self__, "data_security_mode", data_security_mode)
        if docker_image is not None:
            pulumi.set(__self__, "docker_image", docker_image)
        if driver_instance_pool_id is not None:
            pulumi.set(__self__, "driver_instance_pool_id", driver_instance_pool_id)
        if driver_node_type_id is not None:
            pulumi.set(__self__, "driver_node_type_id", driver_node_type_id)
        if enable_elastic_disk is not None:
            pulumi.set(__self__, "enable_elastic_disk", enable_elastic_disk)
        if enable_local_disk_encryption is not None:
            pulumi.set(__self__, "enable_local_disk_encryption", enable_local_disk_encryption)
        if gcp_attributes is not None:
            pulumi.set(__self__, "gcp_attributes", gcp_attributes)
        if idempotency_token is not None:
            pulumi.set(__self__, "idempotency_token", idempotency_token)
        if init_scripts is not None:
            pulumi.set(__self__, "init_scripts", init_scripts)
        if instance_pool_id is not None:
            pulumi.set(__self__, "instance_pool_id", instance_pool_id)
        if node_type_id is not None:
            pulumi.set(__self__, "node_type_id", node_type_id)
        if num_workers is not None:
            pulumi.set(__self__, "num_workers", num_workers)
        if policy_id is not None:
            pulumi.set(__self__, "policy_id", policy_id)
        if runtime_engine is not None:
            pulumi.set(__self__, "runtime_engine", runtime_engine)
        if single_user_name is not None:
            pulumi.set(__self__, "single_user_name", single_user_name)
        if spark_conf is not None:
            pulumi.set(__self__, "spark_conf", spark_conf)
        if spark_env_vars is not None:
            pulumi.set(__self__, "spark_env_vars", spark_env_vars)
        if ssh_public_keys is not None:
            pulumi.set(__self__, "ssh_public_keys", ssh_public_keys)
        if workload_type is not None:
            pulumi.set(__self__, "workload_type", workload_type)

    @property
    @pulumi.getter(name="sparkVersion")
    def spark_version(self) -> pulumi.Input[str]:
        return pulumi.get(self, "spark_version")

    @spark_version.setter
    def spark_version(self, value: pulumi.Input[str]):
        pulumi.set(self, "spark_version", value)

    @property
    @pulumi.getter(name="applyPolicyDefaultValues")
    def apply_policy_default_values(self) -> Optional[pulumi.Input[bool]]:
        return pulumi.get(self, "apply_policy_default_values")

    @apply_policy_default_values.setter
    def apply_policy_default_values(self, value: Optional[pulumi.Input[bool]]):
        pulumi.set(self, "apply_policy_default_values", value)

    @property
    @pulumi.getter
    def autoscale(self) -> Optional[pulumi.Input['JobJobClusterNewClusterAutoscaleArgs']]:
        return pulumi.get(self, "autoscale")

    @autoscale.setter
    def autoscale(self, value: Optional[pulumi.Input['JobJobClusterNewClusterAutoscaleArgs']]):
        pulumi.set(self, "autoscale", value)

    @property
    @pulumi.getter(name="autoterminationMinutes")
    def autotermination_minutes(self) -> Optional[pulumi.Input[int]]:
        return pulumi.get(self, "autotermination_minutes")

    @autotermination_minutes.setter
    def autotermination_minutes(self, value: Optional[pulumi.Input[int]]):
        pulumi.set(self, "autotermination_minutes", value)

    @property
    @pulumi.getter(name="awsAttributes")
    def aws_attributes(self) -> Optional[pulumi.Input['JobJobClusterNewClusterAwsAttributesArgs']]:
        return pulumi.get(self, "aws_attributes")

    @aws_attributes.setter
    def aws_attributes(self, value: Optional[pulumi.Input['JobJobClusterNewClusterAwsAttributesArgs']]):
        pulumi.set(self, "aws_attributes", value)

    @property
    @pulumi.getter(name="azureAttributes")
    def azure_attributes(self) -> Optional[pulumi.Input['JobJobClusterNewClusterAzureAttributesArgs']]:
        return pulumi.get(self, "azure_attributes")

    @azure_attributes.setter
    def azure_attributes(self, value: Optional[pulumi.Input['JobJobClusterNewClusterAzureAttributesArgs']]):
        pulumi.set(self, "azure_attributes", value)

    @property
    @pulumi.getter(name="clusterId")
    def cluster_id(self) -> Optional[pulumi.Input[str]]:
        return pulumi.get(self, "cluster_id")

    @cluster_id.setter
    def cluster_id(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "cluster_id", value)

    @property
    @pulumi.getter(name="clusterLogConf")
    def cluster_log_conf(self) -> Optional[pulumi.Input['JobJobClusterNewClusterClusterLogConfArgs']]:
        return pulumi.get(self, "cluster_log_conf")

    @cluster_log_conf.setter
    def cluster_log_conf(self, value: Optional[pulumi.Input['JobJobClusterNewClusterClusterLogConfArgs']]):
        pulumi.set(self, "cluster_log_conf", value)

    @property
    @pulumi.getter(name="clusterMountInfos")
    def cluster_mount_infos(self) -> Optional[pulumi.Input[Sequence[pulumi.Input['JobJobClusterNewClusterClusterMountInfoArgs']]]]:
        return pulumi.get(self, "cluster_mount_infos")

    @cluster_mount_infos.setter
    def cluster_mount_infos(self, value: Optional[pulumi.Input[Sequence[pulumi.Input['JobJobClusterNewClusterClusterMountInfoArgs']]]]):
        pulumi.set(self, "cluster_mount_infos", value)

    @property
    @pulumi.getter(name="clusterName")
    def cluster_name(self) -> Optional[pulumi.Input[str]]:
        return pulumi.get(self, "cluster_name")

    @cluster_name.setter
    def cluster_name(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "cluster_name", value)

    @property
    @pulumi.getter(name="customTags")
    def custom_tags(self) -> Optional[pulumi.Input[Mapping[str, Any]]]:
        return pulumi.get(self, "custom_tags")

    @custom_tags.setter
    def custom_tags(self, value: Optional[pulumi.Input[Mapping[str, Any]]]):
        pulumi.set(self, "custom_tags", value)

    @property
    @pulumi.getter(name="dataSecurityMode")
    def data_security_mode(self) -> Optional[pulumi.Input[str]]:
        return pulumi.get(self, "data_security_mode")

    @data_security_mode.setter
    def data_security_mode(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "data_security_mode", value)

    @property
    @pulumi.getter(name="dockerImage")
    def docker_image(self) -> Optional[pulumi.Input['JobJobClusterNewClusterDockerImageArgs']]:
        return pulumi.get(self, "docker_image")

    @docker_image.setter
    def docker_image(self, value: Optional[pulumi.Input['JobJobClusterNewClusterDockerImageArgs']]):
        pulumi.set(self, "docker_image", value)

    @property
    @pulumi.getter(name="driverInstancePoolId")
    def driver_instance_pool_id(self) -> Optional[pulumi.Input[str]]:
        return pulumi.get(self, "driver_instance_pool_id")

    @driver_instance_pool_id.setter
    def driver_instance_pool_id(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "driver_instance_pool_id", value)

    @property
    @pulumi.getter(name="driverNodeTypeId")
    def driver_node_type_id(self) -> Optional[pulumi.Input[str]]:
        return pulumi.get(self, "driver_node_type_id")

    @driver_node_type_id.setter
    def driver_node_type_id(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "driver_node_type_id", value)

    @property
    @pulumi.getter(name="enableElasticDisk")
    def enable_elastic_disk(self) -> Optional[pulumi.Input[bool]]:
        return pulumi.get(self, "enable_elastic_disk")

    @enable_elastic_disk.setter
    def enable_elastic_disk(self, value: Optional[pulumi.Input[bool]]):
        pulumi.set(self, "enable_elastic_disk", value)

    @property
    @pulumi.getter(name="enableLocalDiskEncryption")
    def enable_local_disk_encryption(self) -> Optional[pulumi.Input[bool]]:
        return pulumi.get(self, "enable_local_disk_encryption")

    @enable_local_disk_encryption.setter
    def enable_local_disk_encryption(self, value: Optional[pulumi.Input[bool]]):
        pulumi.set(self, "enable_local_disk_encryption", value)

    @property
    @pulumi.getter(name="gcpAttributes")
    def gcp_attributes(self) -> Optional[pulumi.Input['JobJobClusterNewClusterGcpAttributesArgs']]:
        return pulumi.get(self, "gcp_attributes")

    @gcp_attributes.setter
    def gcp_attributes(self, value: Optional[pulumi.Input['JobJobClusterNewClusterGcpAttributesArgs']]):
        pulumi.set(self, "gcp_attributes", value)

    @property
    @pulumi.getter(name="idempotencyToken")
    def idempotency_token(self) -> Optional[pulumi.Input[str]]:
        return pulumi.get(self, "idempotency_token")

    @idempotency_token.setter
    def idempotency_token(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "idempotency_token", value)

    @property
    @pulumi.getter(name="initScripts")
    def init_scripts(self) -> Optional[pulumi.Input[Sequence[pulumi.Input['JobJobClusterNewClusterInitScriptArgs']]]]:
        return pulumi.get(self, "init_scripts")

    @init_scripts.setter
    def init_scripts(self, value: Optional[pulumi.Input[Sequence[pulumi.Input['JobJobClusterNewClusterInitScriptArgs']]]]):
        pulumi.set(self, "init_scripts", value)

    @property
    @pulumi.getter(name="instancePoolId")
    def instance_pool_id(self) -> Optional[pulumi.Input[str]]:
        return pulumi.get(self, "instance_pool_id")

    @instance_pool_id.setter
    def instance_pool_id(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "instance_pool_id", value)

    @property
    @pulumi.getter(name="nodeTypeId")
    def node_type_id(self) -> Optional[pulumi.Input[str]]:
        return pulumi.get(self, "node_type_id")

    @node_type_id.setter
    def node_type_id(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "node_type_id", value)

    @property
    @pulumi.getter(name="numWorkers")
    def num_workers(self) -> Optional[pulumi.Input[int]]:
        return pulumi.get(self, "num_workers")

    @num_workers.setter
    def num_workers(self, value: Optional[pulumi.Input[int]]):
        pulumi.set(self, "num_workers", value)

    @property
    @pulumi.getter(name="policyId")
    def policy_id(self) -> Optional[pulumi.Input[str]]:
        return pulumi.get(self, "policy_id")

    @policy_id.setter
    def policy_id(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "policy_id", value)

    @property
    @pulumi.getter(name="runtimeEngine")
    def runtime_engine(self) -> Optional[pulumi.Input[str]]:
        return pulumi.get(self, "runtime_engine")

    @runtime_engine.setter
    def runtime_engine(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "runtime_engine", value)

    @property
    @pulumi.getter(name="singleUserName")
    def single_user_name(self) -> Optional[pulumi.Input[str]]:
        return pulumi.get(self, "single_user_name")

    @single_user_name.setter
    def single_user_name(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "single_user_name", value)

    @property
    @pulumi.getter(name="sparkConf")
    def spark_conf(self) -> Optional[pulumi.Input[Mapping[str, Any]]]:
        return pulumi.get(self, "spark_conf")

    @spark_conf.setter
    def spark_conf(self, value: Optional[pulumi.Input[Mapping[str, Any]]]):
        pulumi.set(self, "spark_conf", value)

    @property
    @pulumi.getter(name="sparkEnvVars")
    def spark_env_vars(self) -> Optional[pulumi.Input[Mapping[str, Any]]]:
        return pulumi.get(self, "spark_env_vars")

    @spark_env_vars.setter
    def spark_env_vars(self, value: Optional[pulumi.Input[Mapping[str, Any]]]):
        pulumi.set(self, "spark_env_vars", value)

    @property
    @pulumi.getter(name="sshPublicKeys")
    def ssh_public_keys(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]:
        return pulumi.get(self, "ssh_public_keys")

    @ssh_public_keys.setter
    def ssh_public_keys(self, value: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]):
        pulumi.set(self, "ssh_public_keys", value)

    @property
    @pulumi.getter(name="workloadType")
    def workload_type(self) -> Optional[pulumi.Input['JobJobClusterNewClusterWorkloadTypeArgs']]:
        return pulumi.get(self, "workload_type")

    @workload_type.setter
    def workload_type(self, value: Optional[pulumi.Input['JobJobClusterNewClusterWorkloadTypeArgs']]):
        pulumi.set(self, "workload_type", value)


@pulumi.input_type
class JobJobClusterNewClusterAutoscaleArgs:
    def __init__(__self__, *,
                 max_workers: Optional[pulumi.Input[int]] = None,
                 min_workers: Optional[pulumi.Input[int]] = None):
        if max_workers is not None:
            pulumi.set(__self__, "max_workers", max_workers)
        if min_workers is not None:
            pulumi.set(__self__, "min_workers", min_workers)

    @property
    @pulumi.getter(name="maxWorkers")
    def max_workers(self) -> Optional[pulumi.Input[int]]:
        return pulumi.get(self, "max_workers")

    @max_workers.setter
    def max_workers(self, value: Optional[pulumi.Input[int]]):
        pulumi.set(self, "max_workers", value)

    @property
    @pulumi.getter(name="minWorkers")
    def min_workers(self) -> Optional[pulumi.Input[int]]:
        return pulumi.get(self, "min_workers")

    @min_workers.setter
    def min_workers(self, value: Optional[pulumi.Input[int]]):
        pulumi.set(self, "min_workers", value)


@pulumi.input_type
class JobJobClusterNewClusterAwsAttributesArgs:
    def __init__(__self__, *,
                 availability: Optional[pulumi.Input[str]] = None,
                 ebs_volume_count: Optional[pulumi.Input[int]] = None,
                 ebs_volume_size: Optional[pulumi.Input[int]] = None,
                 ebs_volume_type: Optional[pulumi.Input[str]] = None,
                 first_on_demand: Optional[pulumi.Input[int]] = None,
                 instance_profile_arn: Optional[pulumi.Input[str]] = None,
                 spot_bid_price_percent: Optional[pulumi.Input[int]] = None,
                 zone_id: Optional[pulumi.Input[str]] = None):
        if availability is not None:
            pulumi.set(__self__, "availability", availability)
        if ebs_volume_count is not None:
            pulumi.set(__self__, "ebs_volume_count", ebs_volume_count)
        if ebs_volume_size is not None:
            pulumi.set(__self__, "ebs_volume_size", ebs_volume_size)
        if ebs_volume_type is not None:
            pulumi.set(__self__, "ebs_volume_type", ebs_volume_type)
        if first_on_demand is not None:
            pulumi.set(__self__, "first_on_demand", first_on_demand)
        if instance_profile_arn is not None:
            pulumi.set(__self__, "instance_profile_arn", instance_profile_arn)
        if spot_bid_price_percent is not None:
            pulumi.set(__self__, "spot_bid_price_percent", spot_bid_price_percent)
        if zone_id is not None:
            pulumi.set(__self__, "zone_id", zone_id)

    @property
    @pulumi.getter
    def availability(self) -> Optional[pulumi.Input[str]]:
        return pulumi.get(self, "availability")

    @availability.setter
    def availability(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "availability", value)

    @property
    @pulumi.getter(name="ebsVolumeCount")
    def ebs_volume_count(self) -> Optional[pulumi.Input[int]]:
        return pulumi.get(self, "ebs_volume_count")

    @ebs_volume_count.setter
    def ebs_volume_count(self, value: Optional[pulumi.Input[int]]):
        pulumi.set(self, "ebs_volume_count", value)

    @property
    @pulumi.getter(name="ebsVolumeSize")
    def ebs_volume_size(self) -> Optional[pulumi.Input[int]]:
        return pulumi.get(self, "ebs_volume_size")

    @ebs_volume_size.setter
    def ebs_volume_size(self, value: Optional[pulumi.Input[int]]):
        pulumi.set(self, "ebs_volume_size", value)

    @property
    @pulumi.getter(name="ebsVolumeType")
    def ebs_volume_type(self) -> Optional[pulumi.Input[str]]:
        return pulumi.get(self, "ebs_volume_type")

    @ebs_volume_type.setter
    def ebs_volume_type(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "ebs_volume_type", value)

    @property
    @pulumi.getter(name="firstOnDemand")
    def first_on_demand(self) -> Optional[pulumi.Input[int]]:
        return pulumi.get(self, "first_on_demand")

    @first_on_demand.setter
    def first_on_demand(self, value: Optional[pulumi.Input[int]]):
        pulumi.set(self, "first_on_demand", value)

    @property
    @pulumi.getter(name="instanceProfileArn")
    def instance_profile_arn(self) -> Optional[pulumi.Input[str]]:
        return pulumi.get(self, "instance_profile_arn")

    @instance_profile_arn.setter
    def instance_profile_arn(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "instance_profile_arn", value)

    @property
    @pulumi.getter(name="spotBidPricePercent")
    def spot_bid_price_percent(self) -> Optional[pulumi.Input[int]]:
        return pulumi.get(self, "spot_bid_price_percent")

    @spot_bid_price_percent.setter
    def spot_bid_price_percent(self, value: Optional[pulumi.Input[int]]):
        pulumi.set(self, "spot_bid_price_percent", value)

    @property
    @pulumi.getter(name="zoneId")
    def zone_id(self) -> Optional[pulumi.Input[str]]:
        return pulumi.get(self, "zone_id")

    @zone_id.setter
    def zone_id(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "zone_id", value)


@pulumi.input_type
class JobJobClusterNewClusterAzureAttributesArgs:
    def __init__(__self__, *,
                 availability: Optional[pulumi.Input[str]] = None,
                 first_on_demand: Optional[pulumi.Input[int]] = None,
                 spot_bid_max_price: Optional[pulumi.Input[float]] = None):
        if availability is not None:
            pulumi.set(__self__, "availability", availability)
        if first_on_demand is not None:
            pulumi.set(__self__, "first_on_demand", first_on_demand)
        if spot_bid_max_price is not None:
            pulumi.set(__self__, "spot_bid_max_price", spot_bid_max_price)

    @property
    @pulumi.getter
    def availability(self) -> Optional[pulumi.Input[str]]:
        return pulumi.get(self, "availability")

    @availability.setter
    def availability(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "availability", value)

    @property
    @pulumi.getter(name="firstOnDemand")
    def first_on_demand(self) -> Optional[pulumi.Input[int]]:
        return pulumi.get(self, "first_on_demand")

    @first_on_demand.setter
    def first_on_demand(self, value: Optional[pulumi.Input[int]]):
        pulumi.set(self, "first_on_demand", value)

    @property
    @pulumi.getter(name="spotBidMaxPrice")
    def spot_bid_max_price(self) -> Optional[pulumi.Input[float]]:
        return pulumi.get(self, "spot_bid_max_price")

    @spot_bid_max_price.setter
    def spot_bid_max_price(self, value: Optional[pulumi.Input[float]]):
        pulumi.set(self, "spot_bid_max_price", value)


@pulumi.input_type
class JobJobClusterNewClusterClusterLogConfArgs:
    def __init__(__self__, *,
                 dbfs: Optional[pulumi.Input['JobJobClusterNewClusterClusterLogConfDbfsArgs']] = None,
                 s3: Optional[pulumi.Input['JobJobClusterNewClusterClusterLogConfS3Args']] = None):
        if dbfs is not None:
            pulumi.set(__self__, "dbfs", dbfs)
        if s3 is not None:
            pulumi.set(__self__, "s3", s3)

    @property
    @pulumi.getter
    def dbfs(self) -> Optional[pulumi.Input['JobJobClusterNewClusterClusterLogConfDbfsArgs']]:
        return pulumi.get(self, "dbfs")

    @dbfs.setter
    def dbfs(self, value: Optional[pulumi.Input['JobJobClusterNewClusterClusterLogConfDbfsArgs']]):
        pulumi.set(self, "dbfs", value)

    @property
    @pulumi.getter
    def s3(self) -> Optional[pulumi.Input['JobJobClusterNewClusterClusterLogConfS3Args']]:
        return pulumi.get(self, "s3")

    @s3.setter
    def s3(self, value: Optional[pulumi.Input['JobJobClusterNewClusterClusterLogConfS3Args']]):
        pulumi.set(self, "s3", value)


@pulumi.input_type
class JobJobClusterNewClusterClusterLogConfDbfsArgs:
    def __init__(__self__, *,
                 destination: pulumi.Input[str]):
        pulumi.set(__self__, "destination", destination)

    @property
    @pulumi.getter
    def destination(self) -> pulumi.Input[str]:
        return pulumi.get(self, "destination")

    @destination.setter
    def destination(self, value: pulumi.Input[str]):
        pulumi.set(self, "destination", value)


@pulumi.input_type
class JobJobClusterNewClusterClusterLogConfS3Args:
    def __init__(__self__, *,
                 destination: pulumi.Input[str],
                 canned_acl: Optional[pulumi.Input[str]] = None,
                 enable_encryption: Optional[pulumi.Input[bool]] = None,
                 encryption_type: Optional[pulumi.Input[str]] = None,
                 endpoint: Optional[pulumi.Input[str]] = None,
                 kms_key: Optional[pulumi.Input[str]] = None,
                 region: Optional[pulumi.Input[str]] = None):
        pulumi.set(__self__, "destination", destination)
        if canned_acl is not None:
            pulumi.set(__self__, "canned_acl", canned_acl)
        if enable_encryption is not None:
            pulumi.set(__self__, "enable_encryption", enable_encryption)
        if encryption_type is not None:
            pulumi.set(__self__, "encryption_type", encryption_type)
        if endpoint is not None:
            pulumi.set(__self__, "endpoint", endpoint)
        if kms_key is not None:
            pulumi.set(__self__, "kms_key", kms_key)
        if region is not None:
            pulumi.set(__self__, "region", region)

    @property
    @pulumi.getter
    def destination(self) -> pulumi.Input[str]:
        return pulumi.get(self, "destination")

    @destination.setter
    def destination(self, value: pulumi.Input[str]):
        pulumi.set(self, "destination", value)

    @property
    @pulumi.getter(name="cannedAcl")
    def canned_acl(self) -> Optional[pulumi.Input[str]]:
        return pulumi.get(self, "canned_acl")

    @canned_acl.setter
    def canned_acl(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "canned_acl", value)

    @property
    @pulumi.getter(name="enableEncryption")
    def enable_encryption(self) -> Optional[pulumi.Input[bool]]:
        return pulumi.get(self, "enable_encryption")

    @enable_encryption.setter
    def enable_encryption(self, value: Optional[pulumi.Input[bool]]):
        pulumi.set(self, "enable_encryption", value)

    @property
    @pulumi.getter(name="encryptionType")
    def encryption_type(self) -> Optional[pulumi.Input[str]]:
        return pulumi.get(self, "encryption_type")

    @encryption_type.setter
    def encryption_type(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "encryption_type", value)

    @property
    @pulumi.getter
    def endpoint(self) -> Optional[pulumi.Input[str]]:
        return pulumi.get(self, "endpoint")

    @endpoint.setter
    def endpoint(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "endpoint", value)

    @property
    @pulumi.getter(name="kmsKey")
    def kms_key(self) -> Optional[pulumi.Input[str]]:
        return pulumi.get(self, "kms_key")

    @kms_key.setter
    def kms_key(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "kms_key", value)

    @property
    @pulumi.getter
    def region(self) -> Optional[pulumi.Input[str]]:
        return pulumi.get(self, "region")

    @region.setter
    def region(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "region", value)


@pulumi.input_type
class JobJobClusterNewClusterClusterMountInfoArgs:
    def __init__(__self__, *,
                 local_mount_dir_path: pulumi.Input[str],
                 network_filesystem_info: pulumi.Input['JobJobClusterNewClusterClusterMountInfoNetworkFilesystemInfoArgs'],
                 remote_mount_dir_path: Optional[pulumi.Input[str]] = None):
        pulumi.set(__self__, "local_mount_dir_path", local_mount_dir_path)
        pulumi.set(__self__, "network_filesystem_info", network_filesystem_info)
        if remote_mount_dir_path is not None:
            pulumi.set(__self__, "remote_mount_dir_path", remote_mount_dir_path)

    @property
    @pulumi.getter(name="localMountDirPath")
    def local_mount_dir_path(self) -> pulumi.Input[str]:
        return pulumi.get(self, "local_mount_dir_path")

    @local_mount_dir_path.setter
    def local_mount_dir_path(self, value: pulumi.Input[str]):
        pulumi.set(self, "local_mount_dir_path", value)

    @property
    @pulumi.getter(name="networkFilesystemInfo")
    def network_filesystem_info(self) -> pulumi.Input['JobJobClusterNewClusterClusterMountInfoNetworkFilesystemInfoArgs']:
        return pulumi.get(self, "network_filesystem_info")

    @network_filesystem_info.setter
    def network_filesystem_info(self, value: pulumi.Input['JobJobClusterNewClusterClusterMountInfoNetworkFilesystemInfoArgs']):
        pulumi.set(self, "network_filesystem_info", value)

    @property
    @pulumi.getter(name="remoteMountDirPath")
    def remote_mount_dir_path(self) -> Optional[pulumi.Input[str]]:
        return pulumi.get(self, "remote_mount_dir_path")

    @remote_mount_dir_path.setter
    def remote_mount_dir_path(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "remote_mount_dir_path", value)


@pulumi.input_type
class JobJobClusterNewClusterClusterMountInfoNetworkFilesystemInfoArgs:
    def __init__(__self__, *,
                 server_address: pulumi.Input[str],
                 mount_options: Optional[pulumi.Input[str]] = None):
        pulumi.set(__self__, "server_address", server_address)
        if mount_options is not None:
            pulumi.set(__self__, "mount_options", mount_options)

    @property
    @pulumi.getter(name="serverAddress")
    def server_address(self) -> pulumi.Input[str]:
        return pulumi.get(self, "server_address")

    @server_address.setter
    def server_address(self, value: pulumi.Input[str]):
        pulumi.set(self, "server_address", value)

    @property
    @pulumi.getter(name="mountOptions")
    def mount_options(self) -> Optional[pulumi.Input[str]]:
        return pulumi.get(self, "mount_options")

    @mount_options.setter
    def mount_options(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "mount_options", value)


@pulumi.input_type
class JobJobClusterNewClusterDockerImageArgs:
    def __init__(__self__, *,
                 url: pulumi.Input[str],
                 basic_auth: Optional[pulumi.Input['JobJobClusterNewClusterDockerImageBasicAuthArgs']] = None):
        """
        :param pulumi.Input[str] url: URL of the Git repository to use.
        """
        pulumi.set(__self__, "url", url)
        if basic_auth is not None:
            pulumi.set(__self__, "basic_auth", basic_auth)

    @property
    @pulumi.getter
    def url(self) -> pulumi.Input[str]:
        """
        URL of the Git repository to use.
        """
        return pulumi.get(self, "url")

    @url.setter
    def url(self, value: pulumi.Input[str]):
        pulumi.set(self, "url", value)

    @property
    @pulumi.getter(name="basicAuth")
    def basic_auth(self) -> Optional[pulumi.Input['JobJobClusterNewClusterDockerImageBasicAuthArgs']]:
        return pulumi.get(self, "basic_auth")

    @basic_auth.setter
    def basic_auth(self, value: Optional[pulumi.Input['JobJobClusterNewClusterDockerImageBasicAuthArgs']]):
        pulumi.set(self, "basic_auth", value)


@pulumi.input_type
class JobJobClusterNewClusterDockerImageBasicAuthArgs:
    def __init__(__self__, *,
                 password: pulumi.Input[str],
                 username: pulumi.Input[str]):
        pulumi.set(__self__, "password", password)
        pulumi.set(__self__, "username", username)

    @property
    @pulumi.getter
    def password(self) -> pulumi.Input[str]:
        return pulumi.get(self, "password")

    @password.setter
    def password(self, value: pulumi.Input[str]):
        pulumi.set(self, "password", value)

    @property
    @pulumi.getter
    def username(self) -> pulumi.Input[str]:
        return pulumi.get(self, "username")

    @username.setter
    def username(self, value: pulumi.Input[str]):
        pulumi.set(self, "username", value)


@pulumi.input_type
class JobJobClusterNewClusterGcpAttributesArgs:
    def __init__(__self__, *,
                 availability: Optional[pulumi.Input[str]] = None,
                 boot_disk_size: Optional[pulumi.Input[int]] = None,
                 google_service_account: Optional[pulumi.Input[str]] = None,
                 use_preemptible_executors: Optional[pulumi.Input[bool]] = None,
                 zone_id: Optional[pulumi.Input[str]] = None):
        if availability is not None:
            pulumi.set(__self__, "availability", availability)
        if boot_disk_size is not None:
            pulumi.set(__self__, "boot_disk_size", boot_disk_size)
        if google_service_account is not None:
            pulumi.set(__self__, "google_service_account", google_service_account)
        if use_preemptible_executors is not None:
            pulumi.set(__self__, "use_preemptible_executors", use_preemptible_executors)
        if zone_id is not None:
            pulumi.set(__self__, "zone_id", zone_id)

    @property
    @pulumi.getter
    def availability(self) -> Optional[pulumi.Input[str]]:
        return pulumi.get(self, "availability")

    @availability.setter
    def availability(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "availability", value)

    @property
    @pulumi.getter(name="bootDiskSize")
    def boot_disk_size(self) -> Optional[pulumi.Input[int]]:
        return pulumi.get(self, "boot_disk_size")

    @boot_disk_size.setter
    def boot_disk_size(self, value: Optional[pulumi.Input[int]]):
        pulumi.set(self, "boot_disk_size", value)

    @property
    @pulumi.getter(name="googleServiceAccount")
    def google_service_account(self) -> Optional[pulumi.Input[str]]:
        return pulumi.get(self, "google_service_account")

    @google_service_account.setter
    def google_service_account(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "google_service_account", value)

    @property
    @pulumi.getter(name="usePreemptibleExecutors")
    def use_preemptible_executors(self) -> Optional[pulumi.Input[bool]]:
        return pulumi.get(self, "use_preemptible_executors")

    @use_preemptible_executors.setter
    def use_preemptible_executors(self, value: Optional[pulumi.Input[bool]]):
        pulumi.set(self, "use_preemptible_executors", value)

    @property
    @pulumi.getter(name="zoneId")
    def zone_id(self) -> Optional[pulumi.Input[str]]:
        return pulumi.get(self, "zone_id")

    @zone_id.setter
    def zone_id(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "zone_id", value)


@pulumi.input_type
class JobJobClusterNewClusterInitScriptArgs:
    def __init__(__self__, *,
                 abfss: Optional[pulumi.Input['JobJobClusterNewClusterInitScriptAbfssArgs']] = None,
                 dbfs: Optional[pulumi.Input['JobJobClusterNewClusterInitScriptDbfsArgs']] = None,
                 file: Optional[pulumi.Input['JobJobClusterNewClusterInitScriptFileArgs']] = None,
                 gcs: Optional[pulumi.Input['JobJobClusterNewClusterInitScriptGcsArgs']] = None,
                 s3: Optional[pulumi.Input['JobJobClusterNewClusterInitScriptS3Args']] = None):
        if abfss is not None:
            pulumi.set(__self__, "abfss", abfss)
        if dbfs is not None:
            pulumi.set(__self__, "dbfs", dbfs)
        if file is not None:
            pulumi.set(__self__, "file", file)
        if gcs is not None:
            pulumi.set(__self__, "gcs", gcs)
        if s3 is not None:
            pulumi.set(__self__, "s3", s3)

    @property
    @pulumi.getter
    def abfss(self) -> Optional[pulumi.Input['JobJobClusterNewClusterInitScriptAbfssArgs']]:
        return pulumi.get(self, "abfss")

    @abfss.setter
    def abfss(self, value: Optional[pulumi.Input['JobJobClusterNewClusterInitScriptAbfssArgs']]):
        pulumi.set(self, "abfss", value)

    @property
    @pulumi.getter
    def dbfs(self) -> Optional[pulumi.Input['JobJobClusterNewClusterInitScriptDbfsArgs']]:
        return pulumi.get(self, "dbfs")

    @dbfs.setter
    def dbfs(self, value: Optional[pulumi.Input['JobJobClusterNewClusterInitScriptDbfsArgs']]):
        pulumi.set(self, "dbfs", value)

    @property
    @pulumi.getter
    def file(self) -> Optional[pulumi.Input['JobJobClusterNewClusterInitScriptFileArgs']]:
        return pulumi.get(self, "file")

    @file.setter
    def file(self, value: Optional[pulumi.Input['JobJobClusterNewClusterInitScriptFileArgs']]):
        pulumi.set(self, "file", value)

    @property
    @pulumi.getter
    def gcs(self) -> Optional[pulumi.Input['JobJobClusterNewClusterInitScriptGcsArgs']]:
        return pulumi.get(self, "gcs")

    @gcs.setter
    def gcs(self, value: Optional[pulumi.Input['JobJobClusterNewClusterInitScriptGcsArgs']]):
        pulumi.set(self, "gcs", value)

    @property
    @pulumi.getter
    def s3(self) -> Optional[pulumi.Input['JobJobClusterNewClusterInitScriptS3Args']]:
        return pulumi.get(self, "s3")

    @s3.setter
    def s3(self, value: Optional[pulumi.Input['JobJobClusterNewClusterInitScriptS3Args']]):
        pulumi.set(self, "s3", value)


@pulumi.input_type
class JobJobClusterNewClusterInitScriptAbfssArgs:
    def __init__(__self__, *,
                 destination: Optional[pulumi.Input[str]] = None):
        if destination is not None:
            pulumi.set(__self__, "destination", destination)

    @property
    @pulumi.getter
    def destination(self) -> Optional[pulumi.Input[str]]:
        return pulumi.get(self, "destination")

    @destination.setter
    def destination(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "destination", value)


@pulumi.input_type
class JobJobClusterNewClusterInitScriptDbfsArgs:
    def __init__(__self__, *,
                 destination: pulumi.Input[str]):
        pulumi.set(__self__, "destination", destination)

    @property
    @pulumi.getter
    def destination(self) -> pulumi.Input[str]:
        return pulumi.get(self, "destination")

    @destination.setter
    def destination(self, value: pulumi.Input[str]):
        pulumi.set(self, "destination", value)


@pulumi.input_type
class JobJobClusterNewClusterInitScriptFileArgs:
    def __init__(__self__, *,
                 destination: Optional[pulumi.Input[str]] = None):
        if destination is not None:
            pulumi.set(__self__, "destination", destination)

    @property
    @pulumi.getter
    def destination(self) -> Optional[pulumi.Input[str]]:
        return pulumi.get(self, "destination")

    @destination.setter
    def destination(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "destination", value)


@pulumi.input_type
class JobJobClusterNewClusterInitScriptGcsArgs:
    def __init__(__self__, *,
                 destination: Optional[pulumi.Input[str]] = None):
        if destination is not None:
            pulumi.set(__self__, "destination", destination)

    @property
    @pulumi.getter
    def destination(self) -> Optional[pulumi.Input[str]]:
        return pulumi.get(self, "destination")

    @destination.setter
    def destination(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "destination", value)


@pulumi.input_type
class JobJobClusterNewClusterInitScriptS3Args:
    def __init__(__self__, *,
                 destination: pulumi.Input[str],
                 canned_acl: Optional[pulumi.Input[str]] = None,
                 enable_encryption: Optional[pulumi.Input[bool]] = None,
                 encryption_type: Optional[pulumi.Input[str]] = None,
                 endpoint: Optional[pulumi.Input[str]] = None,
                 kms_key: Optional[pulumi.Input[str]] = None,
                 region: Optional[pulumi.Input[str]] = None):
        pulumi.set(__self__, "destination", destination)
        if canned_acl is not None:
            pulumi.set(__self__, "canned_acl", canned_acl)
        if enable_encryption is not None:
            pulumi.set(__self__, "enable_encryption", enable_encryption)
        if encryption_type is not None:
            pulumi.set(__self__, "encryption_type", encryption_type)
        if endpoint is not None:
            pulumi.set(__self__, "endpoint", endpoint)
        if kms_key is not None:
            pulumi.set(__self__, "kms_key", kms_key)
        if region is not None:
            pulumi.set(__self__, "region", region)

    @property
    @pulumi.getter
    def destination(self) -> pulumi.Input[str]:
        return pulumi.get(self, "destination")

    @destination.setter
    def destination(self, value: pulumi.Input[str]):
        pulumi.set(self, "destination", value)

    @property
    @pulumi.getter(name="cannedAcl")
    def canned_acl(self) -> Optional[pulumi.Input[str]]:
        return pulumi.get(self, "canned_acl")

    @canned_acl.setter
    def canned_acl(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "canned_acl", value)

    @property
    @pulumi.getter(name="enableEncryption")
    def enable_encryption(self) -> Optional[pulumi.Input[bool]]:
        return pulumi.get(self, "enable_encryption")

    @enable_encryption.setter
    def enable_encryption(self, value: Optional[pulumi.Input[bool]]):
        pulumi.set(self, "enable_encryption", value)

    @property
    @pulumi.getter(name="encryptionType")
    def encryption_type(self) -> Optional[pulumi.Input[str]]:
        return pulumi.get(self, "encryption_type")

    @encryption_type.setter
    def encryption_type(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "encryption_type", value)

    @property
    @pulumi.getter
    def endpoint(self) -> Optional[pulumi.Input[str]]:
        return pulumi.get(self, "endpoint")

    @endpoint.setter
    def endpoint(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "endpoint", value)

    @property
    @pulumi.getter(name="kmsKey")
    def kms_key(self) -> Optional[pulumi.Input[str]]:
        return pulumi.get(self, "kms_key")

    @kms_key.setter
    def kms_key(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "kms_key", value)

    @property
    @pulumi.getter
    def region(self) -> Optional[pulumi.Input[str]]:
        return pulumi.get(self, "region")

    @region.setter
    def region(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "region", value)


@pulumi.input_type
class JobJobClusterNewClusterWorkloadTypeArgs:
    def __init__(__self__, *,
                 clients: pulumi.Input['JobJobClusterNewClusterWorkloadTypeClientsArgs']):
        pulumi.set(__self__, "clients", clients)

    @property
    @pulumi.getter
    def clients(self) -> pulumi.Input['JobJobClusterNewClusterWorkloadTypeClientsArgs']:
        return pulumi.get(self, "clients")

    @clients.setter
    def clients(self, value: pulumi.Input['JobJobClusterNewClusterWorkloadTypeClientsArgs']):
        pulumi.set(self, "clients", value)


@pulumi.input_type
class JobJobClusterNewClusterWorkloadTypeClientsArgs:
    def __init__(__self__, *,
                 jobs: Optional[pulumi.Input[bool]] = None,
                 notebooks: Optional[pulumi.Input[bool]] = None):
        if jobs is not None:
            pulumi.set(__self__, "jobs", jobs)
        if notebooks is not None:
            pulumi.set(__self__, "notebooks", notebooks)

    @property
    @pulumi.getter
    def jobs(self) -> Optional[pulumi.Input[bool]]:
        return pulumi.get(self, "jobs")

    @jobs.setter
    def jobs(self, value: Optional[pulumi.Input[bool]]):
        pulumi.set(self, "jobs", value)

    @property
    @pulumi.getter
    def notebooks(self) -> Optional[pulumi.Input[bool]]:
        return pulumi.get(self, "notebooks")

    @notebooks.setter
    def notebooks(self, value: Optional[pulumi.Input[bool]]):
        pulumi.set(self, "notebooks", value)


@pulumi.input_type
class JobLibraryArgs:
    def __init__(__self__, *,
                 cran: Optional[pulumi.Input['JobLibraryCranArgs']] = None,
                 egg: Optional[pulumi.Input[str]] = None,
                 jar: Optional[pulumi.Input[str]] = None,
                 maven: Optional[pulumi.Input['JobLibraryMavenArgs']] = None,
                 pypi: Optional[pulumi.Input['JobLibraryPypiArgs']] = None,
                 whl: Optional[pulumi.Input[str]] = None):
        if cran is not None:
            pulumi.set(__self__, "cran", cran)
        if egg is not None:
            pulumi.set(__self__, "egg", egg)
        if jar is not None:
            pulumi.set(__self__, "jar", jar)
        if maven is not None:
            pulumi.set(__self__, "maven", maven)
        if pypi is not None:
            pulumi.set(__self__, "pypi", pypi)
        if whl is not None:
            pulumi.set(__self__, "whl", whl)

    @property
    @pulumi.getter
    def cran(self) -> Optional[pulumi.Input['JobLibraryCranArgs']]:
        return pulumi.get(self, "cran")

    @cran.setter
    def cran(self, value: Optional[pulumi.Input['JobLibraryCranArgs']]):
        pulumi.set(self, "cran", value)

    @property
    @pulumi.getter
    def egg(self) -> Optional[pulumi.Input[str]]:
        return pulumi.get(self, "egg")

    @egg.setter
    def egg(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "egg", value)

    @property
    @pulumi.getter
    def jar(self) -> Optional[pulumi.Input[str]]:
        return pulumi.get(self, "jar")

    @jar.setter
    def jar(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "jar", value)

    @property
    @pulumi.getter
    def maven(self) -> Optional[pulumi.Input['JobLibraryMavenArgs']]:
        return pulumi.get(self, "maven")

    @maven.setter
    def maven(self, value: Optional[pulumi.Input['JobLibraryMavenArgs']]):
        pulumi.set(self, "maven", value)

    @property
    @pulumi.getter
    def pypi(self) -> Optional[pulumi.Input['JobLibraryPypiArgs']]:
        return pulumi.get(self, "pypi")

    @pypi.setter
    def pypi(self, value: Optional[pulumi.Input['JobLibraryPypiArgs']]):
        pulumi.set(self, "pypi", value)

    @property
    @pulumi.getter
    def whl(self) -> Optional[pulumi.Input[str]]:
        return pulumi.get(self, "whl")

    @whl.setter
    def whl(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "whl", value)


@pulumi.input_type
class JobLibraryCranArgs:
    def __init__(__self__, *,
                 package: pulumi.Input[str],
                 repo: Optional[pulumi.Input[str]] = None):
        pulumi.set(__self__, "package", package)
        if repo is not None:
            pulumi.set(__self__, "repo", repo)

    @property
    @pulumi.getter
    def package(self) -> pulumi.Input[str]:
        return pulumi.get(self, "package")

    @package.setter
    def package(self, value: pulumi.Input[str]):
        pulumi.set(self, "package", value)

    @property
    @pulumi.getter
    def repo(self) -> Optional[pulumi.Input[str]]:
        return pulumi.get(self, "repo")

    @repo.setter
    def repo(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "repo", value)


@pulumi.input_type
class JobLibraryMavenArgs:
    def __init__(__self__, *,
                 coordinates: pulumi.Input[str],
                 exclusions: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None,
                 repo: Optional[pulumi.Input[str]] = None):
        pulumi.set(__self__, "coordinates", coordinates)
        if exclusions is not None:
            pulumi.set(__self__, "exclusions", exclusions)
        if repo is not None:
            pulumi.set(__self__, "repo", repo)

    @property
    @pulumi.getter
    def coordinates(self) -> pulumi.Input[str]:
        return pulumi.get(self, "coordinates")

    @coordinates.setter
    def coordinates(self, value: pulumi.Input[str]):
        pulumi.set(self, "coordinates", value)

    @property
    @pulumi.getter
    def exclusions(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]:
        return pulumi.get(self, "exclusions")

    @exclusions.setter
    def exclusions(self, value: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]):
        pulumi.set(self, "exclusions", value)

    @property
    @pulumi.getter
    def repo(self) -> Optional[pulumi.Input[str]]:
        return pulumi.get(self, "repo")

    @repo.setter
    def repo(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "repo", value)


@pulumi.input_type
class JobLibraryPypiArgs:
    def __init__(__self__, *,
                 package: pulumi.Input[str],
                 repo: Optional[pulumi.Input[str]] = None):
        pulumi.set(__self__, "package", package)
        if repo is not None:
            pulumi.set(__self__, "repo", repo)

    @property
    @pulumi.getter
    def package(self) -> pulumi.Input[str]:
        return pulumi.get(self, "package")

    @package.setter
    def package(self, value: pulumi.Input[str]):
        pulumi.set(self, "package", value)

    @property
    @pulumi.getter
    def repo(self) -> Optional[pulumi.Input[str]]:
        return pulumi.get(self, "repo")

    @repo.setter
    def repo(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "repo", value)


@pulumi.input_type
class JobNewClusterArgs:
    def __init__(__self__, *,
                 spark_version: pulumi.Input[str],
                 apply_policy_default_values: Optional[pulumi.Input[bool]] = None,
                 autoscale: Optional[pulumi.Input['JobNewClusterAutoscaleArgs']] = None,
                 autotermination_minutes: Optional[pulumi.Input[int]] = None,
                 aws_attributes: Optional[pulumi.Input['JobNewClusterAwsAttributesArgs']] = None,
                 azure_attributes: Optional[pulumi.Input['JobNewClusterAzureAttributesArgs']] = None,
                 cluster_id: Optional[pulumi.Input[str]] = None,
                 cluster_log_conf: Optional[pulumi.Input['JobNewClusterClusterLogConfArgs']] = None,
                 cluster_mount_infos: Optional[pulumi.Input[Sequence[pulumi.Input['JobNewClusterClusterMountInfoArgs']]]] = None,
                 cluster_name: Optional[pulumi.Input[str]] = None,
                 custom_tags: Optional[pulumi.Input[Mapping[str, Any]]] = None,
                 data_security_mode: Optional[pulumi.Input[str]] = None,
                 docker_image: Optional[pulumi.Input['JobNewClusterDockerImageArgs']] = None,
                 driver_instance_pool_id: Optional[pulumi.Input[str]] = None,
                 driver_node_type_id: Optional[pulumi.Input[str]] = None,
                 enable_elastic_disk: Optional[pulumi.Input[bool]] = None,
                 enable_local_disk_encryption: Optional[pulumi.Input[bool]] = None,
                 gcp_attributes: Optional[pulumi.Input['JobNewClusterGcpAttributesArgs']] = None,
                 idempotency_token: Optional[pulumi.Input[str]] = None,
                 init_scripts: Optional[pulumi.Input[Sequence[pulumi.Input['JobNewClusterInitScriptArgs']]]] = None,
                 instance_pool_id: Optional[pulumi.Input[str]] = None,
                 node_type_id: Optional[pulumi.Input[str]] = None,
                 num_workers: Optional[pulumi.Input[int]] = None,
                 policy_id: Optional[pulumi.Input[str]] = None,
                 runtime_engine: Optional[pulumi.Input[str]] = None,
                 single_user_name: Optional[pulumi.Input[str]] = None,
                 spark_conf: Optional[pulumi.Input[Mapping[str, Any]]] = None,
                 spark_env_vars: Optional[pulumi.Input[Mapping[str, Any]]] = None,
                 ssh_public_keys: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None,
                 workload_type: Optional[pulumi.Input['JobNewClusterWorkloadTypeArgs']] = None):
        pulumi.set(__self__, "spark_version", spark_version)
        if apply_policy_default_values is not None:
            pulumi.set(__self__, "apply_policy_default_values", apply_policy_default_values)
        if autoscale is not None:
            pulumi.set(__self__, "autoscale", autoscale)
        if autotermination_minutes is not None:
            pulumi.set(__self__, "autotermination_minutes", autotermination_minutes)
        if aws_attributes is not None:
            pulumi.set(__self__, "aws_attributes", aws_attributes)
        if azure_attributes is not None:
            pulumi.set(__self__, "azure_attributes", azure_attributes)
        if cluster_id is not None:
            pulumi.set(__self__, "cluster_id", cluster_id)
        if cluster_log_conf is not None:
            pulumi.set(__self__, "cluster_log_conf", cluster_log_conf)
        if cluster_mount_infos is not None:
            pulumi.set(__self__, "cluster_mount_infos", cluster_mount_infos)
        if cluster_name is not None:
            pulumi.set(__self__, "cluster_name", cluster_name)
        if custom_tags is not None:
            pulumi.set(__self__, "custom_tags", custom_tags)
        if data_security_mode is not None:
            pulumi.set(__self__, "data_security_mode", data_security_mode)
        if docker_image is not None:
            pulumi.set(__self__, "docker_image", docker_image)
        if driver_instance_pool_id is not None:
            pulumi.set(__self__, "driver_instance_pool_id", driver_instance_pool_id)
        if driver_node_type_id is not None:
            pulumi.set(__self__, "driver_node_type_id", driver_node_type_id)
        if enable_elastic_disk is not None:
            pulumi.set(__self__, "enable_elastic_disk", enable_elastic_disk)
        if enable_local_disk_encryption is not None:
            pulumi.set(__self__, "enable_local_disk_encryption", enable_local_disk_encryption)
        if gcp_attributes is not None:
            pulumi.set(__self__, "gcp_attributes", gcp_attributes)
        if idempotency_token is not None:
            pulumi.set(__self__, "idempotency_token", idempotency_token)
        if init_scripts is not None:
            pulumi.set(__self__, "init_scripts", init_scripts)
        if instance_pool_id is not None:
            pulumi.set(__self__, "instance_pool_id", instance_pool_id)
        if node_type_id is not None:
            pulumi.set(__self__, "node_type_id", node_type_id)
        if num_workers is not None:
            pulumi.set(__self__, "num_workers", num_workers)
        if policy_id is not None:
            pulumi.set(__self__, "policy_id", policy_id)
        if runtime_engine is not None:
            pulumi.set(__self__, "runtime_engine", runtime_engine)
        if single_user_name is not None:
            pulumi.set(__self__, "single_user_name", single_user_name)
        if spark_conf is not None:
            pulumi.set(__self__, "spark_conf", spark_conf)
        if spark_env_vars is not None:
            pulumi.set(__self__, "spark_env_vars", spark_env_vars)
        if ssh_public_keys is not None:
            pulumi.set(__self__, "ssh_public_keys", ssh_public_keys)
        if workload_type is not None:
            pulumi.set(__self__, "workload_type", workload_type)

    @property
    @pulumi.getter(name="sparkVersion")
    def spark_version(self) -> pulumi.Input[str]:
        return pulumi.get(self, "spark_version")

    @spark_version.setter
    def spark_version(self, value: pulumi.Input[str]):
        pulumi.set(self, "spark_version", value)

    @property
    @pulumi.getter(name="applyPolicyDefaultValues")
    def apply_policy_default_values(self) -> Optional[pulumi.Input[bool]]:
        return pulumi.get(self, "apply_policy_default_values")

    @apply_policy_default_values.setter
    def apply_policy_default_values(self, value: Optional[pulumi.Input[bool]]):
        pulumi.set(self, "apply_policy_default_values", value)

    @property
    @pulumi.getter
    def autoscale(self) -> Optional[pulumi.Input['JobNewClusterAutoscaleArgs']]:
        return pulumi.get(self, "autoscale")

    @autoscale.setter
    def autoscale(self, value: Optional[pulumi.Input['JobNewClusterAutoscaleArgs']]):
        pulumi.set(self, "autoscale", value)

    @property
    @pulumi.getter(name="autoterminationMinutes")
    def autotermination_minutes(self) -> Optional[pulumi.Input[int]]:
        return pulumi.get(self, "autotermination_minutes")

    @autotermination_minutes.setter
    def autotermination_minutes(self, value: Optional[pulumi.Input[int]]):
        pulumi.set(self, "autotermination_minutes", value)

    @property
    @pulumi.getter(name="awsAttributes")
    def aws_attributes(self) -> Optional[pulumi.Input['JobNewClusterAwsAttributesArgs']]:
        return pulumi.get(self, "aws_attributes")

    @aws_attributes.setter
    def aws_attributes(self, value: Optional[pulumi.Input['JobNewClusterAwsAttributesArgs']]):
        pulumi.set(self, "aws_attributes", value)

    @property
    @pulumi.getter(name="azureAttributes")
    def azure_attributes(self) -> Optional[pulumi.Input['JobNewClusterAzureAttributesArgs']]:
        return pulumi.get(self, "azure_attributes")

    @azure_attributes.setter
    def azure_attributes(self, value: Optional[pulumi.Input['JobNewClusterAzureAttributesArgs']]):
        pulumi.set(self, "azure_attributes", value)

    @property
    @pulumi.getter(name="clusterId")
    def cluster_id(self) -> Optional[pulumi.Input[str]]:
        return pulumi.get(self, "cluster_id")

    @cluster_id.setter
    def cluster_id(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "cluster_id", value)

    @property
    @pulumi.getter(name="clusterLogConf")
    def cluster_log_conf(self) -> Optional[pulumi.Input['JobNewClusterClusterLogConfArgs']]:
        return pulumi.get(self, "cluster_log_conf")

    @cluster_log_conf.setter
    def cluster_log_conf(self, value: Optional[pulumi.Input['JobNewClusterClusterLogConfArgs']]):
        pulumi.set(self, "cluster_log_conf", value)

    @property
    @pulumi.getter(name="clusterMountInfos")
    def cluster_mount_infos(self) -> Optional[pulumi.Input[Sequence[pulumi.Input['JobNewClusterClusterMountInfoArgs']]]]:
        return pulumi.get(self, "cluster_mount_infos")

    @cluster_mount_infos.setter
    def cluster_mount_infos(self, value: Optional[pulumi.Input[Sequence[pulumi.Input['JobNewClusterClusterMountInfoArgs']]]]):
        pulumi.set(self, "cluster_mount_infos", value)

    @property
    @pulumi.getter(name="clusterName")
    def cluster_name(self) -> Optional[pulumi.Input[str]]:
        return pulumi.get(self, "cluster_name")

    @cluster_name.setter
    def cluster_name(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "cluster_name", value)

    @property
    @pulumi.getter(name="customTags")
    def custom_tags(self) -> Optional[pulumi.Input[Mapping[str, Any]]]:
        return pulumi.get(self, "custom_tags")

    @custom_tags.setter
    def custom_tags(self, value: Optional[pulumi.Input[Mapping[str, Any]]]):
        pulumi.set(self, "custom_tags", value)

    @property
    @pulumi.getter(name="dataSecurityMode")
    def data_security_mode(self) -> Optional[pulumi.Input[str]]:
        return pulumi.get(self, "data_security_mode")

    @data_security_mode.setter
    def data_security_mode(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "data_security_mode", value)

    @property
    @pulumi.getter(name="dockerImage")
    def docker_image(self) -> Optional[pulumi.Input['JobNewClusterDockerImageArgs']]:
        return pulumi.get(self, "docker_image")

    @docker_image.setter
    def docker_image(self, value: Optional[pulumi.Input['JobNewClusterDockerImageArgs']]):
        pulumi.set(self, "docker_image", value)

    @property
    @pulumi.getter(name="driverInstancePoolId")
    def driver_instance_pool_id(self) -> Optional[pulumi.Input[str]]:
        return pulumi.get(self, "driver_instance_pool_id")

    @driver_instance_pool_id.setter
    def driver_instance_pool_id(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "driver_instance_pool_id", value)

    @property
    @pulumi.getter(name="driverNodeTypeId")
    def driver_node_type_id(self) -> Optional[pulumi.Input[str]]:
        return pulumi.get(self, "driver_node_type_id")

    @driver_node_type_id.setter
    def driver_node_type_id(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "driver_node_type_id", value)

    @property
    @pulumi.getter(name="enableElasticDisk")
    def enable_elastic_disk(self) -> Optional[pulumi.Input[bool]]:
        return pulumi.get(self, "enable_elastic_disk")

    @enable_elastic_disk.setter
    def enable_elastic_disk(self, value: Optional[pulumi.Input[bool]]):
        pulumi.set(self, "enable_elastic_disk", value)

    @property
    @pulumi.getter(name="enableLocalDiskEncryption")
    def enable_local_disk_encryption(self) -> Optional[pulumi.Input[bool]]:
        return pulumi.get(self, "enable_local_disk_encryption")

    @enable_local_disk_encryption.setter
    def enable_local_disk_encryption(self, value: Optional[pulumi.Input[bool]]):
        pulumi.set(self, "enable_local_disk_encryption", value)

    @property
    @pulumi.getter(name="gcpAttributes")
    def gcp_attributes(self) -> Optional[pulumi.Input['JobNewClusterGcpAttributesArgs']]:
        return pulumi.get(self, "gcp_attributes")

    @gcp_attributes.setter
    def gcp_attributes(self, value: Optional[pulumi.Input['JobNewClusterGcpAttributesArgs']]):
        pulumi.set(self, "gcp_attributes", value)

    @property
    @pulumi.getter(name="idempotencyToken")
    def idempotency_token(self) -> Optional[pulumi.Input[str]]:
        return pulumi.get(self, "idempotency_token")

    @idempotency_token.setter
    def idempotency_token(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "idempotency_token", value)

    @property
    @pulumi.getter(name="initScripts")
    def init_scripts(self) -> Optional[pulumi.Input[Sequence[pulumi.Input['JobNewClusterInitScriptArgs']]]]:
        return pulumi.get(self, "init_scripts")

    @init_scripts.setter
    def init_scripts(self, value: Optional[pulumi.Input[Sequence[pulumi.Input['JobNewClusterInitScriptArgs']]]]):
        pulumi.set(self, "init_scripts", value)

    @property
    @pulumi.getter(name="instancePoolId")
    def instance_pool_id(self) -> Optional[pulumi.Input[str]]:
        return pulumi.get(self, "instance_pool_id")

    @instance_pool_id.setter
    def instance_pool_id(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "instance_pool_id", value)

    @property
    @pulumi.getter(name="nodeTypeId")
    def node_type_id(self) -> Optional[pulumi.Input[str]]:
        return pulumi.get(self, "node_type_id")

    @node_type_id.setter
    def node_type_id(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "node_type_id", value)

    @property
    @pulumi.getter(name="numWorkers")
    def num_workers(self) -> Optional[pulumi.Input[int]]:
        return pulumi.get(self, "num_workers")

    @num_workers.setter
    def num_workers(self, value: Optional[pulumi.Input[int]]):
        pulumi.set(self, "num_workers", value)

    @property
    @pulumi.getter(name="policyId")
    def policy_id(self) -> Optional[pulumi.Input[str]]:
        return pulumi.get(self, "policy_id")

    @policy_id.setter
    def policy_id(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "policy_id", value)

    @property
    @pulumi.getter(name="runtimeEngine")
    def runtime_engine(self) -> Optional[pulumi.Input[str]]:
        return pulumi.get(self, "runtime_engine")

    @runtime_engine.setter
    def runtime_engine(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "runtime_engine", value)

    @property
    @pulumi.getter(name="singleUserName")
    def single_user_name(self) -> Optional[pulumi.Input[str]]:
        return pulumi.get(self, "single_user_name")

    @single_user_name.setter
    def single_user_name(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "single_user_name", value)

    @property
    @pulumi.getter(name="sparkConf")
    def spark_conf(self) -> Optional[pulumi.Input[Mapping[str, Any]]]:
        return pulumi.get(self, "spark_conf")

    @spark_conf.setter
    def spark_conf(self, value: Optional[pulumi.Input[Mapping[str, Any]]]):
        pulumi.set(self, "spark_conf", value)

    @property
    @pulumi.getter(name="sparkEnvVars")
    def spark_env_vars(self) -> Optional[pulumi.Input[Mapping[str, Any]]]:
        return pulumi.get(self, "spark_env_vars")

    @spark_env_vars.setter
    def spark_env_vars(self, value: Optional[pulumi.Input[Mapping[str, Any]]]):
        pulumi.set(self, "spark_env_vars", value)

    @property
    @pulumi.getter(name="sshPublicKeys")
    def ssh_public_keys(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]:
        return pulumi.get(self, "ssh_public_keys")

    @ssh_public_keys.setter
    def ssh_public_keys(self, value: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]):
        pulumi.set(self, "ssh_public_keys", value)

    @property
    @pulumi.getter(name="workloadType")
    def workload_type(self) -> Optional[pulumi.Input['JobNewClusterWorkloadTypeArgs']]:
        return pulumi.get(self, "workload_type")

    @workload_type.setter
    def workload_type(self, value: Optional[pulumi.Input['JobNewClusterWorkloadTypeArgs']]):
        pulumi.set(self, "workload_type", value)


@pulumi.input_type
class JobNewClusterAutoscaleArgs:
    def __init__(__self__, *,
                 max_workers: Optional[pulumi.Input[int]] = None,
                 min_workers: Optional[pulumi.Input[int]] = None):
        if max_workers is not None:
            pulumi.set(__self__, "max_workers", max_workers)
        if min_workers is not None:
            pulumi.set(__self__, "min_workers", min_workers)

    @property
    @pulumi.getter(name="maxWorkers")
    def max_workers(self) -> Optional[pulumi.Input[int]]:
        return pulumi.get(self, "max_workers")

    @max_workers.setter
    def max_workers(self, value: Optional[pulumi.Input[int]]):
        pulumi.set(self, "max_workers", value)

    @property
    @pulumi.getter(name="minWorkers")
    def min_workers(self) -> Optional[pulumi.Input[int]]:
        return pulumi.get(self, "min_workers")

    @min_workers.setter
    def min_workers(self, value: Optional[pulumi.Input[int]]):
        pulumi.set(self, "min_workers", value)


@pulumi.input_type
class JobNewClusterAwsAttributesArgs:
    def __init__(__self__, *,
                 availability: Optional[pulumi.Input[str]] = None,
                 ebs_volume_count: Optional[pulumi.Input[int]] = None,
                 ebs_volume_size: Optional[pulumi.Input[int]] = None,
                 ebs_volume_type: Optional[pulumi.Input[str]] = None,
                 first_on_demand: Optional[pulumi.Input[int]] = None,
                 instance_profile_arn: Optional[pulumi.Input[str]] = None,
                 spot_bid_price_percent: Optional[pulumi.Input[int]] = None,
                 zone_id: Optional[pulumi.Input[str]] = None):
        if availability is not None:
            pulumi.set(__self__, "availability", availability)
        if ebs_volume_count is not None:
            pulumi.set(__self__, "ebs_volume_count", ebs_volume_count)
        if ebs_volume_size is not None:
            pulumi.set(__self__, "ebs_volume_size", ebs_volume_size)
        if ebs_volume_type is not None:
            pulumi.set(__self__, "ebs_volume_type", ebs_volume_type)
        if first_on_demand is not None:
            pulumi.set(__self__, "first_on_demand", first_on_demand)
        if instance_profile_arn is not None:
            pulumi.set(__self__, "instance_profile_arn", instance_profile_arn)
        if spot_bid_price_percent is not None:
            pulumi.set(__self__, "spot_bid_price_percent", spot_bid_price_percent)
        if zone_id is not None:
            pulumi.set(__self__, "zone_id", zone_id)

    @property
    @pulumi.getter
    def availability(self) -> Optional[pulumi.Input[str]]:
        return pulumi.get(self, "availability")

    @availability.setter
    def availability(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "availability", value)

    @property
    @pulumi.getter(name="ebsVolumeCount")
    def ebs_volume_count(self) -> Optional[pulumi.Input[int]]:
        return pulumi.get(self, "ebs_volume_count")

    @ebs_volume_count.setter
    def ebs_volume_count(self, value: Optional[pulumi.Input[int]]):
        pulumi.set(self, "ebs_volume_count", value)

    @property
    @pulumi.getter(name="ebsVolumeSize")
    def ebs_volume_size(self) -> Optional[pulumi.Input[int]]:
        return pulumi.get(self, "ebs_volume_size")

    @ebs_volume_size.setter
    def ebs_volume_size(self, value: Optional[pulumi.Input[int]]):
        pulumi.set(self, "ebs_volume_size", value)

    @property
    @pulumi.getter(name="ebsVolumeType")
    def ebs_volume_type(self) -> Optional[pulumi.Input[str]]:
        return pulumi.get(self, "ebs_volume_type")

    @ebs_volume_type.setter
    def ebs_volume_type(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "ebs_volume_type", value)

    @property
    @pulumi.getter(name="firstOnDemand")
    def first_on_demand(self) -> Optional[pulumi.Input[int]]:
        return pulumi.get(self, "first_on_demand")

    @first_on_demand.setter
    def first_on_demand(self, value: Optional[pulumi.Input[int]]):
        pulumi.set(self, "first_on_demand", value)

    @property
    @pulumi.getter(name="instanceProfileArn")
    def instance_profile_arn(self) -> Optional[pulumi.Input[str]]:
        return pulumi.get(self, "instance_profile_arn")

    @instance_profile_arn.setter
    def instance_profile_arn(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "instance_profile_arn", value)

    @property
    @pulumi.getter(name="spotBidPricePercent")
    def spot_bid_price_percent(self) -> Optional[pulumi.Input[int]]:
        return pulumi.get(self, "spot_bid_price_percent")

    @spot_bid_price_percent.setter
    def spot_bid_price_percent(self, value: Optional[pulumi.Input[int]]):
        pulumi.set(self, "spot_bid_price_percent", value)

    @property
    @pulumi.getter(name="zoneId")
    def zone_id(self) -> Optional[pulumi.Input[str]]:
        return pulumi.get(self, "zone_id")

    @zone_id.setter
    def zone_id(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "zone_id", value)


@pulumi.input_type
class JobNewClusterAzureAttributesArgs:
    def __init__(__self__, *,
                 availability: Optional[pulumi.Input[str]] = None,
                 first_on_demand: Optional[pulumi.Input[int]] = None,
                 spot_bid_max_price: Optional[pulumi.Input[float]] = None):
        if availability is not None:
            pulumi.set(__self__, "availability", availability)
        if first_on_demand is not None:
            pulumi.set(__self__, "first_on_demand", first_on_demand)
        if spot_bid_max_price is not None:
            pulumi.set(__self__, "spot_bid_max_price", spot_bid_max_price)

    @property
    @pulumi.getter
    def availability(self) -> Optional[pulumi.Input[str]]:
        return pulumi.get(self, "availability")

    @availability.setter
    def availability(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "availability", value)

    @property
    @pulumi.getter(name="firstOnDemand")
    def first_on_demand(self) -> Optional[pulumi.Input[int]]:
        return pulumi.get(self, "first_on_demand")

    @first_on_demand.setter
    def first_on_demand(self, value: Optional[pulumi.Input[int]]):
        pulumi.set(self, "first_on_demand", value)

    @property
    @pulumi.getter(name="spotBidMaxPrice")
    def spot_bid_max_price(self) -> Optional[pulumi.Input[float]]:
        return pulumi.get(self, "spot_bid_max_price")

    @spot_bid_max_price.setter
    def spot_bid_max_price(self, value: Optional[pulumi.Input[float]]):
        pulumi.set(self, "spot_bid_max_price", value)


@pulumi.input_type
class JobNewClusterClusterLogConfArgs:
    def __init__(__self__, *,
                 dbfs: Optional[pulumi.Input['JobNewClusterClusterLogConfDbfsArgs']] = None,
                 s3: Optional[pulumi.Input['JobNewClusterClusterLogConfS3Args']] = None):
        if dbfs is not None:
            pulumi.set(__self__, "dbfs", dbfs)
        if s3 is not None:
            pulumi.set(__self__, "s3", s3)

    @property
    @pulumi.getter
    def dbfs(self) -> Optional[pulumi.Input['JobNewClusterClusterLogConfDbfsArgs']]:
        return pulumi.get(self, "dbfs")

    @dbfs.setter
    def dbfs(self, value: Optional[pulumi.Input['JobNewClusterClusterLogConfDbfsArgs']]):
        pulumi.set(self, "dbfs", value)

    @property
    @pulumi.getter
    def s3(self) -> Optional[pulumi.Input['JobNewClusterClusterLogConfS3Args']]:
        return pulumi.get(self, "s3")

    @s3.setter
    def s3(self, value: Optional[pulumi.Input['JobNewClusterClusterLogConfS3Args']]):
        pulumi.set(self, "s3", value)


@pulumi.input_type
class JobNewClusterClusterLogConfDbfsArgs:
    def __init__(__self__, *,
                 destination: pulumi.Input[str]):
        pulumi.set(__self__, "destination", destination)

    @property
    @pulumi.getter
    def destination(self) -> pulumi.Input[str]:
        return pulumi.get(self, "destination")

    @destination.setter
    def destination(self, value: pulumi.Input[str]):
        pulumi.set(self, "destination", value)


@pulumi.input_type
class JobNewClusterClusterLogConfS3Args:
    def __init__(__self__, *,
                 destination: pulumi.Input[str],
                 canned_acl: Optional[pulumi.Input[str]] = None,
                 enable_encryption: Optional[pulumi.Input[bool]] = None,
                 encryption_type: Optional[pulumi.Input[str]] = None,
                 endpoint: Optional[pulumi.Input[str]] = None,
                 kms_key: Optional[pulumi.Input[str]] = None,
                 region: Optional[pulumi.Input[str]] = None):
        pulumi.set(__self__, "destination", destination)
        if canned_acl is not None:
            pulumi.set(__self__, "canned_acl", canned_acl)
        if enable_encryption is not None:
            pulumi.set(__self__, "enable_encryption", enable_encryption)
        if encryption_type is not None:
            pulumi.set(__self__, "encryption_type", encryption_type)
        if endpoint is not None:
            pulumi.set(__self__, "endpoint", endpoint)
        if kms_key is not None:
            pulumi.set(__self__, "kms_key", kms_key)
        if region is not None:
            pulumi.set(__self__, "region", region)

    @property
    @pulumi.getter
    def destination(self) -> pulumi.Input[str]:
        return pulumi.get(self, "destination")

    @destination.setter
    def destination(self, value: pulumi.Input[str]):
        pulumi.set(self, "destination", value)

    @property
    @pulumi.getter(name="cannedAcl")
    def canned_acl(self) -> Optional[pulumi.Input[str]]:
        return pulumi.get(self, "canned_acl")

    @canned_acl.setter
    def canned_acl(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "canned_acl", value)

    @property
    @pulumi.getter(name="enableEncryption")
    def enable_encryption(self) -> Optional[pulumi.Input[bool]]:
        return pulumi.get(self, "enable_encryption")

    @enable_encryption.setter
    def enable_encryption(self, value: Optional[pulumi.Input[bool]]):
        pulumi.set(self, "enable_encryption", value)

    @property
    @pulumi.getter(name="encryptionType")
    def encryption_type(self) -> Optional[pulumi.Input[str]]:
        return pulumi.get(self, "encryption_type")

    @encryption_type.setter
    def encryption_type(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "encryption_type", value)

    @property
    @pulumi.getter
    def endpoint(self) -> Optional[pulumi.Input[str]]:
        return pulumi.get(self, "endpoint")

    @endpoint.setter
    def endpoint(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "endpoint", value)

    @property
    @pulumi.getter(name="kmsKey")
    def kms_key(self) -> Optional[pulumi.Input[str]]:
        return pulumi.get(self, "kms_key")

    @kms_key.setter
    def kms_key(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "kms_key", value)

    @property
    @pulumi.getter
    def region(self) -> Optional[pulumi.Input[str]]:
        return pulumi.get(self, "region")

    @region.setter
    def region(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "region", value)


@pulumi.input_type
class JobNewClusterClusterMountInfoArgs:
    def __init__(__self__, *,
                 local_mount_dir_path: pulumi.Input[str],
                 network_filesystem_info: pulumi.Input['JobNewClusterClusterMountInfoNetworkFilesystemInfoArgs'],
                 remote_mount_dir_path: Optional[pulumi.Input[str]] = None):
        pulumi.set(__self__, "local_mount_dir_path", local_mount_dir_path)
        pulumi.set(__self__, "network_filesystem_info", network_filesystem_info)
        if remote_mount_dir_path is not None:
            pulumi.set(__self__, "remote_mount_dir_path", remote_mount_dir_path)

    @property
    @pulumi.getter(name="localMountDirPath")
    def local_mount_dir_path(self) -> pulumi.Input[str]:
        return pulumi.get(self, "local_mount_dir_path")

    @local_mount_dir_path.setter
    def local_mount_dir_path(self, value: pulumi.Input[str]):
        pulumi.set(self, "local_mount_dir_path", value)

    @property
    @pulumi.getter(name="networkFilesystemInfo")
    def network_filesystem_info(self) -> pulumi.Input['JobNewClusterClusterMountInfoNetworkFilesystemInfoArgs']:
        return pulumi.get(self, "network_filesystem_info")

    @network_filesystem_info.setter
    def network_filesystem_info(self, value: pulumi.Input['JobNewClusterClusterMountInfoNetworkFilesystemInfoArgs']):
        pulumi.set(self, "network_filesystem_info", value)

    @property
    @pulumi.getter(name="remoteMountDirPath")
    def remote_mount_dir_path(self) -> Optional[pulumi.Input[str]]:
        return pulumi.get(self, "remote_mount_dir_path")

    @remote_mount_dir_path.setter
    def remote_mount_dir_path(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "remote_mount_dir_path", value)


@pulumi.input_type
class JobNewClusterClusterMountInfoNetworkFilesystemInfoArgs:
    def __init__(__self__, *,
                 server_address: pulumi.Input[str],
                 mount_options: Optional[pulumi.Input[str]] = None):
        pulumi.set(__self__, "server_address", server_address)
        if mount_options is not None:
            pulumi.set(__self__, "mount_options", mount_options)

    @property
    @pulumi.getter(name="serverAddress")
    def server_address(self) -> pulumi.Input[str]:
        return pulumi.get(self, "server_address")

    @server_address.setter
    def server_address(self, value: pulumi.Input[str]):
        pulumi.set(self, "server_address", value)

    @property
    @pulumi.getter(name="mountOptions")
    def mount_options(self) -> Optional[pulumi.Input[str]]:
        return pulumi.get(self, "mount_options")

    @mount_options.setter
    def mount_options(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "mount_options", value)


@pulumi.input_type
class JobNewClusterDockerImageArgs:
    def __init__(__self__, *,
                 url: pulumi.Input[str],
                 basic_auth: Optional[pulumi.Input['JobNewClusterDockerImageBasicAuthArgs']] = None):
        """
        :param pulumi.Input[str] url: URL of the Git repository to use.
        """
        pulumi.set(__self__, "url", url)
        if basic_auth is not None:
            pulumi.set(__self__, "basic_auth", basic_auth)

    @property
    @pulumi.getter
    def url(self) -> pulumi.Input[str]:
        """
        URL of the Git repository to use.
        """
        return pulumi.get(self, "url")

    @url.setter
    def url(self, value: pulumi.Input[str]):
        pulumi.set(self, "url", value)

    @property
    @pulumi.getter(name="basicAuth")
    def basic_auth(self) -> Optional[pulumi.Input['JobNewClusterDockerImageBasicAuthArgs']]:
        return pulumi.get(self, "basic_auth")

    @basic_auth.setter
    def basic_auth(self, value: Optional[pulumi.Input['JobNewClusterDockerImageBasicAuthArgs']]):
        pulumi.set(self, "basic_auth", value)


@pulumi.input_type
class JobNewClusterDockerImageBasicAuthArgs:
    def __init__(__self__, *,
                 password: pulumi.Input[str],
                 username: pulumi.Input[str]):
        pulumi.set(__self__, "password", password)
        pulumi.set(__self__, "username", username)

    @property
    @pulumi.getter
    def password(self) -> pulumi.Input[str]:
        return pulumi.get(self, "password")

    @password.setter
    def password(self, value: pulumi.Input[str]):
        pulumi.set(self, "password", value)

    @property
    @pulumi.getter
    def username(self) -> pulumi.Input[str]:
        return pulumi.get(self, "username")

    @username.setter
    def username(self, value: pulumi.Input[str]):
        pulumi.set(self, "username", value)


@pulumi.input_type
class JobNewClusterGcpAttributesArgs:
    def __init__(__self__, *,
                 availability: Optional[pulumi.Input[str]] = None,
                 boot_disk_size: Optional[pulumi.Input[int]] = None,
                 google_service_account: Optional[pulumi.Input[str]] = None,
                 use_preemptible_executors: Optional[pulumi.Input[bool]] = None,
                 zone_id: Optional[pulumi.Input[str]] = None):
        if availability is not None:
            pulumi.set(__self__, "availability", availability)
        if boot_disk_size is not None:
            pulumi.set(__self__, "boot_disk_size", boot_disk_size)
        if google_service_account is not None:
            pulumi.set(__self__, "google_service_account", google_service_account)
        if use_preemptible_executors is not None:
            pulumi.set(__self__, "use_preemptible_executors", use_preemptible_executors)
        if zone_id is not None:
            pulumi.set(__self__, "zone_id", zone_id)

    @property
    @pulumi.getter
    def availability(self) -> Optional[pulumi.Input[str]]:
        return pulumi.get(self, "availability")

    @availability.setter
    def availability(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "availability", value)

    @property
    @pulumi.getter(name="bootDiskSize")
    def boot_disk_size(self) -> Optional[pulumi.Input[int]]:
        return pulumi.get(self, "boot_disk_size")

    @boot_disk_size.setter
    def boot_disk_size(self, value: Optional[pulumi.Input[int]]):
        pulumi.set(self, "boot_disk_size", value)

    @property
    @pulumi.getter(name="googleServiceAccount")
    def google_service_account(self) -> Optional[pulumi.Input[str]]:
        return pulumi.get(self, "google_service_account")

    @google_service_account.setter
    def google_service_account(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "google_service_account", value)

    @property
    @pulumi.getter(name="usePreemptibleExecutors")
    def use_preemptible_executors(self) -> Optional[pulumi.Input[bool]]:
        return pulumi.get(self, "use_preemptible_executors")

    @use_preemptible_executors.setter
    def use_preemptible_executors(self, value: Optional[pulumi.Input[bool]]):
        pulumi.set(self, "use_preemptible_executors", value)

    @property
    @pulumi.getter(name="zoneId")
    def zone_id(self) -> Optional[pulumi.Input[str]]:
        return pulumi.get(self, "zone_id")

    @zone_id.setter
    def zone_id(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "zone_id", value)


@pulumi.input_type
class JobNewClusterInitScriptArgs:
    def __init__(__self__, *,
                 abfss: Optional[pulumi.Input['JobNewClusterInitScriptAbfssArgs']] = None,
                 dbfs: Optional[pulumi.Input['JobNewClusterInitScriptDbfsArgs']] = None,
                 file: Optional[pulumi.Input['JobNewClusterInitScriptFileArgs']] = None,
                 gcs: Optional[pulumi.Input['JobNewClusterInitScriptGcsArgs']] = None,
                 s3: Optional[pulumi.Input['JobNewClusterInitScriptS3Args']] = None):
        if abfss is not None:
            pulumi.set(__self__, "abfss", abfss)
        if dbfs is not None:
            pulumi.set(__self__, "dbfs", dbfs)
        if file is not None:
            pulumi.set(__self__, "file", file)
        if gcs is not None:
            pulumi.set(__self__, "gcs", gcs)
        if s3 is not None:
            pulumi.set(__self__, "s3", s3)

    @property
    @pulumi.getter
    def abfss(self) -> Optional[pulumi.Input['JobNewClusterInitScriptAbfssArgs']]:
        return pulumi.get(self, "abfss")

    @abfss.setter
    def abfss(self, value: Optional[pulumi.Input['JobNewClusterInitScriptAbfssArgs']]):
        pulumi.set(self, "abfss", value)

    @property
    @pulumi.getter
    def dbfs(self) -> Optional[pulumi.Input['JobNewClusterInitScriptDbfsArgs']]:
        return pulumi.get(self, "dbfs")

    @dbfs.setter
    def dbfs(self, value: Optional[pulumi.Input['JobNewClusterInitScriptDbfsArgs']]):
        pulumi.set(self, "dbfs", value)

    @property
    @pulumi.getter
    def file(self) -> Optional[pulumi.Input['JobNewClusterInitScriptFileArgs']]:
        return pulumi.get(self, "file")

    @file.setter
    def file(self, value: Optional[pulumi.Input['JobNewClusterInitScriptFileArgs']]):
        pulumi.set(self, "file", value)

    @property
    @pulumi.getter
    def gcs(self) -> Optional[pulumi.Input['JobNewClusterInitScriptGcsArgs']]:
        return pulumi.get(self, "gcs")

    @gcs.setter
    def gcs(self, value: Optional[pulumi.Input['JobNewClusterInitScriptGcsArgs']]):
        pulumi.set(self, "gcs", value)

    @property
    @pulumi.getter
    def s3(self) -> Optional[pulumi.Input['JobNewClusterInitScriptS3Args']]:
        return pulumi.get(self, "s3")

    @s3.setter
    def s3(self, value: Optional[pulumi.Input['JobNewClusterInitScriptS3Args']]):
        pulumi.set(self, "s3", value)


@pulumi.input_type
class JobNewClusterInitScriptAbfssArgs:
    def __init__(__self__, *,
                 destination: Optional[pulumi.Input[str]] = None):
        if destination is not None:
            pulumi.set(__self__, "destination", destination)

    @property
    @pulumi.getter
    def destination(self) -> Optional[pulumi.Input[str]]:
        return pulumi.get(self, "destination")

    @destination.setter
    def destination(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "destination", value)


@pulumi.input_type
class JobNewClusterInitScriptDbfsArgs:
    def __init__(__self__, *,
                 destination: pulumi.Input[str]):
        pulumi.set(__self__, "destination", destination)

    @property
    @pulumi.getter
    def destination(self) -> pulumi.Input[str]:
        return pulumi.get(self, "destination")

    @destination.setter
    def destination(self, value: pulumi.Input[str]):
        pulumi.set(self, "destination", value)


@pulumi.input_type
class JobNewClusterInitScriptFileArgs:
    def __init__(__self__, *,
                 destination: Optional[pulumi.Input[str]] = None):
        if destination is not None:
            pulumi.set(__self__, "destination", destination)

    @property
    @pulumi.getter
    def destination(self) -> Optional[pulumi.Input[str]]:
        return pulumi.get(self, "destination")

    @destination.setter
    def destination(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "destination", value)


@pulumi.input_type
class JobNewClusterInitScriptGcsArgs:
    def __init__(__self__, *,
                 destination: Optional[pulumi.Input[str]] = None):
        if destination is not None:
            pulumi.set(__self__, "destination", destination)

    @property
    @pulumi.getter
    def destination(self) -> Optional[pulumi.Input[str]]:
        return pulumi.get(self, "destination")

    @destination.setter
    def destination(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "destination", value)


@pulumi.input_type
class JobNewClusterInitScriptS3Args:
    def __init__(__self__, *,
                 destination: pulumi.Input[str],
                 canned_acl: Optional[pulumi.Input[str]] = None,
                 enable_encryption: Optional[pulumi.Input[bool]] = None,
                 encryption_type: Optional[pulumi.Input[str]] = None,
                 endpoint: Optional[pulumi.Input[str]] = None,
                 kms_key: Optional[pulumi.Input[str]] = None,
                 region: Optional[pulumi.Input[str]] = None):
        pulumi.set(__self__, "destination", destination)
        if canned_acl is not None:
            pulumi.set(__self__, "canned_acl", canned_acl)
        if enable_encryption is not None:
            pulumi.set(__self__, "enable_encryption", enable_encryption)
        if encryption_type is not None:
            pulumi.set(__self__, "encryption_type", encryption_type)
        if endpoint is not None:
            pulumi.set(__self__, "endpoint", endpoint)
        if kms_key is not None:
            pulumi.set(__self__, "kms_key", kms_key)
        if region is not None:
            pulumi.set(__self__, "region", region)

    @property
    @pulumi.getter
    def destination(self) -> pulumi.Input[str]:
        return pulumi.get(self, "destination")

    @destination.setter
    def destination(self, value: pulumi.Input[str]):
        pulumi.set(self, "destination", value)

    @property
    @pulumi.getter(name="cannedAcl")
    def canned_acl(self) -> Optional[pulumi.Input[str]]:
        return pulumi.get(self, "canned_acl")

    @canned_acl.setter
    def canned_acl(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "canned_acl", value)

    @property
    @pulumi.getter(name="enableEncryption")
    def enable_encryption(self) -> Optional[pulumi.Input[bool]]:
        return pulumi.get(self, "enable_encryption")

    @enable_encryption.setter
    def enable_encryption(self, value: Optional[pulumi.Input[bool]]):
        pulumi.set(self, "enable_encryption", value)

    @property
    @pulumi.getter(name="encryptionType")
    def encryption_type(self) -> Optional[pulumi.Input[str]]:
        return pulumi.get(self, "encryption_type")

    @encryption_type.setter
    def encryption_type(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "encryption_type", value)

    @property
    @pulumi.getter
    def endpoint(self) -> Optional[pulumi.Input[str]]:
        return pulumi.get(self, "endpoint")

    @endpoint.setter
    def endpoint(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "endpoint", value)

    @property
    @pulumi.getter(name="kmsKey")
    def kms_key(self) -> Optional[pulumi.Input[str]]:
        return pulumi.get(self, "kms_key")

    @kms_key.setter
    def kms_key(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "kms_key", value)

    @property
    @pulumi.getter
    def region(self) -> Optional[pulumi.Input[str]]:
        return pulumi.get(self, "region")

    @region.setter
    def region(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "region", value)


@pulumi.input_type
class JobNewClusterWorkloadTypeArgs:
    def __init__(__self__, *,
                 clients: pulumi.Input['JobNewClusterWorkloadTypeClientsArgs']):
        pulumi.set(__self__, "clients", clients)

    @property
    @pulumi.getter
    def clients(self) -> pulumi.Input['JobNewClusterWorkloadTypeClientsArgs']:
        return pulumi.get(self, "clients")

    @clients.setter
    def clients(self, value: pulumi.Input['JobNewClusterWorkloadTypeClientsArgs']):
        pulumi.set(self, "clients", value)


@pulumi.input_type
class JobNewClusterWorkloadTypeClientsArgs:
    def __init__(__self__, *,
                 jobs: Optional[pulumi.Input[bool]] = None,
                 notebooks: Optional[pulumi.Input[bool]] = None):
        if jobs is not None:
            pulumi.set(__self__, "jobs", jobs)
        if notebooks is not None:
            pulumi.set(__self__, "notebooks", notebooks)

    @property
    @pulumi.getter
    def jobs(self) -> Optional[pulumi.Input[bool]]:
        return pulumi.get(self, "jobs")

    @jobs.setter
    def jobs(self, value: Optional[pulumi.Input[bool]]):
        pulumi.set(self, "jobs", value)

    @property
    @pulumi.getter
    def notebooks(self) -> Optional[pulumi.Input[bool]]:
        return pulumi.get(self, "notebooks")

    @notebooks.setter
    def notebooks(self, value: Optional[pulumi.Input[bool]]):
        pulumi.set(self, "notebooks", value)


@pulumi.input_type
class JobNotebookTaskArgs:
    def __init__(__self__, *,
                 notebook_path: pulumi.Input[str],
                 base_parameters: Optional[pulumi.Input[Mapping[str, Any]]] = None,
                 source: Optional[pulumi.Input[str]] = None):
        """
        :param pulumi.Input[str] notebook_path: The path of the Notebook to be run in the Databricks workspace or remote repository. For notebooks stored in the Databricks workspace, the path must be absolute and begin with a slash. For notebooks stored in a remote repository, the path must be relative. This field is required.
        :param pulumi.Input[Mapping[str, Any]] base_parameters: (Map) Base parameters to be used for each run of this job. If the run is initiated by a call to run-now with parameters specified, the two parameters maps will be merged. If the same key is specified in base_parameters and in run-now, the value from run-now will be used. If the notebook takes a parameter that is not specified in the job’s base_parameters or the run-now override parameters, the default value from the notebook will be used. Retrieve these parameters in a notebook using `dbutils.widgets.get`.
        :param pulumi.Input[str] source: Location type of the notebook, can only be `WORKSPACE` or `GIT`. When set to `WORKSPACE`, the notebook will be retrieved from the local Databricks workspace. When set to `GIT`, the notebook will be retrieved from a Git repository defined in git_source. If the value is empty, the task will use `GIT` if `git_source` is defined and `WORKSPACE` otherwise.
        """
        pulumi.set(__self__, "notebook_path", notebook_path)
        if base_parameters is not None:
            pulumi.set(__self__, "base_parameters", base_parameters)
        if source is not None:
            pulumi.set(__self__, "source", source)

    @property
    @pulumi.getter(name="notebookPath")
    def notebook_path(self) -> pulumi.Input[str]:
        """
        The path of the Notebook to be run in the Databricks workspace or remote repository. For notebooks stored in the Databricks workspace, the path must be absolute and begin with a slash. For notebooks stored in a remote repository, the path must be relative. This field is required.
        """
        return pulumi.get(self, "notebook_path")

    @notebook_path.setter
    def notebook_path(self, value: pulumi.Input[str]):
        pulumi.set(self, "notebook_path", value)

    @property
    @pulumi.getter(name="baseParameters")
    def base_parameters(self) -> Optional[pulumi.Input[Mapping[str, Any]]]:
        """
        (Map) Base parameters to be used for each run of this job. If the run is initiated by a call to run-now with parameters specified, the two parameters maps will be merged. If the same key is specified in base_parameters and in run-now, the value from run-now will be used. If the notebook takes a parameter that is not specified in the job’s base_parameters or the run-now override parameters, the default value from the notebook will be used. Retrieve these parameters in a notebook using `dbutils.widgets.get`.
        """
        return pulumi.get(self, "base_parameters")

    @base_parameters.setter
    def base_parameters(self, value: Optional[pulumi.Input[Mapping[str, Any]]]):
        pulumi.set(self, "base_parameters", value)

    @property
    @pulumi.getter
    def source(self) -> Optional[pulumi.Input[str]]:
        """
        Location type of the notebook, can only be `WORKSPACE` or `GIT`. When set to `WORKSPACE`, the notebook will be retrieved from the local Databricks workspace. When set to `GIT`, the notebook will be retrieved from a Git repository defined in git_source. If the value is empty, the task will use `GIT` if `git_source` is defined and `WORKSPACE` otherwise.
        """
        return pulumi.get(self, "source")

    @source.setter
    def source(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "source", value)


@pulumi.input_type
class JobPipelineTaskArgs:
    def __init__(__self__, *,
                 pipeline_id: pulumi.Input[str]):
        """
        :param pulumi.Input[str] pipeline_id: The pipeline's unique ID.
        """
        pulumi.set(__self__, "pipeline_id", pipeline_id)

    @property
    @pulumi.getter(name="pipelineId")
    def pipeline_id(self) -> pulumi.Input[str]:
        """
        The pipeline's unique ID.
        """
        return pulumi.get(self, "pipeline_id")

    @pipeline_id.setter
    def pipeline_id(self, value: pulumi.Input[str]):
        pulumi.set(self, "pipeline_id", value)


@pulumi.input_type
class JobPythonWheelTaskArgs:
    def __init__(__self__, *,
                 entry_point: Optional[pulumi.Input[str]] = None,
                 named_parameters: Optional[pulumi.Input[Mapping[str, Any]]] = None,
                 package_name: Optional[pulumi.Input[str]] = None,
                 parameters: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None):
        """
        :param pulumi.Input[str] entry_point: Python function as entry point for the task
        :param pulumi.Input[Mapping[str, Any]] named_parameters: Named parameters for the task
        :param pulumi.Input[str] package_name: Name of Python package
        :param pulumi.Input[Sequence[pulumi.Input[str]]] parameters: Parameters for the task
        """
        if entry_point is not None:
            pulumi.set(__self__, "entry_point", entry_point)
        if named_parameters is not None:
            pulumi.set(__self__, "named_parameters", named_parameters)
        if package_name is not None:
            pulumi.set(__self__, "package_name", package_name)
        if parameters is not None:
            pulumi.set(__self__, "parameters", parameters)

    @property
    @pulumi.getter(name="entryPoint")
    def entry_point(self) -> Optional[pulumi.Input[str]]:
        """
        Python function as entry point for the task
        """
        return pulumi.get(self, "entry_point")

    @entry_point.setter
    def entry_point(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "entry_point", value)

    @property
    @pulumi.getter(name="namedParameters")
    def named_parameters(self) -> Optional[pulumi.Input[Mapping[str, Any]]]:
        """
        Named parameters for the task
        """
        return pulumi.get(self, "named_parameters")

    @named_parameters.setter
    def named_parameters(self, value: Optional[pulumi.Input[Mapping[str, Any]]]):
        pulumi.set(self, "named_parameters", value)

    @property
    @pulumi.getter(name="packageName")
    def package_name(self) -> Optional[pulumi.Input[str]]:
        """
        Name of Python package
        """
        return pulumi.get(self, "package_name")

    @package_name.setter
    def package_name(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "package_name", value)

    @property
    @pulumi.getter
    def parameters(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]:
        """
        Parameters for the task
        """
        return pulumi.get(self, "parameters")

    @parameters.setter
    def parameters(self, value: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]):
        pulumi.set(self, "parameters", value)


@pulumi.input_type
class JobScheduleArgs:
    def __init__(__self__, *,
                 quartz_cron_expression: pulumi.Input[str],
                 timezone_id: pulumi.Input[str],
                 pause_status: Optional[pulumi.Input[str]] = None):
        """
        :param pulumi.Input[str] quartz_cron_expression: A [Cron expression using Quartz syntax](http://www.quartz-scheduler.org/documentation/quartz-2.3.0/tutorials/crontrigger.html) that describes the schedule for a job. This field is required.
        :param pulumi.Input[str] timezone_id: A Java timezone ID. The schedule for a job will be resolved with respect to this timezone. See Java TimeZone for details. This field is required.
        :param pulumi.Input[str] pause_status: Indicate whether this schedule is paused or not. Either “PAUSED” or “UNPAUSED”. When the pause_status field is omitted and a schedule is provided, the server will default to using "UNPAUSED" as a value for pause_status.
        """
        pulumi.set(__self__, "quartz_cron_expression", quartz_cron_expression)
        pulumi.set(__self__, "timezone_id", timezone_id)
        if pause_status is not None:
            pulumi.set(__self__, "pause_status", pause_status)

    @property
    @pulumi.getter(name="quartzCronExpression")
    def quartz_cron_expression(self) -> pulumi.Input[str]:
        """
        A [Cron expression using Quartz syntax](http://www.quartz-scheduler.org/documentation/quartz-2.3.0/tutorials/crontrigger.html) that describes the schedule for a job. This field is required.
        """
        return pulumi.get(self, "quartz_cron_expression")

    @quartz_cron_expression.setter
    def quartz_cron_expression(self, value: pulumi.Input[str]):
        pulumi.set(self, "quartz_cron_expression", value)

    @property
    @pulumi.getter(name="timezoneId")
    def timezone_id(self) -> pulumi.Input[str]:
        """
        A Java timezone ID. The schedule for a job will be resolved with respect to this timezone. See Java TimeZone for details. This field is required.
        """
        return pulumi.get(self, "timezone_id")

    @timezone_id.setter
    def timezone_id(self, value: pulumi.Input[str]):
        pulumi.set(self, "timezone_id", value)

    @property
    @pulumi.getter(name="pauseStatus")
    def pause_status(self) -> Optional[pulumi.Input[str]]:
        """
        Indicate whether this schedule is paused or not. Either “PAUSED” or “UNPAUSED”. When the pause_status field is omitted and a schedule is provided, the server will default to using "UNPAUSED" as a value for pause_status.
        """
        return pulumi.get(self, "pause_status")

    @pause_status.setter
    def pause_status(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "pause_status", value)


@pulumi.input_type
class JobSparkJarTaskArgs:
    def __init__(__self__, *,
                 jar_uri: Optional[pulumi.Input[str]] = None,
                 main_class_name: Optional[pulumi.Input[str]] = None,
                 parameters: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None):
        """
        :param pulumi.Input[str] main_class_name: The full name of the class containing the main method to be executed. This class must be contained in a JAR provided as a library. The code should use `SparkContext.getOrCreate` to obtain a Spark context; otherwise, runs of the job will fail.
        :param pulumi.Input[Sequence[pulumi.Input[str]]] parameters: (List) Parameters passed to the main method.
        """
        if jar_uri is not None:
            pulumi.set(__self__, "jar_uri", jar_uri)
        if main_class_name is not None:
            pulumi.set(__self__, "main_class_name", main_class_name)
        if parameters is not None:
            pulumi.set(__self__, "parameters", parameters)

    @property
    @pulumi.getter(name="jarUri")
    def jar_uri(self) -> Optional[pulumi.Input[str]]:
        return pulumi.get(self, "jar_uri")

    @jar_uri.setter
    def jar_uri(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "jar_uri", value)

    @property
    @pulumi.getter(name="mainClassName")
    def main_class_name(self) -> Optional[pulumi.Input[str]]:
        """
        The full name of the class containing the main method to be executed. This class must be contained in a JAR provided as a library. The code should use `SparkContext.getOrCreate` to obtain a Spark context; otherwise, runs of the job will fail.
        """
        return pulumi.get(self, "main_class_name")

    @main_class_name.setter
    def main_class_name(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "main_class_name", value)

    @property
    @pulumi.getter
    def parameters(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]:
        """
        (List) Parameters passed to the main method.
        """
        return pulumi.get(self, "parameters")

    @parameters.setter
    def parameters(self, value: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]):
        pulumi.set(self, "parameters", value)


@pulumi.input_type
class JobSparkPythonTaskArgs:
    def __init__(__self__, *,
                 python_file: pulumi.Input[str],
                 parameters: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None):
        """
        :param pulumi.Input[str] python_file: The URI of the Python file to be executed. databricks_dbfs_file, cloud file URIs (e.g. `s3:/`, `abfss:/`, `gs:/`) and workspace paths are supported. For python files stored in the Databricks workspace, the path must be absolute and begin with `/Repos`. This field is required.
        :param pulumi.Input[Sequence[pulumi.Input[str]]] parameters: (List) Command line parameters passed to the Python file.
        """
        pulumi.set(__self__, "python_file", python_file)
        if parameters is not None:
            pulumi.set(__self__, "parameters", parameters)

    @property
    @pulumi.getter(name="pythonFile")
    def python_file(self) -> pulumi.Input[str]:
        """
        The URI of the Python file to be executed. databricks_dbfs_file, cloud file URIs (e.g. `s3:/`, `abfss:/`, `gs:/`) and workspace paths are supported. For python files stored in the Databricks workspace, the path must be absolute and begin with `/Repos`. This field is required.
        """
        return pulumi.get(self, "python_file")

    @python_file.setter
    def python_file(self, value: pulumi.Input[str]):
        pulumi.set(self, "python_file", value)

    @property
    @pulumi.getter
    def parameters(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]:
        """
        (List) Command line parameters passed to the Python file.
        """
        return pulumi.get(self, "parameters")

    @parameters.setter
    def parameters(self, value: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]):
        pulumi.set(self, "parameters", value)


@pulumi.input_type
class JobSparkSubmitTaskArgs:
    def __init__(__self__, *,
                 parameters: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None):
        """
        :param pulumi.Input[Sequence[pulumi.Input[str]]] parameters: (List) Command-line parameters passed to spark submit.
        """
        if parameters is not None:
            pulumi.set(__self__, "parameters", parameters)

    @property
    @pulumi.getter
    def parameters(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]:
        """
        (List) Command-line parameters passed to spark submit.
        """
        return pulumi.get(self, "parameters")

    @parameters.setter
    def parameters(self, value: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]):
        pulumi.set(self, "parameters", value)


@pulumi.input_type
class JobTaskArgs:
    def __init__(__self__, *,
                 dbt_task: Optional[pulumi.Input['JobTaskDbtTaskArgs']] = None,
                 depends_ons: Optional[pulumi.Input[Sequence[pulumi.Input['JobTaskDependsOnArgs']]]] = None,
                 description: Optional[pulumi.Input[str]] = None,
                 email_notifications: Optional[pulumi.Input['JobTaskEmailNotificationsArgs']] = None,
                 existing_cluster_id: Optional[pulumi.Input[str]] = None,
                 job_cluster_key: Optional[pulumi.Input[str]] = None,
                 libraries: Optional[pulumi.Input[Sequence[pulumi.Input['JobTaskLibraryArgs']]]] = None,
                 max_retries: Optional[pulumi.Input[int]] = None,
                 min_retry_interval_millis: Optional[pulumi.Input[int]] = None,
                 new_cluster: Optional[pulumi.Input['JobTaskNewClusterArgs']] = None,
                 notebook_task: Optional[pulumi.Input['JobTaskNotebookTaskArgs']] = None,
                 pipeline_task: Optional[pulumi.Input['JobTaskPipelineTaskArgs']] = None,
                 python_wheel_task: Optional[pulumi.Input['JobTaskPythonWheelTaskArgs']] = None,
                 retry_on_timeout: Optional[pulumi.Input[bool]] = None,
                 spark_jar_task: Optional[pulumi.Input['JobTaskSparkJarTaskArgs']] = None,
                 spark_python_task: Optional[pulumi.Input['JobTaskSparkPythonTaskArgs']] = None,
                 spark_submit_task: Optional[pulumi.Input['JobTaskSparkSubmitTaskArgs']] = None,
                 sql_task: Optional[pulumi.Input['JobTaskSqlTaskArgs']] = None,
                 task_key: Optional[pulumi.Input[str]] = None,
                 timeout_seconds: Optional[pulumi.Input[int]] = None):
        """
        :param pulumi.Input['JobTaskEmailNotificationsArgs'] email_notifications: (List) An optional set of email addresses notified when runs of this job begins, completes and fails. The default behavior is to not send any emails. This field is a block and is documented below.
        :param pulumi.Input[str] job_cluster_key: Identifier that can be referenced in `task` block, so that cluster is shared between tasks
        :param pulumi.Input[Sequence[pulumi.Input['JobTaskLibraryArgs']]] libraries: (Set) An optional list of libraries to be installed on the cluster that will execute the job. Please consult libraries section for Cluster resource.
        :param pulumi.Input[int] max_retries: (Integer) An optional maximum number of times to retry an unsuccessful run. A run is considered to be unsuccessful if it completes with a FAILED or INTERNAL_ERROR lifecycle state. The value -1 means to retry indefinitely and the value 0 means to never retry. The default behavior is to never retry. A run can have the following lifecycle state: PENDING, RUNNING, TERMINATING, TERMINATED, SKIPPED or INTERNAL_ERROR
        :param pulumi.Input[int] min_retry_interval_millis: (Integer) An optional minimal interval in milliseconds between the start of the failed run and the subsequent retry run. The default behavior is that unsuccessful runs are immediately retried.
        :param pulumi.Input['JobTaskNewClusterArgs'] new_cluster: Same set of parameters as for Cluster resource.
        :param pulumi.Input[bool] retry_on_timeout: (Bool) An optional policy to specify whether to retry a job when it times out. The default behavior is to not retry on timeout.
        :param pulumi.Input[int] timeout_seconds: (Integer) An optional timeout applied to each run of this job. The default behavior is to have no timeout.
        """
        if dbt_task is not None:
            pulumi.set(__self__, "dbt_task", dbt_task)
        if depends_ons is not None:
            pulumi.set(__self__, "depends_ons", depends_ons)
        if description is not None:
            pulumi.set(__self__, "description", description)
        if email_notifications is not None:
            pulumi.set(__self__, "email_notifications", email_notifications)
        if existing_cluster_id is not None:
            pulumi.set(__self__, "existing_cluster_id", existing_cluster_id)
        if job_cluster_key is not None:
            pulumi.set(__self__, "job_cluster_key", job_cluster_key)
        if libraries is not None:
            pulumi.set(__self__, "libraries", libraries)
        if max_retries is not None:
            pulumi.set(__self__, "max_retries", max_retries)
        if min_retry_interval_millis is not None:
            pulumi.set(__self__, "min_retry_interval_millis", min_retry_interval_millis)
        if new_cluster is not None:
            pulumi.set(__self__, "new_cluster", new_cluster)
        if notebook_task is not None:
            pulumi.set(__self__, "notebook_task", notebook_task)
        if pipeline_task is not None:
            pulumi.set(__self__, "pipeline_task", pipeline_task)
        if python_wheel_task is not None:
            pulumi.set(__self__, "python_wheel_task", python_wheel_task)
        if retry_on_timeout is not None:
            pulumi.set(__self__, "retry_on_timeout", retry_on_timeout)
        if spark_jar_task is not None:
            pulumi.set(__self__, "spark_jar_task", spark_jar_task)
        if spark_python_task is not None:
            pulumi.set(__self__, "spark_python_task", spark_python_task)
        if spark_submit_task is not None:
            pulumi.set(__self__, "spark_submit_task", spark_submit_task)
        if sql_task is not None:
            pulumi.set(__self__, "sql_task", sql_task)
        if task_key is not None:
            pulumi.set(__self__, "task_key", task_key)
        if timeout_seconds is not None:
            pulumi.set(__self__, "timeout_seconds", timeout_seconds)

    @property
    @pulumi.getter(name="dbtTask")
    def dbt_task(self) -> Optional[pulumi.Input['JobTaskDbtTaskArgs']]:
        return pulumi.get(self, "dbt_task")

    @dbt_task.setter
    def dbt_task(self, value: Optional[pulumi.Input['JobTaskDbtTaskArgs']]):
        pulumi.set(self, "dbt_task", value)

    @property
    @pulumi.getter(name="dependsOns")
    def depends_ons(self) -> Optional[pulumi.Input[Sequence[pulumi.Input['JobTaskDependsOnArgs']]]]:
        return pulumi.get(self, "depends_ons")

    @depends_ons.setter
    def depends_ons(self, value: Optional[pulumi.Input[Sequence[pulumi.Input['JobTaskDependsOnArgs']]]]):
        pulumi.set(self, "depends_ons", value)

    @property
    @pulumi.getter
    def description(self) -> Optional[pulumi.Input[str]]:
        return pulumi.get(self, "description")

    @description.setter
    def description(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "description", value)

    @property
    @pulumi.getter(name="emailNotifications")
    def email_notifications(self) -> Optional[pulumi.Input['JobTaskEmailNotificationsArgs']]:
        """
        (List) An optional set of email addresses notified when runs of this job begins, completes and fails. The default behavior is to not send any emails. This field is a block and is documented below.
        """
        return pulumi.get(self, "email_notifications")

    @email_notifications.setter
    def email_notifications(self, value: Optional[pulumi.Input['JobTaskEmailNotificationsArgs']]):
        pulumi.set(self, "email_notifications", value)

    @property
    @pulumi.getter(name="existingClusterId")
    def existing_cluster_id(self) -> Optional[pulumi.Input[str]]:
        return pulumi.get(self, "existing_cluster_id")

    @existing_cluster_id.setter
    def existing_cluster_id(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "existing_cluster_id", value)

    @property
    @pulumi.getter(name="jobClusterKey")
    def job_cluster_key(self) -> Optional[pulumi.Input[str]]:
        """
        Identifier that can be referenced in `task` block, so that cluster is shared between tasks
        """
        return pulumi.get(self, "job_cluster_key")

    @job_cluster_key.setter
    def job_cluster_key(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "job_cluster_key", value)

    @property
    @pulumi.getter
    def libraries(self) -> Optional[pulumi.Input[Sequence[pulumi.Input['JobTaskLibraryArgs']]]]:
        """
        (Set) An optional list of libraries to be installed on the cluster that will execute the job. Please consult libraries section for Cluster resource.
        """
        return pulumi.get(self, "libraries")

    @libraries.setter
    def libraries(self, value: Optional[pulumi.Input[Sequence[pulumi.Input['JobTaskLibraryArgs']]]]):
        pulumi.set(self, "libraries", value)

    @property
    @pulumi.getter(name="maxRetries")
    def max_retries(self) -> Optional[pulumi.Input[int]]:
        """
        (Integer) An optional maximum number of times to retry an unsuccessful run. A run is considered to be unsuccessful if it completes with a FAILED or INTERNAL_ERROR lifecycle state. The value -1 means to retry indefinitely and the value 0 means to never retry. The default behavior is to never retry. A run can have the following lifecycle state: PENDING, RUNNING, TERMINATING, TERMINATED, SKIPPED or INTERNAL_ERROR
        """
        return pulumi.get(self, "max_retries")

    @max_retries.setter
    def max_retries(self, value: Optional[pulumi.Input[int]]):
        pulumi.set(self, "max_retries", value)

    @property
    @pulumi.getter(name="minRetryIntervalMillis")
    def min_retry_interval_millis(self) -> Optional[pulumi.Input[int]]:
        """
        (Integer) An optional minimal interval in milliseconds between the start of the failed run and the subsequent retry run. The default behavior is that unsuccessful runs are immediately retried.
        """
        return pulumi.get(self, "min_retry_interval_millis")

    @min_retry_interval_millis.setter
    def min_retry_interval_millis(self, value: Optional[pulumi.Input[int]]):
        pulumi.set(self, "min_retry_interval_millis", value)

    @property
    @pulumi.getter(name="newCluster")
    def new_cluster(self) -> Optional[pulumi.Input['JobTaskNewClusterArgs']]:
        """
        Same set of parameters as for Cluster resource.
        """
        return pulumi.get(self, "new_cluster")

    @new_cluster.setter
    def new_cluster(self, value: Optional[pulumi.Input['JobTaskNewClusterArgs']]):
        pulumi.set(self, "new_cluster", value)

    @property
    @pulumi.getter(name="notebookTask")
    def notebook_task(self) -> Optional[pulumi.Input['JobTaskNotebookTaskArgs']]:
        return pulumi.get(self, "notebook_task")

    @notebook_task.setter
    def notebook_task(self, value: Optional[pulumi.Input['JobTaskNotebookTaskArgs']]):
        pulumi.set(self, "notebook_task", value)

    @property
    @pulumi.getter(name="pipelineTask")
    def pipeline_task(self) -> Optional[pulumi.Input['JobTaskPipelineTaskArgs']]:
        return pulumi.get(self, "pipeline_task")

    @pipeline_task.setter
    def pipeline_task(self, value: Optional[pulumi.Input['JobTaskPipelineTaskArgs']]):
        pulumi.set(self, "pipeline_task", value)

    @property
    @pulumi.getter(name="pythonWheelTask")
    def python_wheel_task(self) -> Optional[pulumi.Input['JobTaskPythonWheelTaskArgs']]:
        return pulumi.get(self, "python_wheel_task")

    @python_wheel_task.setter
    def python_wheel_task(self, value: Optional[pulumi.Input['JobTaskPythonWheelTaskArgs']]):
        pulumi.set(self, "python_wheel_task", value)

    @property
    @pulumi.getter(name="retryOnTimeout")
    def retry_on_timeout(self) -> Optional[pulumi.Input[bool]]:
        """
        (Bool) An optional policy to specify whether to retry a job when it times out. The default behavior is to not retry on timeout.
        """
        return pulumi.get(self, "retry_on_timeout")

    @retry_on_timeout.setter
    def retry_on_timeout(self, value: Optional[pulumi.Input[bool]]):
        pulumi.set(self, "retry_on_timeout", value)

    @property
    @pulumi.getter(name="sparkJarTask")
    def spark_jar_task(self) -> Optional[pulumi.Input['JobTaskSparkJarTaskArgs']]:
        return pulumi.get(self, "spark_jar_task")

    @spark_jar_task.setter
    def spark_jar_task(self, value: Optional[pulumi.Input['JobTaskSparkJarTaskArgs']]):
        pulumi.set(self, "spark_jar_task", value)

    @property
    @pulumi.getter(name="sparkPythonTask")
    def spark_python_task(self) -> Optional[pulumi.Input['JobTaskSparkPythonTaskArgs']]:
        return pulumi.get(self, "spark_python_task")

    @spark_python_task.setter
    def spark_python_task(self, value: Optional[pulumi.Input['JobTaskSparkPythonTaskArgs']]):
        pulumi.set(self, "spark_python_task", value)

    @property
    @pulumi.getter(name="sparkSubmitTask")
    def spark_submit_task(self) -> Optional[pulumi.Input['JobTaskSparkSubmitTaskArgs']]:
        return pulumi.get(self, "spark_submit_task")

    @spark_submit_task.setter
    def spark_submit_task(self, value: Optional[pulumi.Input['JobTaskSparkSubmitTaskArgs']]):
        pulumi.set(self, "spark_submit_task", value)

    @property
    @pulumi.getter(name="sqlTask")
    def sql_task(self) -> Optional[pulumi.Input['JobTaskSqlTaskArgs']]:
        return pulumi.get(self, "sql_task")

    @sql_task.setter
    def sql_task(self, value: Optional[pulumi.Input['JobTaskSqlTaskArgs']]):
        pulumi.set(self, "sql_task", value)

    @property
    @pulumi.getter(name="taskKey")
    def task_key(self) -> Optional[pulumi.Input[str]]:
        return pulumi.get(self, "task_key")

    @task_key.setter
    def task_key(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "task_key", value)

    @property
    @pulumi.getter(name="timeoutSeconds")
    def timeout_seconds(self) -> Optional[pulumi.Input[int]]:
        """
        (Integer) An optional timeout applied to each run of this job. The default behavior is to have no timeout.
        """
        return pulumi.get(self, "timeout_seconds")

    @timeout_seconds.setter
    def timeout_seconds(self, value: Optional[pulumi.Input[int]]):
        pulumi.set(self, "timeout_seconds", value)


@pulumi.input_type
class JobTaskDbtTaskArgs:
    def __init__(__self__, *,
                 commands: pulumi.Input[Sequence[pulumi.Input[str]]],
                 catalog: Optional[pulumi.Input[str]] = None,
                 profiles_directory: Optional[pulumi.Input[str]] = None,
                 project_directory: Optional[pulumi.Input[str]] = None,
                 schema: Optional[pulumi.Input[str]] = None,
                 warehouse_id: Optional[pulumi.Input[str]] = None):
        """
        :param pulumi.Input[Sequence[pulumi.Input[str]]] commands: (Array) Series of dbt commands to execute in sequence. Every command must start with "dbt".
        :param pulumi.Input[str] catalog: The name of the catalog to use inside Unity Catalog.
        :param pulumi.Input[str] profiles_directory: The relative path to the directory in the repository specified by `git_source` where dbt should look in for the `profiles.yml` file. If not specified, defaults to the repository's root directory. Equivalent to passing `--profile-dir` to a dbt command.
        :param pulumi.Input[str] project_directory: The relative path to the directory in the repository specified in `git_source` where dbt should look in for the `dbt_project.yml` file. If not specified, defaults to the repository's root directory. Equivalent to passing `--project-dir` to a dbt command.
        :param pulumi.Input[str] schema: The name of the schema dbt should run in. Defaults to `default`.
        :param pulumi.Input[str] warehouse_id: The ID of the SQL warehouse that dbt should execute against.
        """
        pulumi.set(__self__, "commands", commands)
        if catalog is not None:
            pulumi.set(__self__, "catalog", catalog)
        if profiles_directory is not None:
            pulumi.set(__self__, "profiles_directory", profiles_directory)
        if project_directory is not None:
            pulumi.set(__self__, "project_directory", project_directory)
        if schema is not None:
            pulumi.set(__self__, "schema", schema)
        if warehouse_id is not None:
            pulumi.set(__self__, "warehouse_id", warehouse_id)

    @property
    @pulumi.getter
    def commands(self) -> pulumi.Input[Sequence[pulumi.Input[str]]]:
        """
        (Array) Series of dbt commands to execute in sequence. Every command must start with "dbt".
        """
        return pulumi.get(self, "commands")

    @commands.setter
    def commands(self, value: pulumi.Input[Sequence[pulumi.Input[str]]]):
        pulumi.set(self, "commands", value)

    @property
    @pulumi.getter
    def catalog(self) -> Optional[pulumi.Input[str]]:
        """
        The name of the catalog to use inside Unity Catalog.
        """
        return pulumi.get(self, "catalog")

    @catalog.setter
    def catalog(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "catalog", value)

    @property
    @pulumi.getter(name="profilesDirectory")
    def profiles_directory(self) -> Optional[pulumi.Input[str]]:
        """
        The relative path to the directory in the repository specified by `git_source` where dbt should look in for the `profiles.yml` file. If not specified, defaults to the repository's root directory. Equivalent to passing `--profile-dir` to a dbt command.
        """
        return pulumi.get(self, "profiles_directory")

    @profiles_directory.setter
    def profiles_directory(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "profiles_directory", value)

    @property
    @pulumi.getter(name="projectDirectory")
    def project_directory(self) -> Optional[pulumi.Input[str]]:
        """
        The relative path to the directory in the repository specified in `git_source` where dbt should look in for the `dbt_project.yml` file. If not specified, defaults to the repository's root directory. Equivalent to passing `--project-dir` to a dbt command.
        """
        return pulumi.get(self, "project_directory")

    @project_directory.setter
    def project_directory(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "project_directory", value)

    @property
    @pulumi.getter
    def schema(self) -> Optional[pulumi.Input[str]]:
        """
        The name of the schema dbt should run in. Defaults to `default`.
        """
        return pulumi.get(self, "schema")

    @schema.setter
    def schema(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "schema", value)

    @property
    @pulumi.getter(name="warehouseId")
    def warehouse_id(self) -> Optional[pulumi.Input[str]]:
        """
        The ID of the SQL warehouse that dbt should execute against.
        """
        return pulumi.get(self, "warehouse_id")

    @warehouse_id.setter
    def warehouse_id(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "warehouse_id", value)


@pulumi.input_type
class JobTaskDependsOnArgs:
    def __init__(__self__, *,
                 task_key: Optional[pulumi.Input[str]] = None):
        if task_key is not None:
            pulumi.set(__self__, "task_key", task_key)

    @property
    @pulumi.getter(name="taskKey")
    def task_key(self) -> Optional[pulumi.Input[str]]:
        return pulumi.get(self, "task_key")

    @task_key.setter
    def task_key(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "task_key", value)


@pulumi.input_type
class JobTaskEmailNotificationsArgs:
    def __init__(__self__, *,
                 alert_on_last_attempt: Optional[pulumi.Input[bool]] = None,
                 no_alert_for_skipped_runs: Optional[pulumi.Input[bool]] = None,
                 on_failures: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None,
                 on_starts: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None,
                 on_successes: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None):
        """
        :param pulumi.Input[bool] no_alert_for_skipped_runs: (Bool) don't send alert for skipped runs.
        :param pulumi.Input[Sequence[pulumi.Input[str]]] on_failures: (List) list of emails to notify when the run fails.
        :param pulumi.Input[Sequence[pulumi.Input[str]]] on_starts: (List) list of emails to notify when the run starts.
        :param pulumi.Input[Sequence[pulumi.Input[str]]] on_successes: (List) list of emails to notify when the run completes successfully.
        """
        if alert_on_last_attempt is not None:
            pulumi.set(__self__, "alert_on_last_attempt", alert_on_last_attempt)
        if no_alert_for_skipped_runs is not None:
            pulumi.set(__self__, "no_alert_for_skipped_runs", no_alert_for_skipped_runs)
        if on_failures is not None:
            pulumi.set(__self__, "on_failures", on_failures)
        if on_starts is not None:
            pulumi.set(__self__, "on_starts", on_starts)
        if on_successes is not None:
            pulumi.set(__self__, "on_successes", on_successes)

    @property
    @pulumi.getter(name="alertOnLastAttempt")
    def alert_on_last_attempt(self) -> Optional[pulumi.Input[bool]]:
        return pulumi.get(self, "alert_on_last_attempt")

    @alert_on_last_attempt.setter
    def alert_on_last_attempt(self, value: Optional[pulumi.Input[bool]]):
        pulumi.set(self, "alert_on_last_attempt", value)

    @property
    @pulumi.getter(name="noAlertForSkippedRuns")
    def no_alert_for_skipped_runs(self) -> Optional[pulumi.Input[bool]]:
        """
        (Bool) don't send alert for skipped runs.
        """
        return pulumi.get(self, "no_alert_for_skipped_runs")

    @no_alert_for_skipped_runs.setter
    def no_alert_for_skipped_runs(self, value: Optional[pulumi.Input[bool]]):
        pulumi.set(self, "no_alert_for_skipped_runs", value)

    @property
    @pulumi.getter(name="onFailures")
    def on_failures(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]:
        """
        (List) list of emails to notify when the run fails.
        """
        return pulumi.get(self, "on_failures")

    @on_failures.setter
    def on_failures(self, value: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]):
        pulumi.set(self, "on_failures", value)

    @property
    @pulumi.getter(name="onStarts")
    def on_starts(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]:
        """
        (List) list of emails to notify when the run starts.
        """
        return pulumi.get(self, "on_starts")

    @on_starts.setter
    def on_starts(self, value: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]):
        pulumi.set(self, "on_starts", value)

    @property
    @pulumi.getter(name="onSuccesses")
    def on_successes(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]:
        """
        (List) list of emails to notify when the run completes successfully.
        """
        return pulumi.get(self, "on_successes")

    @on_successes.setter
    def on_successes(self, value: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]):
        pulumi.set(self, "on_successes", value)


@pulumi.input_type
class JobTaskLibraryArgs:
    def __init__(__self__, *,
                 cran: Optional[pulumi.Input['JobTaskLibraryCranArgs']] = None,
                 egg: Optional[pulumi.Input[str]] = None,
                 jar: Optional[pulumi.Input[str]] = None,
                 maven: Optional[pulumi.Input['JobTaskLibraryMavenArgs']] = None,
                 pypi: Optional[pulumi.Input['JobTaskLibraryPypiArgs']] = None,
                 whl: Optional[pulumi.Input[str]] = None):
        if cran is not None:
            pulumi.set(__self__, "cran", cran)
        if egg is not None:
            pulumi.set(__self__, "egg", egg)
        if jar is not None:
            pulumi.set(__self__, "jar", jar)
        if maven is not None:
            pulumi.set(__self__, "maven", maven)
        if pypi is not None:
            pulumi.set(__self__, "pypi", pypi)
        if whl is not None:
            pulumi.set(__self__, "whl", whl)

    @property
    @pulumi.getter
    def cran(self) -> Optional[pulumi.Input['JobTaskLibraryCranArgs']]:
        return pulumi.get(self, "cran")

    @cran.setter
    def cran(self, value: Optional[pulumi.Input['JobTaskLibraryCranArgs']]):
        pulumi.set(self, "cran", value)

    @property
    @pulumi.getter
    def egg(self) -> Optional[pulumi.Input[str]]:
        return pulumi.get(self, "egg")

    @egg.setter
    def egg(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "egg", value)

    @property
    @pulumi.getter
    def jar(self) -> Optional[pulumi.Input[str]]:
        return pulumi.get(self, "jar")

    @jar.setter
    def jar(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "jar", value)

    @property
    @pulumi.getter
    def maven(self) -> Optional[pulumi.Input['JobTaskLibraryMavenArgs']]:
        return pulumi.get(self, "maven")

    @maven.setter
    def maven(self, value: Optional[pulumi.Input['JobTaskLibraryMavenArgs']]):
        pulumi.set(self, "maven", value)

    @property
    @pulumi.getter
    def pypi(self) -> Optional[pulumi.Input['JobTaskLibraryPypiArgs']]:
        return pulumi.get(self, "pypi")

    @pypi.setter
    def pypi(self, value: Optional[pulumi.Input['JobTaskLibraryPypiArgs']]):
        pulumi.set(self, "pypi", value)

    @property
    @pulumi.getter
    def whl(self) -> Optional[pulumi.Input[str]]:
        return pulumi.get(self, "whl")

    @whl.setter
    def whl(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "whl", value)


@pulumi.input_type
class JobTaskLibraryCranArgs:
    def __init__(__self__, *,
                 package: pulumi.Input[str],
                 repo: Optional[pulumi.Input[str]] = None):
        pulumi.set(__self__, "package", package)
        if repo is not None:
            pulumi.set(__self__, "repo", repo)

    @property
    @pulumi.getter
    def package(self) -> pulumi.Input[str]:
        return pulumi.get(self, "package")

    @package.setter
    def package(self, value: pulumi.Input[str]):
        pulumi.set(self, "package", value)

    @property
    @pulumi.getter
    def repo(self) -> Optional[pulumi.Input[str]]:
        return pulumi.get(self, "repo")

    @repo.setter
    def repo(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "repo", value)


@pulumi.input_type
class JobTaskLibraryMavenArgs:
    def __init__(__self__, *,
                 coordinates: pulumi.Input[str],
                 exclusions: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None,
                 repo: Optional[pulumi.Input[str]] = None):
        pulumi.set(__self__, "coordinates", coordinates)
        if exclusions is not None:
            pulumi.set(__self__, "exclusions", exclusions)
        if repo is not None:
            pulumi.set(__self__, "repo", repo)

    @property
    @pulumi.getter
    def coordinates(self) -> pulumi.Input[str]:
        return pulumi.get(self, "coordinates")

    @coordinates.setter
    def coordinates(self, value: pulumi.Input[str]):
        pulumi.set(self, "coordinates", value)

    @property
    @pulumi.getter
    def exclusions(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]:
        return pulumi.get(self, "exclusions")

    @exclusions.setter
    def exclusions(self, value: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]):
        pulumi.set(self, "exclusions", value)

    @property
    @pulumi.getter
    def repo(self) -> Optional[pulumi.Input[str]]:
        return pulumi.get(self, "repo")

    @repo.setter
    def repo(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "repo", value)


@pulumi.input_type
class JobTaskLibraryPypiArgs:
    def __init__(__self__, *,
                 package: pulumi.Input[str],
                 repo: Optional[pulumi.Input[str]] = None):
        pulumi.set(__self__, "package", package)
        if repo is not None:
            pulumi.set(__self__, "repo", repo)

    @property
    @pulumi.getter
    def package(self) -> pulumi.Input[str]:
        return pulumi.get(self, "package")

    @package.setter
    def package(self, value: pulumi.Input[str]):
        pulumi.set(self, "package", value)

    @property
    @pulumi.getter
    def repo(self) -> Optional[pulumi.Input[str]]:
        return pulumi.get(self, "repo")

    @repo.setter
    def repo(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "repo", value)


@pulumi.input_type
class JobTaskNewClusterArgs:
    def __init__(__self__, *,
                 spark_version: pulumi.Input[str],
                 apply_policy_default_values: Optional[pulumi.Input[bool]] = None,
                 autoscale: Optional[pulumi.Input['JobTaskNewClusterAutoscaleArgs']] = None,
                 autotermination_minutes: Optional[pulumi.Input[int]] = None,
                 aws_attributes: Optional[pulumi.Input['JobTaskNewClusterAwsAttributesArgs']] = None,
                 azure_attributes: Optional[pulumi.Input['JobTaskNewClusterAzureAttributesArgs']] = None,
                 cluster_id: Optional[pulumi.Input[str]] = None,
                 cluster_log_conf: Optional[pulumi.Input['JobTaskNewClusterClusterLogConfArgs']] = None,
                 cluster_mount_infos: Optional[pulumi.Input[Sequence[pulumi.Input['JobTaskNewClusterClusterMountInfoArgs']]]] = None,
                 cluster_name: Optional[pulumi.Input[str]] = None,
                 custom_tags: Optional[pulumi.Input[Mapping[str, Any]]] = None,
                 data_security_mode: Optional[pulumi.Input[str]] = None,
                 docker_image: Optional[pulumi.Input['JobTaskNewClusterDockerImageArgs']] = None,
                 driver_instance_pool_id: Optional[pulumi.Input[str]] = None,
                 driver_node_type_id: Optional[pulumi.Input[str]] = None,
                 enable_elastic_disk: Optional[pulumi.Input[bool]] = None,
                 enable_local_disk_encryption: Optional[pulumi.Input[bool]] = None,
                 gcp_attributes: Optional[pulumi.Input['JobTaskNewClusterGcpAttributesArgs']] = None,
                 idempotency_token: Optional[pulumi.Input[str]] = None,
                 init_scripts: Optional[pulumi.Input[Sequence[pulumi.Input['JobTaskNewClusterInitScriptArgs']]]] = None,
                 instance_pool_id: Optional[pulumi.Input[str]] = None,
                 node_type_id: Optional[pulumi.Input[str]] = None,
                 num_workers: Optional[pulumi.Input[int]] = None,
                 policy_id: Optional[pulumi.Input[str]] = None,
                 runtime_engine: Optional[pulumi.Input[str]] = None,
                 single_user_name: Optional[pulumi.Input[str]] = None,
                 spark_conf: Optional[pulumi.Input[Mapping[str, Any]]] = None,
                 spark_env_vars: Optional[pulumi.Input[Mapping[str, Any]]] = None,
                 ssh_public_keys: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None,
                 workload_type: Optional[pulumi.Input['JobTaskNewClusterWorkloadTypeArgs']] = None):
        pulumi.set(__self__, "spark_version", spark_version)
        if apply_policy_default_values is not None:
            pulumi.set(__self__, "apply_policy_default_values", apply_policy_default_values)
        if autoscale is not None:
            pulumi.set(__self__, "autoscale", autoscale)
        if autotermination_minutes is not None:
            pulumi.set(__self__, "autotermination_minutes", autotermination_minutes)
        if aws_attributes is not None:
            pulumi.set(__self__, "aws_attributes", aws_attributes)
        if azure_attributes is not None:
            pulumi.set(__self__, "azure_attributes", azure_attributes)
        if cluster_id is not None:
            pulumi.set(__self__, "cluster_id", cluster_id)
        if cluster_log_conf is not None:
            pulumi.set(__self__, "cluster_log_conf", cluster_log_conf)
        if cluster_mount_infos is not None:
            pulumi.set(__self__, "cluster_mount_infos", cluster_mount_infos)
        if cluster_name is not None:
            pulumi.set(__self__, "cluster_name", cluster_name)
        if custom_tags is not None:
            pulumi.set(__self__, "custom_tags", custom_tags)
        if data_security_mode is not None:
            pulumi.set(__self__, "data_security_mode", data_security_mode)
        if docker_image is not None:
            pulumi.set(__self__, "docker_image", docker_image)
        if driver_instance_pool_id is not None:
            pulumi.set(__self__, "driver_instance_pool_id", driver_instance_pool_id)
        if driver_node_type_id is not None:
            pulumi.set(__self__, "driver_node_type_id", driver_node_type_id)
        if enable_elastic_disk is not None:
            pulumi.set(__self__, "enable_elastic_disk", enable_elastic_disk)
        if enable_local_disk_encryption is not None:
            pulumi.set(__self__, "enable_local_disk_encryption", enable_local_disk_encryption)
        if gcp_attributes is not None:
            pulumi.set(__self__, "gcp_attributes", gcp_attributes)
        if idempotency_token is not None:
            pulumi.set(__self__, "idempotency_token", idempotency_token)
        if init_scripts is not None:
            pulumi.set(__self__, "init_scripts", init_scripts)
        if instance_pool_id is not None:
            pulumi.set(__self__, "instance_pool_id", instance_pool_id)
        if node_type_id is not None:
            pulumi.set(__self__, "node_type_id", node_type_id)
        if num_workers is not None:
            pulumi.set(__self__, "num_workers", num_workers)
        if policy_id is not None:
            pulumi.set(__self__, "policy_id", policy_id)
        if runtime_engine is not None:
            pulumi.set(__self__, "runtime_engine", runtime_engine)
        if single_user_name is not None:
            pulumi.set(__self__, "single_user_name", single_user_name)
        if spark_conf is not None:
            pulumi.set(__self__, "spark_conf", spark_conf)
        if spark_env_vars is not None:
            pulumi.set(__self__, "spark_env_vars", spark_env_vars)
        if ssh_public_keys is not None:
            pulumi.set(__self__, "ssh_public_keys", ssh_public_keys)
        if workload_type is not None:
            pulumi.set(__self__, "workload_type", workload_type)

    @property
    @pulumi.getter(name="sparkVersion")
    def spark_version(self) -> pulumi.Input[str]:
        return pulumi.get(self, "spark_version")

    @spark_version.setter
    def spark_version(self, value: pulumi.Input[str]):
        pulumi.set(self, "spark_version", value)

    @property
    @pulumi.getter(name="applyPolicyDefaultValues")
    def apply_policy_default_values(self) -> Optional[pulumi.Input[bool]]:
        return pulumi.get(self, "apply_policy_default_values")

    @apply_policy_default_values.setter
    def apply_policy_default_values(self, value: Optional[pulumi.Input[bool]]):
        pulumi.set(self, "apply_policy_default_values", value)

    @property
    @pulumi.getter
    def autoscale(self) -> Optional[pulumi.Input['JobTaskNewClusterAutoscaleArgs']]:
        return pulumi.get(self, "autoscale")

    @autoscale.setter
    def autoscale(self, value: Optional[pulumi.Input['JobTaskNewClusterAutoscaleArgs']]):
        pulumi.set(self, "autoscale", value)

    @property
    @pulumi.getter(name="autoterminationMinutes")
    def autotermination_minutes(self) -> Optional[pulumi.Input[int]]:
        return pulumi.get(self, "autotermination_minutes")

    @autotermination_minutes.setter
    def autotermination_minutes(self, value: Optional[pulumi.Input[int]]):
        pulumi.set(self, "autotermination_minutes", value)

    @property
    @pulumi.getter(name="awsAttributes")
    def aws_attributes(self) -> Optional[pulumi.Input['JobTaskNewClusterAwsAttributesArgs']]:
        return pulumi.get(self, "aws_attributes")

    @aws_attributes.setter
    def aws_attributes(self, value: Optional[pulumi.Input['JobTaskNewClusterAwsAttributesArgs']]):
        pulumi.set(self, "aws_attributes", value)

    @property
    @pulumi.getter(name="azureAttributes")
    def azure_attributes(self) -> Optional[pulumi.Input['JobTaskNewClusterAzureAttributesArgs']]:
        return pulumi.get(self, "azure_attributes")

    @azure_attributes.setter
    def azure_attributes(self, value: Optional[pulumi.Input['JobTaskNewClusterAzureAttributesArgs']]):
        pulumi.set(self, "azure_attributes", value)

    @property
    @pulumi.getter(name="clusterId")
    def cluster_id(self) -> Optional[pulumi.Input[str]]:
        return pulumi.get(self, "cluster_id")

    @cluster_id.setter
    def cluster_id(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "cluster_id", value)

    @property
    @pulumi.getter(name="clusterLogConf")
    def cluster_log_conf(self) -> Optional[pulumi.Input['JobTaskNewClusterClusterLogConfArgs']]:
        return pulumi.get(self, "cluster_log_conf")

    @cluster_log_conf.setter
    def cluster_log_conf(self, value: Optional[pulumi.Input['JobTaskNewClusterClusterLogConfArgs']]):
        pulumi.set(self, "cluster_log_conf", value)

    @property
    @pulumi.getter(name="clusterMountInfos")
    def cluster_mount_infos(self) -> Optional[pulumi.Input[Sequence[pulumi.Input['JobTaskNewClusterClusterMountInfoArgs']]]]:
        return pulumi.get(self, "cluster_mount_infos")

    @cluster_mount_infos.setter
    def cluster_mount_infos(self, value: Optional[pulumi.Input[Sequence[pulumi.Input['JobTaskNewClusterClusterMountInfoArgs']]]]):
        pulumi.set(self, "cluster_mount_infos", value)

    @property
    @pulumi.getter(name="clusterName")
    def cluster_name(self) -> Optional[pulumi.Input[str]]:
        return pulumi.get(self, "cluster_name")

    @cluster_name.setter
    def cluster_name(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "cluster_name", value)

    @property
    @pulumi.getter(name="customTags")
    def custom_tags(self) -> Optional[pulumi.Input[Mapping[str, Any]]]:
        return pulumi.get(self, "custom_tags")

    @custom_tags.setter
    def custom_tags(self, value: Optional[pulumi.Input[Mapping[str, Any]]]):
        pulumi.set(self, "custom_tags", value)

    @property
    @pulumi.getter(name="dataSecurityMode")
    def data_security_mode(self) -> Optional[pulumi.Input[str]]:
        return pulumi.get(self, "data_security_mode")

    @data_security_mode.setter
    def data_security_mode(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "data_security_mode", value)

    @property
    @pulumi.getter(name="dockerImage")
    def docker_image(self) -> Optional[pulumi.Input['JobTaskNewClusterDockerImageArgs']]:
        return pulumi.get(self, "docker_image")

    @docker_image.setter
    def docker_image(self, value: Optional[pulumi.Input['JobTaskNewClusterDockerImageArgs']]):
        pulumi.set(self, "docker_image", value)

    @property
    @pulumi.getter(name="driverInstancePoolId")
    def driver_instance_pool_id(self) -> Optional[pulumi.Input[str]]:
        return pulumi.get(self, "driver_instance_pool_id")

    @driver_instance_pool_id.setter
    def driver_instance_pool_id(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "driver_instance_pool_id", value)

    @property
    @pulumi.getter(name="driverNodeTypeId")
    def driver_node_type_id(self) -> Optional[pulumi.Input[str]]:
        return pulumi.get(self, "driver_node_type_id")

    @driver_node_type_id.setter
    def driver_node_type_id(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "driver_node_type_id", value)

    @property
    @pulumi.getter(name="enableElasticDisk")
    def enable_elastic_disk(self) -> Optional[pulumi.Input[bool]]:
        return pulumi.get(self, "enable_elastic_disk")

    @enable_elastic_disk.setter
    def enable_elastic_disk(self, value: Optional[pulumi.Input[bool]]):
        pulumi.set(self, "enable_elastic_disk", value)

    @property
    @pulumi.getter(name="enableLocalDiskEncryption")
    def enable_local_disk_encryption(self) -> Optional[pulumi.Input[bool]]:
        return pulumi.get(self, "enable_local_disk_encryption")

    @enable_local_disk_encryption.setter
    def enable_local_disk_encryption(self, value: Optional[pulumi.Input[bool]]):
        pulumi.set(self, "enable_local_disk_encryption", value)

    @property
    @pulumi.getter(name="gcpAttributes")
    def gcp_attributes(self) -> Optional[pulumi.Input['JobTaskNewClusterGcpAttributesArgs']]:
        return pulumi.get(self, "gcp_attributes")

    @gcp_attributes.setter
    def gcp_attributes(self, value: Optional[pulumi.Input['JobTaskNewClusterGcpAttributesArgs']]):
        pulumi.set(self, "gcp_attributes", value)

    @property
    @pulumi.getter(name="idempotencyToken")
    def idempotency_token(self) -> Optional[pulumi.Input[str]]:
        return pulumi.get(self, "idempotency_token")

    @idempotency_token.setter
    def idempotency_token(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "idempotency_token", value)

    @property
    @pulumi.getter(name="initScripts")
    def init_scripts(self) -> Optional[pulumi.Input[Sequence[pulumi.Input['JobTaskNewClusterInitScriptArgs']]]]:
        return pulumi.get(self, "init_scripts")

    @init_scripts.setter
    def init_scripts(self, value: Optional[pulumi.Input[Sequence[pulumi.Input['JobTaskNewClusterInitScriptArgs']]]]):
        pulumi.set(self, "init_scripts", value)

    @property
    @pulumi.getter(name="instancePoolId")
    def instance_pool_id(self) -> Optional[pulumi.Input[str]]:
        return pulumi.get(self, "instance_pool_id")

    @instance_pool_id.setter
    def instance_pool_id(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "instance_pool_id", value)

    @property
    @pulumi.getter(name="nodeTypeId")
    def node_type_id(self) -> Optional[pulumi.Input[str]]:
        return pulumi.get(self, "node_type_id")

    @node_type_id.setter
    def node_type_id(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "node_type_id", value)

    @property
    @pulumi.getter(name="numWorkers")
    def num_workers(self) -> Optional[pulumi.Input[int]]:
        return pulumi.get(self, "num_workers")

    @num_workers.setter
    def num_workers(self, value: Optional[pulumi.Input[int]]):
        pulumi.set(self, "num_workers", value)

    @property
    @pulumi.getter(name="policyId")
    def policy_id(self) -> Optional[pulumi.Input[str]]:
        return pulumi.get(self, "policy_id")

    @policy_id.setter
    def policy_id(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "policy_id", value)

    @property
    @pulumi.getter(name="runtimeEngine")
    def runtime_engine(self) -> Optional[pulumi.Input[str]]:
        return pulumi.get(self, "runtime_engine")

    @runtime_engine.setter
    def runtime_engine(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "runtime_engine", value)

    @property
    @pulumi.getter(name="singleUserName")
    def single_user_name(self) -> Optional[pulumi.Input[str]]:
        return pulumi.get(self, "single_user_name")

    @single_user_name.setter
    def single_user_name(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "single_user_name", value)

    @property
    @pulumi.getter(name="sparkConf")
    def spark_conf(self) -> Optional[pulumi.Input[Mapping[str, Any]]]:
        return pulumi.get(self, "spark_conf")

    @spark_conf.setter
    def spark_conf(self, value: Optional[pulumi.Input[Mapping[str, Any]]]):
        pulumi.set(self, "spark_conf", value)

    @property
    @pulumi.getter(name="sparkEnvVars")
    def spark_env_vars(self) -> Optional[pulumi.Input[Mapping[str, Any]]]:
        return pulumi.get(self, "spark_env_vars")

    @spark_env_vars.setter
    def spark_env_vars(self, value: Optional[pulumi.Input[Mapping[str, Any]]]):
        pulumi.set(self, "spark_env_vars", value)

    @property
    @pulumi.getter(name="sshPublicKeys")
    def ssh_public_keys(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]:
        return pulumi.get(self, "ssh_public_keys")

    @ssh_public_keys.setter
    def ssh_public_keys(self, value: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]):
        pulumi.set(self, "ssh_public_keys", value)

    @property
    @pulumi.getter(name="workloadType")
    def workload_type(self) -> Optional[pulumi.Input['JobTaskNewClusterWorkloadTypeArgs']]:
        return pulumi.get(self, "workload_type")

    @workload_type.setter
    def workload_type(self, value: Optional[pulumi.Input['JobTaskNewClusterWorkloadTypeArgs']]):
        pulumi.set(self, "workload_type", value)


@pulumi.input_type
class JobTaskNewClusterAutoscaleArgs:
    def __init__(__self__, *,
                 max_workers: Optional[pulumi.Input[int]] = None,
                 min_workers: Optional[pulumi.Input[int]] = None):
        if max_workers is not None:
            pulumi.set(__self__, "max_workers", max_workers)
        if min_workers is not None:
            pulumi.set(__self__, "min_workers", min_workers)

    @property
    @pulumi.getter(name="maxWorkers")
    def max_workers(self) -> Optional[pulumi.Input[int]]:
        return pulumi.get(self, "max_workers")

    @max_workers.setter
    def max_workers(self, value: Optional[pulumi.Input[int]]):
        pulumi.set(self, "max_workers", value)

    @property
    @pulumi.getter(name="minWorkers")
    def min_workers(self) -> Optional[pulumi.Input[int]]:
        return pulumi.get(self, "min_workers")

    @min_workers.setter
    def min_workers(self, value: Optional[pulumi.Input[int]]):
        pulumi.set(self, "min_workers", value)


@pulumi.input_type
class JobTaskNewClusterAwsAttributesArgs:
    def __init__(__self__, *,
                 availability: Optional[pulumi.Input[str]] = None,
                 ebs_volume_count: Optional[pulumi.Input[int]] = None,
                 ebs_volume_size: Optional[pulumi.Input[int]] = None,
                 ebs_volume_type: Optional[pulumi.Input[str]] = None,
                 first_on_demand: Optional[pulumi.Input[int]] = None,
                 instance_profile_arn: Optional[pulumi.Input[str]] = None,
                 spot_bid_price_percent: Optional[pulumi.Input[int]] = None,
                 zone_id: Optional[pulumi.Input[str]] = None):
        if availability is not None:
            pulumi.set(__self__, "availability", availability)
        if ebs_volume_count is not None:
            pulumi.set(__self__, "ebs_volume_count", ebs_volume_count)
        if ebs_volume_size is not None:
            pulumi.set(__self__, "ebs_volume_size", ebs_volume_size)
        if ebs_volume_type is not None:
            pulumi.set(__self__, "ebs_volume_type", ebs_volume_type)
        if first_on_demand is not None:
            pulumi.set(__self__, "first_on_demand", first_on_demand)
        if instance_profile_arn is not None:
            pulumi.set(__self__, "instance_profile_arn", instance_profile_arn)
        if spot_bid_price_percent is not None:
            pulumi.set(__self__, "spot_bid_price_percent", spot_bid_price_percent)
        if zone_id is not None:
            pulumi.set(__self__, "zone_id", zone_id)

    @property
    @pulumi.getter
    def availability(self) -> Optional[pulumi.Input[str]]:
        return pulumi.get(self, "availability")

    @availability.setter
    def availability(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "availability", value)

    @property
    @pulumi.getter(name="ebsVolumeCount")
    def ebs_volume_count(self) -> Optional[pulumi.Input[int]]:
        return pulumi.get(self, "ebs_volume_count")

    @ebs_volume_count.setter
    def ebs_volume_count(self, value: Optional[pulumi.Input[int]]):
        pulumi.set(self, "ebs_volume_count", value)

    @property
    @pulumi.getter(name="ebsVolumeSize")
    def ebs_volume_size(self) -> Optional[pulumi.Input[int]]:
        return pulumi.get(self, "ebs_volume_size")

    @ebs_volume_size.setter
    def ebs_volume_size(self, value: Optional[pulumi.Input[int]]):
        pulumi.set(self, "ebs_volume_size", value)

    @property
    @pulumi.getter(name="ebsVolumeType")
    def ebs_volume_type(self) -> Optional[pulumi.Input[str]]:
        return pulumi.get(self, "ebs_volume_type")

    @ebs_volume_type.setter
    def ebs_volume_type(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "ebs_volume_type", value)

    @property
    @pulumi.getter(name="firstOnDemand")
    def first_on_demand(self) -> Optional[pulumi.Input[int]]:
        return pulumi.get(self, "first_on_demand")

    @first_on_demand.setter
    def first_on_demand(self, value: Optional[pulumi.Input[int]]):
        pulumi.set(self, "first_on_demand", value)

    @property
    @pulumi.getter(name="instanceProfileArn")
    def instance_profile_arn(self) -> Optional[pulumi.Input[str]]:
        return pulumi.get(self, "instance_profile_arn")

    @instance_profile_arn.setter
    def instance_profile_arn(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "instance_profile_arn", value)

    @property
    @pulumi.getter(name="spotBidPricePercent")
    def spot_bid_price_percent(self) -> Optional[pulumi.Input[int]]:
        return pulumi.get(self, "spot_bid_price_percent")

    @spot_bid_price_percent.setter
    def spot_bid_price_percent(self, value: Optional[pulumi.Input[int]]):
        pulumi.set(self, "spot_bid_price_percent", value)

    @property
    @pulumi.getter(name="zoneId")
    def zone_id(self) -> Optional[pulumi.Input[str]]:
        return pulumi.get(self, "zone_id")

    @zone_id.setter
    def zone_id(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "zone_id", value)


@pulumi.input_type
class JobTaskNewClusterAzureAttributesArgs:
    def __init__(__self__, *,
                 availability: Optional[pulumi.Input[str]] = None,
                 first_on_demand: Optional[pulumi.Input[int]] = None,
                 spot_bid_max_price: Optional[pulumi.Input[float]] = None):
        if availability is not None:
            pulumi.set(__self__, "availability", availability)
        if first_on_demand is not None:
            pulumi.set(__self__, "first_on_demand", first_on_demand)
        if spot_bid_max_price is not None:
            pulumi.set(__self__, "spot_bid_max_price", spot_bid_max_price)

    @property
    @pulumi.getter
    def availability(self) -> Optional[pulumi.Input[str]]:
        return pulumi.get(self, "availability")

    @availability.setter
    def availability(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "availability", value)

    @property
    @pulumi.getter(name="firstOnDemand")
    def first_on_demand(self) -> Optional[pulumi.Input[int]]:
        return pulumi.get(self, "first_on_demand")

    @first_on_demand.setter
    def first_on_demand(self, value: Optional[pulumi.Input[int]]):
        pulumi.set(self, "first_on_demand", value)

    @property
    @pulumi.getter(name="spotBidMaxPrice")
    def spot_bid_max_price(self) -> Optional[pulumi.Input[float]]:
        return pulumi.get(self, "spot_bid_max_price")

    @spot_bid_max_price.setter
    def spot_bid_max_price(self, value: Optional[pulumi.Input[float]]):
        pulumi.set(self, "spot_bid_max_price", value)


@pulumi.input_type
class JobTaskNewClusterClusterLogConfArgs:
    def __init__(__self__, *,
                 dbfs: Optional[pulumi.Input['JobTaskNewClusterClusterLogConfDbfsArgs']] = None,
                 s3: Optional[pulumi.Input['JobTaskNewClusterClusterLogConfS3Args']] = None):
        if dbfs is not None:
            pulumi.set(__self__, "dbfs", dbfs)
        if s3 is not None:
            pulumi.set(__self__, "s3", s3)

    @property
    @pulumi.getter
    def dbfs(self) -> Optional[pulumi.Input['JobTaskNewClusterClusterLogConfDbfsArgs']]:
        return pulumi.get(self, "dbfs")

    @dbfs.setter
    def dbfs(self, value: Optional[pulumi.Input['JobTaskNewClusterClusterLogConfDbfsArgs']]):
        pulumi.set(self, "dbfs", value)

    @property
    @pulumi.getter
    def s3(self) -> Optional[pulumi.Input['JobTaskNewClusterClusterLogConfS3Args']]:
        return pulumi.get(self, "s3")

    @s3.setter
    def s3(self, value: Optional[pulumi.Input['JobTaskNewClusterClusterLogConfS3Args']]):
        pulumi.set(self, "s3", value)


@pulumi.input_type
class JobTaskNewClusterClusterLogConfDbfsArgs:
    def __init__(__self__, *,
                 destination: pulumi.Input[str]):
        pulumi.set(__self__, "destination", destination)

    @property
    @pulumi.getter
    def destination(self) -> pulumi.Input[str]:
        return pulumi.get(self, "destination")

    @destination.setter
    def destination(self, value: pulumi.Input[str]):
        pulumi.set(self, "destination", value)


@pulumi.input_type
class JobTaskNewClusterClusterLogConfS3Args:
    def __init__(__self__, *,
                 destination: pulumi.Input[str],
                 canned_acl: Optional[pulumi.Input[str]] = None,
                 enable_encryption: Optional[pulumi.Input[bool]] = None,
                 encryption_type: Optional[pulumi.Input[str]] = None,
                 endpoint: Optional[pulumi.Input[str]] = None,
                 kms_key: Optional[pulumi.Input[str]] = None,
                 region: Optional[pulumi.Input[str]] = None):
        pulumi.set(__self__, "destination", destination)
        if canned_acl is not None:
            pulumi.set(__self__, "canned_acl", canned_acl)
        if enable_encryption is not None:
            pulumi.set(__self__, "enable_encryption", enable_encryption)
        if encryption_type is not None:
            pulumi.set(__self__, "encryption_type", encryption_type)
        if endpoint is not None:
            pulumi.set(__self__, "endpoint", endpoint)
        if kms_key is not None:
            pulumi.set(__self__, "kms_key", kms_key)
        if region is not None:
            pulumi.set(__self__, "region", region)

    @property
    @pulumi.getter
    def destination(self) -> pulumi.Input[str]:
        return pulumi.get(self, "destination")

    @destination.setter
    def destination(self, value: pulumi.Input[str]):
        pulumi.set(self, "destination", value)

    @property
    @pulumi.getter(name="cannedAcl")
    def canned_acl(self) -> Optional[pulumi.Input[str]]:
        return pulumi.get(self, "canned_acl")

    @canned_acl.setter
    def canned_acl(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "canned_acl", value)

    @property
    @pulumi.getter(name="enableEncryption")
    def enable_encryption(self) -> Optional[pulumi.Input[bool]]:
        return pulumi.get(self, "enable_encryption")

    @enable_encryption.setter
    def enable_encryption(self, value: Optional[pulumi.Input[bool]]):
        pulumi.set(self, "enable_encryption", value)

    @property
    @pulumi.getter(name="encryptionType")
    def encryption_type(self) -> Optional[pulumi.Input[str]]:
        return pulumi.get(self, "encryption_type")

    @encryption_type.setter
    def encryption_type(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "encryption_type", value)

    @property
    @pulumi.getter
    def endpoint(self) -> Optional[pulumi.Input[str]]:
        return pulumi.get(self, "endpoint")

    @endpoint.setter
    def endpoint(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "endpoint", value)

    @property
    @pulumi.getter(name="kmsKey")
    def kms_key(self) -> Optional[pulumi.Input[str]]:
        return pulumi.get(self, "kms_key")

    @kms_key.setter
    def kms_key(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "kms_key", value)

    @property
    @pulumi.getter
    def region(self) -> Optional[pulumi.Input[str]]:
        return pulumi.get(self, "region")

    @region.setter
    def region(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "region", value)


@pulumi.input_type
class JobTaskNewClusterClusterMountInfoArgs:
    def __init__(__self__, *,
                 local_mount_dir_path: pulumi.Input[str],
                 network_filesystem_info: pulumi.Input['JobTaskNewClusterClusterMountInfoNetworkFilesystemInfoArgs'],
                 remote_mount_dir_path: Optional[pulumi.Input[str]] = None):
        pulumi.set(__self__, "local_mount_dir_path", local_mount_dir_path)
        pulumi.set(__self__, "network_filesystem_info", network_filesystem_info)
        if remote_mount_dir_path is not None:
            pulumi.set(__self__, "remote_mount_dir_path", remote_mount_dir_path)

    @property
    @pulumi.getter(name="localMountDirPath")
    def local_mount_dir_path(self) -> pulumi.Input[str]:
        return pulumi.get(self, "local_mount_dir_path")

    @local_mount_dir_path.setter
    def local_mount_dir_path(self, value: pulumi.Input[str]):
        pulumi.set(self, "local_mount_dir_path", value)

    @property
    @pulumi.getter(name="networkFilesystemInfo")
    def network_filesystem_info(self) -> pulumi.Input['JobTaskNewClusterClusterMountInfoNetworkFilesystemInfoArgs']:
        return pulumi.get(self, "network_filesystem_info")

    @network_filesystem_info.setter
    def network_filesystem_info(self, value: pulumi.Input['JobTaskNewClusterClusterMountInfoNetworkFilesystemInfoArgs']):
        pulumi.set(self, "network_filesystem_info", value)

    @property
    @pulumi.getter(name="remoteMountDirPath")
    def remote_mount_dir_path(self) -> Optional[pulumi.Input[str]]:
        return pulumi.get(self, "remote_mount_dir_path")

    @remote_mount_dir_path.setter
    def remote_mount_dir_path(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "remote_mount_dir_path", value)


@pulumi.input_type
class JobTaskNewClusterClusterMountInfoNetworkFilesystemInfoArgs:
    def __init__(__self__, *,
                 server_address: pulumi.Input[str],
                 mount_options: Optional[pulumi.Input[str]] = None):
        pulumi.set(__self__, "server_address", server_address)
        if mount_options is not None:
            pulumi.set(__self__, "mount_options", mount_options)

    @property
    @pulumi.getter(name="serverAddress")
    def server_address(self) -> pulumi.Input[str]:
        return pulumi.get(self, "server_address")

    @server_address.setter
    def server_address(self, value: pulumi.Input[str]):
        pulumi.set(self, "server_address", value)

    @property
    @pulumi.getter(name="mountOptions")
    def mount_options(self) -> Optional[pulumi.Input[str]]:
        return pulumi.get(self, "mount_options")

    @mount_options.setter
    def mount_options(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "mount_options", value)


@pulumi.input_type
class JobTaskNewClusterDockerImageArgs:
    def __init__(__self__, *,
                 url: pulumi.Input[str],
                 basic_auth: Optional[pulumi.Input['JobTaskNewClusterDockerImageBasicAuthArgs']] = None):
        """
        :param pulumi.Input[str] url: URL of the Git repository to use.
        """
        pulumi.set(__self__, "url", url)
        if basic_auth is not None:
            pulumi.set(__self__, "basic_auth", basic_auth)

    @property
    @pulumi.getter
    def url(self) -> pulumi.Input[str]:
        """
        URL of the Git repository to use.
        """
        return pulumi.get(self, "url")

    @url.setter
    def url(self, value: pulumi.Input[str]):
        pulumi.set(self, "url", value)

    @property
    @pulumi.getter(name="basicAuth")
    def basic_auth(self) -> Optional[pulumi.Input['JobTaskNewClusterDockerImageBasicAuthArgs']]:
        return pulumi.get(self, "basic_auth")

    @basic_auth.setter
    def basic_auth(self, value: Optional[pulumi.Input['JobTaskNewClusterDockerImageBasicAuthArgs']]):
        pulumi.set(self, "basic_auth", value)


@pulumi.input_type
class JobTaskNewClusterDockerImageBasicAuthArgs:
    def __init__(__self__, *,
                 password: pulumi.Input[str],
                 username: pulumi.Input[str]):
        pulumi.set(__self__, "password", password)
        pulumi.set(__self__, "username", username)

    @property
    @pulumi.getter
    def password(self) -> pulumi.Input[str]:
        return pulumi.get(self, "password")

    @password.setter
    def password(self, value: pulumi.Input[str]):
        pulumi.set(self, "password", value)

    @property
    @pulumi.getter
    def username(self) -> pulumi.Input[str]:
        return pulumi.get(self, "username")

    @username.setter
    def username(self, value: pulumi.Input[str]):
        pulumi.set(self, "username", value)


@pulumi.input_type
class JobTaskNewClusterGcpAttributesArgs:
    def __init__(__self__, *,
                 availability: Optional[pulumi.Input[str]] = None,
                 boot_disk_size: Optional[pulumi.Input[int]] = None,
                 google_service_account: Optional[pulumi.Input[str]] = None,
                 use_preemptible_executors: Optional[pulumi.Input[bool]] = None,
                 zone_id: Optional[pulumi.Input[str]] = None):
        if availability is not None:
            pulumi.set(__self__, "availability", availability)
        if boot_disk_size is not None:
            pulumi.set(__self__, "boot_disk_size", boot_disk_size)
        if google_service_account is not None:
            pulumi.set(__self__, "google_service_account", google_service_account)
        if use_preemptible_executors is not None:
            pulumi.set(__self__, "use_preemptible_executors", use_preemptible_executors)
        if zone_id is not None:
            pulumi.set(__self__, "zone_id", zone_id)

    @property
    @pulumi.getter
    def availability(self) -> Optional[pulumi.Input[str]]:
        return pulumi.get(self, "availability")

    @availability.setter
    def availability(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "availability", value)

    @property
    @pulumi.getter(name="bootDiskSize")
    def boot_disk_size(self) -> Optional[pulumi.Input[int]]:
        return pulumi.get(self, "boot_disk_size")

    @boot_disk_size.setter
    def boot_disk_size(self, value: Optional[pulumi.Input[int]]):
        pulumi.set(self, "boot_disk_size", value)

    @property
    @pulumi.getter(name="googleServiceAccount")
    def google_service_account(self) -> Optional[pulumi.Input[str]]:
        return pulumi.get(self, "google_service_account")

    @google_service_account.setter
    def google_service_account(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "google_service_account", value)

    @property
    @pulumi.getter(name="usePreemptibleExecutors")
    def use_preemptible_executors(self) -> Optional[pulumi.Input[bool]]:
        return pulumi.get(self, "use_preemptible_executors")

    @use_preemptible_executors.setter
    def use_preemptible_executors(self, value: Optional[pulumi.Input[bool]]):
        pulumi.set(self, "use_preemptible_executors", value)

    @property
    @pulumi.getter(name="zoneId")
    def zone_id(self) -> Optional[pulumi.Input[str]]:
        return pulumi.get(self, "zone_id")

    @zone_id.setter
    def zone_id(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "zone_id", value)


@pulumi.input_type
class JobTaskNewClusterInitScriptArgs:
    def __init__(__self__, *,
                 abfss: Optional[pulumi.Input['JobTaskNewClusterInitScriptAbfssArgs']] = None,
                 dbfs: Optional[pulumi.Input['JobTaskNewClusterInitScriptDbfsArgs']] = None,
                 file: Optional[pulumi.Input['JobTaskNewClusterInitScriptFileArgs']] = None,
                 gcs: Optional[pulumi.Input['JobTaskNewClusterInitScriptGcsArgs']] = None,
                 s3: Optional[pulumi.Input['JobTaskNewClusterInitScriptS3Args']] = None):
        if abfss is not None:
            pulumi.set(__self__, "abfss", abfss)
        if dbfs is not None:
            pulumi.set(__self__, "dbfs", dbfs)
        if file is not None:
            pulumi.set(__self__, "file", file)
        if gcs is not None:
            pulumi.set(__self__, "gcs", gcs)
        if s3 is not None:
            pulumi.set(__self__, "s3", s3)

    @property
    @pulumi.getter
    def abfss(self) -> Optional[pulumi.Input['JobTaskNewClusterInitScriptAbfssArgs']]:
        return pulumi.get(self, "abfss")

    @abfss.setter
    def abfss(self, value: Optional[pulumi.Input['JobTaskNewClusterInitScriptAbfssArgs']]):
        pulumi.set(self, "abfss", value)

    @property
    @pulumi.getter
    def dbfs(self) -> Optional[pulumi.Input['JobTaskNewClusterInitScriptDbfsArgs']]:
        return pulumi.get(self, "dbfs")

    @dbfs.setter
    def dbfs(self, value: Optional[pulumi.Input['JobTaskNewClusterInitScriptDbfsArgs']]):
        pulumi.set(self, "dbfs", value)

    @property
    @pulumi.getter
    def file(self) -> Optional[pulumi.Input['JobTaskNewClusterInitScriptFileArgs']]:
        return pulumi.get(self, "file")

    @file.setter
    def file(self, value: Optional[pulumi.Input['JobTaskNewClusterInitScriptFileArgs']]):
        pulumi.set(self, "file", value)

    @property
    @pulumi.getter
    def gcs(self) -> Optional[pulumi.Input['JobTaskNewClusterInitScriptGcsArgs']]:
        return pulumi.get(self, "gcs")

    @gcs.setter
    def gcs(self, value: Optional[pulumi.Input['JobTaskNewClusterInitScriptGcsArgs']]):
        pulumi.set(self, "gcs", value)

    @property
    @pulumi.getter
    def s3(self) -> Optional[pulumi.Input['JobTaskNewClusterInitScriptS3Args']]:
        return pulumi.get(self, "s3")

    @s3.setter
    def s3(self, value: Optional[pulumi.Input['JobTaskNewClusterInitScriptS3Args']]):
        pulumi.set(self, "s3", value)


@pulumi.input_type
class JobTaskNewClusterInitScriptAbfssArgs:
    def __init__(__self__, *,
                 destination: Optional[pulumi.Input[str]] = None):
        if destination is not None:
            pulumi.set(__self__, "destination", destination)

    @property
    @pulumi.getter
    def destination(self) -> Optional[pulumi.Input[str]]:
        return pulumi.get(self, "destination")

    @destination.setter
    def destination(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "destination", value)


@pulumi.input_type
class JobTaskNewClusterInitScriptDbfsArgs:
    def __init__(__self__, *,
                 destination: pulumi.Input[str]):
        pulumi.set(__self__, "destination", destination)

    @property
    @pulumi.getter
    def destination(self) -> pulumi.Input[str]:
        return pulumi.get(self, "destination")

    @destination.setter
    def destination(self, value: pulumi.Input[str]):
        pulumi.set(self, "destination", value)


@pulumi.input_type
class JobTaskNewClusterInitScriptFileArgs:
    def __init__(__self__, *,
                 destination: Optional[pulumi.Input[str]] = None):
        if destination is not None:
            pulumi.set(__self__, "destination", destination)

    @property
    @pulumi.getter
    def destination(self) -> Optional[pulumi.Input[str]]:
        return pulumi.get(self, "destination")

    @destination.setter
    def destination(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "destination", value)


@pulumi.input_type
class JobTaskNewClusterInitScriptGcsArgs:
    def __init__(__self__, *,
                 destination: Optional[pulumi.Input[str]] = None):
        if destination is not None:
            pulumi.set(__self__, "destination", destination)

    @property
    @pulumi.getter
    def destination(self) -> Optional[pulumi.Input[str]]:
        return pulumi.get(self, "destination")

    @destination.setter
    def destination(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "destination", value)


@pulumi.input_type
class JobTaskNewClusterInitScriptS3Args:
    def __init__(__self__, *,
                 destination: pulumi.Input[str],
                 canned_acl: Optional[pulumi.Input[str]] = None,
                 enable_encryption: Optional[pulumi.Input[bool]] = None,
                 encryption_type: Optional[pulumi.Input[str]] = None,
                 endpoint: Optional[pulumi.Input[str]] = None,
                 kms_key: Optional[pulumi.Input[str]] = None,
                 region: Optional[pulumi.Input[str]] = None):
        pulumi.set(__self__, "destination", destination)
        if canned_acl is not None:
            pulumi.set(__self__, "canned_acl", canned_acl)
        if enable_encryption is not None:
            pulumi.set(__self__, "enable_encryption", enable_encryption)
        if encryption_type is not None:
            pulumi.set(__self__, "encryption_type", encryption_type)
        if endpoint is not None:
            pulumi.set(__self__, "endpoint", endpoint)
        if kms_key is not None:
            pulumi.set(__self__, "kms_key", kms_key)
        if region is not None:
            pulumi.set(__self__, "region", region)

    @property
    @pulumi.getter
    def destination(self) -> pulumi.Input[str]:
        return pulumi.get(self, "destination")

    @destination.setter
    def destination(self, value: pulumi.Input[str]):
        pulumi.set(self, "destination", value)

    @property
    @pulumi.getter(name="cannedAcl")
    def canned_acl(self) -> Optional[pulumi.Input[str]]:
        return pulumi.get(self, "canned_acl")

    @canned_acl.setter
    def canned_acl(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "canned_acl", value)

    @property
    @pulumi.getter(name="enableEncryption")
    def enable_encryption(self) -> Optional[pulumi.Input[bool]]:
        return pulumi.get(self, "enable_encryption")

    @enable_encryption.setter
    def enable_encryption(self, value: Optional[pulumi.Input[bool]]):
        pulumi.set(self, "enable_encryption", value)

    @property
    @pulumi.getter(name="encryptionType")
    def encryption_type(self) -> Optional[pulumi.Input[str]]:
        return pulumi.get(self, "encryption_type")

    @encryption_type.setter
    def encryption_type(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "encryption_type", value)

    @property
    @pulumi.getter
    def endpoint(self) -> Optional[pulumi.Input[str]]:
        return pulumi.get(self, "endpoint")

    @endpoint.setter
    def endpoint(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "endpoint", value)

    @property
    @pulumi.getter(name="kmsKey")
    def kms_key(self) -> Optional[pulumi.Input[str]]:
        return pulumi.get(self, "kms_key")

    @kms_key.setter
    def kms_key(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "kms_key", value)

    @property
    @pulumi.getter
    def region(self) -> Optional[pulumi.Input[str]]:
        return pulumi.get(self, "region")

    @region.setter
    def region(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "region", value)


@pulumi.input_type
class JobTaskNewClusterWorkloadTypeArgs:
    def __init__(__self__, *,
                 clients: pulumi.Input['JobTaskNewClusterWorkloadTypeClientsArgs']):
        pulumi.set(__self__, "clients", clients)

    @property
    @pulumi.getter
    def clients(self) -> pulumi.Input['JobTaskNewClusterWorkloadTypeClientsArgs']:
        return pulumi.get(self, "clients")

    @clients.setter
    def clients(self, value: pulumi.Input['JobTaskNewClusterWorkloadTypeClientsArgs']):
        pulumi.set(self, "clients", value)


@pulumi.input_type
class JobTaskNewClusterWorkloadTypeClientsArgs:
    def __init__(__self__, *,
                 jobs: Optional[pulumi.Input[bool]] = None,
                 notebooks: Optional[pulumi.Input[bool]] = None):
        if jobs is not None:
            pulumi.set(__self__, "jobs", jobs)
        if notebooks is not None:
            pulumi.set(__self__, "notebooks", notebooks)

    @property
    @pulumi.getter
    def jobs(self) -> Optional[pulumi.Input[bool]]:
        return pulumi.get(self, "jobs")

    @jobs.setter
    def jobs(self, value: Optional[pulumi.Input[bool]]):
        pulumi.set(self, "jobs", value)

    @property
    @pulumi.getter
    def notebooks(self) -> Optional[pulumi.Input[bool]]:
        return pulumi.get(self, "notebooks")

    @notebooks.setter
    def notebooks(self, value: Optional[pulumi.Input[bool]]):
        pulumi.set(self, "notebooks", value)


@pulumi.input_type
class JobTaskNotebookTaskArgs:
    def __init__(__self__, *,
                 notebook_path: pulumi.Input[str],
                 base_parameters: Optional[pulumi.Input[Mapping[str, Any]]] = None,
                 source: Optional[pulumi.Input[str]] = None):
        """
        :param pulumi.Input[str] notebook_path: The path of the Notebook to be run in the Databricks workspace or remote repository. For notebooks stored in the Databricks workspace, the path must be absolute and begin with a slash. For notebooks stored in a remote repository, the path must be relative. This field is required.
        :param pulumi.Input[Mapping[str, Any]] base_parameters: (Map) Base parameters to be used for each run of this job. If the run is initiated by a call to run-now with parameters specified, the two parameters maps will be merged. If the same key is specified in base_parameters and in run-now, the value from run-now will be used. If the notebook takes a parameter that is not specified in the job’s base_parameters or the run-now override parameters, the default value from the notebook will be used. Retrieve these parameters in a notebook using `dbutils.widgets.get`.
        :param pulumi.Input[str] source: Location type of the notebook, can only be `WORKSPACE` or `GIT`. When set to `WORKSPACE`, the notebook will be retrieved from the local Databricks workspace. When set to `GIT`, the notebook will be retrieved from a Git repository defined in git_source. If the value is empty, the task will use `GIT` if `git_source` is defined and `WORKSPACE` otherwise.
        """
        pulumi.set(__self__, "notebook_path", notebook_path)
        if base_parameters is not None:
            pulumi.set(__self__, "base_parameters", base_parameters)
        if source is not None:
            pulumi.set(__self__, "source", source)

    @property
    @pulumi.getter(name="notebookPath")
    def notebook_path(self) -> pulumi.Input[str]:
        """
        The path of the Notebook to be run in the Databricks workspace or remote repository. For notebooks stored in the Databricks workspace, the path must be absolute and begin with a slash. For notebooks stored in a remote repository, the path must be relative. This field is required.
        """
        return pulumi.get(self, "notebook_path")

    @notebook_path.setter
    def notebook_path(self, value: pulumi.Input[str]):
        pulumi.set(self, "notebook_path", value)

    @property
    @pulumi.getter(name="baseParameters")
    def base_parameters(self) -> Optional[pulumi.Input[Mapping[str, Any]]]:
        """
        (Map) Base parameters to be used for each run of this job. If the run is initiated by a call to run-now with parameters specified, the two parameters maps will be merged. If the same key is specified in base_parameters and in run-now, the value from run-now will be used. If the notebook takes a parameter that is not specified in the job’s base_parameters or the run-now override parameters, the default value from the notebook will be used. Retrieve these parameters in a notebook using `dbutils.widgets.get`.
        """
        return pulumi.get(self, "base_parameters")

    @base_parameters.setter
    def base_parameters(self, value: Optional[pulumi.Input[Mapping[str, Any]]]):
        pulumi.set(self, "base_parameters", value)

    @property
    @pulumi.getter
    def source(self) -> Optional[pulumi.Input[str]]:
        """
        Location type of the notebook, can only be `WORKSPACE` or `GIT`. When set to `WORKSPACE`, the notebook will be retrieved from the local Databricks workspace. When set to `GIT`, the notebook will be retrieved from a Git repository defined in git_source. If the value is empty, the task will use `GIT` if `git_source` is defined and `WORKSPACE` otherwise.
        """
        return pulumi.get(self, "source")

    @source.setter
    def source(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "source", value)


@pulumi.input_type
class JobTaskPipelineTaskArgs:
    def __init__(__self__, *,
                 pipeline_id: pulumi.Input[str]):
        """
        :param pulumi.Input[str] pipeline_id: The pipeline's unique ID.
        """
        pulumi.set(__self__, "pipeline_id", pipeline_id)

    @property
    @pulumi.getter(name="pipelineId")
    def pipeline_id(self) -> pulumi.Input[str]:
        """
        The pipeline's unique ID.
        """
        return pulumi.get(self, "pipeline_id")

    @pipeline_id.setter
    def pipeline_id(self, value: pulumi.Input[str]):
        pulumi.set(self, "pipeline_id", value)


@pulumi.input_type
class JobTaskPythonWheelTaskArgs:
    def __init__(__self__, *,
                 entry_point: Optional[pulumi.Input[str]] = None,
                 named_parameters: Optional[pulumi.Input[Mapping[str, Any]]] = None,
                 package_name: Optional[pulumi.Input[str]] = None,
                 parameters: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None):
        """
        :param pulumi.Input[str] entry_point: Python function as entry point for the task
        :param pulumi.Input[Mapping[str, Any]] named_parameters: Named parameters for the task
        :param pulumi.Input[str] package_name: Name of Python package
        :param pulumi.Input[Sequence[pulumi.Input[str]]] parameters: Parameters for the task
        """
        if entry_point is not None:
            pulumi.set(__self__, "entry_point", entry_point)
        if named_parameters is not None:
            pulumi.set(__self__, "named_parameters", named_parameters)
        if package_name is not None:
            pulumi.set(__self__, "package_name", package_name)
        if parameters is not None:
            pulumi.set(__self__, "parameters", parameters)

    @property
    @pulumi.getter(name="entryPoint")
    def entry_point(self) -> Optional[pulumi.Input[str]]:
        """
        Python function as entry point for the task
        """
        return pulumi.get(self, "entry_point")

    @entry_point.setter
    def entry_point(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "entry_point", value)

    @property
    @pulumi.getter(name="namedParameters")
    def named_parameters(self) -> Optional[pulumi.Input[Mapping[str, Any]]]:
        """
        Named parameters for the task
        """
        return pulumi.get(self, "named_parameters")

    @named_parameters.setter
    def named_parameters(self, value: Optional[pulumi.Input[Mapping[str, Any]]]):
        pulumi.set(self, "named_parameters", value)

    @property
    @pulumi.getter(name="packageName")
    def package_name(self) -> Optional[pulumi.Input[str]]:
        """
        Name of Python package
        """
        return pulumi.get(self, "package_name")

    @package_name.setter
    def package_name(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "package_name", value)

    @property
    @pulumi.getter
    def parameters(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]:
        """
        Parameters for the task
        """
        return pulumi.get(self, "parameters")

    @parameters.setter
    def parameters(self, value: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]):
        pulumi.set(self, "parameters", value)


@pulumi.input_type
class JobTaskSparkJarTaskArgs:
    def __init__(__self__, *,
                 jar_uri: Optional[pulumi.Input[str]] = None,
                 main_class_name: Optional[pulumi.Input[str]] = None,
                 parameters: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None):
        """
        :param pulumi.Input[str] main_class_name: The full name of the class containing the main method to be executed. This class must be contained in a JAR provided as a library. The code should use `SparkContext.getOrCreate` to obtain a Spark context; otherwise, runs of the job will fail.
        :param pulumi.Input[Sequence[pulumi.Input[str]]] parameters: (List) Parameters passed to the main method.
        """
        if jar_uri is not None:
            pulumi.set(__self__, "jar_uri", jar_uri)
        if main_class_name is not None:
            pulumi.set(__self__, "main_class_name", main_class_name)
        if parameters is not None:
            pulumi.set(__self__, "parameters", parameters)

    @property
    @pulumi.getter(name="jarUri")
    def jar_uri(self) -> Optional[pulumi.Input[str]]:
        return pulumi.get(self, "jar_uri")

    @jar_uri.setter
    def jar_uri(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "jar_uri", value)

    @property
    @pulumi.getter(name="mainClassName")
    def main_class_name(self) -> Optional[pulumi.Input[str]]:
        """
        The full name of the class containing the main method to be executed. This class must be contained in a JAR provided as a library. The code should use `SparkContext.getOrCreate` to obtain a Spark context; otherwise, runs of the job will fail.
        """
        return pulumi.get(self, "main_class_name")

    @main_class_name.setter
    def main_class_name(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "main_class_name", value)

    @property
    @pulumi.getter
    def parameters(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]:
        """
        (List) Parameters passed to the main method.
        """
        return pulumi.get(self, "parameters")

    @parameters.setter
    def parameters(self, value: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]):
        pulumi.set(self, "parameters", value)


@pulumi.input_type
class JobTaskSparkPythonTaskArgs:
    def __init__(__self__, *,
                 python_file: pulumi.Input[str],
                 parameters: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None):
        """
        :param pulumi.Input[str] python_file: The URI of the Python file to be executed. databricks_dbfs_file, cloud file URIs (e.g. `s3:/`, `abfss:/`, `gs:/`) and workspace paths are supported. For python files stored in the Databricks workspace, the path must be absolute and begin with `/Repos`. This field is required.
        :param pulumi.Input[Sequence[pulumi.Input[str]]] parameters: (List) Command line parameters passed to the Python file.
        """
        pulumi.set(__self__, "python_file", python_file)
        if parameters is not None:
            pulumi.set(__self__, "parameters", parameters)

    @property
    @pulumi.getter(name="pythonFile")
    def python_file(self) -> pulumi.Input[str]:
        """
        The URI of the Python file to be executed. databricks_dbfs_file, cloud file URIs (e.g. `s3:/`, `abfss:/`, `gs:/`) and workspace paths are supported. For python files stored in the Databricks workspace, the path must be absolute and begin with `/Repos`. This field is required.
        """
        return pulumi.get(self, "python_file")

    @python_file.setter
    def python_file(self, value: pulumi.Input[str]):
        pulumi.set(self, "python_file", value)

    @property
    @pulumi.getter
    def parameters(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]:
        """
        (List) Command line parameters passed to the Python file.
        """
        return pulumi.get(self, "parameters")

    @parameters.setter
    def parameters(self, value: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]):
        pulumi.set(self, "parameters", value)


@pulumi.input_type
class JobTaskSparkSubmitTaskArgs:
    def __init__(__self__, *,
                 parameters: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None):
        """
        :param pulumi.Input[Sequence[pulumi.Input[str]]] parameters: (List) Command-line parameters passed to spark submit.
        """
        if parameters is not None:
            pulumi.set(__self__, "parameters", parameters)

    @property
    @pulumi.getter
    def parameters(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]:
        """
        (List) Command-line parameters passed to spark submit.
        """
        return pulumi.get(self, "parameters")

    @parameters.setter
    def parameters(self, value: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]):
        pulumi.set(self, "parameters", value)


@pulumi.input_type
class JobTaskSqlTaskArgs:
    def __init__(__self__, *,
                 alert: Optional[pulumi.Input['JobTaskSqlTaskAlertArgs']] = None,
                 dashboard: Optional[pulumi.Input['JobTaskSqlTaskDashboardArgs']] = None,
                 parameters: Optional[pulumi.Input[Mapping[str, Any]]] = None,
                 query: Optional[pulumi.Input['JobTaskSqlTaskQueryArgs']] = None,
                 warehouse_id: Optional[pulumi.Input[str]] = None):
        """
        :param pulumi.Input['JobTaskSqlTaskAlertArgs'] alert: block consisting of single string field: `alert_id` - identifier of the Databricks SQL Alert.
        :param pulumi.Input['JobTaskSqlTaskDashboardArgs'] dashboard: block consisting of single string field: `dashboard_id` - identifier of the Databricks SQL Dashboard databricks_sql_dashboard.
        :param pulumi.Input[Mapping[str, Any]] parameters: (Map) parameters to be used for each run of this task. The SQL alert task does not support custom parameters.
        :param pulumi.Input['JobTaskSqlTaskQueryArgs'] query: block consisting of single string field: `query_id` - identifier of the Databricks SQL Query (databricks_sql_query).
        :param pulumi.Input[str] warehouse_id: ID of the (the databricks_sql_endpoint) that will be used to execute the task.  Only Serverless & Pro warehouses are supported right now.
        """
        if alert is not None:
            pulumi.set(__self__, "alert", alert)
        if dashboard is not None:
            pulumi.set(__self__, "dashboard", dashboard)
        if parameters is not None:
            pulumi.set(__self__, "parameters", parameters)
        if query is not None:
            pulumi.set(__self__, "query", query)
        if warehouse_id is not None:
            pulumi.set(__self__, "warehouse_id", warehouse_id)

    @property
    @pulumi.getter
    def alert(self) -> Optional[pulumi.Input['JobTaskSqlTaskAlertArgs']]:
        """
        block consisting of single string field: `alert_id` - identifier of the Databricks SQL Alert.
        """
        return pulumi.get(self, "alert")

    @alert.setter
    def alert(self, value: Optional[pulumi.Input['JobTaskSqlTaskAlertArgs']]):
        pulumi.set(self, "alert", value)

    @property
    @pulumi.getter
    def dashboard(self) -> Optional[pulumi.Input['JobTaskSqlTaskDashboardArgs']]:
        """
        block consisting of single string field: `dashboard_id` - identifier of the Databricks SQL Dashboard databricks_sql_dashboard.
        """
        return pulumi.get(self, "dashboard")

    @dashboard.setter
    def dashboard(self, value: Optional[pulumi.Input['JobTaskSqlTaskDashboardArgs']]):
        pulumi.set(self, "dashboard", value)

    @property
    @pulumi.getter
    def parameters(self) -> Optional[pulumi.Input[Mapping[str, Any]]]:
        """
        (Map) parameters to be used for each run of this task. The SQL alert task does not support custom parameters.
        """
        return pulumi.get(self, "parameters")

    @parameters.setter
    def parameters(self, value: Optional[pulumi.Input[Mapping[str, Any]]]):
        pulumi.set(self, "parameters", value)

    @property
    @pulumi.getter
    def query(self) -> Optional[pulumi.Input['JobTaskSqlTaskQueryArgs']]:
        """
        block consisting of single string field: `query_id` - identifier of the Databricks SQL Query (databricks_sql_query).
        """
        return pulumi.get(self, "query")

    @query.setter
    def query(self, value: Optional[pulumi.Input['JobTaskSqlTaskQueryArgs']]):
        pulumi.set(self, "query", value)

    @property
    @pulumi.getter(name="warehouseId")
    def warehouse_id(self) -> Optional[pulumi.Input[str]]:
        """
        ID of the (the databricks_sql_endpoint) that will be used to execute the task.  Only Serverless & Pro warehouses are supported right now.
        """
        return pulumi.get(self, "warehouse_id")

    @warehouse_id.setter
    def warehouse_id(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "warehouse_id", value)


@pulumi.input_type
class JobTaskSqlTaskAlertArgs:
    def __init__(__self__, *,
                 alert_id: pulumi.Input[str]):
        pulumi.set(__self__, "alert_id", alert_id)

    @property
    @pulumi.getter(name="alertId")
    def alert_id(self) -> pulumi.Input[str]:
        return pulumi.get(self, "alert_id")

    @alert_id.setter
    def alert_id(self, value: pulumi.Input[str]):
        pulumi.set(self, "alert_id", value)


@pulumi.input_type
class JobTaskSqlTaskDashboardArgs:
    def __init__(__self__, *,
                 dashboard_id: pulumi.Input[str]):
        pulumi.set(__self__, "dashboard_id", dashboard_id)

    @property
    @pulumi.getter(name="dashboardId")
    def dashboard_id(self) -> pulumi.Input[str]:
        return pulumi.get(self, "dashboard_id")

    @dashboard_id.setter
    def dashboard_id(self, value: pulumi.Input[str]):
        pulumi.set(self, "dashboard_id", value)


@pulumi.input_type
class JobTaskSqlTaskQueryArgs:
    def __init__(__self__, *,
                 query_id: pulumi.Input[str]):
        pulumi.set(__self__, "query_id", query_id)

    @property
    @pulumi.getter(name="queryId")
    def query_id(self) -> pulumi.Input[str]:
        return pulumi.get(self, "query_id")

    @query_id.setter
    def query_id(self, value: pulumi.Input[str]):
        pulumi.set(self, "query_id", value)


@pulumi.input_type
class JobWebhookNotificationsArgs:
    def __init__(__self__, *,
                 on_failures: Optional[pulumi.Input[Sequence[pulumi.Input['JobWebhookNotificationsOnFailureArgs']]]] = None,
                 on_starts: Optional[pulumi.Input[Sequence[pulumi.Input['JobWebhookNotificationsOnStartArgs']]]] = None,
                 on_successes: Optional[pulumi.Input[Sequence[pulumi.Input['JobWebhookNotificationsOnSuccessArgs']]]] = None):
        """
        :param pulumi.Input[Sequence[pulumi.Input['JobWebhookNotificationsOnFailureArgs']]] on_failures: (List) list of notification IDs to call when the run fails. A maximum of 3 destinations can be specified.
        :param pulumi.Input[Sequence[pulumi.Input['JobWebhookNotificationsOnStartArgs']]] on_starts: (List) list of notification IDs to call when the run starts. A maximum of 3 destinations can be specified.
        :param pulumi.Input[Sequence[pulumi.Input['JobWebhookNotificationsOnSuccessArgs']]] on_successes: (List) list of notification IDs to call when the run completes successfully. A maximum of 3 destinations can be specified.
        """
        if on_failures is not None:
            pulumi.set(__self__, "on_failures", on_failures)
        if on_starts is not None:
            pulumi.set(__self__, "on_starts", on_starts)
        if on_successes is not None:
            pulumi.set(__self__, "on_successes", on_successes)

    @property
    @pulumi.getter(name="onFailures")
    def on_failures(self) -> Optional[pulumi.Input[Sequence[pulumi.Input['JobWebhookNotificationsOnFailureArgs']]]]:
        """
        (List) list of notification IDs to call when the run fails. A maximum of 3 destinations can be specified.
        """
        return pulumi.get(self, "on_failures")

    @on_failures.setter
    def on_failures(self, value: Optional[pulumi.Input[Sequence[pulumi.Input['JobWebhookNotificationsOnFailureArgs']]]]):
        pulumi.set(self, "on_failures", value)

    @property
    @pulumi.getter(name="onStarts")
    def on_starts(self) -> Optional[pulumi.Input[Sequence[pulumi.Input['JobWebhookNotificationsOnStartArgs']]]]:
        """
        (List) list of notification IDs to call when the run starts. A maximum of 3 destinations can be specified.
        """
        return pulumi.get(self, "on_starts")

    @on_starts.setter
    def on_starts(self, value: Optional[pulumi.Input[Sequence[pulumi.Input['JobWebhookNotificationsOnStartArgs']]]]):
        pulumi.set(self, "on_starts", value)

    @property
    @pulumi.getter(name="onSuccesses")
    def on_successes(self) -> Optional[pulumi.Input[Sequence[pulumi.Input['JobWebhookNotificationsOnSuccessArgs']]]]:
        """
        (List) list of notification IDs to call when the run completes successfully. A maximum of 3 destinations can be specified.
        """
        return pulumi.get(self, "on_successes")

    @on_successes.setter
    def on_successes(self, value: Optional[pulumi.Input[Sequence[pulumi.Input['JobWebhookNotificationsOnSuccessArgs']]]]):
        pulumi.set(self, "on_successes", value)


@pulumi.input_type
class JobWebhookNotificationsOnFailureArgs:
    def __init__(__self__, *,
                 id: pulumi.Input[str]):
        """
        :param pulumi.Input[str] id: ID of the system notification that is notified when an event defined in `webhook_notifications` is triggered.
        """
        pulumi.set(__self__, "id", id)

    @property
    @pulumi.getter
    def id(self) -> pulumi.Input[str]:
        """
        ID of the system notification that is notified when an event defined in `webhook_notifications` is triggered.
        """
        return pulumi.get(self, "id")

    @id.setter
    def id(self, value: pulumi.Input[str]):
        pulumi.set(self, "id", value)


@pulumi.input_type
class JobWebhookNotificationsOnStartArgs:
    def __init__(__self__, *,
                 id: pulumi.Input[str]):
        """
        :param pulumi.Input[str] id: ID of the system notification that is notified when an event defined in `webhook_notifications` is triggered.
        """
        pulumi.set(__self__, "id", id)

    @property
    @pulumi.getter
    def id(self) -> pulumi.Input[str]:
        """
        ID of the system notification that is notified when an event defined in `webhook_notifications` is triggered.
        """
        return pulumi.get(self, "id")

    @id.setter
    def id(self, value: pulumi.Input[str]):
        pulumi.set(self, "id", value)


@pulumi.input_type
class JobWebhookNotificationsOnSuccessArgs:
    def __init__(__self__, *,
                 id: pulumi.Input[str]):
        """
        :param pulumi.Input[str] id: ID of the system notification that is notified when an event defined in `webhook_notifications` is triggered.
        """
        pulumi.set(__self__, "id", id)

    @property
    @pulumi.getter
    def id(self) -> pulumi.Input[str]:
        """
        ID of the system notification that is notified when an event defined in `webhook_notifications` is triggered.
        """
        return pulumi.get(self, "id")

    @id.setter
    def id(self, value: pulumi.Input[str]):
        pulumi.set(self, "id", value)


@pulumi.input_type
class LibraryCranArgs:
    def __init__(__self__, *,
                 package: pulumi.Input[str],
                 repo: Optional[pulumi.Input[str]] = None):
        pulumi.set(__self__, "package", package)
        if repo is not None:
            pulumi.set(__self__, "repo", repo)

    @property
    @pulumi.getter
    def package(self) -> pulumi.Input[str]:
        return pulumi.get(self, "package")

    @package.setter
    def package(self, value: pulumi.Input[str]):
        pulumi.set(self, "package", value)

    @property
    @pulumi.getter
    def repo(self) -> Optional[pulumi.Input[str]]:
        return pulumi.get(self, "repo")

    @repo.setter
    def repo(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "repo", value)


@pulumi.input_type
class LibraryMavenArgs:
    def __init__(__self__, *,
                 coordinates: pulumi.Input[str],
                 exclusions: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None,
                 repo: Optional[pulumi.Input[str]] = None):
        pulumi.set(__self__, "coordinates", coordinates)
        if exclusions is not None:
            pulumi.set(__self__, "exclusions", exclusions)
        if repo is not None:
            pulumi.set(__self__, "repo", repo)

    @property
    @pulumi.getter
    def coordinates(self) -> pulumi.Input[str]:
        return pulumi.get(self, "coordinates")

    @coordinates.setter
    def coordinates(self, value: pulumi.Input[str]):
        pulumi.set(self, "coordinates", value)

    @property
    @pulumi.getter
    def exclusions(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]:
        return pulumi.get(self, "exclusions")

    @exclusions.setter
    def exclusions(self, value: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]):
        pulumi.set(self, "exclusions", value)

    @property
    @pulumi.getter
    def repo(self) -> Optional[pulumi.Input[str]]:
        return pulumi.get(self, "repo")

    @repo.setter
    def repo(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "repo", value)


@pulumi.input_type
class LibraryPypiArgs:
    def __init__(__self__, *,
                 package: pulumi.Input[str],
                 repo: Optional[pulumi.Input[str]] = None):
        pulumi.set(__self__, "package", package)
        if repo is not None:
            pulumi.set(__self__, "repo", repo)

    @property
    @pulumi.getter
    def package(self) -> pulumi.Input[str]:
        return pulumi.get(self, "package")

    @package.setter
    def package(self, value: pulumi.Input[str]):
        pulumi.set(self, "package", value)

    @property
    @pulumi.getter
    def repo(self) -> Optional[pulumi.Input[str]]:
        return pulumi.get(self, "repo")

    @repo.setter
    def repo(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "repo", value)


@pulumi.input_type
class MetastoreDataAccessAwsIamRoleArgs:
    def __init__(__self__, *,
                 role_arn: pulumi.Input[str]):
        """
        :param pulumi.Input[str] role_arn: The Amazon Resource Name (ARN) of the AWS IAM role for S3 data access, of the form `arn:aws:iam::1234567890:role/MyRole-AJJHDSKSDF`
        """
        pulumi.set(__self__, "role_arn", role_arn)

    @property
    @pulumi.getter(name="roleArn")
    def role_arn(self) -> pulumi.Input[str]:
        """
        The Amazon Resource Name (ARN) of the AWS IAM role for S3 data access, of the form `arn:aws:iam::1234567890:role/MyRole-AJJHDSKSDF`
        """
        return pulumi.get(self, "role_arn")

    @role_arn.setter
    def role_arn(self, value: pulumi.Input[str]):
        pulumi.set(self, "role_arn", value)


@pulumi.input_type
class MetastoreDataAccessAzureManagedIdentityArgs:
    def __init__(__self__, *,
                 access_connector_id: pulumi.Input[str]):
        """
        :param pulumi.Input[str] access_connector_id: The Resource ID of the Azure Databricks Access Connector resource, of the form `/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/rg-name/providers/Microsoft.Databricks/accessConnectors/connector-name`
        """
        pulumi.set(__self__, "access_connector_id", access_connector_id)

    @property
    @pulumi.getter(name="accessConnectorId")
    def access_connector_id(self) -> pulumi.Input[str]:
        """
        The Resource ID of the Azure Databricks Access Connector resource, of the form `/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/rg-name/providers/Microsoft.Databricks/accessConnectors/connector-name`
        """
        return pulumi.get(self, "access_connector_id")

    @access_connector_id.setter
    def access_connector_id(self, value: pulumi.Input[str]):
        pulumi.set(self, "access_connector_id", value)


@pulumi.input_type
class MetastoreDataAccessAzureServicePrincipalArgs:
    def __init__(__self__, *,
                 application_id: pulumi.Input[str],
                 client_secret: pulumi.Input[str],
                 directory_id: pulumi.Input[str]):
        """
        :param pulumi.Input[str] application_id: The application ID of the application registration within the referenced AAD tenant
        :param pulumi.Input[str] client_secret: The client secret generated for the above app ID in AAD. **This field is redacted on output**
        :param pulumi.Input[str] directory_id: The directory ID corresponding to the Azure Active Directory (AAD) tenant of the application
        """
        pulumi.set(__self__, "application_id", application_id)
        pulumi.set(__self__, "client_secret", client_secret)
        pulumi.set(__self__, "directory_id", directory_id)

    @property
    @pulumi.getter(name="applicationId")
    def application_id(self) -> pulumi.Input[str]:
        """
        The application ID of the application registration within the referenced AAD tenant
        """
        return pulumi.get(self, "application_id")

    @application_id.setter
    def application_id(self, value: pulumi.Input[str]):
        pulumi.set(self, "application_id", value)

    @property
    @pulumi.getter(name="clientSecret")
    def client_secret(self) -> pulumi.Input[str]:
        """
        The client secret generated for the above app ID in AAD. **This field is redacted on output**
        """
        return pulumi.get(self, "client_secret")

    @client_secret.setter
    def client_secret(self, value: pulumi.Input[str]):
        pulumi.set(self, "client_secret", value)

    @property
    @pulumi.getter(name="directoryId")
    def directory_id(self) -> pulumi.Input[str]:
        """
        The directory ID corresponding to the Azure Active Directory (AAD) tenant of the application
        """
        return pulumi.get(self, "directory_id")

    @directory_id.setter
    def directory_id(self, value: pulumi.Input[str]):
        pulumi.set(self, "directory_id", value)


@pulumi.input_type
class MetastoreDataAccessGcpServiceAccountKeyArgs:
    def __init__(__self__, *,
                 email: pulumi.Input[str],
                 private_key: pulumi.Input[str],
                 private_key_id: pulumi.Input[str]):
        pulumi.set(__self__, "email", email)
        pulumi.set(__self__, "private_key", private_key)
        pulumi.set(__self__, "private_key_id", private_key_id)

    @property
    @pulumi.getter
    def email(self) -> pulumi.Input[str]:
        return pulumi.get(self, "email")

    @email.setter
    def email(self, value: pulumi.Input[str]):
        pulumi.set(self, "email", value)

    @property
    @pulumi.getter(name="privateKey")
    def private_key(self) -> pulumi.Input[str]:
        return pulumi.get(self, "private_key")

    @private_key.setter
    def private_key(self, value: pulumi.Input[str]):
        pulumi.set(self, "private_key", value)

    @property
    @pulumi.getter(name="privateKeyId")
    def private_key_id(self) -> pulumi.Input[str]:
        return pulumi.get(self, "private_key_id")

    @private_key_id.setter
    def private_key_id(self, value: pulumi.Input[str]):
        pulumi.set(self, "private_key_id", value)


@pulumi.input_type
class MlflowModelTagArgs:
    def __init__(__self__, *,
                 key: pulumi.Input[str],
                 value: pulumi.Input[str]):
        pulumi.set(__self__, "key", key)
        pulumi.set(__self__, "value", value)

    @property
    @pulumi.getter
    def key(self) -> pulumi.Input[str]:
        return pulumi.get(self, "key")

    @key.setter
    def key(self, value: pulumi.Input[str]):
        pulumi.set(self, "key", value)

    @property
    @pulumi.getter
    def value(self) -> pulumi.Input[str]:
        return pulumi.get(self, "value")

    @value.setter
    def value(self, value: pulumi.Input[str]):
        pulumi.set(self, "value", value)


@pulumi.input_type
class MlflowWebhookHttpUrlSpecArgs:
    def __init__(__self__, *,
                 url: pulumi.Input[str],
                 authorization: Optional[pulumi.Input[str]] = None,
                 enable_ssl_verification: Optional[pulumi.Input[bool]] = None,
                 secret: Optional[pulumi.Input[str]] = None):
        """
        :param pulumi.Input[str] url: External HTTPS URL called on event trigger (by using a POST request). Structure of payload depends on the event type, refer to [documentation](https://docs.databricks.com/applications/mlflow/model-registry-webhooks.html) for more details.
        :param pulumi.Input[str] authorization: Value of the authorization header that should be sent in the request sent by the wehbook.  It should be of the form `<auth type> <credentials>`, e.g. `Bearer <access_token>`. If set to an empty string, no authorization header will be included in the request.
        :param pulumi.Input[bool] enable_ssl_verification: Enable/disable SSL certificate validation. Default is `true`. For self-signed certificates, this field must be `false` AND the destination server must disable certificate validation as well. For security purposes, it is encouraged to perform secret validation with the HMAC-encoded portion of the payload and acknowledge the risk associated with disabling hostname validation whereby it becomes more likely that requests can be maliciously routed to an unintended host.
        :param pulumi.Input[str] secret: Shared secret required for HMAC encoding payload. The HMAC-encoded payload will be sent in the header as `X-Databricks-Signature: encoded_payload`.
        """
        pulumi.set(__self__, "url", url)
        if authorization is not None:
            pulumi.set(__self__, "authorization", authorization)
        if enable_ssl_verification is not None:
            pulumi.set(__self__, "enable_ssl_verification", enable_ssl_verification)
        if secret is not None:
            pulumi.set(__self__, "secret", secret)

    @property
    @pulumi.getter
    def url(self) -> pulumi.Input[str]:
        """
        External HTTPS URL called on event trigger (by using a POST request). Structure of payload depends on the event type, refer to [documentation](https://docs.databricks.com/applications/mlflow/model-registry-webhooks.html) for more details.
        """
        return pulumi.get(self, "url")

    @url.setter
    def url(self, value: pulumi.Input[str]):
        pulumi.set(self, "url", value)

    @property
    @pulumi.getter
    def authorization(self) -> Optional[pulumi.Input[str]]:
        """
        Value of the authorization header that should be sent in the request sent by the wehbook.  It should be of the form `<auth type> <credentials>`, e.g. `Bearer <access_token>`. If set to an empty string, no authorization header will be included in the request.
        """
        return pulumi.get(self, "authorization")

    @authorization.setter
    def authorization(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "authorization", value)

    @property
    @pulumi.getter(name="enableSslVerification")
    def enable_ssl_verification(self) -> Optional[pulumi.Input[bool]]:
        """
        Enable/disable SSL certificate validation. Default is `true`. For self-signed certificates, this field must be `false` AND the destination server must disable certificate validation as well. For security purposes, it is encouraged to perform secret validation with the HMAC-encoded portion of the payload and acknowledge the risk associated with disabling hostname validation whereby it becomes more likely that requests can be maliciously routed to an unintended host.
        """
        return pulumi.get(self, "enable_ssl_verification")

    @enable_ssl_verification.setter
    def enable_ssl_verification(self, value: Optional[pulumi.Input[bool]]):
        pulumi.set(self, "enable_ssl_verification", value)

    @property
    @pulumi.getter
    def secret(self) -> Optional[pulumi.Input[str]]:
        """
        Shared secret required for HMAC encoding payload. The HMAC-encoded payload will be sent in the header as `X-Databricks-Signature: encoded_payload`.
        """
        return pulumi.get(self, "secret")

    @secret.setter
    def secret(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "secret", value)


@pulumi.input_type
class MlflowWebhookJobSpecArgs:
    def __init__(__self__, *,
                 access_token: pulumi.Input[str],
                 job_id: pulumi.Input[str],
                 workspace_url: Optional[pulumi.Input[str]] = None):
        """
        :param pulumi.Input[str] access_token: The personal access token used to authorize webhook's job runs.
        :param pulumi.Input[str] job_id: ID of the Databricks job that the webhook runs.
        :param pulumi.Input[str] workspace_url: URL of the workspace containing the job that this webhook runs. If not specified, the job’s workspace URL is assumed to be the same as the workspace where the webhook is created.
        """
        pulumi.set(__self__, "access_token", access_token)
        pulumi.set(__self__, "job_id", job_id)
        if workspace_url is not None:
            pulumi.set(__self__, "workspace_url", workspace_url)

    @property
    @pulumi.getter(name="accessToken")
    def access_token(self) -> pulumi.Input[str]:
        """
        The personal access token used to authorize webhook's job runs.
        """
        return pulumi.get(self, "access_token")

    @access_token.setter
    def access_token(self, value: pulumi.Input[str]):
        pulumi.set(self, "access_token", value)

    @property
    @pulumi.getter(name="jobId")
    def job_id(self) -> pulumi.Input[str]:
        """
        ID of the Databricks job that the webhook runs.
        """
        return pulumi.get(self, "job_id")

    @job_id.setter
    def job_id(self, value: pulumi.Input[str]):
        pulumi.set(self, "job_id", value)

    @property
    @pulumi.getter(name="workspaceUrl")
    def workspace_url(self) -> Optional[pulumi.Input[str]]:
        """
        URL of the workspace containing the job that this webhook runs. If not specified, the job’s workspace URL is assumed to be the same as the workspace where the webhook is created.
        """
        return pulumi.get(self, "workspace_url")

    @workspace_url.setter
    def workspace_url(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "workspace_url", value)


@pulumi.input_type
class MountAbfsArgs:
    def __init__(__self__, *,
                 client_id: pulumi.Input[str],
                 client_secret_key: pulumi.Input[str],
                 client_secret_scope: pulumi.Input[str],
                 initialize_file_system: pulumi.Input[bool],
                 container_name: Optional[pulumi.Input[str]] = None,
                 directory: Optional[pulumi.Input[str]] = None,
                 storage_account_name: Optional[pulumi.Input[str]] = None,
                 tenant_id: Optional[pulumi.Input[str]] = None):
        pulumi.set(__self__, "client_id", client_id)
        pulumi.set(__self__, "client_secret_key", client_secret_key)
        pulumi.set(__self__, "client_secret_scope", client_secret_scope)
        pulumi.set(__self__, "initialize_file_system", initialize_file_system)
        if container_name is not None:
            pulumi.set(__self__, "container_name", container_name)
        if directory is not None:
            pulumi.set(__self__, "directory", directory)
        if storage_account_name is not None:
            pulumi.set(__self__, "storage_account_name", storage_account_name)
        if tenant_id is not None:
            pulumi.set(__self__, "tenant_id", tenant_id)

    @property
    @pulumi.getter(name="clientId")
    def client_id(self) -> pulumi.Input[str]:
        return pulumi.get(self, "client_id")

    @client_id.setter
    def client_id(self, value: pulumi.Input[str]):
        pulumi.set(self, "client_id", value)

    @property
    @pulumi.getter(name="clientSecretKey")
    def client_secret_key(self) -> pulumi.Input[str]:
        return pulumi.get(self, "client_secret_key")

    @client_secret_key.setter
    def client_secret_key(self, value: pulumi.Input[str]):
        pulumi.set(self, "client_secret_key", value)

    @property
    @pulumi.getter(name="clientSecretScope")
    def client_secret_scope(self) -> pulumi.Input[str]:
        return pulumi.get(self, "client_secret_scope")

    @client_secret_scope.setter
    def client_secret_scope(self, value: pulumi.Input[str]):
        pulumi.set(self, "client_secret_scope", value)

    @property
    @pulumi.getter(name="initializeFileSystem")
    def initialize_file_system(self) -> pulumi.Input[bool]:
        return pulumi.get(self, "initialize_file_system")

    @initialize_file_system.setter
    def initialize_file_system(self, value: pulumi.Input[bool]):
        pulumi.set(self, "initialize_file_system", value)

    @property
    @pulumi.getter(name="containerName")
    def container_name(self) -> Optional[pulumi.Input[str]]:
        return pulumi.get(self, "container_name")

    @container_name.setter
    def container_name(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "container_name", value)

    @property
    @pulumi.getter
    def directory(self) -> Optional[pulumi.Input[str]]:
        return pulumi.get(self, "directory")

    @directory.setter
    def directory(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "directory", value)

    @property
    @pulumi.getter(name="storageAccountName")
    def storage_account_name(self) -> Optional[pulumi.Input[str]]:
        return pulumi.get(self, "storage_account_name")

    @storage_account_name.setter
    def storage_account_name(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "storage_account_name", value)

    @property
    @pulumi.getter(name="tenantId")
    def tenant_id(self) -> Optional[pulumi.Input[str]]:
        return pulumi.get(self, "tenant_id")

    @tenant_id.setter
    def tenant_id(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "tenant_id", value)


@pulumi.input_type
class MountAdlArgs:
    def __init__(__self__, *,
                 client_id: pulumi.Input[str],
                 client_secret_key: pulumi.Input[str],
                 client_secret_scope: pulumi.Input[str],
                 directory: Optional[pulumi.Input[str]] = None,
                 spark_conf_prefix: Optional[pulumi.Input[str]] = None,
                 storage_resource_name: Optional[pulumi.Input[str]] = None,
                 tenant_id: Optional[pulumi.Input[str]] = None):
        pulumi.set(__self__, "client_id", client_id)
        pulumi.set(__self__, "client_secret_key", client_secret_key)
        pulumi.set(__self__, "client_secret_scope", client_secret_scope)
        if directory is not None:
            pulumi.set(__self__, "directory", directory)
        if spark_conf_prefix is not None:
            pulumi.set(__self__, "spark_conf_prefix", spark_conf_prefix)
        if storage_resource_name is not None:
            pulumi.set(__self__, "storage_resource_name", storage_resource_name)
        if tenant_id is not None:
            pulumi.set(__self__, "tenant_id", tenant_id)

    @property
    @pulumi.getter(name="clientId")
    def client_id(self) -> pulumi.Input[str]:
        return pulumi.get(self, "client_id")

    @client_id.setter
    def client_id(self, value: pulumi.Input[str]):
        pulumi.set(self, "client_id", value)

    @property
    @pulumi.getter(name="clientSecretKey")
    def client_secret_key(self) -> pulumi.Input[str]:
        return pulumi.get(self, "client_secret_key")

    @client_secret_key.setter
    def client_secret_key(self, value: pulumi.Input[str]):
        pulumi.set(self, "client_secret_key", value)

    @property
    @pulumi.getter(name="clientSecretScope")
    def client_secret_scope(self) -> pulumi.Input[str]:
        return pulumi.get(self, "client_secret_scope")

    @client_secret_scope.setter
    def client_secret_scope(self, value: pulumi.Input[str]):
        pulumi.set(self, "client_secret_scope", value)

    @property
    @pulumi.getter
    def directory(self) -> Optional[pulumi.Input[str]]:
        return pulumi.get(self, "directory")

    @directory.setter
    def directory(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "directory", value)

    @property
    @pulumi.getter(name="sparkConfPrefix")
    def spark_conf_prefix(self) -> Optional[pulumi.Input[str]]:
        return pulumi.get(self, "spark_conf_prefix")

    @spark_conf_prefix.setter
    def spark_conf_prefix(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "spark_conf_prefix", value)

    @property
    @pulumi.getter(name="storageResourceName")
    def storage_resource_name(self) -> Optional[pulumi.Input[str]]:
        return pulumi.get(self, "storage_resource_name")

    @storage_resource_name.setter
    def storage_resource_name(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "storage_resource_name", value)

    @property
    @pulumi.getter(name="tenantId")
    def tenant_id(self) -> Optional[pulumi.Input[str]]:
        return pulumi.get(self, "tenant_id")

    @tenant_id.setter
    def tenant_id(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "tenant_id", value)


@pulumi.input_type
class MountGsArgs:
    def __init__(__self__, *,
                 bucket_name: pulumi.Input[str],
                 service_account: Optional[pulumi.Input[str]] = None):
        pulumi.set(__self__, "bucket_name", bucket_name)
        if service_account is not None:
            pulumi.set(__self__, "service_account", service_account)

    @property
    @pulumi.getter(name="bucketName")
    def bucket_name(self) -> pulumi.Input[str]:
        return pulumi.get(self, "bucket_name")

    @bucket_name.setter
    def bucket_name(self, value: pulumi.Input[str]):
        pulumi.set(self, "bucket_name", value)

    @property
    @pulumi.getter(name="serviceAccount")
    def service_account(self) -> Optional[pulumi.Input[str]]:
        return pulumi.get(self, "service_account")

    @service_account.setter
    def service_account(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "service_account", value)


@pulumi.input_type
class MountS3Args:
    def __init__(__self__, *,
                 bucket_name: pulumi.Input[str],
                 instance_profile: Optional[pulumi.Input[str]] = None):
        pulumi.set(__self__, "bucket_name", bucket_name)
        if instance_profile is not None:
            pulumi.set(__self__, "instance_profile", instance_profile)

    @property
    @pulumi.getter(name="bucketName")
    def bucket_name(self) -> pulumi.Input[str]:
        return pulumi.get(self, "bucket_name")

    @bucket_name.setter
    def bucket_name(self, value: pulumi.Input[str]):
        pulumi.set(self, "bucket_name", value)

    @property
    @pulumi.getter(name="instanceProfile")
    def instance_profile(self) -> Optional[pulumi.Input[str]]:
        return pulumi.get(self, "instance_profile")

    @instance_profile.setter
    def instance_profile(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "instance_profile", value)


@pulumi.input_type
class MountWasbArgs:
    def __init__(__self__, *,
                 auth_type: pulumi.Input[str],
                 token_secret_key: pulumi.Input[str],
                 token_secret_scope: pulumi.Input[str],
                 container_name: Optional[pulumi.Input[str]] = None,
                 directory: Optional[pulumi.Input[str]] = None,
                 storage_account_name: Optional[pulumi.Input[str]] = None):
        pulumi.set(__self__, "auth_type", auth_type)
        pulumi.set(__self__, "token_secret_key", token_secret_key)
        pulumi.set(__self__, "token_secret_scope", token_secret_scope)
        if container_name is not None:
            pulumi.set(__self__, "container_name", container_name)
        if directory is not None:
            pulumi.set(__self__, "directory", directory)
        if storage_account_name is not None:
            pulumi.set(__self__, "storage_account_name", storage_account_name)

    @property
    @pulumi.getter(name="authType")
    def auth_type(self) -> pulumi.Input[str]:
        return pulumi.get(self, "auth_type")

    @auth_type.setter
    def auth_type(self, value: pulumi.Input[str]):
        pulumi.set(self, "auth_type", value)

    @property
    @pulumi.getter(name="tokenSecretKey")
    def token_secret_key(self) -> pulumi.Input[str]:
        return pulumi.get(self, "token_secret_key")

    @token_secret_key.setter
    def token_secret_key(self, value: pulumi.Input[str]):
        pulumi.set(self, "token_secret_key", value)

    @property
    @pulumi.getter(name="tokenSecretScope")
    def token_secret_scope(self) -> pulumi.Input[str]:
        return pulumi.get(self, "token_secret_scope")

    @token_secret_scope.setter
    def token_secret_scope(self, value: pulumi.Input[str]):
        pulumi.set(self, "token_secret_scope", value)

    @property
    @pulumi.getter(name="containerName")
    def container_name(self) -> Optional[pulumi.Input[str]]:
        return pulumi.get(self, "container_name")

    @container_name.setter
    def container_name(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "container_name", value)

    @property
    @pulumi.getter
    def directory(self) -> Optional[pulumi.Input[str]]:
        return pulumi.get(self, "directory")

    @directory.setter
    def directory(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "directory", value)

    @property
    @pulumi.getter(name="storageAccountName")
    def storage_account_name(self) -> Optional[pulumi.Input[str]]:
        return pulumi.get(self, "storage_account_name")

    @storage_account_name.setter
    def storage_account_name(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "storage_account_name", value)


@pulumi.input_type
class MwsCustomerManagedKeysAwsKeyInfoArgs:
    def __init__(__self__, *,
                 key_alias: pulumi.Input[str],
                 key_arn: pulumi.Input[str],
                 key_region: Optional[pulumi.Input[str]] = None):
        """
        :param pulumi.Input[str] key_alias: The AWS KMS key alias.
        :param pulumi.Input[str] key_arn: The AWS KMS key's Amazon Resource Name (ARN).
        :param pulumi.Input[str] key_region: (Computed) The AWS region in which KMS key is deployed to. This is not required.
        """
        pulumi.set(__self__, "key_alias", key_alias)
        pulumi.set(__self__, "key_arn", key_arn)
        if key_region is not None:
            pulumi.set(__self__, "key_region", key_region)

    @property
    @pulumi.getter(name="keyAlias")
    def key_alias(self) -> pulumi.Input[str]:
        """
        The AWS KMS key alias.
        """
        return pulumi.get(self, "key_alias")

    @key_alias.setter
    def key_alias(self, value: pulumi.Input[str]):
        pulumi.set(self, "key_alias", value)

    @property
    @pulumi.getter(name="keyArn")
    def key_arn(self) -> pulumi.Input[str]:
        """
        The AWS KMS key's Amazon Resource Name (ARN).
        """
        return pulumi.get(self, "key_arn")

    @key_arn.setter
    def key_arn(self, value: pulumi.Input[str]):
        pulumi.set(self, "key_arn", value)

    @property
    @pulumi.getter(name="keyRegion")
    def key_region(self) -> Optional[pulumi.Input[str]]:
        """
        (Computed) The AWS region in which KMS key is deployed to. This is not required.
        """
        return pulumi.get(self, "key_region")

    @key_region.setter
    def key_region(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "key_region", value)


@pulumi.input_type
class MwsCustomerManagedKeysGcpKeyInfoArgs:
    def __init__(__self__, *,
                 kms_key_id: pulumi.Input[str]):
        pulumi.set(__self__, "kms_key_id", kms_key_id)

    @property
    @pulumi.getter(name="kmsKeyId")
    def kms_key_id(self) -> pulumi.Input[str]:
        return pulumi.get(self, "kms_key_id")

    @kms_key_id.setter
    def kms_key_id(self, value: pulumi.Input[str]):
        pulumi.set(self, "kms_key_id", value)


@pulumi.input_type
class MwsNetworksErrorMessageArgs:
    def __init__(__self__, *,
                 error_message: Optional[pulumi.Input[str]] = None,
                 error_type: Optional[pulumi.Input[str]] = None):
        if error_message is not None:
            pulumi.set(__self__, "error_message", error_message)
        if error_type is not None:
            pulumi.set(__self__, "error_type", error_type)

    @property
    @pulumi.getter(name="errorMessage")
    def error_message(self) -> Optional[pulumi.Input[str]]:
        return pulumi.get(self, "error_message")

    @error_message.setter
    def error_message(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "error_message", value)

    @property
    @pulumi.getter(name="errorType")
    def error_type(self) -> Optional[pulumi.Input[str]]:
        return pulumi.get(self, "error_type")

    @error_type.setter
    def error_type(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "error_type", value)


@pulumi.input_type
class MwsNetworksGcpNetworkInfoArgs:
    def __init__(__self__, *,
                 network_project_id: pulumi.Input[str],
                 pod_ip_range_name: pulumi.Input[str],
                 service_ip_range_name: pulumi.Input[str],
                 subnet_id: pulumi.Input[str],
                 subnet_region: pulumi.Input[str],
                 vpc_id: pulumi.Input[str]):
        """
        :param pulumi.Input[str] network_project_id: The Google Cloud project ID of the VPC network.
        :param pulumi.Input[str] pod_ip_range_name: The name of the secondary IP range for pods. A Databricks-managed GKE cluster uses this IP range for its pods. This secondary IP range can only be used by one workspace.
        :param pulumi.Input[str] service_ip_range_name: The name of the secondary IP range for services. A Databricks-managed GKE cluster uses this IP range for its services. This secondary IP range can only be used by one workspace.
        :param pulumi.Input[str] subnet_id: The ID of the subnet associated with this network.
        :param pulumi.Input[str] subnet_region: The Google Cloud region of the workspace data plane. For example, `us-east4`.
        :param pulumi.Input[str] vpc_id: The ID of the VPC associated with this network. VPC IDs can be used in multiple network configurations.
        """
        pulumi.set(__self__, "network_project_id", network_project_id)
        pulumi.set(__self__, "pod_ip_range_name", pod_ip_range_name)
        pulumi.set(__self__, "service_ip_range_name", service_ip_range_name)
        pulumi.set(__self__, "subnet_id", subnet_id)
        pulumi.set(__self__, "subnet_region", subnet_region)
        pulumi.set(__self__, "vpc_id", vpc_id)

    @property
    @pulumi.getter(name="networkProjectId")
    def network_project_id(self) -> pulumi.Input[str]:
        """
        The Google Cloud project ID of the VPC network.
        """
        return pulumi.get(self, "network_project_id")

    @network_project_id.setter
    def network_project_id(self, value: pulumi.Input[str]):
        pulumi.set(self, "network_project_id", value)

    @property
    @pulumi.getter(name="podIpRangeName")
    def pod_ip_range_name(self) -> pulumi.Input[str]:
        """
        The name of the secondary IP range for pods. A Databricks-managed GKE cluster uses this IP range for its pods. This secondary IP range can only be used by one workspace.
        """
        return pulumi.get(self, "pod_ip_range_name")

    @pod_ip_range_name.setter
    def pod_ip_range_name(self, value: pulumi.Input[str]):
        pulumi.set(self, "pod_ip_range_name", value)

    @property
    @pulumi.getter(name="serviceIpRangeName")
    def service_ip_range_name(self) -> pulumi.Input[str]:
        """
        The name of the secondary IP range for services. A Databricks-managed GKE cluster uses this IP range for its services. This secondary IP range can only be used by one workspace.
        """
        return pulumi.get(self, "service_ip_range_name")

    @service_ip_range_name.setter
    def service_ip_range_name(self, value: pulumi.Input[str]):
        pulumi.set(self, "service_ip_range_name", value)

    @property
    @pulumi.getter(name="subnetId")
    def subnet_id(self) -> pulumi.Input[str]:
        """
        The ID of the subnet associated with this network.
        """
        return pulumi.get(self, "subnet_id")

    @subnet_id.setter
    def subnet_id(self, value: pulumi.Input[str]):
        pulumi.set(self, "subnet_id", value)

    @property
    @pulumi.getter(name="subnetRegion")
    def subnet_region(self) -> pulumi.Input[str]:
        """
        The Google Cloud region of the workspace data plane. For example, `us-east4`.
        """
        return pulumi.get(self, "subnet_region")

    @subnet_region.setter
    def subnet_region(self, value: pulumi.Input[str]):
        pulumi.set(self, "subnet_region", value)

    @property
    @pulumi.getter(name="vpcId")
    def vpc_id(self) -> pulumi.Input[str]:
        """
        The ID of the VPC associated with this network. VPC IDs can be used in multiple network configurations.
        """
        return pulumi.get(self, "vpc_id")

    @vpc_id.setter
    def vpc_id(self, value: pulumi.Input[str]):
        pulumi.set(self, "vpc_id", value)


@pulumi.input_type
class MwsNetworksVpcEndpointsArgs:
    def __init__(__self__, *,
                 dataplane_relays: pulumi.Input[Sequence[pulumi.Input[str]]],
                 rest_apis: pulumi.Input[Sequence[pulumi.Input[str]]]):
        pulumi.set(__self__, "dataplane_relays", dataplane_relays)
        pulumi.set(__self__, "rest_apis", rest_apis)

    @property
    @pulumi.getter(name="dataplaneRelays")
    def dataplane_relays(self) -> pulumi.Input[Sequence[pulumi.Input[str]]]:
        return pulumi.get(self, "dataplane_relays")

    @dataplane_relays.setter
    def dataplane_relays(self, value: pulumi.Input[Sequence[pulumi.Input[str]]]):
        pulumi.set(self, "dataplane_relays", value)

    @property
    @pulumi.getter(name="restApis")
    def rest_apis(self) -> pulumi.Input[Sequence[pulumi.Input[str]]]:
        return pulumi.get(self, "rest_apis")

    @rest_apis.setter
    def rest_apis(self, value: pulumi.Input[Sequence[pulumi.Input[str]]]):
        pulumi.set(self, "rest_apis", value)


@pulumi.input_type
class MwsWorkspacesCloudResourceContainerArgs:
    def __init__(__self__, *,
                 gcp: pulumi.Input['MwsWorkspacesCloudResourceContainerGcpArgs']):
        """
        :param pulumi.Input['MwsWorkspacesCloudResourceContainerGcpArgs'] gcp: A block that consists of the following field:
        """
        pulumi.set(__self__, "gcp", gcp)

    @property
    @pulumi.getter
    def gcp(self) -> pulumi.Input['MwsWorkspacesCloudResourceContainerGcpArgs']:
        """
        A block that consists of the following field:
        """
        return pulumi.get(self, "gcp")

    @gcp.setter
    def gcp(self, value: pulumi.Input['MwsWorkspacesCloudResourceContainerGcpArgs']):
        pulumi.set(self, "gcp", value)


@pulumi.input_type
class MwsWorkspacesCloudResourceContainerGcpArgs:
    def __init__(__self__, *,
                 project_id: pulumi.Input[str]):
        """
        :param pulumi.Input[str] project_id: The Google Cloud project ID, which the workspace uses to instantiate cloud resources for your workspace.
        """
        pulumi.set(__self__, "project_id", project_id)

    @property
    @pulumi.getter(name="projectId")
    def project_id(self) -> pulumi.Input[str]:
        """
        The Google Cloud project ID, which the workspace uses to instantiate cloud resources for your workspace.
        """
        return pulumi.get(self, "project_id")

    @project_id.setter
    def project_id(self, value: pulumi.Input[str]):
        pulumi.set(self, "project_id", value)


@pulumi.input_type
class MwsWorkspacesExternalCustomerInfoArgs:
    def __init__(__self__, *,
                 authoritative_user_email: pulumi.Input[str],
                 authoritative_user_full_name: pulumi.Input[str],
                 customer_name: pulumi.Input[str]):
        pulumi.set(__self__, "authoritative_user_email", authoritative_user_email)
        pulumi.set(__self__, "authoritative_user_full_name", authoritative_user_full_name)
        pulumi.set(__self__, "customer_name", customer_name)

    @property
    @pulumi.getter(name="authoritativeUserEmail")
    def authoritative_user_email(self) -> pulumi.Input[str]:
        return pulumi.get(self, "authoritative_user_email")

    @authoritative_user_email.setter
    def authoritative_user_email(self, value: pulumi.Input[str]):
        pulumi.set(self, "authoritative_user_email", value)

    @property
    @pulumi.getter(name="authoritativeUserFullName")
    def authoritative_user_full_name(self) -> pulumi.Input[str]:
        return pulumi.get(self, "authoritative_user_full_name")

    @authoritative_user_full_name.setter
    def authoritative_user_full_name(self, value: pulumi.Input[str]):
        pulumi.set(self, "authoritative_user_full_name", value)

    @property
    @pulumi.getter(name="customerName")
    def customer_name(self) -> pulumi.Input[str]:
        return pulumi.get(self, "customer_name")

    @customer_name.setter
    def customer_name(self, value: pulumi.Input[str]):
        pulumi.set(self, "customer_name", value)


@pulumi.input_type
class MwsWorkspacesGcpManagedNetworkConfigArgs:
    def __init__(__self__, *,
                 gke_cluster_pod_ip_range: pulumi.Input[str],
                 gke_cluster_service_ip_range: pulumi.Input[str],
                 subnet_cidr: pulumi.Input[str]):
        pulumi.set(__self__, "gke_cluster_pod_ip_range", gke_cluster_pod_ip_range)
        pulumi.set(__self__, "gke_cluster_service_ip_range", gke_cluster_service_ip_range)
        pulumi.set(__self__, "subnet_cidr", subnet_cidr)

    @property
    @pulumi.getter(name="gkeClusterPodIpRange")
    def gke_cluster_pod_ip_range(self) -> pulumi.Input[str]:
        return pulumi.get(self, "gke_cluster_pod_ip_range")

    @gke_cluster_pod_ip_range.setter
    def gke_cluster_pod_ip_range(self, value: pulumi.Input[str]):
        pulumi.set(self, "gke_cluster_pod_ip_range", value)

    @property
    @pulumi.getter(name="gkeClusterServiceIpRange")
    def gke_cluster_service_ip_range(self) -> pulumi.Input[str]:
        return pulumi.get(self, "gke_cluster_service_ip_range")

    @gke_cluster_service_ip_range.setter
    def gke_cluster_service_ip_range(self, value: pulumi.Input[str]):
        pulumi.set(self, "gke_cluster_service_ip_range", value)

    @property
    @pulumi.getter(name="subnetCidr")
    def subnet_cidr(self) -> pulumi.Input[str]:
        return pulumi.get(self, "subnet_cidr")

    @subnet_cidr.setter
    def subnet_cidr(self, value: pulumi.Input[str]):
        pulumi.set(self, "subnet_cidr", value)


@pulumi.input_type
class MwsWorkspacesGkeConfigArgs:
    def __init__(__self__, *,
                 connectivity_type: pulumi.Input[str],
                 master_ip_range: pulumi.Input[str]):
        """
        :param pulumi.Input[str] connectivity_type: Specifies the network connectivity types for the GKE nodes and the GKE master network. Possible values are: `PRIVATE_NODE_PUBLIC_MASTER`, `PUBLIC_NODE_PUBLIC_MASTER`
        :param pulumi.Input[str] master_ip_range: The IP range from which to allocate GKE cluster master resources. This field will be ignored if GKE private cluster is not enabled. It must be exactly as big as `/28`.
        """
        pulumi.set(__self__, "connectivity_type", connectivity_type)
        pulumi.set(__self__, "master_ip_range", master_ip_range)

    @property
    @pulumi.getter(name="connectivityType")
    def connectivity_type(self) -> pulumi.Input[str]:
        """
        Specifies the network connectivity types for the GKE nodes and the GKE master network. Possible values are: `PRIVATE_NODE_PUBLIC_MASTER`, `PUBLIC_NODE_PUBLIC_MASTER`
        """
        return pulumi.get(self, "connectivity_type")

    @connectivity_type.setter
    def connectivity_type(self, value: pulumi.Input[str]):
        pulumi.set(self, "connectivity_type", value)

    @property
    @pulumi.getter(name="masterIpRange")
    def master_ip_range(self) -> pulumi.Input[str]:
        """
        The IP range from which to allocate GKE cluster master resources. This field will be ignored if GKE private cluster is not enabled. It must be exactly as big as `/28`.
        """
        return pulumi.get(self, "master_ip_range")

    @master_ip_range.setter
    def master_ip_range(self, value: pulumi.Input[str]):
        pulumi.set(self, "master_ip_range", value)


@pulumi.input_type
class MwsWorkspacesTokenArgs:
    def __init__(__self__, *,
                 comment: Optional[pulumi.Input[str]] = None,
                 lifetime_seconds: Optional[pulumi.Input[int]] = None,
                 token_id: Optional[pulumi.Input[str]] = None,
                 token_value: Optional[pulumi.Input[str]] = None):
        if comment is not None:
            pulumi.set(__self__, "comment", comment)
        if lifetime_seconds is not None:
            pulumi.set(__self__, "lifetime_seconds", lifetime_seconds)
        if token_id is not None:
            pulumi.set(__self__, "token_id", token_id)
        if token_value is not None:
            pulumi.set(__self__, "token_value", token_value)

    @property
    @pulumi.getter
    def comment(self) -> Optional[pulumi.Input[str]]:
        return pulumi.get(self, "comment")

    @comment.setter
    def comment(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "comment", value)

    @property
    @pulumi.getter(name="lifetimeSeconds")
    def lifetime_seconds(self) -> Optional[pulumi.Input[int]]:
        return pulumi.get(self, "lifetime_seconds")

    @lifetime_seconds.setter
    def lifetime_seconds(self, value: Optional[pulumi.Input[int]]):
        pulumi.set(self, "lifetime_seconds", value)

    @property
    @pulumi.getter(name="tokenId")
    def token_id(self) -> Optional[pulumi.Input[str]]:
        return pulumi.get(self, "token_id")

    @token_id.setter
    def token_id(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "token_id", value)

    @property
    @pulumi.getter(name="tokenValue")
    def token_value(self) -> Optional[pulumi.Input[str]]:
        return pulumi.get(self, "token_value")

    @token_value.setter
    def token_value(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "token_value", value)


@pulumi.input_type
class PermissionsAccessControlArgs:
    def __init__(__self__, *,
                 permission_level: pulumi.Input[str],
                 group_name: Optional[pulumi.Input[str]] = None,
                 service_principal_name: Optional[pulumi.Input[str]] = None,
                 user_name: Optional[pulumi.Input[str]] = None):
        """
        :param pulumi.Input[str] permission_level: permission level according to specific resource. See examples above for the reference.
        :param pulumi.Input[str] group_name: name of the group. We recommend setting permissions on groups.
        :param pulumi.Input[str] service_principal_name: Application ID of the service_principal.
        :param pulumi.Input[str] user_name: name of the user.
        """
        pulumi.set(__self__, "permission_level", permission_level)
        if group_name is not None:
            pulumi.set(__self__, "group_name", group_name)
        if service_principal_name is not None:
            pulumi.set(__self__, "service_principal_name", service_principal_name)
        if user_name is not None:
            pulumi.set(__self__, "user_name", user_name)

    @property
    @pulumi.getter(name="permissionLevel")
    def permission_level(self) -> pulumi.Input[str]:
        """
        permission level according to specific resource. See examples above for the reference.
        """
        return pulumi.get(self, "permission_level")

    @permission_level.setter
    def permission_level(self, value: pulumi.Input[str]):
        pulumi.set(self, "permission_level", value)

    @property
    @pulumi.getter(name="groupName")
    def group_name(self) -> Optional[pulumi.Input[str]]:
        """
        name of the group. We recommend setting permissions on groups.
        """
        return pulumi.get(self, "group_name")

    @group_name.setter
    def group_name(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "group_name", value)

    @property
    @pulumi.getter(name="servicePrincipalName")
    def service_principal_name(self) -> Optional[pulumi.Input[str]]:
        """
        Application ID of the service_principal.
        """
        return pulumi.get(self, "service_principal_name")

    @service_principal_name.setter
    def service_principal_name(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "service_principal_name", value)

    @property
    @pulumi.getter(name="userName")
    def user_name(self) -> Optional[pulumi.Input[str]]:
        """
        name of the user.
        """
        return pulumi.get(self, "user_name")

    @user_name.setter
    def user_name(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "user_name", value)


@pulumi.input_type
class PipelineClusterArgs:
    def __init__(__self__, *,
                 apply_policy_default_values: Optional[pulumi.Input[bool]] = None,
                 autoscale: Optional[pulumi.Input['PipelineClusterAutoscaleArgs']] = None,
                 aws_attributes: Optional[pulumi.Input['PipelineClusterAwsAttributesArgs']] = None,
                 azure_attributes: Optional[pulumi.Input['PipelineClusterAzureAttributesArgs']] = None,
                 cluster_log_conf: Optional[pulumi.Input['PipelineClusterClusterLogConfArgs']] = None,
                 custom_tags: Optional[pulumi.Input[Mapping[str, Any]]] = None,
                 driver_instance_pool_id: Optional[pulumi.Input[str]] = None,
                 driver_node_type_id: Optional[pulumi.Input[str]] = None,
                 enable_local_disk_encryption: Optional[pulumi.Input[bool]] = None,
                 gcp_attributes: Optional[pulumi.Input['PipelineClusterGcpAttributesArgs']] = None,
                 init_scripts: Optional[pulumi.Input[Sequence[pulumi.Input['PipelineClusterInitScriptArgs']]]] = None,
                 instance_pool_id: Optional[pulumi.Input[str]] = None,
                 label: Optional[pulumi.Input[str]] = None,
                 node_type_id: Optional[pulumi.Input[str]] = None,
                 num_workers: Optional[pulumi.Input[int]] = None,
                 policy_id: Optional[pulumi.Input[str]] = None,
                 spark_conf: Optional[pulumi.Input[Mapping[str, Any]]] = None,
                 spark_env_vars: Optional[pulumi.Input[Mapping[str, Any]]] = None,
                 ssh_public_keys: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None):
        if apply_policy_default_values is not None:
            pulumi.set(__self__, "apply_policy_default_values", apply_policy_default_values)
        if autoscale is not None:
            pulumi.set(__self__, "autoscale", autoscale)
        if aws_attributes is not None:
            pulumi.set(__self__, "aws_attributes", aws_attributes)
        if azure_attributes is not None:
            pulumi.set(__self__, "azure_attributes", azure_attributes)
        if cluster_log_conf is not None:
            pulumi.set(__self__, "cluster_log_conf", cluster_log_conf)
        if custom_tags is not None:
            pulumi.set(__self__, "custom_tags", custom_tags)
        if driver_instance_pool_id is not None:
            pulumi.set(__self__, "driver_instance_pool_id", driver_instance_pool_id)
        if driver_node_type_id is not None:
            pulumi.set(__self__, "driver_node_type_id", driver_node_type_id)
        if enable_local_disk_encryption is not None:
            pulumi.set(__self__, "enable_local_disk_encryption", enable_local_disk_encryption)
        if gcp_attributes is not None:
            pulumi.set(__self__, "gcp_attributes", gcp_attributes)
        if init_scripts is not None:
            pulumi.set(__self__, "init_scripts", init_scripts)
        if instance_pool_id is not None:
            pulumi.set(__self__, "instance_pool_id", instance_pool_id)
        if label is not None:
            pulumi.set(__self__, "label", label)
        if node_type_id is not None:
            pulumi.set(__self__, "node_type_id", node_type_id)
        if num_workers is not None:
            pulumi.set(__self__, "num_workers", num_workers)
        if policy_id is not None:
            pulumi.set(__self__, "policy_id", policy_id)
        if spark_conf is not None:
            pulumi.set(__self__, "spark_conf", spark_conf)
        if spark_env_vars is not None:
            pulumi.set(__self__, "spark_env_vars", spark_env_vars)
        if ssh_public_keys is not None:
            pulumi.set(__self__, "ssh_public_keys", ssh_public_keys)

    @property
    @pulumi.getter(name="applyPolicyDefaultValues")
    def apply_policy_default_values(self) -> Optional[pulumi.Input[bool]]:
        return pulumi.get(self, "apply_policy_default_values")

    @apply_policy_default_values.setter
    def apply_policy_default_values(self, value: Optional[pulumi.Input[bool]]):
        pulumi.set(self, "apply_policy_default_values", value)

    @property
    @pulumi.getter
    def autoscale(self) -> Optional[pulumi.Input['PipelineClusterAutoscaleArgs']]:
        return pulumi.get(self, "autoscale")

    @autoscale.setter
    def autoscale(self, value: Optional[pulumi.Input['PipelineClusterAutoscaleArgs']]):
        pulumi.set(self, "autoscale", value)

    @property
    @pulumi.getter(name="awsAttributes")
    def aws_attributes(self) -> Optional[pulumi.Input['PipelineClusterAwsAttributesArgs']]:
        return pulumi.get(self, "aws_attributes")

    @aws_attributes.setter
    def aws_attributes(self, value: Optional[pulumi.Input['PipelineClusterAwsAttributesArgs']]):
        pulumi.set(self, "aws_attributes", value)

    @property
    @pulumi.getter(name="azureAttributes")
    def azure_attributes(self) -> Optional[pulumi.Input['PipelineClusterAzureAttributesArgs']]:
        return pulumi.get(self, "azure_attributes")

    @azure_attributes.setter
    def azure_attributes(self, value: Optional[pulumi.Input['PipelineClusterAzureAttributesArgs']]):
        pulumi.set(self, "azure_attributes", value)

    @property
    @pulumi.getter(name="clusterLogConf")
    def cluster_log_conf(self) -> Optional[pulumi.Input['PipelineClusterClusterLogConfArgs']]:
        return pulumi.get(self, "cluster_log_conf")

    @cluster_log_conf.setter
    def cluster_log_conf(self, value: Optional[pulumi.Input['PipelineClusterClusterLogConfArgs']]):
        pulumi.set(self, "cluster_log_conf", value)

    @property
    @pulumi.getter(name="customTags")
    def custom_tags(self) -> Optional[pulumi.Input[Mapping[str, Any]]]:
        return pulumi.get(self, "custom_tags")

    @custom_tags.setter
    def custom_tags(self, value: Optional[pulumi.Input[Mapping[str, Any]]]):
        pulumi.set(self, "custom_tags", value)

    @property
    @pulumi.getter(name="driverInstancePoolId")
    def driver_instance_pool_id(self) -> Optional[pulumi.Input[str]]:
        return pulumi.get(self, "driver_instance_pool_id")

    @driver_instance_pool_id.setter
    def driver_instance_pool_id(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "driver_instance_pool_id", value)

    @property
    @pulumi.getter(name="driverNodeTypeId")
    def driver_node_type_id(self) -> Optional[pulumi.Input[str]]:
        return pulumi.get(self, "driver_node_type_id")

    @driver_node_type_id.setter
    def driver_node_type_id(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "driver_node_type_id", value)

    @property
    @pulumi.getter(name="enableLocalDiskEncryption")
    def enable_local_disk_encryption(self) -> Optional[pulumi.Input[bool]]:
        return pulumi.get(self, "enable_local_disk_encryption")

    @enable_local_disk_encryption.setter
    def enable_local_disk_encryption(self, value: Optional[pulumi.Input[bool]]):
        pulumi.set(self, "enable_local_disk_encryption", value)

    @property
    @pulumi.getter(name="gcpAttributes")
    def gcp_attributes(self) -> Optional[pulumi.Input['PipelineClusterGcpAttributesArgs']]:
        return pulumi.get(self, "gcp_attributes")

    @gcp_attributes.setter
    def gcp_attributes(self, value: Optional[pulumi.Input['PipelineClusterGcpAttributesArgs']]):
        pulumi.set(self, "gcp_attributes", value)

    @property
    @pulumi.getter(name="initScripts")
    def init_scripts(self) -> Optional[pulumi.Input[Sequence[pulumi.Input['PipelineClusterInitScriptArgs']]]]:
        return pulumi.get(self, "init_scripts")

    @init_scripts.setter
    def init_scripts(self, value: Optional[pulumi.Input[Sequence[pulumi.Input['PipelineClusterInitScriptArgs']]]]):
        pulumi.set(self, "init_scripts", value)

    @property
    @pulumi.getter(name="instancePoolId")
    def instance_pool_id(self) -> Optional[pulumi.Input[str]]:
        return pulumi.get(self, "instance_pool_id")

    @instance_pool_id.setter
    def instance_pool_id(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "instance_pool_id", value)

    @property
    @pulumi.getter
    def label(self) -> Optional[pulumi.Input[str]]:
        return pulumi.get(self, "label")

    @label.setter
    def label(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "label", value)

    @property
    @pulumi.getter(name="nodeTypeId")
    def node_type_id(self) -> Optional[pulumi.Input[str]]:
        return pulumi.get(self, "node_type_id")

    @node_type_id.setter
    def node_type_id(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "node_type_id", value)

    @property
    @pulumi.getter(name="numWorkers")
    def num_workers(self) -> Optional[pulumi.Input[int]]:
        return pulumi.get(self, "num_workers")

    @num_workers.setter
    def num_workers(self, value: Optional[pulumi.Input[int]]):
        pulumi.set(self, "num_workers", value)

    @property
    @pulumi.getter(name="policyId")
    def policy_id(self) -> Optional[pulumi.Input[str]]:
        return pulumi.get(self, "policy_id")

    @policy_id.setter
    def policy_id(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "policy_id", value)

    @property
    @pulumi.getter(name="sparkConf")
    def spark_conf(self) -> Optional[pulumi.Input[Mapping[str, Any]]]:
        return pulumi.get(self, "spark_conf")

    @spark_conf.setter
    def spark_conf(self, value: Optional[pulumi.Input[Mapping[str, Any]]]):
        pulumi.set(self, "spark_conf", value)

    @property
    @pulumi.getter(name="sparkEnvVars")
    def spark_env_vars(self) -> Optional[pulumi.Input[Mapping[str, Any]]]:
        return pulumi.get(self, "spark_env_vars")

    @spark_env_vars.setter
    def spark_env_vars(self, value: Optional[pulumi.Input[Mapping[str, Any]]]):
        pulumi.set(self, "spark_env_vars", value)

    @property
    @pulumi.getter(name="sshPublicKeys")
    def ssh_public_keys(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]:
        return pulumi.get(self, "ssh_public_keys")

    @ssh_public_keys.setter
    def ssh_public_keys(self, value: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]):
        pulumi.set(self, "ssh_public_keys", value)


@pulumi.input_type
class PipelineClusterAutoscaleArgs:
    def __init__(__self__, *,
                 max_workers: Optional[pulumi.Input[int]] = None,
                 min_workers: Optional[pulumi.Input[int]] = None,
                 mode: Optional[pulumi.Input[str]] = None):
        if max_workers is not None:
            pulumi.set(__self__, "max_workers", max_workers)
        if min_workers is not None:
            pulumi.set(__self__, "min_workers", min_workers)
        if mode is not None:
            pulumi.set(__self__, "mode", mode)

    @property
    @pulumi.getter(name="maxWorkers")
    def max_workers(self) -> Optional[pulumi.Input[int]]:
        return pulumi.get(self, "max_workers")

    @max_workers.setter
    def max_workers(self, value: Optional[pulumi.Input[int]]):
        pulumi.set(self, "max_workers", value)

    @property
    @pulumi.getter(name="minWorkers")
    def min_workers(self) -> Optional[pulumi.Input[int]]:
        return pulumi.get(self, "min_workers")

    @min_workers.setter
    def min_workers(self, value: Optional[pulumi.Input[int]]):
        pulumi.set(self, "min_workers", value)

    @property
    @pulumi.getter
    def mode(self) -> Optional[pulumi.Input[str]]:
        return pulumi.get(self, "mode")

    @mode.setter
    def mode(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "mode", value)


@pulumi.input_type
class PipelineClusterAwsAttributesArgs:
    def __init__(__self__, *,
                 availability: Optional[pulumi.Input[str]] = None,
                 ebs_volume_count: Optional[pulumi.Input[int]] = None,
                 ebs_volume_size: Optional[pulumi.Input[int]] = None,
                 ebs_volume_type: Optional[pulumi.Input[str]] = None,
                 first_on_demand: Optional[pulumi.Input[int]] = None,
                 instance_profile_arn: Optional[pulumi.Input[str]] = None,
                 spot_bid_price_percent: Optional[pulumi.Input[int]] = None,
                 zone_id: Optional[pulumi.Input[str]] = None):
        if availability is not None:
            pulumi.set(__self__, "availability", availability)
        if ebs_volume_count is not None:
            pulumi.set(__self__, "ebs_volume_count", ebs_volume_count)
        if ebs_volume_size is not None:
            pulumi.set(__self__, "ebs_volume_size", ebs_volume_size)
        if ebs_volume_type is not None:
            pulumi.set(__self__, "ebs_volume_type", ebs_volume_type)
        if first_on_demand is not None:
            pulumi.set(__self__, "first_on_demand", first_on_demand)
        if instance_profile_arn is not None:
            pulumi.set(__self__, "instance_profile_arn", instance_profile_arn)
        if spot_bid_price_percent is not None:
            pulumi.set(__self__, "spot_bid_price_percent", spot_bid_price_percent)
        if zone_id is not None:
            pulumi.set(__self__, "zone_id", zone_id)

    @property
    @pulumi.getter
    def availability(self) -> Optional[pulumi.Input[str]]:
        return pulumi.get(self, "availability")

    @availability.setter
    def availability(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "availability", value)

    @property
    @pulumi.getter(name="ebsVolumeCount")
    def ebs_volume_count(self) -> Optional[pulumi.Input[int]]:
        return pulumi.get(self, "ebs_volume_count")

    @ebs_volume_count.setter
    def ebs_volume_count(self, value: Optional[pulumi.Input[int]]):
        pulumi.set(self, "ebs_volume_count", value)

    @property
    @pulumi.getter(name="ebsVolumeSize")
    def ebs_volume_size(self) -> Optional[pulumi.Input[int]]:
        return pulumi.get(self, "ebs_volume_size")

    @ebs_volume_size.setter
    def ebs_volume_size(self, value: Optional[pulumi.Input[int]]):
        pulumi.set(self, "ebs_volume_size", value)

    @property
    @pulumi.getter(name="ebsVolumeType")
    def ebs_volume_type(self) -> Optional[pulumi.Input[str]]:
        return pulumi.get(self, "ebs_volume_type")

    @ebs_volume_type.setter
    def ebs_volume_type(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "ebs_volume_type", value)

    @property
    @pulumi.getter(name="firstOnDemand")
    def first_on_demand(self) -> Optional[pulumi.Input[int]]:
        return pulumi.get(self, "first_on_demand")

    @first_on_demand.setter
    def first_on_demand(self, value: Optional[pulumi.Input[int]]):
        pulumi.set(self, "first_on_demand", value)

    @property
    @pulumi.getter(name="instanceProfileArn")
    def instance_profile_arn(self) -> Optional[pulumi.Input[str]]:
        return pulumi.get(self, "instance_profile_arn")

    @instance_profile_arn.setter
    def instance_profile_arn(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "instance_profile_arn", value)

    @property
    @pulumi.getter(name="spotBidPricePercent")
    def spot_bid_price_percent(self) -> Optional[pulumi.Input[int]]:
        return pulumi.get(self, "spot_bid_price_percent")

    @spot_bid_price_percent.setter
    def spot_bid_price_percent(self, value: Optional[pulumi.Input[int]]):
        pulumi.set(self, "spot_bid_price_percent", value)

    @property
    @pulumi.getter(name="zoneId")
    def zone_id(self) -> Optional[pulumi.Input[str]]:
        return pulumi.get(self, "zone_id")

    @zone_id.setter
    def zone_id(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "zone_id", value)


@pulumi.input_type
class PipelineClusterAzureAttributesArgs:
    def __init__(__self__, *,
                 availability: Optional[pulumi.Input[str]] = None,
                 first_on_demand: Optional[pulumi.Input[int]] = None,
                 spot_bid_max_price: Optional[pulumi.Input[float]] = None):
        if availability is not None:
            pulumi.set(__self__, "availability", availability)
        if first_on_demand is not None:
            pulumi.set(__self__, "first_on_demand", first_on_demand)
        if spot_bid_max_price is not None:
            pulumi.set(__self__, "spot_bid_max_price", spot_bid_max_price)

    @property
    @pulumi.getter
    def availability(self) -> Optional[pulumi.Input[str]]:
        return pulumi.get(self, "availability")

    @availability.setter
    def availability(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "availability", value)

    @property
    @pulumi.getter(name="firstOnDemand")
    def first_on_demand(self) -> Optional[pulumi.Input[int]]:
        return pulumi.get(self, "first_on_demand")

    @first_on_demand.setter
    def first_on_demand(self, value: Optional[pulumi.Input[int]]):
        pulumi.set(self, "first_on_demand", value)

    @property
    @pulumi.getter(name="spotBidMaxPrice")
    def spot_bid_max_price(self) -> Optional[pulumi.Input[float]]:
        return pulumi.get(self, "spot_bid_max_price")

    @spot_bid_max_price.setter
    def spot_bid_max_price(self, value: Optional[pulumi.Input[float]]):
        pulumi.set(self, "spot_bid_max_price", value)


@pulumi.input_type
class PipelineClusterClusterLogConfArgs:
    def __init__(__self__, *,
                 dbfs: Optional[pulumi.Input['PipelineClusterClusterLogConfDbfsArgs']] = None,
                 s3: Optional[pulumi.Input['PipelineClusterClusterLogConfS3Args']] = None):
        if dbfs is not None:
            pulumi.set(__self__, "dbfs", dbfs)
        if s3 is not None:
            pulumi.set(__self__, "s3", s3)

    @property
    @pulumi.getter
    def dbfs(self) -> Optional[pulumi.Input['PipelineClusterClusterLogConfDbfsArgs']]:
        return pulumi.get(self, "dbfs")

    @dbfs.setter
    def dbfs(self, value: Optional[pulumi.Input['PipelineClusterClusterLogConfDbfsArgs']]):
        pulumi.set(self, "dbfs", value)

    @property
    @pulumi.getter
    def s3(self) -> Optional[pulumi.Input['PipelineClusterClusterLogConfS3Args']]:
        return pulumi.get(self, "s3")

    @s3.setter
    def s3(self, value: Optional[pulumi.Input['PipelineClusterClusterLogConfS3Args']]):
        pulumi.set(self, "s3", value)


@pulumi.input_type
class PipelineClusterClusterLogConfDbfsArgs:
    def __init__(__self__, *,
                 destination: pulumi.Input[str]):
        pulumi.set(__self__, "destination", destination)

    @property
    @pulumi.getter
    def destination(self) -> pulumi.Input[str]:
        return pulumi.get(self, "destination")

    @destination.setter
    def destination(self, value: pulumi.Input[str]):
        pulumi.set(self, "destination", value)


@pulumi.input_type
class PipelineClusterClusterLogConfS3Args:
    def __init__(__self__, *,
                 destination: pulumi.Input[str],
                 canned_acl: Optional[pulumi.Input[str]] = None,
                 enable_encryption: Optional[pulumi.Input[bool]] = None,
                 encryption_type: Optional[pulumi.Input[str]] = None,
                 endpoint: Optional[pulumi.Input[str]] = None,
                 kms_key: Optional[pulumi.Input[str]] = None,
                 region: Optional[pulumi.Input[str]] = None):
        pulumi.set(__self__, "destination", destination)
        if canned_acl is not None:
            pulumi.set(__self__, "canned_acl", canned_acl)
        if enable_encryption is not None:
            pulumi.set(__self__, "enable_encryption", enable_encryption)
        if encryption_type is not None:
            pulumi.set(__self__, "encryption_type", encryption_type)
        if endpoint is not None:
            pulumi.set(__self__, "endpoint", endpoint)
        if kms_key is not None:
            pulumi.set(__self__, "kms_key", kms_key)
        if region is not None:
            pulumi.set(__self__, "region", region)

    @property
    @pulumi.getter
    def destination(self) -> pulumi.Input[str]:
        return pulumi.get(self, "destination")

    @destination.setter
    def destination(self, value: pulumi.Input[str]):
        pulumi.set(self, "destination", value)

    @property
    @pulumi.getter(name="cannedAcl")
    def canned_acl(self) -> Optional[pulumi.Input[str]]:
        return pulumi.get(self, "canned_acl")

    @canned_acl.setter
    def canned_acl(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "canned_acl", value)

    @property
    @pulumi.getter(name="enableEncryption")
    def enable_encryption(self) -> Optional[pulumi.Input[bool]]:
        return pulumi.get(self, "enable_encryption")

    @enable_encryption.setter
    def enable_encryption(self, value: Optional[pulumi.Input[bool]]):
        pulumi.set(self, "enable_encryption", value)

    @property
    @pulumi.getter(name="encryptionType")
    def encryption_type(self) -> Optional[pulumi.Input[str]]:
        return pulumi.get(self, "encryption_type")

    @encryption_type.setter
    def encryption_type(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "encryption_type", value)

    @property
    @pulumi.getter
    def endpoint(self) -> Optional[pulumi.Input[str]]:
        return pulumi.get(self, "endpoint")

    @endpoint.setter
    def endpoint(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "endpoint", value)

    @property
    @pulumi.getter(name="kmsKey")
    def kms_key(self) -> Optional[pulumi.Input[str]]:
        return pulumi.get(self, "kms_key")

    @kms_key.setter
    def kms_key(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "kms_key", value)

    @property
    @pulumi.getter
    def region(self) -> Optional[pulumi.Input[str]]:
        return pulumi.get(self, "region")

    @region.setter
    def region(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "region", value)


@pulumi.input_type
class PipelineClusterGcpAttributesArgs:
    def __init__(__self__, *,
                 availability: Optional[pulumi.Input[str]] = None,
                 google_service_account: Optional[pulumi.Input[str]] = None,
                 zone_id: Optional[pulumi.Input[str]] = None):
        if availability is not None:
            pulumi.set(__self__, "availability", availability)
        if google_service_account is not None:
            pulumi.set(__self__, "google_service_account", google_service_account)
        if zone_id is not None:
            pulumi.set(__self__, "zone_id", zone_id)

    @property
    @pulumi.getter
    def availability(self) -> Optional[pulumi.Input[str]]:
        return pulumi.get(self, "availability")

    @availability.setter
    def availability(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "availability", value)

    @property
    @pulumi.getter(name="googleServiceAccount")
    def google_service_account(self) -> Optional[pulumi.Input[str]]:
        return pulumi.get(self, "google_service_account")

    @google_service_account.setter
    def google_service_account(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "google_service_account", value)

    @property
    @pulumi.getter(name="zoneId")
    def zone_id(self) -> Optional[pulumi.Input[str]]:
        return pulumi.get(self, "zone_id")

    @zone_id.setter
    def zone_id(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "zone_id", value)


@pulumi.input_type
class PipelineClusterInitScriptArgs:
    def __init__(__self__, *,
                 abfss: Optional[pulumi.Input['PipelineClusterInitScriptAbfssArgs']] = None,
                 dbfs: Optional[pulumi.Input['PipelineClusterInitScriptDbfsArgs']] = None,
                 file: Optional[pulumi.Input['PipelineClusterInitScriptFileArgs']] = None,
                 gcs: Optional[pulumi.Input['PipelineClusterInitScriptGcsArgs']] = None,
                 s3: Optional[pulumi.Input['PipelineClusterInitScriptS3Args']] = None):
        if abfss is not None:
            pulumi.set(__self__, "abfss", abfss)
        if dbfs is not None:
            pulumi.set(__self__, "dbfs", dbfs)
        if file is not None:
            pulumi.set(__self__, "file", file)
        if gcs is not None:
            pulumi.set(__self__, "gcs", gcs)
        if s3 is not None:
            pulumi.set(__self__, "s3", s3)

    @property
    @pulumi.getter
    def abfss(self) -> Optional[pulumi.Input['PipelineClusterInitScriptAbfssArgs']]:
        return pulumi.get(self, "abfss")

    @abfss.setter
    def abfss(self, value: Optional[pulumi.Input['PipelineClusterInitScriptAbfssArgs']]):
        pulumi.set(self, "abfss", value)

    @property
    @pulumi.getter
    def dbfs(self) -> Optional[pulumi.Input['PipelineClusterInitScriptDbfsArgs']]:
        return pulumi.get(self, "dbfs")

    @dbfs.setter
    def dbfs(self, value: Optional[pulumi.Input['PipelineClusterInitScriptDbfsArgs']]):
        pulumi.set(self, "dbfs", value)

    @property
    @pulumi.getter
    def file(self) -> Optional[pulumi.Input['PipelineClusterInitScriptFileArgs']]:
        return pulumi.get(self, "file")

    @file.setter
    def file(self, value: Optional[pulumi.Input['PipelineClusterInitScriptFileArgs']]):
        pulumi.set(self, "file", value)

    @property
    @pulumi.getter
    def gcs(self) -> Optional[pulumi.Input['PipelineClusterInitScriptGcsArgs']]:
        return pulumi.get(self, "gcs")

    @gcs.setter
    def gcs(self, value: Optional[pulumi.Input['PipelineClusterInitScriptGcsArgs']]):
        pulumi.set(self, "gcs", value)

    @property
    @pulumi.getter
    def s3(self) -> Optional[pulumi.Input['PipelineClusterInitScriptS3Args']]:
        return pulumi.get(self, "s3")

    @s3.setter
    def s3(self, value: Optional[pulumi.Input['PipelineClusterInitScriptS3Args']]):
        pulumi.set(self, "s3", value)


@pulumi.input_type
class PipelineClusterInitScriptAbfssArgs:
    def __init__(__self__, *,
                 destination: Optional[pulumi.Input[str]] = None):
        if destination is not None:
            pulumi.set(__self__, "destination", destination)

    @property
    @pulumi.getter
    def destination(self) -> Optional[pulumi.Input[str]]:
        return pulumi.get(self, "destination")

    @destination.setter
    def destination(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "destination", value)


@pulumi.input_type
class PipelineClusterInitScriptDbfsArgs:
    def __init__(__self__, *,
                 destination: pulumi.Input[str]):
        pulumi.set(__self__, "destination", destination)

    @property
    @pulumi.getter
    def destination(self) -> pulumi.Input[str]:
        return pulumi.get(self, "destination")

    @destination.setter
    def destination(self, value: pulumi.Input[str]):
        pulumi.set(self, "destination", value)


@pulumi.input_type
class PipelineClusterInitScriptFileArgs:
    def __init__(__self__, *,
                 destination: Optional[pulumi.Input[str]] = None):
        if destination is not None:
            pulumi.set(__self__, "destination", destination)

    @property
    @pulumi.getter
    def destination(self) -> Optional[pulumi.Input[str]]:
        return pulumi.get(self, "destination")

    @destination.setter
    def destination(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "destination", value)


@pulumi.input_type
class PipelineClusterInitScriptGcsArgs:
    def __init__(__self__, *,
                 destination: Optional[pulumi.Input[str]] = None):
        if destination is not None:
            pulumi.set(__self__, "destination", destination)

    @property
    @pulumi.getter
    def destination(self) -> Optional[pulumi.Input[str]]:
        return pulumi.get(self, "destination")

    @destination.setter
    def destination(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "destination", value)


@pulumi.input_type
class PipelineClusterInitScriptS3Args:
    def __init__(__self__, *,
                 destination: pulumi.Input[str],
                 canned_acl: Optional[pulumi.Input[str]] = None,
                 enable_encryption: Optional[pulumi.Input[bool]] = None,
                 encryption_type: Optional[pulumi.Input[str]] = None,
                 endpoint: Optional[pulumi.Input[str]] = None,
                 kms_key: Optional[pulumi.Input[str]] = None,
                 region: Optional[pulumi.Input[str]] = None):
        pulumi.set(__self__, "destination", destination)
        if canned_acl is not None:
            pulumi.set(__self__, "canned_acl", canned_acl)
        if enable_encryption is not None:
            pulumi.set(__self__, "enable_encryption", enable_encryption)
        if encryption_type is not None:
            pulumi.set(__self__, "encryption_type", encryption_type)
        if endpoint is not None:
            pulumi.set(__self__, "endpoint", endpoint)
        if kms_key is not None:
            pulumi.set(__self__, "kms_key", kms_key)
        if region is not None:
            pulumi.set(__self__, "region", region)

    @property
    @pulumi.getter
    def destination(self) -> pulumi.Input[str]:
        return pulumi.get(self, "destination")

    @destination.setter
    def destination(self, value: pulumi.Input[str]):
        pulumi.set(self, "destination", value)

    @property
    @pulumi.getter(name="cannedAcl")
    def canned_acl(self) -> Optional[pulumi.Input[str]]:
        return pulumi.get(self, "canned_acl")

    @canned_acl.setter
    def canned_acl(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "canned_acl", value)

    @property
    @pulumi.getter(name="enableEncryption")
    def enable_encryption(self) -> Optional[pulumi.Input[bool]]:
        return pulumi.get(self, "enable_encryption")

    @enable_encryption.setter
    def enable_encryption(self, value: Optional[pulumi.Input[bool]]):
        pulumi.set(self, "enable_encryption", value)

    @property
    @pulumi.getter(name="encryptionType")
    def encryption_type(self) -> Optional[pulumi.Input[str]]:
        return pulumi.get(self, "encryption_type")

    @encryption_type.setter
    def encryption_type(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "encryption_type", value)

    @property
    @pulumi.getter
    def endpoint(self) -> Optional[pulumi.Input[str]]:
        return pulumi.get(self, "endpoint")

    @endpoint.setter
    def endpoint(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "endpoint", value)

    @property
    @pulumi.getter(name="kmsKey")
    def kms_key(self) -> Optional[pulumi.Input[str]]:
        return pulumi.get(self, "kms_key")

    @kms_key.setter
    def kms_key(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "kms_key", value)

    @property
    @pulumi.getter
    def region(self) -> Optional[pulumi.Input[str]]:
        return pulumi.get(self, "region")

    @region.setter
    def region(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "region", value)


@pulumi.input_type
class PipelineFiltersArgs:
    def __init__(__self__, *,
                 excludes: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None,
                 includes: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None):
        if excludes is not None:
            pulumi.set(__self__, "excludes", excludes)
        if includes is not None:
            pulumi.set(__self__, "includes", includes)

    @property
    @pulumi.getter
    def excludes(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]:
        return pulumi.get(self, "excludes")

    @excludes.setter
    def excludes(self, value: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]):
        pulumi.set(self, "excludes", value)

    @property
    @pulumi.getter
    def includes(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]:
        return pulumi.get(self, "includes")

    @includes.setter
    def includes(self, value: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]):
        pulumi.set(self, "includes", value)


@pulumi.input_type
class PipelineLibraryArgs:
    def __init__(__self__, *,
                 file: Optional[pulumi.Input['PipelineLibraryFileArgs']] = None,
                 jar: Optional[pulumi.Input[str]] = None,
                 maven: Optional[pulumi.Input['PipelineLibraryMavenArgs']] = None,
                 notebook: Optional[pulumi.Input['PipelineLibraryNotebookArgs']] = None,
                 whl: Optional[pulumi.Input[str]] = None):
        if file is not None:
            pulumi.set(__self__, "file", file)
        if jar is not None:
            pulumi.set(__self__, "jar", jar)
        if maven is not None:
            pulumi.set(__self__, "maven", maven)
        if notebook is not None:
            pulumi.set(__self__, "notebook", notebook)
        if whl is not None:
            pulumi.set(__self__, "whl", whl)

    @property
    @pulumi.getter
    def file(self) -> Optional[pulumi.Input['PipelineLibraryFileArgs']]:
        return pulumi.get(self, "file")

    @file.setter
    def file(self, value: Optional[pulumi.Input['PipelineLibraryFileArgs']]):
        pulumi.set(self, "file", value)

    @property
    @pulumi.getter
    def jar(self) -> Optional[pulumi.Input[str]]:
        return pulumi.get(self, "jar")

    @jar.setter
    def jar(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "jar", value)

    @property
    @pulumi.getter
    def maven(self) -> Optional[pulumi.Input['PipelineLibraryMavenArgs']]:
        return pulumi.get(self, "maven")

    @maven.setter
    def maven(self, value: Optional[pulumi.Input['PipelineLibraryMavenArgs']]):
        pulumi.set(self, "maven", value)

    @property
    @pulumi.getter
    def notebook(self) -> Optional[pulumi.Input['PipelineLibraryNotebookArgs']]:
        return pulumi.get(self, "notebook")

    @notebook.setter
    def notebook(self, value: Optional[pulumi.Input['PipelineLibraryNotebookArgs']]):
        pulumi.set(self, "notebook", value)

    @property
    @pulumi.getter
    def whl(self) -> Optional[pulumi.Input[str]]:
        return pulumi.get(self, "whl")

    @whl.setter
    def whl(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "whl", value)


@pulumi.input_type
class PipelineLibraryFileArgs:
    def __init__(__self__, *,
                 path: pulumi.Input[str]):
        pulumi.set(__self__, "path", path)

    @property
    @pulumi.getter
    def path(self) -> pulumi.Input[str]:
        return pulumi.get(self, "path")

    @path.setter
    def path(self, value: pulumi.Input[str]):
        pulumi.set(self, "path", value)


@pulumi.input_type
class PipelineLibraryMavenArgs:
    def __init__(__self__, *,
                 coordinates: pulumi.Input[str],
                 exclusions: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None,
                 repo: Optional[pulumi.Input[str]] = None):
        pulumi.set(__self__, "coordinates", coordinates)
        if exclusions is not None:
            pulumi.set(__self__, "exclusions", exclusions)
        if repo is not None:
            pulumi.set(__self__, "repo", repo)

    @property
    @pulumi.getter
    def coordinates(self) -> pulumi.Input[str]:
        return pulumi.get(self, "coordinates")

    @coordinates.setter
    def coordinates(self, value: pulumi.Input[str]):
        pulumi.set(self, "coordinates", value)

    @property
    @pulumi.getter
    def exclusions(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]:
        return pulumi.get(self, "exclusions")

    @exclusions.setter
    def exclusions(self, value: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]):
        pulumi.set(self, "exclusions", value)

    @property
    @pulumi.getter
    def repo(self) -> Optional[pulumi.Input[str]]:
        return pulumi.get(self, "repo")

    @repo.setter
    def repo(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "repo", value)


@pulumi.input_type
class PipelineLibraryNotebookArgs:
    def __init__(__self__, *,
                 path: pulumi.Input[str]):
        pulumi.set(__self__, "path", path)

    @property
    @pulumi.getter
    def path(self) -> pulumi.Input[str]:
        return pulumi.get(self, "path")

    @path.setter
    def path(self, value: pulumi.Input[str]):
        pulumi.set(self, "path", value)


@pulumi.input_type
class RecipientIpAccessListArgs:
    def __init__(__self__, *,
                 allowed_ip_addresses: pulumi.Input[Sequence[pulumi.Input[str]]]):
        """
        :param pulumi.Input[Sequence[pulumi.Input[str]]] allowed_ip_addresses: Allowed IP Addresses in CIDR notation. Limit of 100.
        """
        pulumi.set(__self__, "allowed_ip_addresses", allowed_ip_addresses)

    @property
    @pulumi.getter(name="allowedIpAddresses")
    def allowed_ip_addresses(self) -> pulumi.Input[Sequence[pulumi.Input[str]]]:
        """
        Allowed IP Addresses in CIDR notation. Limit of 100.
        """
        return pulumi.get(self, "allowed_ip_addresses")

    @allowed_ip_addresses.setter
    def allowed_ip_addresses(self, value: pulumi.Input[Sequence[pulumi.Input[str]]]):
        pulumi.set(self, "allowed_ip_addresses", value)


@pulumi.input_type
class RecipientTokenArgs:
    def __init__(__self__, *,
                 activation_url: Optional[pulumi.Input[str]] = None,
                 created_at: Optional[pulumi.Input[int]] = None,
                 created_by: Optional[pulumi.Input[str]] = None,
                 expiration_time: Optional[pulumi.Input[int]] = None,
                 id: Optional[pulumi.Input[str]] = None,
                 updated_at: Optional[pulumi.Input[int]] = None,
                 updated_by: Optional[pulumi.Input[str]] = None):
        if activation_url is not None:
            pulumi.set(__self__, "activation_url", activation_url)
        if created_at is not None:
            pulumi.set(__self__, "created_at", created_at)
        if created_by is not None:
            pulumi.set(__self__, "created_by", created_by)
        if expiration_time is not None:
            pulumi.set(__self__, "expiration_time", expiration_time)
        if id is not None:
            pulumi.set(__self__, "id", id)
        if updated_at is not None:
            pulumi.set(__self__, "updated_at", updated_at)
        if updated_by is not None:
            pulumi.set(__self__, "updated_by", updated_by)

    @property
    @pulumi.getter(name="activationUrl")
    def activation_url(self) -> Optional[pulumi.Input[str]]:
        return pulumi.get(self, "activation_url")

    @activation_url.setter
    def activation_url(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "activation_url", value)

    @property
    @pulumi.getter(name="createdAt")
    def created_at(self) -> Optional[pulumi.Input[int]]:
        return pulumi.get(self, "created_at")

    @created_at.setter
    def created_at(self, value: Optional[pulumi.Input[int]]):
        pulumi.set(self, "created_at", value)

    @property
    @pulumi.getter(name="createdBy")
    def created_by(self) -> Optional[pulumi.Input[str]]:
        return pulumi.get(self, "created_by")

    @created_by.setter
    def created_by(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "created_by", value)

    @property
    @pulumi.getter(name="expirationTime")
    def expiration_time(self) -> Optional[pulumi.Input[int]]:
        return pulumi.get(self, "expiration_time")

    @expiration_time.setter
    def expiration_time(self, value: Optional[pulumi.Input[int]]):
        pulumi.set(self, "expiration_time", value)

    @property
    @pulumi.getter
    def id(self) -> Optional[pulumi.Input[str]]:
        return pulumi.get(self, "id")

    @id.setter
    def id(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "id", value)

    @property
    @pulumi.getter(name="updatedAt")
    def updated_at(self) -> Optional[pulumi.Input[int]]:
        return pulumi.get(self, "updated_at")

    @updated_at.setter
    def updated_at(self, value: Optional[pulumi.Input[int]]):
        pulumi.set(self, "updated_at", value)

    @property
    @pulumi.getter(name="updatedBy")
    def updated_by(self) -> Optional[pulumi.Input[str]]:
        return pulumi.get(self, "updated_by")

    @updated_by.setter
    def updated_by(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "updated_by", value)


@pulumi.input_type
class RepoSparseCheckoutArgs:
    def __init__(__self__, *,
                 patterns: pulumi.Input[Sequence[pulumi.Input[str]]]):
        pulumi.set(__self__, "patterns", patterns)

    @property
    @pulumi.getter
    def patterns(self) -> pulumi.Input[Sequence[pulumi.Input[str]]]:
        return pulumi.get(self, "patterns")

    @patterns.setter
    def patterns(self, value: pulumi.Input[Sequence[pulumi.Input[str]]]):
        pulumi.set(self, "patterns", value)


@pulumi.input_type
class SecretScopeKeyvaultMetadataArgs:
    def __init__(__self__, *,
                 dns_name: pulumi.Input[str],
                 resource_id: pulumi.Input[str]):
        pulumi.set(__self__, "dns_name", dns_name)
        pulumi.set(__self__, "resource_id", resource_id)

    @property
    @pulumi.getter(name="dnsName")
    def dns_name(self) -> pulumi.Input[str]:
        return pulumi.get(self, "dns_name")

    @dns_name.setter
    def dns_name(self, value: pulumi.Input[str]):
        pulumi.set(self, "dns_name", value)

    @property
    @pulumi.getter(name="resourceId")
    def resource_id(self) -> pulumi.Input[str]:
        return pulumi.get(self, "resource_id")

    @resource_id.setter
    def resource_id(self, value: pulumi.Input[str]):
        pulumi.set(self, "resource_id", value)


@pulumi.input_type
class ShareObjectArgs:
    def __init__(__self__, *,
                 data_object_type: pulumi.Input[str],
                 name: pulumi.Input[str],
                 added_at: Optional[pulumi.Input[int]] = None,
                 added_by: Optional[pulumi.Input[str]] = None,
                 cdf_enabled: Optional[pulumi.Input[bool]] = None,
                 comment: Optional[pulumi.Input[str]] = None,
                 history_data_sharing_status: Optional[pulumi.Input[str]] = None,
                 partitions: Optional[pulumi.Input[Sequence[pulumi.Input['ShareObjectPartitionArgs']]]] = None,
                 shared_as: Optional[pulumi.Input[str]] = None,
                 start_version: Optional[pulumi.Input[int]] = None,
                 status: Optional[pulumi.Input[str]] = None):
        """
        :param pulumi.Input[str] data_object_type: Type of the object, currently only `TABLE` is allowed.
        :param pulumi.Input[str] name: Full name of the object, e.g. `catalog.schema.name` for a table.
        :param pulumi.Input[bool] cdf_enabled: Whether to enable Change Data Feed (cdf) on the shared object. When this field is set, field `history_data_sharing_status` can not be set.
        :param pulumi.Input[str] comment: Description about the object.
        :param pulumi.Input[str] history_data_sharing_status: Whether to enable history sharing, one of: `ENABLED`, `DISABLED`. When a table has history sharing enabled, recipients can query table data by version, starting from the current table version. If not specified, clients can only query starting from the version of the object at the time it was added to the share. *NOTE*: The start_version should be less than or equal the current version of the object. When this field is set, field `cdf_enabled` can not be set.
        :param pulumi.Input[str] shared_as: A user-provided new name for the data object within the share. If this new name is not provided, the object's original name will be used as the `shared_as` name. The `shared_as` name must be unique within a Share.
        :param pulumi.Input[int] start_version: The start version associated with the object for cdf. This allows data providers to control the lowest object version that is accessible by clients.
        :param pulumi.Input[str] status: Status of the object, one of: `ACTIVE`, `PERMISSION_DENIED`.
        """
        pulumi.set(__self__, "data_object_type", data_object_type)
        pulumi.set(__self__, "name", name)
        if added_at is not None:
            pulumi.set(__self__, "added_at", added_at)
        if added_by is not None:
            pulumi.set(__self__, "added_by", added_by)
        if cdf_enabled is not None:
            pulumi.set(__self__, "cdf_enabled", cdf_enabled)
        if comment is not None:
            pulumi.set(__self__, "comment", comment)
        if history_data_sharing_status is not None:
            pulumi.set(__self__, "history_data_sharing_status", history_data_sharing_status)
        if partitions is not None:
            pulumi.set(__self__, "partitions", partitions)
        if shared_as is not None:
            pulumi.set(__self__, "shared_as", shared_as)
        if start_version is not None:
            pulumi.set(__self__, "start_version", start_version)
        if status is not None:
            pulumi.set(__self__, "status", status)

    @property
    @pulumi.getter(name="dataObjectType")
    def data_object_type(self) -> pulumi.Input[str]:
        """
        Type of the object, currently only `TABLE` is allowed.
        """
        return pulumi.get(self, "data_object_type")

    @data_object_type.setter
    def data_object_type(self, value: pulumi.Input[str]):
        pulumi.set(self, "data_object_type", value)

    @property
    @pulumi.getter
    def name(self) -> pulumi.Input[str]:
        """
        Full name of the object, e.g. `catalog.schema.name` for a table.
        """
        return pulumi.get(self, "name")

    @name.setter
    def name(self, value: pulumi.Input[str]):
        pulumi.set(self, "name", value)

    @property
    @pulumi.getter(name="addedAt")
    def added_at(self) -> Optional[pulumi.Input[int]]:
        return pulumi.get(self, "added_at")

    @added_at.setter
    def added_at(self, value: Optional[pulumi.Input[int]]):
        pulumi.set(self, "added_at", value)

    @property
    @pulumi.getter(name="addedBy")
    def added_by(self) -> Optional[pulumi.Input[str]]:
        return pulumi.get(self, "added_by")

    @added_by.setter
    def added_by(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "added_by", value)

    @property
    @pulumi.getter(name="cdfEnabled")
    def cdf_enabled(self) -> Optional[pulumi.Input[bool]]:
        """
        Whether to enable Change Data Feed (cdf) on the shared object. When this field is set, field `history_data_sharing_status` can not be set.
        """
        return pulumi.get(self, "cdf_enabled")

    @cdf_enabled.setter
    def cdf_enabled(self, value: Optional[pulumi.Input[bool]]):
        pulumi.set(self, "cdf_enabled", value)

    @property
    @pulumi.getter
    def comment(self) -> Optional[pulumi.Input[str]]:
        """
        Description about the object.
        """
        return pulumi.get(self, "comment")

    @comment.setter
    def comment(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "comment", value)

    @property
    @pulumi.getter(name="historyDataSharingStatus")
    def history_data_sharing_status(self) -> Optional[pulumi.Input[str]]:
        """
        Whether to enable history sharing, one of: `ENABLED`, `DISABLED`. When a table has history sharing enabled, recipients can query table data by version, starting from the current table version. If not specified, clients can only query starting from the version of the object at the time it was added to the share. *NOTE*: The start_version should be less than or equal the current version of the object. When this field is set, field `cdf_enabled` can not be set.
        """
        return pulumi.get(self, "history_data_sharing_status")

    @history_data_sharing_status.setter
    def history_data_sharing_status(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "history_data_sharing_status", value)

    @property
    @pulumi.getter
    def partitions(self) -> Optional[pulumi.Input[Sequence[pulumi.Input['ShareObjectPartitionArgs']]]]:
        return pulumi.get(self, "partitions")

    @partitions.setter
    def partitions(self, value: Optional[pulumi.Input[Sequence[pulumi.Input['ShareObjectPartitionArgs']]]]):
        pulumi.set(self, "partitions", value)

    @property
    @pulumi.getter(name="sharedAs")
    def shared_as(self) -> Optional[pulumi.Input[str]]:
        """
        A user-provided new name for the data object within the share. If this new name is not provided, the object's original name will be used as the `shared_as` name. The `shared_as` name must be unique within a Share.
        """
        return pulumi.get(self, "shared_as")

    @shared_as.setter
    def shared_as(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "shared_as", value)

    @property
    @pulumi.getter(name="startVersion")
    def start_version(self) -> Optional[pulumi.Input[int]]:
        """
        The start version associated with the object for cdf. This allows data providers to control the lowest object version that is accessible by clients.
        """
        return pulumi.get(self, "start_version")

    @start_version.setter
    def start_version(self, value: Optional[pulumi.Input[int]]):
        pulumi.set(self, "start_version", value)

    @property
    @pulumi.getter
    def status(self) -> Optional[pulumi.Input[str]]:
        """
        Status of the object, one of: `ACTIVE`, `PERMISSION_DENIED`.
        """
        return pulumi.get(self, "status")

    @status.setter
    def status(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "status", value)


@pulumi.input_type
class ShareObjectPartitionArgs:
    def __init__(__self__, *,
                 values: pulumi.Input[Sequence[pulumi.Input['ShareObjectPartitionValueArgs']]]):
        pulumi.set(__self__, "values", values)

    @property
    @pulumi.getter
    def values(self) -> pulumi.Input[Sequence[pulumi.Input['ShareObjectPartitionValueArgs']]]:
        return pulumi.get(self, "values")

    @values.setter
    def values(self, value: pulumi.Input[Sequence[pulumi.Input['ShareObjectPartitionValueArgs']]]):
        pulumi.set(self, "values", value)


@pulumi.input_type
class ShareObjectPartitionValueArgs:
    def __init__(__self__, *,
                 name: pulumi.Input[str],
                 op: pulumi.Input[str],
                 recipient_property_key: Optional[pulumi.Input[str]] = None,
                 value: Optional[pulumi.Input[str]] = None):
        """
        :param pulumi.Input[str] name: The name of the partition column.
        :param pulumi.Input[str] op: The operator to apply for the value, one of: `EQUAL`, `LIKE`
        :param pulumi.Input[str] recipient_property_key: The key of a Delta Sharing recipient's property. For example `databricks-account-id`. When this field is set, field `value` can not be set.
        :param pulumi.Input[str] value: The value of the partition column. When this value is not set, it means null value. When this field is set, field `recipient_property_key` can not be set.
        """
        pulumi.set(__self__, "name", name)
        pulumi.set(__self__, "op", op)
        if recipient_property_key is not None:
            pulumi.set(__self__, "recipient_property_key", recipient_property_key)
        if value is not None:
            pulumi.set(__self__, "value", value)

    @property
    @pulumi.getter
    def name(self) -> pulumi.Input[str]:
        """
        The name of the partition column.
        """
        return pulumi.get(self, "name")

    @name.setter
    def name(self, value: pulumi.Input[str]):
        pulumi.set(self, "name", value)

    @property
    @pulumi.getter
    def op(self) -> pulumi.Input[str]:
        """
        The operator to apply for the value, one of: `EQUAL`, `LIKE`
        """
        return pulumi.get(self, "op")

    @op.setter
    def op(self, value: pulumi.Input[str]):
        pulumi.set(self, "op", value)

    @property
    @pulumi.getter(name="recipientPropertyKey")
    def recipient_property_key(self) -> Optional[pulumi.Input[str]]:
        """
        The key of a Delta Sharing recipient's property. For example `databricks-account-id`. When this field is set, field `value` can not be set.
        """
        return pulumi.get(self, "recipient_property_key")

    @recipient_property_key.setter
    def recipient_property_key(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "recipient_property_key", value)

    @property
    @pulumi.getter
    def value(self) -> Optional[pulumi.Input[str]]:
        """
        The value of the partition column. When this value is not set, it means null value. When this field is set, field `recipient_property_key` can not be set.
        """
        return pulumi.get(self, "value")

    @value.setter
    def value(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "value", value)


@pulumi.input_type
class SqlEndpointChannelArgs:
    def __init__(__self__, *,
                 name: Optional[pulumi.Input[str]] = None):
        """
        :param pulumi.Input[str] name: Name of the Databricks SQL release channel. Possible values are: `CHANNEL_NAME_PREVIEW` and `CHANNEL_NAME_CURRENT`. Default is `CHANNEL_NAME_CURRENT`.
        """
        if name is not None:
            pulumi.set(__self__, "name", name)

    @property
    @pulumi.getter
    def name(self) -> Optional[pulumi.Input[str]]:
        """
        Name of the Databricks SQL release channel. Possible values are: `CHANNEL_NAME_PREVIEW` and `CHANNEL_NAME_CURRENT`. Default is `CHANNEL_NAME_CURRENT`.
        """
        return pulumi.get(self, "name")

    @name.setter
    def name(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "name", value)


@pulumi.input_type
class SqlEndpointOdbcParamsArgs:
    def __init__(__self__, *,
                 path: pulumi.Input[str],
                 port: pulumi.Input[int],
                 protocol: pulumi.Input[str],
                 host: Optional[pulumi.Input[str]] = None,
                 hostname: Optional[pulumi.Input[str]] = None):
        pulumi.set(__self__, "path", path)
        pulumi.set(__self__, "port", port)
        pulumi.set(__self__, "protocol", protocol)
        if host is not None:
            pulumi.set(__self__, "host", host)
        if hostname is not None:
            pulumi.set(__self__, "hostname", hostname)

    @property
    @pulumi.getter
    def path(self) -> pulumi.Input[str]:
        return pulumi.get(self, "path")

    @path.setter
    def path(self, value: pulumi.Input[str]):
        pulumi.set(self, "path", value)

    @property
    @pulumi.getter
    def port(self) -> pulumi.Input[int]:
        return pulumi.get(self, "port")

    @port.setter
    def port(self, value: pulumi.Input[int]):
        pulumi.set(self, "port", value)

    @property
    @pulumi.getter
    def protocol(self) -> pulumi.Input[str]:
        return pulumi.get(self, "protocol")

    @protocol.setter
    def protocol(self, value: pulumi.Input[str]):
        pulumi.set(self, "protocol", value)

    @property
    @pulumi.getter
    def host(self) -> Optional[pulumi.Input[str]]:
        return pulumi.get(self, "host")

    @host.setter
    def host(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "host", value)

    @property
    @pulumi.getter
    def hostname(self) -> Optional[pulumi.Input[str]]:
        return pulumi.get(self, "hostname")

    @hostname.setter
    def hostname(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "hostname", value)


@pulumi.input_type
class SqlEndpointTagsArgs:
    def __init__(__self__, *,
                 custom_tags: pulumi.Input[Sequence[pulumi.Input['SqlEndpointTagsCustomTagArgs']]]):
        pulumi.set(__self__, "custom_tags", custom_tags)

    @property
    @pulumi.getter(name="customTags")
    def custom_tags(self) -> pulumi.Input[Sequence[pulumi.Input['SqlEndpointTagsCustomTagArgs']]]:
        return pulumi.get(self, "custom_tags")

    @custom_tags.setter
    def custom_tags(self, value: pulumi.Input[Sequence[pulumi.Input['SqlEndpointTagsCustomTagArgs']]]):
        pulumi.set(self, "custom_tags", value)


@pulumi.input_type
class SqlEndpointTagsCustomTagArgs:
    def __init__(__self__, *,
                 key: pulumi.Input[str],
                 value: pulumi.Input[str]):
        pulumi.set(__self__, "key", key)
        pulumi.set(__self__, "value", value)

    @property
    @pulumi.getter
    def key(self) -> pulumi.Input[str]:
        return pulumi.get(self, "key")

    @key.setter
    def key(self, value: pulumi.Input[str]):
        pulumi.set(self, "key", value)

    @property
    @pulumi.getter
    def value(self) -> pulumi.Input[str]:
        return pulumi.get(self, "value")

    @value.setter
    def value(self, value: pulumi.Input[str]):
        pulumi.set(self, "value", value)


@pulumi.input_type
class SqlPermissionsPrivilegeAssignmentArgs:
    def __init__(__self__, *,
                 principal: pulumi.Input[str],
                 privileges: pulumi.Input[Sequence[pulumi.Input[str]]]):
        """
        :param pulumi.Input[str] principal: `display_name` for a Group or databricks_user, `application_id` for a databricks_service_principal.
        :param pulumi.Input[Sequence[pulumi.Input[str]]] privileges: set of available privilege names in upper case.
        """
        pulumi.set(__self__, "principal", principal)
        pulumi.set(__self__, "privileges", privileges)

    @property
    @pulumi.getter
    def principal(self) -> pulumi.Input[str]:
        """
        `display_name` for a Group or databricks_user, `application_id` for a databricks_service_principal.
        """
        return pulumi.get(self, "principal")

    @principal.setter
    def principal(self, value: pulumi.Input[str]):
        pulumi.set(self, "principal", value)

    @property
    @pulumi.getter
    def privileges(self) -> pulumi.Input[Sequence[pulumi.Input[str]]]:
        """
        set of available privilege names in upper case.
        """
        return pulumi.get(self, "privileges")

    @privileges.setter
    def privileges(self, value: pulumi.Input[Sequence[pulumi.Input[str]]]):
        pulumi.set(self, "privileges", value)


@pulumi.input_type
class SqlQueryParameterArgs:
    def __init__(__self__, *,
                 name: pulumi.Input[str],
                 date: Optional[pulumi.Input['SqlQueryParameterDateArgs']] = None,
                 date_range: Optional[pulumi.Input['SqlQueryParameterDateRangeArgs']] = None,
                 datetime: Optional[pulumi.Input['SqlQueryParameterDatetimeArgs']] = None,
                 datetime_range: Optional[pulumi.Input['SqlQueryParameterDatetimeRangeArgs']] = None,
                 datetimesec: Optional[pulumi.Input['SqlQueryParameterDatetimesecArgs']] = None,
                 datetimesec_range: Optional[pulumi.Input['SqlQueryParameterDatetimesecRangeArgs']] = None,
                 enum: Optional[pulumi.Input['SqlQueryParameterEnumArgs']] = None,
                 number: Optional[pulumi.Input['SqlQueryParameterNumberArgs']] = None,
                 query: Optional[pulumi.Input['SqlQueryParameterQueryArgs']] = None,
                 text: Optional[pulumi.Input['SqlQueryParameterTextArgs']] = None,
                 title: Optional[pulumi.Input[str]] = None):
        pulumi.set(__self__, "name", name)
        if date is not None:
            pulumi.set(__self__, "date", date)
        if date_range is not None:
            pulumi.set(__self__, "date_range", date_range)
        if datetime is not None:
            pulumi.set(__self__, "datetime", datetime)
        if datetime_range is not None:
            pulumi.set(__self__, "datetime_range", datetime_range)
        if datetimesec is not None:
            pulumi.set(__self__, "datetimesec", datetimesec)
        if datetimesec_range is not None:
            pulumi.set(__self__, "datetimesec_range", datetimesec_range)
        if enum is not None:
            pulumi.set(__self__, "enum", enum)
        if number is not None:
            pulumi.set(__self__, "number", number)
        if query is not None:
            pulumi.set(__self__, "query", query)
        if text is not None:
            pulumi.set(__self__, "text", text)
        if title is not None:
            pulumi.set(__self__, "title", title)

    @property
    @pulumi.getter
    def name(self) -> pulumi.Input[str]:
        return pulumi.get(self, "name")

    @name.setter
    def name(self, value: pulumi.Input[str]):
        pulumi.set(self, "name", value)

    @property
    @pulumi.getter
    def date(self) -> Optional[pulumi.Input['SqlQueryParameterDateArgs']]:
        return pulumi.get(self, "date")

    @date.setter
    def date(self, value: Optional[pulumi.Input['SqlQueryParameterDateArgs']]):
        pulumi.set(self, "date", value)

    @property
    @pulumi.getter(name="dateRange")
    def date_range(self) -> Optional[pulumi.Input['SqlQueryParameterDateRangeArgs']]:
        return pulumi.get(self, "date_range")

    @date_range.setter
    def date_range(self, value: Optional[pulumi.Input['SqlQueryParameterDateRangeArgs']]):
        pulumi.set(self, "date_range", value)

    @property
    @pulumi.getter
    def datetime(self) -> Optional[pulumi.Input['SqlQueryParameterDatetimeArgs']]:
        return pulumi.get(self, "datetime")

    @datetime.setter
    def datetime(self, value: Optional[pulumi.Input['SqlQueryParameterDatetimeArgs']]):
        pulumi.set(self, "datetime", value)

    @property
    @pulumi.getter(name="datetimeRange")
    def datetime_range(self) -> Optional[pulumi.Input['SqlQueryParameterDatetimeRangeArgs']]:
        return pulumi.get(self, "datetime_range")

    @datetime_range.setter
    def datetime_range(self, value: Optional[pulumi.Input['SqlQueryParameterDatetimeRangeArgs']]):
        pulumi.set(self, "datetime_range", value)

    @property
    @pulumi.getter
    def datetimesec(self) -> Optional[pulumi.Input['SqlQueryParameterDatetimesecArgs']]:
        return pulumi.get(self, "datetimesec")

    @datetimesec.setter
    def datetimesec(self, value: Optional[pulumi.Input['SqlQueryParameterDatetimesecArgs']]):
        pulumi.set(self, "datetimesec", value)

    @property
    @pulumi.getter(name="datetimesecRange")
    def datetimesec_range(self) -> Optional[pulumi.Input['SqlQueryParameterDatetimesecRangeArgs']]:
        return pulumi.get(self, "datetimesec_range")

    @datetimesec_range.setter
    def datetimesec_range(self, value: Optional[pulumi.Input['SqlQueryParameterDatetimesecRangeArgs']]):
        pulumi.set(self, "datetimesec_range", value)

    @property
    @pulumi.getter
    def enum(self) -> Optional[pulumi.Input['SqlQueryParameterEnumArgs']]:
        return pulumi.get(self, "enum")

    @enum.setter
    def enum(self, value: Optional[pulumi.Input['SqlQueryParameterEnumArgs']]):
        pulumi.set(self, "enum", value)

    @property
    @pulumi.getter
    def number(self) -> Optional[pulumi.Input['SqlQueryParameterNumberArgs']]:
        return pulumi.get(self, "number")

    @number.setter
    def number(self, value: Optional[pulumi.Input['SqlQueryParameterNumberArgs']]):
        pulumi.set(self, "number", value)

    @property
    @pulumi.getter
    def query(self) -> Optional[pulumi.Input['SqlQueryParameterQueryArgs']]:
        return pulumi.get(self, "query")

    @query.setter
    def query(self, value: Optional[pulumi.Input['SqlQueryParameterQueryArgs']]):
        pulumi.set(self, "query", value)

    @property
    @pulumi.getter
    def text(self) -> Optional[pulumi.Input['SqlQueryParameterTextArgs']]:
        return pulumi.get(self, "text")

    @text.setter
    def text(self, value: Optional[pulumi.Input['SqlQueryParameterTextArgs']]):
        pulumi.set(self, "text", value)

    @property
    @pulumi.getter
    def title(self) -> Optional[pulumi.Input[str]]:
        return pulumi.get(self, "title")

    @title.setter
    def title(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "title", value)


@pulumi.input_type
class SqlQueryParameterDateArgs:
    def __init__(__self__, *,
                 value: pulumi.Input[str]):
        pulumi.set(__self__, "value", value)

    @property
    @pulumi.getter
    def value(self) -> pulumi.Input[str]:
        return pulumi.get(self, "value")

    @value.setter
    def value(self, value: pulumi.Input[str]):
        pulumi.set(self, "value", value)


@pulumi.input_type
class SqlQueryParameterDateRangeArgs:
    def __init__(__self__, *,
                 range: Optional[pulumi.Input['SqlQueryParameterDateRangeRangeArgs']] = None,
                 value: Optional[pulumi.Input[str]] = None):
        if range is not None:
            pulumi.set(__self__, "range", range)
        if value is not None:
            pulumi.set(__self__, "value", value)

    @property
    @pulumi.getter
    def range(self) -> Optional[pulumi.Input['SqlQueryParameterDateRangeRangeArgs']]:
        return pulumi.get(self, "range")

    @range.setter
    def range(self, value: Optional[pulumi.Input['SqlQueryParameterDateRangeRangeArgs']]):
        pulumi.set(self, "range", value)

    @property
    @pulumi.getter
    def value(self) -> Optional[pulumi.Input[str]]:
        return pulumi.get(self, "value")

    @value.setter
    def value(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "value", value)


@pulumi.input_type
class SqlQueryParameterDateRangeRangeArgs:
    def __init__(__self__, *,
                 end: pulumi.Input[str],
                 start: pulumi.Input[str]):
        pulumi.set(__self__, "end", end)
        pulumi.set(__self__, "start", start)

    @property
    @pulumi.getter
    def end(self) -> pulumi.Input[str]:
        return pulumi.get(self, "end")

    @end.setter
    def end(self, value: pulumi.Input[str]):
        pulumi.set(self, "end", value)

    @property
    @pulumi.getter
    def start(self) -> pulumi.Input[str]:
        return pulumi.get(self, "start")

    @start.setter
    def start(self, value: pulumi.Input[str]):
        pulumi.set(self, "start", value)


@pulumi.input_type
class SqlQueryParameterDatetimeArgs:
    def __init__(__self__, *,
                 value: pulumi.Input[str]):
        pulumi.set(__self__, "value", value)

    @property
    @pulumi.getter
    def value(self) -> pulumi.Input[str]:
        return pulumi.get(self, "value")

    @value.setter
    def value(self, value: pulumi.Input[str]):
        pulumi.set(self, "value", value)


@pulumi.input_type
class SqlQueryParameterDatetimeRangeArgs:
    def __init__(__self__, *,
                 range: Optional[pulumi.Input['SqlQueryParameterDatetimeRangeRangeArgs']] = None,
                 value: Optional[pulumi.Input[str]] = None):
        if range is not None:
            pulumi.set(__self__, "range", range)
        if value is not None:
            pulumi.set(__self__, "value", value)

    @property
    @pulumi.getter
    def range(self) -> Optional[pulumi.Input['SqlQueryParameterDatetimeRangeRangeArgs']]:
        return pulumi.get(self, "range")

    @range.setter
    def range(self, value: Optional[pulumi.Input['SqlQueryParameterDatetimeRangeRangeArgs']]):
        pulumi.set(self, "range", value)

    @property
    @pulumi.getter
    def value(self) -> Optional[pulumi.Input[str]]:
        return pulumi.get(self, "value")

    @value.setter
    def value(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "value", value)


@pulumi.input_type
class SqlQueryParameterDatetimeRangeRangeArgs:
    def __init__(__self__, *,
                 end: pulumi.Input[str],
                 start: pulumi.Input[str]):
        pulumi.set(__self__, "end", end)
        pulumi.set(__self__, "start", start)

    @property
    @pulumi.getter
    def end(self) -> pulumi.Input[str]:
        return pulumi.get(self, "end")

    @end.setter
    def end(self, value: pulumi.Input[str]):
        pulumi.set(self, "end", value)

    @property
    @pulumi.getter
    def start(self) -> pulumi.Input[str]:
        return pulumi.get(self, "start")

    @start.setter
    def start(self, value: pulumi.Input[str]):
        pulumi.set(self, "start", value)


@pulumi.input_type
class SqlQueryParameterDatetimesecArgs:
    def __init__(__self__, *,
                 value: pulumi.Input[str]):
        pulumi.set(__self__, "value", value)

    @property
    @pulumi.getter
    def value(self) -> pulumi.Input[str]:
        return pulumi.get(self, "value")

    @value.setter
    def value(self, value: pulumi.Input[str]):
        pulumi.set(self, "value", value)


@pulumi.input_type
class SqlQueryParameterDatetimesecRangeArgs:
    def __init__(__self__, *,
                 range: Optional[pulumi.Input['SqlQueryParameterDatetimesecRangeRangeArgs']] = None,
                 value: Optional[pulumi.Input[str]] = None):
        if range is not None:
            pulumi.set(__self__, "range", range)
        if value is not None:
            pulumi.set(__self__, "value", value)

    @property
    @pulumi.getter
    def range(self) -> Optional[pulumi.Input['SqlQueryParameterDatetimesecRangeRangeArgs']]:
        return pulumi.get(self, "range")

    @range.setter
    def range(self, value: Optional[pulumi.Input['SqlQueryParameterDatetimesecRangeRangeArgs']]):
        pulumi.set(self, "range", value)

    @property
    @pulumi.getter
    def value(self) -> Optional[pulumi.Input[str]]:
        return pulumi.get(self, "value")

    @value.setter
    def value(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "value", value)


@pulumi.input_type
class SqlQueryParameterDatetimesecRangeRangeArgs:
    def __init__(__self__, *,
                 end: pulumi.Input[str],
                 start: pulumi.Input[str]):
        pulumi.set(__self__, "end", end)
        pulumi.set(__self__, "start", start)

    @property
    @pulumi.getter
    def end(self) -> pulumi.Input[str]:
        return pulumi.get(self, "end")

    @end.setter
    def end(self, value: pulumi.Input[str]):
        pulumi.set(self, "end", value)

    @property
    @pulumi.getter
    def start(self) -> pulumi.Input[str]:
        return pulumi.get(self, "start")

    @start.setter
    def start(self, value: pulumi.Input[str]):
        pulumi.set(self, "start", value)


@pulumi.input_type
class SqlQueryParameterEnumArgs:
    def __init__(__self__, *,
                 options: pulumi.Input[Sequence[pulumi.Input[str]]],
                 multiple: Optional[pulumi.Input['SqlQueryParameterEnumMultipleArgs']] = None,
                 value: Optional[pulumi.Input[str]] = None,
                 values: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None):
        pulumi.set(__self__, "options", options)
        if multiple is not None:
            pulumi.set(__self__, "multiple", multiple)
        if value is not None:
            pulumi.set(__self__, "value", value)
        if values is not None:
            pulumi.set(__self__, "values", values)

    @property
    @pulumi.getter
    def options(self) -> pulumi.Input[Sequence[pulumi.Input[str]]]:
        return pulumi.get(self, "options")

    @options.setter
    def options(self, value: pulumi.Input[Sequence[pulumi.Input[str]]]):
        pulumi.set(self, "options", value)

    @property
    @pulumi.getter
    def multiple(self) -> Optional[pulumi.Input['SqlQueryParameterEnumMultipleArgs']]:
        return pulumi.get(self, "multiple")

    @multiple.setter
    def multiple(self, value: Optional[pulumi.Input['SqlQueryParameterEnumMultipleArgs']]):
        pulumi.set(self, "multiple", value)

    @property
    @pulumi.getter
    def value(self) -> Optional[pulumi.Input[str]]:
        return pulumi.get(self, "value")

    @value.setter
    def value(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "value", value)

    @property
    @pulumi.getter
    def values(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]:
        return pulumi.get(self, "values")

    @values.setter
    def values(self, value: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]):
        pulumi.set(self, "values", value)


@pulumi.input_type
class SqlQueryParameterEnumMultipleArgs:
    def __init__(__self__, *,
                 prefix: pulumi.Input[str],
                 separator: pulumi.Input[str],
                 suffix: pulumi.Input[str]):
        pulumi.set(__self__, "prefix", prefix)
        pulumi.set(__self__, "separator", separator)
        pulumi.set(__self__, "suffix", suffix)

    @property
    @pulumi.getter
    def prefix(self) -> pulumi.Input[str]:
        return pulumi.get(self, "prefix")

    @prefix.setter
    def prefix(self, value: pulumi.Input[str]):
        pulumi.set(self, "prefix", value)

    @property
    @pulumi.getter
    def separator(self) -> pulumi.Input[str]:
        return pulumi.get(self, "separator")

    @separator.setter
    def separator(self, value: pulumi.Input[str]):
        pulumi.set(self, "separator", value)

    @property
    @pulumi.getter
    def suffix(self) -> pulumi.Input[str]:
        return pulumi.get(self, "suffix")

    @suffix.setter
    def suffix(self, value: pulumi.Input[str]):
        pulumi.set(self, "suffix", value)


@pulumi.input_type
class SqlQueryParameterNumberArgs:
    def __init__(__self__, *,
                 value: pulumi.Input[float]):
        pulumi.set(__self__, "value", value)

    @property
    @pulumi.getter
    def value(self) -> pulumi.Input[float]:
        return pulumi.get(self, "value")

    @value.setter
    def value(self, value: pulumi.Input[float]):
        pulumi.set(self, "value", value)


@pulumi.input_type
class SqlQueryParameterQueryArgs:
    def __init__(__self__, *,
                 query_id: pulumi.Input[str],
                 multiple: Optional[pulumi.Input['SqlQueryParameterQueryMultipleArgs']] = None,
                 value: Optional[pulumi.Input[str]] = None,
                 values: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None):
        pulumi.set(__self__, "query_id", query_id)
        if multiple is not None:
            pulumi.set(__self__, "multiple", multiple)
        if value is not None:
            pulumi.set(__self__, "value", value)
        if values is not None:
            pulumi.set(__self__, "values", values)

    @property
    @pulumi.getter(name="queryId")
    def query_id(self) -> pulumi.Input[str]:
        return pulumi.get(self, "query_id")

    @query_id.setter
    def query_id(self, value: pulumi.Input[str]):
        pulumi.set(self, "query_id", value)

    @property
    @pulumi.getter
    def multiple(self) -> Optional[pulumi.Input['SqlQueryParameterQueryMultipleArgs']]:
        return pulumi.get(self, "multiple")

    @multiple.setter
    def multiple(self, value: Optional[pulumi.Input['SqlQueryParameterQueryMultipleArgs']]):
        pulumi.set(self, "multiple", value)

    @property
    @pulumi.getter
    def value(self) -> Optional[pulumi.Input[str]]:
        return pulumi.get(self, "value")

    @value.setter
    def value(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "value", value)

    @property
    @pulumi.getter
    def values(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]:
        return pulumi.get(self, "values")

    @values.setter
    def values(self, value: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]):
        pulumi.set(self, "values", value)


@pulumi.input_type
class SqlQueryParameterQueryMultipleArgs:
    def __init__(__self__, *,
                 prefix: pulumi.Input[str],
                 separator: pulumi.Input[str],
                 suffix: pulumi.Input[str]):
        pulumi.set(__self__, "prefix", prefix)
        pulumi.set(__self__, "separator", separator)
        pulumi.set(__self__, "suffix", suffix)

    @property
    @pulumi.getter
    def prefix(self) -> pulumi.Input[str]:
        return pulumi.get(self, "prefix")

    @prefix.setter
    def prefix(self, value: pulumi.Input[str]):
        pulumi.set(self, "prefix", value)

    @property
    @pulumi.getter
    def separator(self) -> pulumi.Input[str]:
        return pulumi.get(self, "separator")

    @separator.setter
    def separator(self, value: pulumi.Input[str]):
        pulumi.set(self, "separator", value)

    @property
    @pulumi.getter
    def suffix(self) -> pulumi.Input[str]:
        return pulumi.get(self, "suffix")

    @suffix.setter
    def suffix(self, value: pulumi.Input[str]):
        pulumi.set(self, "suffix", value)


@pulumi.input_type
class SqlQueryParameterTextArgs:
    def __init__(__self__, *,
                 value: pulumi.Input[str]):
        pulumi.set(__self__, "value", value)

    @property
    @pulumi.getter
    def value(self) -> pulumi.Input[str]:
        return pulumi.get(self, "value")

    @value.setter
    def value(self, value: pulumi.Input[str]):
        pulumi.set(self, "value", value)


@pulumi.input_type
class SqlQueryScheduleArgs:
    def __init__(__self__, *,
                 continuous: Optional[pulumi.Input['SqlQueryScheduleContinuousArgs']] = None,
                 daily: Optional[pulumi.Input['SqlQueryScheduleDailyArgs']] = None,
                 weekly: Optional[pulumi.Input['SqlQueryScheduleWeeklyArgs']] = None):
        if continuous is not None:
            pulumi.set(__self__, "continuous", continuous)
        if daily is not None:
            pulumi.set(__self__, "daily", daily)
        if weekly is not None:
            pulumi.set(__self__, "weekly", weekly)

    @property
    @pulumi.getter
    def continuous(self) -> Optional[pulumi.Input['SqlQueryScheduleContinuousArgs']]:
        return pulumi.get(self, "continuous")

    @continuous.setter
    def continuous(self, value: Optional[pulumi.Input['SqlQueryScheduleContinuousArgs']]):
        pulumi.set(self, "continuous", value)

    @property
    @pulumi.getter
    def daily(self) -> Optional[pulumi.Input['SqlQueryScheduleDailyArgs']]:
        return pulumi.get(self, "daily")

    @daily.setter
    def daily(self, value: Optional[pulumi.Input['SqlQueryScheduleDailyArgs']]):
        pulumi.set(self, "daily", value)

    @property
    @pulumi.getter
    def weekly(self) -> Optional[pulumi.Input['SqlQueryScheduleWeeklyArgs']]:
        return pulumi.get(self, "weekly")

    @weekly.setter
    def weekly(self, value: Optional[pulumi.Input['SqlQueryScheduleWeeklyArgs']]):
        pulumi.set(self, "weekly", value)


@pulumi.input_type
class SqlQueryScheduleContinuousArgs:
    def __init__(__self__, *,
                 interval_seconds: pulumi.Input[int],
                 until_date: Optional[pulumi.Input[str]] = None):
        pulumi.set(__self__, "interval_seconds", interval_seconds)
        if until_date is not None:
            pulumi.set(__self__, "until_date", until_date)

    @property
    @pulumi.getter(name="intervalSeconds")
    def interval_seconds(self) -> pulumi.Input[int]:
        return pulumi.get(self, "interval_seconds")

    @interval_seconds.setter
    def interval_seconds(self, value: pulumi.Input[int]):
        pulumi.set(self, "interval_seconds", value)

    @property
    @pulumi.getter(name="untilDate")
    def until_date(self) -> Optional[pulumi.Input[str]]:
        return pulumi.get(self, "until_date")

    @until_date.setter
    def until_date(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "until_date", value)


@pulumi.input_type
class SqlQueryScheduleDailyArgs:
    def __init__(__self__, *,
                 interval_days: pulumi.Input[int],
                 time_of_day: pulumi.Input[str],
                 until_date: Optional[pulumi.Input[str]] = None):
        pulumi.set(__self__, "interval_days", interval_days)
        pulumi.set(__self__, "time_of_day", time_of_day)
        if until_date is not None:
            pulumi.set(__self__, "until_date", until_date)

    @property
    @pulumi.getter(name="intervalDays")
    def interval_days(self) -> pulumi.Input[int]:
        return pulumi.get(self, "interval_days")

    @interval_days.setter
    def interval_days(self, value: pulumi.Input[int]):
        pulumi.set(self, "interval_days", value)

    @property
    @pulumi.getter(name="timeOfDay")
    def time_of_day(self) -> pulumi.Input[str]:
        return pulumi.get(self, "time_of_day")

    @time_of_day.setter
    def time_of_day(self, value: pulumi.Input[str]):
        pulumi.set(self, "time_of_day", value)

    @property
    @pulumi.getter(name="untilDate")
    def until_date(self) -> Optional[pulumi.Input[str]]:
        return pulumi.get(self, "until_date")

    @until_date.setter
    def until_date(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "until_date", value)


@pulumi.input_type
class SqlQueryScheduleWeeklyArgs:
    def __init__(__self__, *,
                 day_of_week: pulumi.Input[str],
                 interval_weeks: pulumi.Input[int],
                 time_of_day: pulumi.Input[str],
                 until_date: Optional[pulumi.Input[str]] = None):
        pulumi.set(__self__, "day_of_week", day_of_week)
        pulumi.set(__self__, "interval_weeks", interval_weeks)
        pulumi.set(__self__, "time_of_day", time_of_day)
        if until_date is not None:
            pulumi.set(__self__, "until_date", until_date)

    @property
    @pulumi.getter(name="dayOfWeek")
    def day_of_week(self) -> pulumi.Input[str]:
        return pulumi.get(self, "day_of_week")

    @day_of_week.setter
    def day_of_week(self, value: pulumi.Input[str]):
        pulumi.set(self, "day_of_week", value)

    @property
    @pulumi.getter(name="intervalWeeks")
    def interval_weeks(self) -> pulumi.Input[int]:
        return pulumi.get(self, "interval_weeks")

    @interval_weeks.setter
    def interval_weeks(self, value: pulumi.Input[int]):
        pulumi.set(self, "interval_weeks", value)

    @property
    @pulumi.getter(name="timeOfDay")
    def time_of_day(self) -> pulumi.Input[str]:
        return pulumi.get(self, "time_of_day")

    @time_of_day.setter
    def time_of_day(self, value: pulumi.Input[str]):
        pulumi.set(self, "time_of_day", value)

    @property
    @pulumi.getter(name="untilDate")
    def until_date(self) -> Optional[pulumi.Input[str]]:
        return pulumi.get(self, "until_date")

    @until_date.setter
    def until_date(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "until_date", value)


@pulumi.input_type
class SqlWidgetParameterArgs:
    def __init__(__self__, *,
                 name: pulumi.Input[str],
                 type: pulumi.Input[str],
                 map_to: Optional[pulumi.Input[str]] = None,
                 title: Optional[pulumi.Input[str]] = None,
                 value: Optional[pulumi.Input[str]] = None,
                 values: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None):
        pulumi.set(__self__, "name", name)
        pulumi.set(__self__, "type", type)
        if map_to is not None:
            pulumi.set(__self__, "map_to", map_to)
        if title is not None:
            pulumi.set(__self__, "title", title)
        if value is not None:
            pulumi.set(__self__, "value", value)
        if values is not None:
            pulumi.set(__self__, "values", values)

    @property
    @pulumi.getter
    def name(self) -> pulumi.Input[str]:
        return pulumi.get(self, "name")

    @name.setter
    def name(self, value: pulumi.Input[str]):
        pulumi.set(self, "name", value)

    @property
    @pulumi.getter
    def type(self) -> pulumi.Input[str]:
        return pulumi.get(self, "type")

    @type.setter
    def type(self, value: pulumi.Input[str]):
        pulumi.set(self, "type", value)

    @property
    @pulumi.getter(name="mapTo")
    def map_to(self) -> Optional[pulumi.Input[str]]:
        return pulumi.get(self, "map_to")

    @map_to.setter
    def map_to(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "map_to", value)

    @property
    @pulumi.getter
    def title(self) -> Optional[pulumi.Input[str]]:
        return pulumi.get(self, "title")

    @title.setter
    def title(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "title", value)

    @property
    @pulumi.getter
    def value(self) -> Optional[pulumi.Input[str]]:
        return pulumi.get(self, "value")

    @value.setter
    def value(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "value", value)

    @property
    @pulumi.getter
    def values(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]:
        return pulumi.get(self, "values")

    @values.setter
    def values(self, value: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]):
        pulumi.set(self, "values", value)


@pulumi.input_type
class SqlWidgetPositionArgs:
    def __init__(__self__, *,
                 size_x: pulumi.Input[int],
                 size_y: pulumi.Input[int],
                 auto_height: Optional[pulumi.Input[bool]] = None,
                 pos_x: Optional[pulumi.Input[int]] = None,
                 pos_y: Optional[pulumi.Input[int]] = None):
        pulumi.set(__self__, "size_x", size_x)
        pulumi.set(__self__, "size_y", size_y)
        if auto_height is not None:
            pulumi.set(__self__, "auto_height", auto_height)
        if pos_x is not None:
            pulumi.set(__self__, "pos_x", pos_x)
        if pos_y is not None:
            pulumi.set(__self__, "pos_y", pos_y)

    @property
    @pulumi.getter(name="sizeX")
    def size_x(self) -> pulumi.Input[int]:
        return pulumi.get(self, "size_x")

    @size_x.setter
    def size_x(self, value: pulumi.Input[int]):
        pulumi.set(self, "size_x", value)

    @property
    @pulumi.getter(name="sizeY")
    def size_y(self) -> pulumi.Input[int]:
        return pulumi.get(self, "size_y")

    @size_y.setter
    def size_y(self, value: pulumi.Input[int]):
        pulumi.set(self, "size_y", value)

    @property
    @pulumi.getter(name="autoHeight")
    def auto_height(self) -> Optional[pulumi.Input[bool]]:
        return pulumi.get(self, "auto_height")

    @auto_height.setter
    def auto_height(self, value: Optional[pulumi.Input[bool]]):
        pulumi.set(self, "auto_height", value)

    @property
    @pulumi.getter(name="posX")
    def pos_x(self) -> Optional[pulumi.Input[int]]:
        return pulumi.get(self, "pos_x")

    @pos_x.setter
    def pos_x(self, value: Optional[pulumi.Input[int]]):
        pulumi.set(self, "pos_x", value)

    @property
    @pulumi.getter(name="posY")
    def pos_y(self) -> Optional[pulumi.Input[int]]:
        return pulumi.get(self, "pos_y")

    @pos_y.setter
    def pos_y(self, value: Optional[pulumi.Input[int]]):
        pulumi.set(self, "pos_y", value)


@pulumi.input_type
class StorageCredentialAwsIamRoleArgs:
    def __init__(__self__, *,
                 role_arn: pulumi.Input[str]):
        """
        :param pulumi.Input[str] role_arn: The Amazon Resource Name (ARN) of the AWS IAM role for S3 data access, of the form `arn:aws:iam::1234567890:role/MyRole-AJJHDSKSDF`
        """
        pulumi.set(__self__, "role_arn", role_arn)

    @property
    @pulumi.getter(name="roleArn")
    def role_arn(self) -> pulumi.Input[str]:
        """
        The Amazon Resource Name (ARN) of the AWS IAM role for S3 data access, of the form `arn:aws:iam::1234567890:role/MyRole-AJJHDSKSDF`
        """
        return pulumi.get(self, "role_arn")

    @role_arn.setter
    def role_arn(self, value: pulumi.Input[str]):
        pulumi.set(self, "role_arn", value)


@pulumi.input_type
class StorageCredentialAzureManagedIdentityArgs:
    def __init__(__self__, *,
                 access_connector_id: pulumi.Input[str]):
        """
        :param pulumi.Input[str] access_connector_id: The Resource ID of the Azure Databricks Access Connector resource, of the form `/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/rg-name/providers/Microsoft.Databricks/accessConnectors/connector-name`
        """
        pulumi.set(__self__, "access_connector_id", access_connector_id)

    @property
    @pulumi.getter(name="accessConnectorId")
    def access_connector_id(self) -> pulumi.Input[str]:
        """
        The Resource ID of the Azure Databricks Access Connector resource, of the form `/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/rg-name/providers/Microsoft.Databricks/accessConnectors/connector-name`
        """
        return pulumi.get(self, "access_connector_id")

    @access_connector_id.setter
    def access_connector_id(self, value: pulumi.Input[str]):
        pulumi.set(self, "access_connector_id", value)


@pulumi.input_type
class StorageCredentialAzureServicePrincipalArgs:
    def __init__(__self__, *,
                 application_id: pulumi.Input[str],
                 client_secret: pulumi.Input[str],
                 directory_id: pulumi.Input[str]):
        """
        :param pulumi.Input[str] application_id: The application ID of the application registration within the referenced AAD tenant
        :param pulumi.Input[str] client_secret: The client secret generated for the above app ID in AAD. **This field is redacted on output**
        :param pulumi.Input[str] directory_id: The directory ID corresponding to the Azure Active Directory (AAD) tenant of the application
        """
        pulumi.set(__self__, "application_id", application_id)
        pulumi.set(__self__, "client_secret", client_secret)
        pulumi.set(__self__, "directory_id", directory_id)

    @property
    @pulumi.getter(name="applicationId")
    def application_id(self) -> pulumi.Input[str]:
        """
        The application ID of the application registration within the referenced AAD tenant
        """
        return pulumi.get(self, "application_id")

    @application_id.setter
    def application_id(self, value: pulumi.Input[str]):
        pulumi.set(self, "application_id", value)

    @property
    @pulumi.getter(name="clientSecret")
    def client_secret(self) -> pulumi.Input[str]:
        """
        The client secret generated for the above app ID in AAD. **This field is redacted on output**
        """
        return pulumi.get(self, "client_secret")

    @client_secret.setter
    def client_secret(self, value: pulumi.Input[str]):
        pulumi.set(self, "client_secret", value)

    @property
    @pulumi.getter(name="directoryId")
    def directory_id(self) -> pulumi.Input[str]:
        """
        The directory ID corresponding to the Azure Active Directory (AAD) tenant of the application
        """
        return pulumi.get(self, "directory_id")

    @directory_id.setter
    def directory_id(self, value: pulumi.Input[str]):
        pulumi.set(self, "directory_id", value)


@pulumi.input_type
class StorageCredentialGcpServiceAccountKeyArgs:
    def __init__(__self__, *,
                 email: pulumi.Input[str],
                 private_key: pulumi.Input[str],
                 private_key_id: pulumi.Input[str]):
        pulumi.set(__self__, "email", email)
        pulumi.set(__self__, "private_key", private_key)
        pulumi.set(__self__, "private_key_id", private_key_id)

    @property
    @pulumi.getter
    def email(self) -> pulumi.Input[str]:
        return pulumi.get(self, "email")

    @email.setter
    def email(self, value: pulumi.Input[str]):
        pulumi.set(self, "email", value)

    @property
    @pulumi.getter(name="privateKey")
    def private_key(self) -> pulumi.Input[str]:
        return pulumi.get(self, "private_key")

    @private_key.setter
    def private_key(self, value: pulumi.Input[str]):
        pulumi.set(self, "private_key", value)

    @property
    @pulumi.getter(name="privateKeyId")
    def private_key_id(self) -> pulumi.Input[str]:
        return pulumi.get(self, "private_key_id")

    @private_key_id.setter
    def private_key_id(self, value: pulumi.Input[str]):
        pulumi.set(self, "private_key_id", value)


@pulumi.input_type
class TableColumnArgs:
    def __init__(__self__, *,
                 name: pulumi.Input[str],
                 position: pulumi.Input[int],
                 type_name: pulumi.Input[str],
                 type_text: pulumi.Input[str],
                 comment: Optional[pulumi.Input[str]] = None,
                 nullable: Optional[pulumi.Input[bool]] = None,
                 partition_index: Optional[pulumi.Input[int]] = None,
                 type_interval_type: Optional[pulumi.Input[str]] = None,
                 type_json: Optional[pulumi.Input[str]] = None,
                 type_precision: Optional[pulumi.Input[int]] = None,
                 type_scale: Optional[pulumi.Input[int]] = None):
        pulumi.set(__self__, "name", name)
        pulumi.set(__self__, "position", position)
        pulumi.set(__self__, "type_name", type_name)
        pulumi.set(__self__, "type_text", type_text)
        if comment is not None:
            pulumi.set(__self__, "comment", comment)
        if nullable is not None:
            pulumi.set(__self__, "nullable", nullable)
        if partition_index is not None:
            pulumi.set(__self__, "partition_index", partition_index)
        if type_interval_type is not None:
            pulumi.set(__self__, "type_interval_type", type_interval_type)
        if type_json is not None:
            pulumi.set(__self__, "type_json", type_json)
        if type_precision is not None:
            pulumi.set(__self__, "type_precision", type_precision)
        if type_scale is not None:
            pulumi.set(__self__, "type_scale", type_scale)

    @property
    @pulumi.getter
    def name(self) -> pulumi.Input[str]:
        return pulumi.get(self, "name")

    @name.setter
    def name(self, value: pulumi.Input[str]):
        pulumi.set(self, "name", value)

    @property
    @pulumi.getter
    def position(self) -> pulumi.Input[int]:
        return pulumi.get(self, "position")

    @position.setter
    def position(self, value: pulumi.Input[int]):
        pulumi.set(self, "position", value)

    @property
    @pulumi.getter(name="typeName")
    def type_name(self) -> pulumi.Input[str]:
        return pulumi.get(self, "type_name")

    @type_name.setter
    def type_name(self, value: pulumi.Input[str]):
        pulumi.set(self, "type_name", value)

    @property
    @pulumi.getter(name="typeText")
    def type_text(self) -> pulumi.Input[str]:
        return pulumi.get(self, "type_text")

    @type_text.setter
    def type_text(self, value: pulumi.Input[str]):
        pulumi.set(self, "type_text", value)

    @property
    @pulumi.getter
    def comment(self) -> Optional[pulumi.Input[str]]:
        return pulumi.get(self, "comment")

    @comment.setter
    def comment(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "comment", value)

    @property
    @pulumi.getter
    def nullable(self) -> Optional[pulumi.Input[bool]]:
        return pulumi.get(self, "nullable")

    @nullable.setter
    def nullable(self, value: Optional[pulumi.Input[bool]]):
        pulumi.set(self, "nullable", value)

    @property
    @pulumi.getter(name="partitionIndex")
    def partition_index(self) -> Optional[pulumi.Input[int]]:
        return pulumi.get(self, "partition_index")

    @partition_index.setter
    def partition_index(self, value: Optional[pulumi.Input[int]]):
        pulumi.set(self, "partition_index", value)

    @property
    @pulumi.getter(name="typeIntervalType")
    def type_interval_type(self) -> Optional[pulumi.Input[str]]:
        return pulumi.get(self, "type_interval_type")

    @type_interval_type.setter
    def type_interval_type(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "type_interval_type", value)

    @property
    @pulumi.getter(name="typeJson")
    def type_json(self) -> Optional[pulumi.Input[str]]:
        return pulumi.get(self, "type_json")

    @type_json.setter
    def type_json(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "type_json", value)

    @property
    @pulumi.getter(name="typePrecision")
    def type_precision(self) -> Optional[pulumi.Input[int]]:
        return pulumi.get(self, "type_precision")

    @type_precision.setter
    def type_precision(self, value: Optional[pulumi.Input[int]]):
        pulumi.set(self, "type_precision", value)

    @property
    @pulumi.getter(name="typeScale")
    def type_scale(self) -> Optional[pulumi.Input[int]]:
        return pulumi.get(self, "type_scale")

    @type_scale.setter
    def type_scale(self, value: Optional[pulumi.Input[int]]):
        pulumi.set(self, "type_scale", value)


@pulumi.input_type
class GetClusterClusterInfoArgs:
    def __init__(__self__, *,
                 default_tags: Mapping[str, Any],
                 driver_instance_pool_id: str,
                 spark_version: str,
                 state: str,
                 autoscale: Optional['GetClusterClusterInfoAutoscaleArgs'] = None,
                 autotermination_minutes: Optional[int] = None,
                 aws_attributes: Optional['GetClusterClusterInfoAwsAttributesArgs'] = None,
                 azure_attributes: Optional['GetClusterClusterInfoAzureAttributesArgs'] = None,
                 cluster_cores: Optional[float] = None,
                 cluster_id: Optional[str] = None,
                 cluster_log_conf: Optional['GetClusterClusterInfoClusterLogConfArgs'] = None,
                 cluster_log_status: Optional['GetClusterClusterInfoClusterLogStatusArgs'] = None,
                 cluster_memory_mb: Optional[int] = None,
                 cluster_name: Optional[str] = None,
                 cluster_source: Optional[str] = None,
                 creator_user_name: Optional[str] = None,
                 custom_tags: Optional[Mapping[str, Any]] = None,
                 data_security_mode: Optional[str] = None,
                 docker_image: Optional['GetClusterClusterInfoDockerImageArgs'] = None,
                 driver: Optional['GetClusterClusterInfoDriverArgs'] = None,
                 driver_node_type_id: Optional[str] = None,
                 enable_elastic_disk: Optional[bool] = None,
                 enable_local_disk_encryption: Optional[bool] = None,
                 executors: Optional[Sequence['GetClusterClusterInfoExecutorArgs']] = None,
                 gcp_attributes: Optional['GetClusterClusterInfoGcpAttributesArgs'] = None,
                 init_scripts: Optional[Sequence['GetClusterClusterInfoInitScriptArgs']] = None,
                 instance_pool_id: Optional[str] = None,
                 jdbc_port: Optional[int] = None,
                 last_activity_time: Optional[int] = None,
                 last_state_loss_time: Optional[int] = None,
                 node_type_id: Optional[str] = None,
                 num_workers: Optional[int] = None,
                 policy_id: Optional[str] = None,
                 runtime_engine: Optional[str] = None,
                 single_user_name: Optional[str] = None,
                 spark_conf: Optional[Mapping[str, Any]] = None,
                 spark_context_id: Optional[int] = None,
                 spark_env_vars: Optional[Mapping[str, Any]] = None,
                 ssh_public_keys: Optional[Sequence[str]] = None,
                 start_time: Optional[int] = None,
                 state_message: Optional[str] = None,
                 terminate_time: Optional[int] = None,
                 termination_reason: Optional['GetClusterClusterInfoTerminationReasonArgs'] = None):
        """
        :param str driver_instance_pool_id: similar to `instance_pool_id`, but for driver node.
        :param str spark_version: [Runtime version](https://docs.databricks.com/runtime/index.html) of the cluster.
        :param int autotermination_minutes: Automatically terminate the cluster after being inactive for this time in minutes. If specified, the threshold must be between 10 and 10000 minutes. You can also set this value to 0 to explicitly disable automatic termination.
        :param str cluster_id: The id of the cluster
        :param str cluster_name: The exact name of the cluster to search
        :param Mapping[str, Any] custom_tags: Additional tags for cluster resources.
        :param str data_security_mode: Security features of the cluster. Unity Catalog requires `SINGLE_USER` or `USER_ISOLATION` mode. `LEGACY_PASSTHROUGH` for passthrough cluster and `LEGACY_TABLE_ACL` for Table ACL cluster. Default to `NONE`, i.e. no security feature enabled.
        :param str driver_node_type_id: The node type of the Spark driver.
        :param bool enable_elastic_disk: Use autoscaling local storage.
        :param bool enable_local_disk_encryption: Enable local disk encryption.
        :param str instance_pool_id: The pool of idle instances the cluster is attached to.
        :param str node_type_id: Any supported_get_node_type_id.
        :param str policy_id: Identifier of Cluster Policy to validate cluster and preset certain defaults.
        :param str runtime_engine: The type of runtime of the cluster
        :param str single_user_name: The optional user name of the user to assign to an interactive cluster. This field is required when using standard AAD Passthrough for Azure Data Lake Storage (ADLS) with a single-user cluster (i.e., not high-concurrency clusters).
        :param Mapping[str, Any] spark_conf: Map with key-value pairs to fine-tune Spark clusters.
        :param Mapping[str, Any] spark_env_vars: Map with environment variable key-value pairs to fine-tune Spark clusters. Key-value pairs of the form (X,Y) are exported (i.e., X='Y') while launching the driver and workers.
        :param Sequence[str] ssh_public_keys: SSH public key contents that will be added to each Spark node in this cluster.
        """
        pulumi.set(__self__, "default_tags", default_tags)
        pulumi.set(__self__, "driver_instance_pool_id", driver_instance_pool_id)
        pulumi.set(__self__, "spark_version", spark_version)
        pulumi.set(__self__, "state", state)
        if autoscale is not None:
            pulumi.set(__self__, "autoscale", autoscale)
        if autotermination_minutes is not None:
            pulumi.set(__self__, "autotermination_minutes", autotermination_minutes)
        if aws_attributes is not None:
            pulumi.set(__self__, "aws_attributes", aws_attributes)
        if azure_attributes is not None:
            pulumi.set(__self__, "azure_attributes", azure_attributes)
        if cluster_cores is not None:
            pulumi.set(__self__, "cluster_cores", cluster_cores)
        if cluster_id is not None:
            pulumi.set(__self__, "cluster_id", cluster_id)
        if cluster_log_conf is not None:
            pulumi.set(__self__, "cluster_log_conf", cluster_log_conf)
        if cluster_log_status is not None:
            pulumi.set(__self__, "cluster_log_status", cluster_log_status)
        if cluster_memory_mb is not None:
            pulumi.set(__self__, "cluster_memory_mb", cluster_memory_mb)
        if cluster_name is not None:
            pulumi.set(__self__, "cluster_name", cluster_name)
        if cluster_source is not None:
            pulumi.set(__self__, "cluster_source", cluster_source)
        if creator_user_name is not None:
            pulumi.set(__self__, "creator_user_name", creator_user_name)
        if custom_tags is not None:
            pulumi.set(__self__, "custom_tags", custom_tags)
        if data_security_mode is not None:
            pulumi.set(__self__, "data_security_mode", data_security_mode)
        if docker_image is not None:
            pulumi.set(__self__, "docker_image", docker_image)
        if driver is not None:
            pulumi.set(__self__, "driver", driver)
        if driver_node_type_id is not None:
            pulumi.set(__self__, "driver_node_type_id", driver_node_type_id)
        if enable_elastic_disk is not None:
            pulumi.set(__self__, "enable_elastic_disk", enable_elastic_disk)
        if enable_local_disk_encryption is not None:
            pulumi.set(__self__, "enable_local_disk_encryption", enable_local_disk_encryption)
        if executors is not None:
            pulumi.set(__self__, "executors", executors)
        if gcp_attributes is not None:
            pulumi.set(__self__, "gcp_attributes", gcp_attributes)
        if init_scripts is not None:
            pulumi.set(__self__, "init_scripts", init_scripts)
        if instance_pool_id is not None:
            pulumi.set(__self__, "instance_pool_id", instance_pool_id)
        if jdbc_port is not None:
            pulumi.set(__self__, "jdbc_port", jdbc_port)
        if last_activity_time is not None:
            pulumi.set(__self__, "last_activity_time", last_activity_time)
        if last_state_loss_time is not None:
            pulumi.set(__self__, "last_state_loss_time", last_state_loss_time)
        if node_type_id is not None:
            pulumi.set(__self__, "node_type_id", node_type_id)
        if num_workers is not None:
            pulumi.set(__self__, "num_workers", num_workers)
        if policy_id is not None:
            pulumi.set(__self__, "policy_id", policy_id)
        if runtime_engine is not None:
            pulumi.set(__self__, "runtime_engine", runtime_engine)
        if single_user_name is not None:
            pulumi.set(__self__, "single_user_name", single_user_name)
        if spark_conf is not None:
            pulumi.set(__self__, "spark_conf", spark_conf)
        if spark_context_id is not None:
            pulumi.set(__self__, "spark_context_id", spark_context_id)
        if spark_env_vars is not None:
            pulumi.set(__self__, "spark_env_vars", spark_env_vars)
        if ssh_public_keys is not None:
            pulumi.set(__self__, "ssh_public_keys", ssh_public_keys)
        if start_time is not None:
            pulumi.set(__self__, "start_time", start_time)
        if state_message is not None:
            pulumi.set(__self__, "state_message", state_message)
        if terminate_time is not None:
            pulumi.set(__self__, "terminate_time", terminate_time)
        if termination_reason is not None:
            pulumi.set(__self__, "termination_reason", termination_reason)

    @property
    @pulumi.getter(name="defaultTags")
    def default_tags(self) -> Mapping[str, Any]:
        return pulumi.get(self, "default_tags")

    @default_tags.setter
    def default_tags(self, value: Mapping[str, Any]):
        pulumi.set(self, "default_tags", value)

    @property
    @pulumi.getter(name="driverInstancePoolId")
    def driver_instance_pool_id(self) -> str:
        """
        similar to `instance_pool_id`, but for driver node.
        """
        return pulumi.get(self, "driver_instance_pool_id")

    @driver_instance_pool_id.setter
    def driver_instance_pool_id(self, value: str):
        pulumi.set(self, "driver_instance_pool_id", value)

    @property
    @pulumi.getter(name="sparkVersion")
    def spark_version(self) -> str:
        """
        [Runtime version](https://docs.databricks.com/runtime/index.html) of the cluster.
        """
        return pulumi.get(self, "spark_version")

    @spark_version.setter
    def spark_version(self, value: str):
        pulumi.set(self, "spark_version", value)

    @property
    @pulumi.getter
    def state(self) -> str:
        return pulumi.get(self, "state")

    @state.setter
    def state(self, value: str):
        pulumi.set(self, "state", value)

    @property
    @pulumi.getter
    def autoscale(self) -> Optional['GetClusterClusterInfoAutoscaleArgs']:
        return pulumi.get(self, "autoscale")

    @autoscale.setter
    def autoscale(self, value: Optional['GetClusterClusterInfoAutoscaleArgs']):
        pulumi.set(self, "autoscale", value)

    @property
    @pulumi.getter(name="autoterminationMinutes")
    def autotermination_minutes(self) -> Optional[int]:
        """
        Automatically terminate the cluster after being inactive for this time in minutes. If specified, the threshold must be between 10 and 10000 minutes. You can also set this value to 0 to explicitly disable automatic termination.
        """
        return pulumi.get(self, "autotermination_minutes")

    @autotermination_minutes.setter
    def autotermination_minutes(self, value: Optional[int]):
        pulumi.set(self, "autotermination_minutes", value)

    @property
    @pulumi.getter(name="awsAttributes")
    def aws_attributes(self) -> Optional['GetClusterClusterInfoAwsAttributesArgs']:
        return pulumi.get(self, "aws_attributes")

    @aws_attributes.setter
    def aws_attributes(self, value: Optional['GetClusterClusterInfoAwsAttributesArgs']):
        pulumi.set(self, "aws_attributes", value)

    @property
    @pulumi.getter(name="azureAttributes")
    def azure_attributes(self) -> Optional['GetClusterClusterInfoAzureAttributesArgs']:
        return pulumi.get(self, "azure_attributes")

    @azure_attributes.setter
    def azure_attributes(self, value: Optional['GetClusterClusterInfoAzureAttributesArgs']):
        pulumi.set(self, "azure_attributes", value)

    @property
    @pulumi.getter(name="clusterCores")
    def cluster_cores(self) -> Optional[float]:
        return pulumi.get(self, "cluster_cores")

    @cluster_cores.setter
    def cluster_cores(self, value: Optional[float]):
        pulumi.set(self, "cluster_cores", value)

    @property
    @pulumi.getter(name="clusterId")
    def cluster_id(self) -> Optional[str]:
        """
        The id of the cluster
        """
        return pulumi.get(self, "cluster_id")

    @cluster_id.setter
    def cluster_id(self, value: Optional[str]):
        pulumi.set(self, "cluster_id", value)

    @property
    @pulumi.getter(name="clusterLogConf")
    def cluster_log_conf(self) -> Optional['GetClusterClusterInfoClusterLogConfArgs']:
        return pulumi.get(self, "cluster_log_conf")

    @cluster_log_conf.setter
    def cluster_log_conf(self, value: Optional['GetClusterClusterInfoClusterLogConfArgs']):
        pulumi.set(self, "cluster_log_conf", value)

    @property
    @pulumi.getter(name="clusterLogStatus")
    def cluster_log_status(self) -> Optional['GetClusterClusterInfoClusterLogStatusArgs']:
        return pulumi.get(self, "cluster_log_status")

    @cluster_log_status.setter
    def cluster_log_status(self, value: Optional['GetClusterClusterInfoClusterLogStatusArgs']):
        pulumi.set(self, "cluster_log_status", value)

    @property
    @pulumi.getter(name="clusterMemoryMb")
    def cluster_memory_mb(self) -> Optional[int]:
        return pulumi.get(self, "cluster_memory_mb")

    @cluster_memory_mb.setter
    def cluster_memory_mb(self, value: Optional[int]):
        pulumi.set(self, "cluster_memory_mb", value)

    @property
    @pulumi.getter(name="clusterName")
    def cluster_name(self) -> Optional[str]:
        """
        The exact name of the cluster to search
        """
        return pulumi.get(self, "cluster_name")

    @cluster_name.setter
    def cluster_name(self, value: Optional[str]):
        pulumi.set(self, "cluster_name", value)

    @property
    @pulumi.getter(name="clusterSource")
    def cluster_source(self) -> Optional[str]:
        return pulumi.get(self, "cluster_source")

    @cluster_source.setter
    def cluster_source(self, value: Optional[str]):
        pulumi.set(self, "cluster_source", value)

    @property
    @pulumi.getter(name="creatorUserName")
    def creator_user_name(self) -> Optional[str]:
        return pulumi.get(self, "creator_user_name")

    @creator_user_name.setter
    def creator_user_name(self, value: Optional[str]):
        pulumi.set(self, "creator_user_name", value)

    @property
    @pulumi.getter(name="customTags")
    def custom_tags(self) -> Optional[Mapping[str, Any]]:
        """
        Additional tags for cluster resources.
        """
        return pulumi.get(self, "custom_tags")

    @custom_tags.setter
    def custom_tags(self, value: Optional[Mapping[str, Any]]):
        pulumi.set(self, "custom_tags", value)

    @property
    @pulumi.getter(name="dataSecurityMode")
    def data_security_mode(self) -> Optional[str]:
        """
        Security features of the cluster. Unity Catalog requires `SINGLE_USER` or `USER_ISOLATION` mode. `LEGACY_PASSTHROUGH` for passthrough cluster and `LEGACY_TABLE_ACL` for Table ACL cluster. Default to `NONE`, i.e. no security feature enabled.
        """
        return pulumi.get(self, "data_security_mode")

    @data_security_mode.setter
    def data_security_mode(self, value: Optional[str]):
        pulumi.set(self, "data_security_mode", value)

    @property
    @pulumi.getter(name="dockerImage")
    def docker_image(self) -> Optional['GetClusterClusterInfoDockerImageArgs']:
        return pulumi.get(self, "docker_image")

    @docker_image.setter
    def docker_image(self, value: Optional['GetClusterClusterInfoDockerImageArgs']):
        pulumi.set(self, "docker_image", value)

    @property
    @pulumi.getter
    def driver(self) -> Optional['GetClusterClusterInfoDriverArgs']:
        return pulumi.get(self, "driver")

    @driver.setter
    def driver(self, value: Optional['GetClusterClusterInfoDriverArgs']):
        pulumi.set(self, "driver", value)

    @property
    @pulumi.getter(name="driverNodeTypeId")
    def driver_node_type_id(self) -> Optional[str]:
        """
        The node type of the Spark driver.
        """
        return pulumi.get(self, "driver_node_type_id")

    @driver_node_type_id.setter
    def driver_node_type_id(self, value: Optional[str]):
        pulumi.set(self, "driver_node_type_id", value)

    @property
    @pulumi.getter(name="enableElasticDisk")
    def enable_elastic_disk(self) -> Optional[bool]:
        """
        Use autoscaling local storage.
        """
        return pulumi.get(self, "enable_elastic_disk")

    @enable_elastic_disk.setter
    def enable_elastic_disk(self, value: Optional[bool]):
        pulumi.set(self, "enable_elastic_disk", value)

    @property
    @pulumi.getter(name="enableLocalDiskEncryption")
    def enable_local_disk_encryption(self) -> Optional[bool]:
        """
        Enable local disk encryption.
        """
        return pulumi.get(self, "enable_local_disk_encryption")

    @enable_local_disk_encryption.setter
    def enable_local_disk_encryption(self, value: Optional[bool]):
        pulumi.set(self, "enable_local_disk_encryption", value)

    @property
    @pulumi.getter
    def executors(self) -> Optional[Sequence['GetClusterClusterInfoExecutorArgs']]:
        return pulumi.get(self, "executors")

    @executors.setter
    def executors(self, value: Optional[Sequence['GetClusterClusterInfoExecutorArgs']]):
        pulumi.set(self, "executors", value)

    @property
    @pulumi.getter(name="gcpAttributes")
    def gcp_attributes(self) -> Optional['GetClusterClusterInfoGcpAttributesArgs']:
        return pulumi.get(self, "gcp_attributes")

    @gcp_attributes.setter
    def gcp_attributes(self, value: Optional['GetClusterClusterInfoGcpAttributesArgs']):
        pulumi.set(self, "gcp_attributes", value)

    @property
    @pulumi.getter(name="initScripts")
    def init_scripts(self) -> Optional[Sequence['GetClusterClusterInfoInitScriptArgs']]:
        return pulumi.get(self, "init_scripts")

    @init_scripts.setter
    def init_scripts(self, value: Optional[Sequence['GetClusterClusterInfoInitScriptArgs']]):
        pulumi.set(self, "init_scripts", value)

    @property
    @pulumi.getter(name="instancePoolId")
    def instance_pool_id(self) -> Optional[str]:
        """
        The pool of idle instances the cluster is attached to.
        """
        return pulumi.get(self, "instance_pool_id")

    @instance_pool_id.setter
    def instance_pool_id(self, value: Optional[str]):
        pulumi.set(self, "instance_pool_id", value)

    @property
    @pulumi.getter(name="jdbcPort")
    def jdbc_port(self) -> Optional[int]:
        return pulumi.get(self, "jdbc_port")

    @jdbc_port.setter
    def jdbc_port(self, value: Optional[int]):
        pulumi.set(self, "jdbc_port", value)

    @property
    @pulumi.getter(name="lastActivityTime")
    def last_activity_time(self) -> Optional[int]:
        return pulumi.get(self, "last_activity_time")

    @last_activity_time.setter
    def last_activity_time(self, value: Optional[int]):
        pulumi.set(self, "last_activity_time", value)

    @property
    @pulumi.getter(name="lastStateLossTime")
    def last_state_loss_time(self) -> Optional[int]:
        return pulumi.get(self, "last_state_loss_time")

    @last_state_loss_time.setter
    def last_state_loss_time(self, value: Optional[int]):
        pulumi.set(self, "last_state_loss_time", value)

    @property
    @pulumi.getter(name="nodeTypeId")
    def node_type_id(self) -> Optional[str]:
        """
        Any supported_get_node_type_id.
        """
        return pulumi.get(self, "node_type_id")

    @node_type_id.setter
    def node_type_id(self, value: Optional[str]):
        pulumi.set(self, "node_type_id", value)

    @property
    @pulumi.getter(name="numWorkers")
    def num_workers(self) -> Optional[int]:
        return pulumi.get(self, "num_workers")

    @num_workers.setter
    def num_workers(self, value: Optional[int]):
        pulumi.set(self, "num_workers", value)

    @property
    @pulumi.getter(name="policyId")
    def policy_id(self) -> Optional[str]:
        """
        Identifier of Cluster Policy to validate cluster and preset certain defaults.
        """
        return pulumi.get(self, "policy_id")

    @policy_id.setter
    def policy_id(self, value: Optional[str]):
        pulumi.set(self, "policy_id", value)

    @property
    @pulumi.getter(name="runtimeEngine")
    def runtime_engine(self) -> Optional[str]:
        """
        The type of runtime of the cluster
        """
        return pulumi.get(self, "runtime_engine")

    @runtime_engine.setter
    def runtime_engine(self, value: Optional[str]):
        pulumi.set(self, "runtime_engine", value)

    @property
    @pulumi.getter(name="singleUserName")
    def single_user_name(self) -> Optional[str]:
        """
        The optional user name of the user to assign to an interactive cluster. This field is required when using standard AAD Passthrough for Azure Data Lake Storage (ADLS) with a single-user cluster (i.e., not high-concurrency clusters).
        """
        return pulumi.get(self, "single_user_name")

    @single_user_name.setter
    def single_user_name(self, value: Optional[str]):
        pulumi.set(self, "single_user_name", value)

    @property
    @pulumi.getter(name="sparkConf")
    def spark_conf(self) -> Optional[Mapping[str, Any]]:
        """
        Map with key-value pairs to fine-tune Spark clusters.
        """
        return pulumi.get(self, "spark_conf")

    @spark_conf.setter
    def spark_conf(self, value: Optional[Mapping[str, Any]]):
        pulumi.set(self, "spark_conf", value)

    @property
    @pulumi.getter(name="sparkContextId")
    def spark_context_id(self) -> Optional[int]:
        return pulumi.get(self, "spark_context_id")

    @spark_context_id.setter
    def spark_context_id(self, value: Optional[int]):
        pulumi.set(self, "spark_context_id", value)

    @property
    @pulumi.getter(name="sparkEnvVars")
    def spark_env_vars(self) -> Optional[Mapping[str, Any]]:
        """
        Map with environment variable key-value pairs to fine-tune Spark clusters. Key-value pairs of the form (X,Y) are exported (i.e., X='Y') while launching the driver and workers.
        """
        return pulumi.get(self, "spark_env_vars")

    @spark_env_vars.setter
    def spark_env_vars(self, value: Optional[Mapping[str, Any]]):
        pulumi.set(self, "spark_env_vars", value)

    @property
    @pulumi.getter(name="sshPublicKeys")
    def ssh_public_keys(self) -> Optional[Sequence[str]]:
        """
        SSH public key contents that will be added to each Spark node in this cluster.
        """
        return pulumi.get(self, "ssh_public_keys")

    @ssh_public_keys.setter
    def ssh_public_keys(self, value: Optional[Sequence[str]]):
        pulumi.set(self, "ssh_public_keys", value)

    @property
    @pulumi.getter(name="startTime")
    def start_time(self) -> Optional[int]:
        return pulumi.get(self, "start_time")

    @start_time.setter
    def start_time(self, value: Optional[int]):
        pulumi.set(self, "start_time", value)

    @property
    @pulumi.getter(name="stateMessage")
    def state_message(self) -> Optional[str]:
        return pulumi.get(self, "state_message")

    @state_message.setter
    def state_message(self, value: Optional[str]):
        pulumi.set(self, "state_message", value)

    @property
    @pulumi.getter(name="terminateTime")
    def terminate_time(self) -> Optional[int]:
        return pulumi.get(self, "terminate_time")

    @terminate_time.setter
    def terminate_time(self, value: Optional[int]):
        pulumi.set(self, "terminate_time", value)

    @property
    @pulumi.getter(name="terminationReason")
    def termination_reason(self) -> Optional['GetClusterClusterInfoTerminationReasonArgs']:
        return pulumi.get(self, "termination_reason")

    @termination_reason.setter
    def termination_reason(self, value: Optional['GetClusterClusterInfoTerminationReasonArgs']):
        pulumi.set(self, "termination_reason", value)


@pulumi.input_type
class GetClusterClusterInfoAutoscaleArgs:
    def __init__(__self__, *,
                 max_workers: Optional[int] = None,
                 min_workers: Optional[int] = None):
        if max_workers is not None:
            pulumi.set(__self__, "max_workers", max_workers)
        if min_workers is not None:
            pulumi.set(__self__, "min_workers", min_workers)

    @property
    @pulumi.getter(name="maxWorkers")
    def max_workers(self) -> Optional[int]:
        return pulumi.get(self, "max_workers")

    @max_workers.setter
    def max_workers(self, value: Optional[int]):
        pulumi.set(self, "max_workers", value)

    @property
    @pulumi.getter(name="minWorkers")
    def min_workers(self) -> Optional[int]:
        return pulumi.get(self, "min_workers")

    @min_workers.setter
    def min_workers(self, value: Optional[int]):
        pulumi.set(self, "min_workers", value)


@pulumi.input_type
class GetClusterClusterInfoAwsAttributesArgs:
    def __init__(__self__, *,
                 availability: Optional[str] = None,
                 ebs_volume_count: Optional[int] = None,
                 ebs_volume_size: Optional[int] = None,
                 ebs_volume_type: Optional[str] = None,
                 first_on_demand: Optional[int] = None,
                 instance_profile_arn: Optional[str] = None,
                 spot_bid_price_percent: Optional[int] = None,
                 zone_id: Optional[str] = None):
        if availability is not None:
            pulumi.set(__self__, "availability", availability)
        if ebs_volume_count is not None:
            pulumi.set(__self__, "ebs_volume_count", ebs_volume_count)
        if ebs_volume_size is not None:
            pulumi.set(__self__, "ebs_volume_size", ebs_volume_size)
        if ebs_volume_type is not None:
            pulumi.set(__self__, "ebs_volume_type", ebs_volume_type)
        if first_on_demand is not None:
            pulumi.set(__self__, "first_on_demand", first_on_demand)
        if instance_profile_arn is not None:
            pulumi.set(__self__, "instance_profile_arn", instance_profile_arn)
        if spot_bid_price_percent is not None:
            pulumi.set(__self__, "spot_bid_price_percent", spot_bid_price_percent)
        if zone_id is not None:
            pulumi.set(__self__, "zone_id", zone_id)

    @property
    @pulumi.getter
    def availability(self) -> Optional[str]:
        return pulumi.get(self, "availability")

    @availability.setter
    def availability(self, value: Optional[str]):
        pulumi.set(self, "availability", value)

    @property
    @pulumi.getter(name="ebsVolumeCount")
    def ebs_volume_count(self) -> Optional[int]:
        return pulumi.get(self, "ebs_volume_count")

    @ebs_volume_count.setter
    def ebs_volume_count(self, value: Optional[int]):
        pulumi.set(self, "ebs_volume_count", value)

    @property
    @pulumi.getter(name="ebsVolumeSize")
    def ebs_volume_size(self) -> Optional[int]:
        return pulumi.get(self, "ebs_volume_size")

    @ebs_volume_size.setter
    def ebs_volume_size(self, value: Optional[int]):
        pulumi.set(self, "ebs_volume_size", value)

    @property
    @pulumi.getter(name="ebsVolumeType")
    def ebs_volume_type(self) -> Optional[str]:
        return pulumi.get(self, "ebs_volume_type")

    @ebs_volume_type.setter
    def ebs_volume_type(self, value: Optional[str]):
        pulumi.set(self, "ebs_volume_type", value)

    @property
    @pulumi.getter(name="firstOnDemand")
    def first_on_demand(self) -> Optional[int]:
        return pulumi.get(self, "first_on_demand")

    @first_on_demand.setter
    def first_on_demand(self, value: Optional[int]):
        pulumi.set(self, "first_on_demand", value)

    @property
    @pulumi.getter(name="instanceProfileArn")
    def instance_profile_arn(self) -> Optional[str]:
        return pulumi.get(self, "instance_profile_arn")

    @instance_profile_arn.setter
    def instance_profile_arn(self, value: Optional[str]):
        pulumi.set(self, "instance_profile_arn", value)

    @property
    @pulumi.getter(name="spotBidPricePercent")
    def spot_bid_price_percent(self) -> Optional[int]:
        return pulumi.get(self, "spot_bid_price_percent")

    @spot_bid_price_percent.setter
    def spot_bid_price_percent(self, value: Optional[int]):
        pulumi.set(self, "spot_bid_price_percent", value)

    @property
    @pulumi.getter(name="zoneId")
    def zone_id(self) -> Optional[str]:
        return pulumi.get(self, "zone_id")

    @zone_id.setter
    def zone_id(self, value: Optional[str]):
        pulumi.set(self, "zone_id", value)


@pulumi.input_type
class GetClusterClusterInfoAzureAttributesArgs:
    def __init__(__self__, *,
                 availability: Optional[str] = None,
                 first_on_demand: Optional[int] = None,
                 spot_bid_max_price: Optional[float] = None):
        if availability is not None:
            pulumi.set(__self__, "availability", availability)
        if first_on_demand is not None:
            pulumi.set(__self__, "first_on_demand", first_on_demand)
        if spot_bid_max_price is not None:
            pulumi.set(__self__, "spot_bid_max_price", spot_bid_max_price)

    @property
    @pulumi.getter
    def availability(self) -> Optional[str]:
        return pulumi.get(self, "availability")

    @availability.setter
    def availability(self, value: Optional[str]):
        pulumi.set(self, "availability", value)

    @property
    @pulumi.getter(name="firstOnDemand")
    def first_on_demand(self) -> Optional[int]:
        return pulumi.get(self, "first_on_demand")

    @first_on_demand.setter
    def first_on_demand(self, value: Optional[int]):
        pulumi.set(self, "first_on_demand", value)

    @property
    @pulumi.getter(name="spotBidMaxPrice")
    def spot_bid_max_price(self) -> Optional[float]:
        return pulumi.get(self, "spot_bid_max_price")

    @spot_bid_max_price.setter
    def spot_bid_max_price(self, value: Optional[float]):
        pulumi.set(self, "spot_bid_max_price", value)


@pulumi.input_type
class GetClusterClusterInfoClusterLogConfArgs:
    def __init__(__self__, *,
                 dbfs: Optional['GetClusterClusterInfoClusterLogConfDbfsArgs'] = None,
                 s3: Optional['GetClusterClusterInfoClusterLogConfS3Args'] = None):
        if dbfs is not None:
            pulumi.set(__self__, "dbfs", dbfs)
        if s3 is not None:
            pulumi.set(__self__, "s3", s3)

    @property
    @pulumi.getter
    def dbfs(self) -> Optional['GetClusterClusterInfoClusterLogConfDbfsArgs']:
        return pulumi.get(self, "dbfs")

    @dbfs.setter
    def dbfs(self, value: Optional['GetClusterClusterInfoClusterLogConfDbfsArgs']):
        pulumi.set(self, "dbfs", value)

    @property
    @pulumi.getter
    def s3(self) -> Optional['GetClusterClusterInfoClusterLogConfS3Args']:
        return pulumi.get(self, "s3")

    @s3.setter
    def s3(self, value: Optional['GetClusterClusterInfoClusterLogConfS3Args']):
        pulumi.set(self, "s3", value)


@pulumi.input_type
class GetClusterClusterInfoClusterLogConfDbfsArgs:
    def __init__(__self__, *,
                 destination: str):
        pulumi.set(__self__, "destination", destination)

    @property
    @pulumi.getter
    def destination(self) -> str:
        return pulumi.get(self, "destination")

    @destination.setter
    def destination(self, value: str):
        pulumi.set(self, "destination", value)


@pulumi.input_type
class GetClusterClusterInfoClusterLogConfS3Args:
    def __init__(__self__, *,
                 destination: str,
                 canned_acl: Optional[str] = None,
                 enable_encryption: Optional[bool] = None,
                 encryption_type: Optional[str] = None,
                 endpoint: Optional[str] = None,
                 kms_key: Optional[str] = None,
                 region: Optional[str] = None):
        pulumi.set(__self__, "destination", destination)
        if canned_acl is not None:
            pulumi.set(__self__, "canned_acl", canned_acl)
        if enable_encryption is not None:
            pulumi.set(__self__, "enable_encryption", enable_encryption)
        if encryption_type is not None:
            pulumi.set(__self__, "encryption_type", encryption_type)
        if endpoint is not None:
            pulumi.set(__self__, "endpoint", endpoint)
        if kms_key is not None:
            pulumi.set(__self__, "kms_key", kms_key)
        if region is not None:
            pulumi.set(__self__, "region", region)

    @property
    @pulumi.getter
    def destination(self) -> str:
        return pulumi.get(self, "destination")

    @destination.setter
    def destination(self, value: str):
        pulumi.set(self, "destination", value)

    @property
    @pulumi.getter(name="cannedAcl")
    def canned_acl(self) -> Optional[str]:
        return pulumi.get(self, "canned_acl")

    @canned_acl.setter
    def canned_acl(self, value: Optional[str]):
        pulumi.set(self, "canned_acl", value)

    @property
    @pulumi.getter(name="enableEncryption")
    def enable_encryption(self) -> Optional[bool]:
        return pulumi.get(self, "enable_encryption")

    @enable_encryption.setter
    def enable_encryption(self, value: Optional[bool]):
        pulumi.set(self, "enable_encryption", value)

    @property
    @pulumi.getter(name="encryptionType")
    def encryption_type(self) -> Optional[str]:
        return pulumi.get(self, "encryption_type")

    @encryption_type.setter
    def encryption_type(self, value: Optional[str]):
        pulumi.set(self, "encryption_type", value)

    @property
    @pulumi.getter
    def endpoint(self) -> Optional[str]:
        return pulumi.get(self, "endpoint")

    @endpoint.setter
    def endpoint(self, value: Optional[str]):
        pulumi.set(self, "endpoint", value)

    @property
    @pulumi.getter(name="kmsKey")
    def kms_key(self) -> Optional[str]:
        return pulumi.get(self, "kms_key")

    @kms_key.setter
    def kms_key(self, value: Optional[str]):
        pulumi.set(self, "kms_key", value)

    @property
    @pulumi.getter
    def region(self) -> Optional[str]:
        return pulumi.get(self, "region")

    @region.setter
    def region(self, value: Optional[str]):
        pulumi.set(self, "region", value)


@pulumi.input_type
class GetClusterClusterInfoClusterLogStatusArgs:
    def __init__(__self__, *,
                 last_attempted: Optional[int] = None,
                 last_exception: Optional[str] = None):
        if last_attempted is not None:
            pulumi.set(__self__, "last_attempted", last_attempted)
        if last_exception is not None:
            pulumi.set(__self__, "last_exception", last_exception)

    @property
    @pulumi.getter(name="lastAttempted")
    def last_attempted(self) -> Optional[int]:
        return pulumi.get(self, "last_attempted")

    @last_attempted.setter
    def last_attempted(self, value: Optional[int]):
        pulumi.set(self, "last_attempted", value)

    @property
    @pulumi.getter(name="lastException")
    def last_exception(self) -> Optional[str]:
        return pulumi.get(self, "last_exception")

    @last_exception.setter
    def last_exception(self, value: Optional[str]):
        pulumi.set(self, "last_exception", value)


@pulumi.input_type
class GetClusterClusterInfoDockerImageArgs:
    def __init__(__self__, *,
                 url: str,
                 basic_auth: Optional['GetClusterClusterInfoDockerImageBasicAuthArgs'] = None):
        pulumi.set(__self__, "url", url)
        if basic_auth is not None:
            pulumi.set(__self__, "basic_auth", basic_auth)

    @property
    @pulumi.getter
    def url(self) -> str:
        return pulumi.get(self, "url")

    @url.setter
    def url(self, value: str):
        pulumi.set(self, "url", value)

    @property
    @pulumi.getter(name="basicAuth")
    def basic_auth(self) -> Optional['GetClusterClusterInfoDockerImageBasicAuthArgs']:
        return pulumi.get(self, "basic_auth")

    @basic_auth.setter
    def basic_auth(self, value: Optional['GetClusterClusterInfoDockerImageBasicAuthArgs']):
        pulumi.set(self, "basic_auth", value)


@pulumi.input_type
class GetClusterClusterInfoDockerImageBasicAuthArgs:
    def __init__(__self__, *,
                 password: str,
                 username: str):
        pulumi.set(__self__, "password", password)
        pulumi.set(__self__, "username", username)

    @property
    @pulumi.getter
    def password(self) -> str:
        return pulumi.get(self, "password")

    @password.setter
    def password(self, value: str):
        pulumi.set(self, "password", value)

    @property
    @pulumi.getter
    def username(self) -> str:
        return pulumi.get(self, "username")

    @username.setter
    def username(self, value: str):
        pulumi.set(self, "username", value)


@pulumi.input_type
class GetClusterClusterInfoDriverArgs:
    def __init__(__self__, *,
                 host_private_ip: Optional[str] = None,
                 instance_id: Optional[str] = None,
                 node_aws_attributes: Optional['GetClusterClusterInfoDriverNodeAwsAttributesArgs'] = None,
                 node_id: Optional[str] = None,
                 private_ip: Optional[str] = None,
                 public_dns: Optional[str] = None,
                 start_timestamp: Optional[int] = None):
        if host_private_ip is not None:
            pulumi.set(__self__, "host_private_ip", host_private_ip)
        if instance_id is not None:
            pulumi.set(__self__, "instance_id", instance_id)
        if node_aws_attributes is not None:
            pulumi.set(__self__, "node_aws_attributes", node_aws_attributes)
        if node_id is not None:
            pulumi.set(__self__, "node_id", node_id)
        if private_ip is not None:
            pulumi.set(__self__, "private_ip", private_ip)
        if public_dns is not None:
            pulumi.set(__self__, "public_dns", public_dns)
        if start_timestamp is not None:
            pulumi.set(__self__, "start_timestamp", start_timestamp)

    @property
    @pulumi.getter(name="hostPrivateIp")
    def host_private_ip(self) -> Optional[str]:
        return pulumi.get(self, "host_private_ip")

    @host_private_ip.setter
    def host_private_ip(self, value: Optional[str]):
        pulumi.set(self, "host_private_ip", value)

    @property
    @pulumi.getter(name="instanceId")
    def instance_id(self) -> Optional[str]:
        return pulumi.get(self, "instance_id")

    @instance_id.setter
    def instance_id(self, value: Optional[str]):
        pulumi.set(self, "instance_id", value)

    @property
    @pulumi.getter(name="nodeAwsAttributes")
    def node_aws_attributes(self) -> Optional['GetClusterClusterInfoDriverNodeAwsAttributesArgs']:
        return pulumi.get(self, "node_aws_attributes")

    @node_aws_attributes.setter
    def node_aws_attributes(self, value: Optional['GetClusterClusterInfoDriverNodeAwsAttributesArgs']):
        pulumi.set(self, "node_aws_attributes", value)

    @property
    @pulumi.getter(name="nodeId")
    def node_id(self) -> Optional[str]:
        return pulumi.get(self, "node_id")

    @node_id.setter
    def node_id(self, value: Optional[str]):
        pulumi.set(self, "node_id", value)

    @property
    @pulumi.getter(name="privateIp")
    def private_ip(self) -> Optional[str]:
        return pulumi.get(self, "private_ip")

    @private_ip.setter
    def private_ip(self, value: Optional[str]):
        pulumi.set(self, "private_ip", value)

    @property
    @pulumi.getter(name="publicDns")
    def public_dns(self) -> Optional[str]:
        return pulumi.get(self, "public_dns")

    @public_dns.setter
    def public_dns(self, value: Optional[str]):
        pulumi.set(self, "public_dns", value)

    @property
    @pulumi.getter(name="startTimestamp")
    def start_timestamp(self) -> Optional[int]:
        return pulumi.get(self, "start_timestamp")

    @start_timestamp.setter
    def start_timestamp(self, value: Optional[int]):
        pulumi.set(self, "start_timestamp", value)


@pulumi.input_type
class GetClusterClusterInfoDriverNodeAwsAttributesArgs:
    def __init__(__self__, *,
                 is_spot: Optional[bool] = None):
        if is_spot is not None:
            pulumi.set(__self__, "is_spot", is_spot)

    @property
    @pulumi.getter(name="isSpot")
    def is_spot(self) -> Optional[bool]:
        return pulumi.get(self, "is_spot")

    @is_spot.setter
    def is_spot(self, value: Optional[bool]):
        pulumi.set(self, "is_spot", value)


@pulumi.input_type
class GetClusterClusterInfoExecutorArgs:
    def __init__(__self__, *,
                 host_private_ip: Optional[str] = None,
                 instance_id: Optional[str] = None,
                 node_aws_attributes: Optional['GetClusterClusterInfoExecutorNodeAwsAttributesArgs'] = None,
                 node_id: Optional[str] = None,
                 private_ip: Optional[str] = None,
                 public_dns: Optional[str] = None,
                 start_timestamp: Optional[int] = None):
        if host_private_ip is not None:
            pulumi.set(__self__, "host_private_ip", host_private_ip)
        if instance_id is not None:
            pulumi.set(__self__, "instance_id", instance_id)
        if node_aws_attributes is not None:
            pulumi.set(__self__, "node_aws_attributes", node_aws_attributes)
        if node_id is not None:
            pulumi.set(__self__, "node_id", node_id)
        if private_ip is not None:
            pulumi.set(__self__, "private_ip", private_ip)
        if public_dns is not None:
            pulumi.set(__self__, "public_dns", public_dns)
        if start_timestamp is not None:
            pulumi.set(__self__, "start_timestamp", start_timestamp)

    @property
    @pulumi.getter(name="hostPrivateIp")
    def host_private_ip(self) -> Optional[str]:
        return pulumi.get(self, "host_private_ip")

    @host_private_ip.setter
    def host_private_ip(self, value: Optional[str]):
        pulumi.set(self, "host_private_ip", value)

    @property
    @pulumi.getter(name="instanceId")
    def instance_id(self) -> Optional[str]:
        return pulumi.get(self, "instance_id")

    @instance_id.setter
    def instance_id(self, value: Optional[str]):
        pulumi.set(self, "instance_id", value)

    @property
    @pulumi.getter(name="nodeAwsAttributes")
    def node_aws_attributes(self) -> Optional['GetClusterClusterInfoExecutorNodeAwsAttributesArgs']:
        return pulumi.get(self, "node_aws_attributes")

    @node_aws_attributes.setter
    def node_aws_attributes(self, value: Optional['GetClusterClusterInfoExecutorNodeAwsAttributesArgs']):
        pulumi.set(self, "node_aws_attributes", value)

    @property
    @pulumi.getter(name="nodeId")
    def node_id(self) -> Optional[str]:
        return pulumi.get(self, "node_id")

    @node_id.setter
    def node_id(self, value: Optional[str]):
        pulumi.set(self, "node_id", value)

    @property
    @pulumi.getter(name="privateIp")
    def private_ip(self) -> Optional[str]:
        return pulumi.get(self, "private_ip")

    @private_ip.setter
    def private_ip(self, value: Optional[str]):
        pulumi.set(self, "private_ip", value)

    @property
    @pulumi.getter(name="publicDns")
    def public_dns(self) -> Optional[str]:
        return pulumi.get(self, "public_dns")

    @public_dns.setter
    def public_dns(self, value: Optional[str]):
        pulumi.set(self, "public_dns", value)

    @property
    @pulumi.getter(name="startTimestamp")
    def start_timestamp(self) -> Optional[int]:
        return pulumi.get(self, "start_timestamp")

    @start_timestamp.setter
    def start_timestamp(self, value: Optional[int]):
        pulumi.set(self, "start_timestamp", value)


@pulumi.input_type
class GetClusterClusterInfoExecutorNodeAwsAttributesArgs:
    def __init__(__self__, *,
                 is_spot: Optional[bool] = None):
        if is_spot is not None:
            pulumi.set(__self__, "is_spot", is_spot)

    @property
    @pulumi.getter(name="isSpot")
    def is_spot(self) -> Optional[bool]:
        return pulumi.get(self, "is_spot")

    @is_spot.setter
    def is_spot(self, value: Optional[bool]):
        pulumi.set(self, "is_spot", value)


@pulumi.input_type
class GetClusterClusterInfoGcpAttributesArgs:
    def __init__(__self__, *,
                 availability: Optional[str] = None,
                 boot_disk_size: Optional[int] = None,
                 google_service_account: Optional[str] = None,
                 use_preemptible_executors: Optional[bool] = None,
                 zone_id: Optional[str] = None):
        if availability is not None:
            pulumi.set(__self__, "availability", availability)
        if boot_disk_size is not None:
            pulumi.set(__self__, "boot_disk_size", boot_disk_size)
        if google_service_account is not None:
            pulumi.set(__self__, "google_service_account", google_service_account)
        if use_preemptible_executors is not None:
            pulumi.set(__self__, "use_preemptible_executors", use_preemptible_executors)
        if zone_id is not None:
            pulumi.set(__self__, "zone_id", zone_id)

    @property
    @pulumi.getter
    def availability(self) -> Optional[str]:
        return pulumi.get(self, "availability")

    @availability.setter
    def availability(self, value: Optional[str]):
        pulumi.set(self, "availability", value)

    @property
    @pulumi.getter(name="bootDiskSize")
    def boot_disk_size(self) -> Optional[int]:
        return pulumi.get(self, "boot_disk_size")

    @boot_disk_size.setter
    def boot_disk_size(self, value: Optional[int]):
        pulumi.set(self, "boot_disk_size", value)

    @property
    @pulumi.getter(name="googleServiceAccount")
    def google_service_account(self) -> Optional[str]:
        return pulumi.get(self, "google_service_account")

    @google_service_account.setter
    def google_service_account(self, value: Optional[str]):
        pulumi.set(self, "google_service_account", value)

    @property
    @pulumi.getter(name="usePreemptibleExecutors")
    def use_preemptible_executors(self) -> Optional[bool]:
        return pulumi.get(self, "use_preemptible_executors")

    @use_preemptible_executors.setter
    def use_preemptible_executors(self, value: Optional[bool]):
        pulumi.set(self, "use_preemptible_executors", value)

    @property
    @pulumi.getter(name="zoneId")
    def zone_id(self) -> Optional[str]:
        return pulumi.get(self, "zone_id")

    @zone_id.setter
    def zone_id(self, value: Optional[str]):
        pulumi.set(self, "zone_id", value)


@pulumi.input_type
class GetClusterClusterInfoInitScriptArgs:
    def __init__(__self__, *,
                 dbfs: Optional['GetClusterClusterInfoInitScriptDbfsArgs'] = None,
                 s3: Optional['GetClusterClusterInfoInitScriptS3Args'] = None):
        if dbfs is not None:
            pulumi.set(__self__, "dbfs", dbfs)
        if s3 is not None:
            pulumi.set(__self__, "s3", s3)

    @property
    @pulumi.getter
    def dbfs(self) -> Optional['GetClusterClusterInfoInitScriptDbfsArgs']:
        return pulumi.get(self, "dbfs")

    @dbfs.setter
    def dbfs(self, value: Optional['GetClusterClusterInfoInitScriptDbfsArgs']):
        pulumi.set(self, "dbfs", value)

    @property
    @pulumi.getter
    def s3(self) -> Optional['GetClusterClusterInfoInitScriptS3Args']:
        return pulumi.get(self, "s3")

    @s3.setter
    def s3(self, value: Optional['GetClusterClusterInfoInitScriptS3Args']):
        pulumi.set(self, "s3", value)


@pulumi.input_type
class GetClusterClusterInfoInitScriptDbfsArgs:
    def __init__(__self__, *,
                 destination: str):
        pulumi.set(__self__, "destination", destination)

    @property
    @pulumi.getter
    def destination(self) -> str:
        return pulumi.get(self, "destination")

    @destination.setter
    def destination(self, value: str):
        pulumi.set(self, "destination", value)


@pulumi.input_type
class GetClusterClusterInfoInitScriptS3Args:
    def __init__(__self__, *,
                 destination: str,
                 canned_acl: Optional[str] = None,
                 enable_encryption: Optional[bool] = None,
                 encryption_type: Optional[str] = None,
                 endpoint: Optional[str] = None,
                 kms_key: Optional[str] = None,
                 region: Optional[str] = None):
        pulumi.set(__self__, "destination", destination)
        if canned_acl is not None:
            pulumi.set(__self__, "canned_acl", canned_acl)
        if enable_encryption is not None:
            pulumi.set(__self__, "enable_encryption", enable_encryption)
        if encryption_type is not None:
            pulumi.set(__self__, "encryption_type", encryption_type)
        if endpoint is not None:
            pulumi.set(__self__, "endpoint", endpoint)
        if kms_key is not None:
            pulumi.set(__self__, "kms_key", kms_key)
        if region is not None:
            pulumi.set(__self__, "region", region)

    @property
    @pulumi.getter
    def destination(self) -> str:
        return pulumi.get(self, "destination")

    @destination.setter
    def destination(self, value: str):
        pulumi.set(self, "destination", value)

    @property
    @pulumi.getter(name="cannedAcl")
    def canned_acl(self) -> Optional[str]:
        return pulumi.get(self, "canned_acl")

    @canned_acl.setter
    def canned_acl(self, value: Optional[str]):
        pulumi.set(self, "canned_acl", value)

    @property
    @pulumi.getter(name="enableEncryption")
    def enable_encryption(self) -> Optional[bool]:
        return pulumi.get(self, "enable_encryption")

    @enable_encryption.setter
    def enable_encryption(self, value: Optional[bool]):
        pulumi.set(self, "enable_encryption", value)

    @property
    @pulumi.getter(name="encryptionType")
    def encryption_type(self) -> Optional[str]:
        return pulumi.get(self, "encryption_type")

    @encryption_type.setter
    def encryption_type(self, value: Optional[str]):
        pulumi.set(self, "encryption_type", value)

    @property
    @pulumi.getter
    def endpoint(self) -> Optional[str]:
        return pulumi.get(self, "endpoint")

    @endpoint.setter
    def endpoint(self, value: Optional[str]):
        pulumi.set(self, "endpoint", value)

    @property
    @pulumi.getter(name="kmsKey")
    def kms_key(self) -> Optional[str]:
        return pulumi.get(self, "kms_key")

    @kms_key.setter
    def kms_key(self, value: Optional[str]):
        pulumi.set(self, "kms_key", value)

    @property
    @pulumi.getter
    def region(self) -> Optional[str]:
        return pulumi.get(self, "region")

    @region.setter
    def region(self, value: Optional[str]):
        pulumi.set(self, "region", value)


@pulumi.input_type
class GetClusterClusterInfoTerminationReasonArgs:
    def __init__(__self__, *,
                 code: Optional[str] = None,
                 parameters: Optional[Mapping[str, Any]] = None,
                 type: Optional[str] = None):
        if code is not None:
            pulumi.set(__self__, "code", code)
        if parameters is not None:
            pulumi.set(__self__, "parameters", parameters)
        if type is not None:
            pulumi.set(__self__, "type", type)

    @property
    @pulumi.getter
    def code(self) -> Optional[str]:
        return pulumi.get(self, "code")

    @code.setter
    def code(self, value: Optional[str]):
        pulumi.set(self, "code", value)

    @property
    @pulumi.getter
    def parameters(self) -> Optional[Mapping[str, Any]]:
        return pulumi.get(self, "parameters")

    @parameters.setter
    def parameters(self, value: Optional[Mapping[str, Any]]):
        pulumi.set(self, "parameters", value)

    @property
    @pulumi.getter
    def type(self) -> Optional[str]:
        return pulumi.get(self, "type")

    @type.setter
    def type(self, value: Optional[str]):
        pulumi.set(self, "type", value)


@pulumi.input_type
class GetInstancePoolPoolInfoArgs:
    def __init__(__self__, *,
                 default_tags: Mapping[str, Any],
                 idle_instance_autotermination_minutes: int,
                 instance_pool_id: str,
                 instance_pool_name: str,
                 aws_attributes: Optional['GetInstancePoolPoolInfoAwsAttributesArgs'] = None,
                 azure_attributes: Optional['GetInstancePoolPoolInfoAzureAttributesArgs'] = None,
                 custom_tags: Optional[Mapping[str, Any]] = None,
                 disk_spec: Optional['GetInstancePoolPoolInfoDiskSpecArgs'] = None,
                 enable_elastic_disk: Optional[bool] = None,
                 gcp_attributes: Optional['GetInstancePoolPoolInfoGcpAttributesArgs'] = None,
                 instance_pool_fleet_attributes: Optional[Sequence['GetInstancePoolPoolInfoInstancePoolFleetAttributeArgs']] = None,
                 max_capacity: Optional[int] = None,
                 min_idle_instances: Optional[int] = None,
                 node_type_id: Optional[str] = None,
                 preloaded_docker_images: Optional[Sequence['GetInstancePoolPoolInfoPreloadedDockerImageArgs']] = None,
                 preloaded_spark_versions: Optional[Sequence[str]] = None,
                 state: Optional[str] = None,
                 stats: Optional['GetInstancePoolPoolInfoStatsArgs'] = None):
        pulumi.set(__self__, "default_tags", default_tags)
        pulumi.set(__self__, "idle_instance_autotermination_minutes", idle_instance_autotermination_minutes)
        pulumi.set(__self__, "instance_pool_id", instance_pool_id)
        pulumi.set(__self__, "instance_pool_name", instance_pool_name)
        if aws_attributes is not None:
            pulumi.set(__self__, "aws_attributes", aws_attributes)
        if azure_attributes is not None:
            pulumi.set(__self__, "azure_attributes", azure_attributes)
        if custom_tags is not None:
            pulumi.set(__self__, "custom_tags", custom_tags)
        if disk_spec is not None:
            pulumi.set(__self__, "disk_spec", disk_spec)
        if enable_elastic_disk is not None:
            pulumi.set(__self__, "enable_elastic_disk", enable_elastic_disk)
        if gcp_attributes is not None:
            pulumi.set(__self__, "gcp_attributes", gcp_attributes)
        if instance_pool_fleet_attributes is not None:
            pulumi.set(__self__, "instance_pool_fleet_attributes", instance_pool_fleet_attributes)
        if max_capacity is not None:
            pulumi.set(__self__, "max_capacity", max_capacity)
        if min_idle_instances is not None:
            pulumi.set(__self__, "min_idle_instances", min_idle_instances)
        if node_type_id is not None:
            pulumi.set(__self__, "node_type_id", node_type_id)
        if preloaded_docker_images is not None:
            pulumi.set(__self__, "preloaded_docker_images", preloaded_docker_images)
        if preloaded_spark_versions is not None:
            pulumi.set(__self__, "preloaded_spark_versions", preloaded_spark_versions)
        if state is not None:
            pulumi.set(__self__, "state", state)
        if stats is not None:
            pulumi.set(__self__, "stats", stats)

    @property
    @pulumi.getter(name="defaultTags")
    def default_tags(self) -> Mapping[str, Any]:
        return pulumi.get(self, "default_tags")

    @default_tags.setter
    def default_tags(self, value: Mapping[str, Any]):
        pulumi.set(self, "default_tags", value)

    @property
    @pulumi.getter(name="idleInstanceAutoterminationMinutes")
    def idle_instance_autotermination_minutes(self) -> int:
        return pulumi.get(self, "idle_instance_autotermination_minutes")

    @idle_instance_autotermination_minutes.setter
    def idle_instance_autotermination_minutes(self, value: int):
        pulumi.set(self, "idle_instance_autotermination_minutes", value)

    @property
    @pulumi.getter(name="instancePoolId")
    def instance_pool_id(self) -> str:
        return pulumi.get(self, "instance_pool_id")

    @instance_pool_id.setter
    def instance_pool_id(self, value: str):
        pulumi.set(self, "instance_pool_id", value)

    @property
    @pulumi.getter(name="instancePoolName")
    def instance_pool_name(self) -> str:
        return pulumi.get(self, "instance_pool_name")

    @instance_pool_name.setter
    def instance_pool_name(self, value: str):
        pulumi.set(self, "instance_pool_name", value)

    @property
    @pulumi.getter(name="awsAttributes")
    def aws_attributes(self) -> Optional['GetInstancePoolPoolInfoAwsAttributesArgs']:
        return pulumi.get(self, "aws_attributes")

    @aws_attributes.setter
    def aws_attributes(self, value: Optional['GetInstancePoolPoolInfoAwsAttributesArgs']):
        pulumi.set(self, "aws_attributes", value)

    @property
    @pulumi.getter(name="azureAttributes")
    def azure_attributes(self) -> Optional['GetInstancePoolPoolInfoAzureAttributesArgs']:
        return pulumi.get(self, "azure_attributes")

    @azure_attributes.setter
    def azure_attributes(self, value: Optional['GetInstancePoolPoolInfoAzureAttributesArgs']):
        pulumi.set(self, "azure_attributes", value)

    @property
    @pulumi.getter(name="customTags")
    def custom_tags(self) -> Optional[Mapping[str, Any]]:
        return pulumi.get(self, "custom_tags")

    @custom_tags.setter
    def custom_tags(self, value: Optional[Mapping[str, Any]]):
        pulumi.set(self, "custom_tags", value)

    @property
    @pulumi.getter(name="diskSpec")
    def disk_spec(self) -> Optional['GetInstancePoolPoolInfoDiskSpecArgs']:
        return pulumi.get(self, "disk_spec")

    @disk_spec.setter
    def disk_spec(self, value: Optional['GetInstancePoolPoolInfoDiskSpecArgs']):
        pulumi.set(self, "disk_spec", value)

    @property
    @pulumi.getter(name="enableElasticDisk")
    def enable_elastic_disk(self) -> Optional[bool]:
        return pulumi.get(self, "enable_elastic_disk")

    @enable_elastic_disk.setter
    def enable_elastic_disk(self, value: Optional[bool]):
        pulumi.set(self, "enable_elastic_disk", value)

    @property
    @pulumi.getter(name="gcpAttributes")
    def gcp_attributes(self) -> Optional['GetInstancePoolPoolInfoGcpAttributesArgs']:
        return pulumi.get(self, "gcp_attributes")

    @gcp_attributes.setter
    def gcp_attributes(self, value: Optional['GetInstancePoolPoolInfoGcpAttributesArgs']):
        pulumi.set(self, "gcp_attributes", value)

    @property
    @pulumi.getter(name="instancePoolFleetAttributes")
    def instance_pool_fleet_attributes(self) -> Optional[Sequence['GetInstancePoolPoolInfoInstancePoolFleetAttributeArgs']]:
        return pulumi.get(self, "instance_pool_fleet_attributes")

    @instance_pool_fleet_attributes.setter
    def instance_pool_fleet_attributes(self, value: Optional[Sequence['GetInstancePoolPoolInfoInstancePoolFleetAttributeArgs']]):
        pulumi.set(self, "instance_pool_fleet_attributes", value)

    @property
    @pulumi.getter(name="maxCapacity")
    def max_capacity(self) -> Optional[int]:
        return pulumi.get(self, "max_capacity")

    @max_capacity.setter
    def max_capacity(self, value: Optional[int]):
        pulumi.set(self, "max_capacity", value)

    @property
    @pulumi.getter(name="minIdleInstances")
    def min_idle_instances(self) -> Optional[int]:
        return pulumi.get(self, "min_idle_instances")

    @min_idle_instances.setter
    def min_idle_instances(self, value: Optional[int]):
        pulumi.set(self, "min_idle_instances", value)

    @property
    @pulumi.getter(name="nodeTypeId")
    def node_type_id(self) -> Optional[str]:
        return pulumi.get(self, "node_type_id")

    @node_type_id.setter
    def node_type_id(self, value: Optional[str]):
        pulumi.set(self, "node_type_id", value)

    @property
    @pulumi.getter(name="preloadedDockerImages")
    def preloaded_docker_images(self) -> Optional[Sequence['GetInstancePoolPoolInfoPreloadedDockerImageArgs']]:
        return pulumi.get(self, "preloaded_docker_images")

    @preloaded_docker_images.setter
    def preloaded_docker_images(self, value: Optional[Sequence['GetInstancePoolPoolInfoPreloadedDockerImageArgs']]):
        pulumi.set(self, "preloaded_docker_images", value)

    @property
    @pulumi.getter(name="preloadedSparkVersions")
    def preloaded_spark_versions(self) -> Optional[Sequence[str]]:
        return pulumi.get(self, "preloaded_spark_versions")

    @preloaded_spark_versions.setter
    def preloaded_spark_versions(self, value: Optional[Sequence[str]]):
        pulumi.set(self, "preloaded_spark_versions", value)

    @property
    @pulumi.getter
    def state(self) -> Optional[str]:
        return pulumi.get(self, "state")

    @state.setter
    def state(self, value: Optional[str]):
        pulumi.set(self, "state", value)

    @property
    @pulumi.getter
    def stats(self) -> Optional['GetInstancePoolPoolInfoStatsArgs']:
        return pulumi.get(self, "stats")

    @stats.setter
    def stats(self, value: Optional['GetInstancePoolPoolInfoStatsArgs']):
        pulumi.set(self, "stats", value)


@pulumi.input_type
class GetInstancePoolPoolInfoAwsAttributesArgs:
    def __init__(__self__, *,
                 zone_id: str,
                 availability: Optional[str] = None,
                 spot_bid_price_percent: Optional[int] = None):
        pulumi.set(__self__, "zone_id", zone_id)
        if availability is not None:
            pulumi.set(__self__, "availability", availability)
        if spot_bid_price_percent is not None:
            pulumi.set(__self__, "spot_bid_price_percent", spot_bid_price_percent)

    @property
    @pulumi.getter(name="zoneId")
    def zone_id(self) -> str:
        return pulumi.get(self, "zone_id")

    @zone_id.setter
    def zone_id(self, value: str):
        pulumi.set(self, "zone_id", value)

    @property
    @pulumi.getter
    def availability(self) -> Optional[str]:
        return pulumi.get(self, "availability")

    @availability.setter
    def availability(self, value: Optional[str]):
        pulumi.set(self, "availability", value)

    @property
    @pulumi.getter(name="spotBidPricePercent")
    def spot_bid_price_percent(self) -> Optional[int]:
        return pulumi.get(self, "spot_bid_price_percent")

    @spot_bid_price_percent.setter
    def spot_bid_price_percent(self, value: Optional[int]):
        pulumi.set(self, "spot_bid_price_percent", value)


@pulumi.input_type
class GetInstancePoolPoolInfoAzureAttributesArgs:
    def __init__(__self__, *,
                 availability: Optional[str] = None,
                 spot_bid_max_price: Optional[float] = None):
        if availability is not None:
            pulumi.set(__self__, "availability", availability)
        if spot_bid_max_price is not None:
            pulumi.set(__self__, "spot_bid_max_price", spot_bid_max_price)

    @property
    @pulumi.getter
    def availability(self) -> Optional[str]:
        return pulumi.get(self, "availability")

    @availability.setter
    def availability(self, value: Optional[str]):
        pulumi.set(self, "availability", value)

    @property
    @pulumi.getter(name="spotBidMaxPrice")
    def spot_bid_max_price(self) -> Optional[float]:
        return pulumi.get(self, "spot_bid_max_price")

    @spot_bid_max_price.setter
    def spot_bid_max_price(self, value: Optional[float]):
        pulumi.set(self, "spot_bid_max_price", value)


@pulumi.input_type
class GetInstancePoolPoolInfoDiskSpecArgs:
    def __init__(__self__, *,
                 disk_count: Optional[int] = None,
                 disk_size: Optional[int] = None,
                 disk_type: Optional['GetInstancePoolPoolInfoDiskSpecDiskTypeArgs'] = None):
        if disk_count is not None:
            pulumi.set(__self__, "disk_count", disk_count)
        if disk_size is not None:
            pulumi.set(__self__, "disk_size", disk_size)
        if disk_type is not None:
            pulumi.set(__self__, "disk_type", disk_type)

    @property
    @pulumi.getter(name="diskCount")
    def disk_count(self) -> Optional[int]:
        return pulumi.get(self, "disk_count")

    @disk_count.setter
    def disk_count(self, value: Optional[int]):
        pulumi.set(self, "disk_count", value)

    @property
    @pulumi.getter(name="diskSize")
    def disk_size(self) -> Optional[int]:
        return pulumi.get(self, "disk_size")

    @disk_size.setter
    def disk_size(self, value: Optional[int]):
        pulumi.set(self, "disk_size", value)

    @property
    @pulumi.getter(name="diskType")
    def disk_type(self) -> Optional['GetInstancePoolPoolInfoDiskSpecDiskTypeArgs']:
        return pulumi.get(self, "disk_type")

    @disk_type.setter
    def disk_type(self, value: Optional['GetInstancePoolPoolInfoDiskSpecDiskTypeArgs']):
        pulumi.set(self, "disk_type", value)


@pulumi.input_type
class GetInstancePoolPoolInfoDiskSpecDiskTypeArgs:
    def __init__(__self__, *,
                 azure_disk_volume_type: Optional[str] = None,
                 ebs_volume_type: Optional[str] = None):
        if azure_disk_volume_type is not None:
            pulumi.set(__self__, "azure_disk_volume_type", azure_disk_volume_type)
        if ebs_volume_type is not None:
            pulumi.set(__self__, "ebs_volume_type", ebs_volume_type)

    @property
    @pulumi.getter(name="azureDiskVolumeType")
    def azure_disk_volume_type(self) -> Optional[str]:
        return pulumi.get(self, "azure_disk_volume_type")

    @azure_disk_volume_type.setter
    def azure_disk_volume_type(self, value: Optional[str]):
        pulumi.set(self, "azure_disk_volume_type", value)

    @property
    @pulumi.getter(name="ebsVolumeType")
    def ebs_volume_type(self) -> Optional[str]:
        return pulumi.get(self, "ebs_volume_type")

    @ebs_volume_type.setter
    def ebs_volume_type(self, value: Optional[str]):
        pulumi.set(self, "ebs_volume_type", value)


@pulumi.input_type
class GetInstancePoolPoolInfoGcpAttributesArgs:
    def __init__(__self__, *,
                 gcp_availability: Optional[str] = None):
        if gcp_availability is not None:
            pulumi.set(__self__, "gcp_availability", gcp_availability)

    @property
    @pulumi.getter(name="gcpAvailability")
    def gcp_availability(self) -> Optional[str]:
        return pulumi.get(self, "gcp_availability")

    @gcp_availability.setter
    def gcp_availability(self, value: Optional[str]):
        pulumi.set(self, "gcp_availability", value)


@pulumi.input_type
class GetInstancePoolPoolInfoInstancePoolFleetAttributeArgs:
    def __init__(__self__, *,
                 launch_template_overrides: Sequence['GetInstancePoolPoolInfoInstancePoolFleetAttributeLaunchTemplateOverrideArgs'],
                 fleet_on_demand_option: Optional['GetInstancePoolPoolInfoInstancePoolFleetAttributeFleetOnDemandOptionArgs'] = None,
                 fleet_spot_option: Optional['GetInstancePoolPoolInfoInstancePoolFleetAttributeFleetSpotOptionArgs'] = None):
        pulumi.set(__self__, "launch_template_overrides", launch_template_overrides)
        if fleet_on_demand_option is not None:
            pulumi.set(__self__, "fleet_on_demand_option", fleet_on_demand_option)
        if fleet_spot_option is not None:
            pulumi.set(__self__, "fleet_spot_option", fleet_spot_option)

    @property
    @pulumi.getter(name="launchTemplateOverrides")
    def launch_template_overrides(self) -> Sequence['GetInstancePoolPoolInfoInstancePoolFleetAttributeLaunchTemplateOverrideArgs']:
        return pulumi.get(self, "launch_template_overrides")

    @launch_template_overrides.setter
    def launch_template_overrides(self, value: Sequence['GetInstancePoolPoolInfoInstancePoolFleetAttributeLaunchTemplateOverrideArgs']):
        pulumi.set(self, "launch_template_overrides", value)

    @property
    @pulumi.getter(name="fleetOnDemandOption")
    def fleet_on_demand_option(self) -> Optional['GetInstancePoolPoolInfoInstancePoolFleetAttributeFleetOnDemandOptionArgs']:
        return pulumi.get(self, "fleet_on_demand_option")

    @fleet_on_demand_option.setter
    def fleet_on_demand_option(self, value: Optional['GetInstancePoolPoolInfoInstancePoolFleetAttributeFleetOnDemandOptionArgs']):
        pulumi.set(self, "fleet_on_demand_option", value)

    @property
    @pulumi.getter(name="fleetSpotOption")
    def fleet_spot_option(self) -> Optional['GetInstancePoolPoolInfoInstancePoolFleetAttributeFleetSpotOptionArgs']:
        return pulumi.get(self, "fleet_spot_option")

    @fleet_spot_option.setter
    def fleet_spot_option(self, value: Optional['GetInstancePoolPoolInfoInstancePoolFleetAttributeFleetSpotOptionArgs']):
        pulumi.set(self, "fleet_spot_option", value)


@pulumi.input_type
class GetInstancePoolPoolInfoInstancePoolFleetAttributeFleetOnDemandOptionArgs:
    def __init__(__self__, *,
                 allocation_strategy: str,
                 instance_pools_to_use_count: Optional[int] = None):
        pulumi.set(__self__, "allocation_strategy", allocation_strategy)
        if instance_pools_to_use_count is not None:
            pulumi.set(__self__, "instance_pools_to_use_count", instance_pools_to_use_count)

    @property
    @pulumi.getter(name="allocationStrategy")
    def allocation_strategy(self) -> str:
        return pulumi.get(self, "allocation_strategy")

    @allocation_strategy.setter
    def allocation_strategy(self, value: str):
        pulumi.set(self, "allocation_strategy", value)

    @property
    @pulumi.getter(name="instancePoolsToUseCount")
    def instance_pools_to_use_count(self) -> Optional[int]:
        return pulumi.get(self, "instance_pools_to_use_count")

    @instance_pools_to_use_count.setter
    def instance_pools_to_use_count(self, value: Optional[int]):
        pulumi.set(self, "instance_pools_to_use_count", value)


@pulumi.input_type
class GetInstancePoolPoolInfoInstancePoolFleetAttributeFleetSpotOptionArgs:
    def __init__(__self__, *,
                 allocation_strategy: str,
                 instance_pools_to_use_count: Optional[int] = None):
        pulumi.set(__self__, "allocation_strategy", allocation_strategy)
        if instance_pools_to_use_count is not None:
            pulumi.set(__self__, "instance_pools_to_use_count", instance_pools_to_use_count)

    @property
    @pulumi.getter(name="allocationStrategy")
    def allocation_strategy(self) -> str:
        return pulumi.get(self, "allocation_strategy")

    @allocation_strategy.setter
    def allocation_strategy(self, value: str):
        pulumi.set(self, "allocation_strategy", value)

    @property
    @pulumi.getter(name="instancePoolsToUseCount")
    def instance_pools_to_use_count(self) -> Optional[int]:
        return pulumi.get(self, "instance_pools_to_use_count")

    @instance_pools_to_use_count.setter
    def instance_pools_to_use_count(self, value: Optional[int]):
        pulumi.set(self, "instance_pools_to_use_count", value)


@pulumi.input_type
class GetInstancePoolPoolInfoInstancePoolFleetAttributeLaunchTemplateOverrideArgs:
    def __init__(__self__, *,
                 availability_zone: str,
                 instance_type: str):
        pulumi.set(__self__, "availability_zone", availability_zone)
        pulumi.set(__self__, "instance_type", instance_type)

    @property
    @pulumi.getter(name="availabilityZone")
    def availability_zone(self) -> str:
        return pulumi.get(self, "availability_zone")

    @availability_zone.setter
    def availability_zone(self, value: str):
        pulumi.set(self, "availability_zone", value)

    @property
    @pulumi.getter(name="instanceType")
    def instance_type(self) -> str:
        return pulumi.get(self, "instance_type")

    @instance_type.setter
    def instance_type(self, value: str):
        pulumi.set(self, "instance_type", value)


@pulumi.input_type
class GetInstancePoolPoolInfoPreloadedDockerImageArgs:
    def __init__(__self__, *,
                 url: str,
                 basic_auth: Optional['GetInstancePoolPoolInfoPreloadedDockerImageBasicAuthArgs'] = None):
        pulumi.set(__self__, "url", url)
        if basic_auth is not None:
            pulumi.set(__self__, "basic_auth", basic_auth)

    @property
    @pulumi.getter
    def url(self) -> str:
        return pulumi.get(self, "url")

    @url.setter
    def url(self, value: str):
        pulumi.set(self, "url", value)

    @property
    @pulumi.getter(name="basicAuth")
    def basic_auth(self) -> Optional['GetInstancePoolPoolInfoPreloadedDockerImageBasicAuthArgs']:
        return pulumi.get(self, "basic_auth")

    @basic_auth.setter
    def basic_auth(self, value: Optional['GetInstancePoolPoolInfoPreloadedDockerImageBasicAuthArgs']):
        pulumi.set(self, "basic_auth", value)


@pulumi.input_type
class GetInstancePoolPoolInfoPreloadedDockerImageBasicAuthArgs:
    def __init__(__self__, *,
                 password: str,
                 username: str):
        pulumi.set(__self__, "password", password)
        pulumi.set(__self__, "username", username)

    @property
    @pulumi.getter
    def password(self) -> str:
        return pulumi.get(self, "password")

    @password.setter
    def password(self, value: str):
        pulumi.set(self, "password", value)

    @property
    @pulumi.getter
    def username(self) -> str:
        return pulumi.get(self, "username")

    @username.setter
    def username(self, value: str):
        pulumi.set(self, "username", value)


@pulumi.input_type
class GetInstancePoolPoolInfoStatsArgs:
    def __init__(__self__, *,
                 idle_count: Optional[int] = None,
                 pending_idle_count: Optional[int] = None,
                 pending_used_count: Optional[int] = None,
                 used_count: Optional[int] = None):
        if idle_count is not None:
            pulumi.set(__self__, "idle_count", idle_count)
        if pending_idle_count is not None:
            pulumi.set(__self__, "pending_idle_count", pending_idle_count)
        if pending_used_count is not None:
            pulumi.set(__self__, "pending_used_count", pending_used_count)
        if used_count is not None:
            pulumi.set(__self__, "used_count", used_count)

    @property
    @pulumi.getter(name="idleCount")
    def idle_count(self) -> Optional[int]:
        return pulumi.get(self, "idle_count")

    @idle_count.setter
    def idle_count(self, value: Optional[int]):
        pulumi.set(self, "idle_count", value)

    @property
    @pulumi.getter(name="pendingIdleCount")
    def pending_idle_count(self) -> Optional[int]:
        return pulumi.get(self, "pending_idle_count")

    @pending_idle_count.setter
    def pending_idle_count(self, value: Optional[int]):
        pulumi.set(self, "pending_idle_count", value)

    @property
    @pulumi.getter(name="pendingUsedCount")
    def pending_used_count(self) -> Optional[int]:
        return pulumi.get(self, "pending_used_count")

    @pending_used_count.setter
    def pending_used_count(self, value: Optional[int]):
        pulumi.set(self, "pending_used_count", value)

    @property
    @pulumi.getter(name="usedCount")
    def used_count(self) -> Optional[int]:
        return pulumi.get(self, "used_count")

    @used_count.setter
    def used_count(self, value: Optional[int]):
        pulumi.set(self, "used_count", value)


@pulumi.input_type
class GetJobJobSettingsArgs:
    def __init__(__self__, *,
                 created_time: Optional[int] = None,
                 creator_user_name: Optional[str] = None,
                 job_id: Optional[int] = None,
                 settings: Optional['GetJobJobSettingsSettingsArgs'] = None):
        if created_time is not None:
            pulumi.set(__self__, "created_time", created_time)
        if creator_user_name is not None:
            pulumi.set(__self__, "creator_user_name", creator_user_name)
        if job_id is not None:
            pulumi.set(__self__, "job_id", job_id)
        if settings is not None:
            pulumi.set(__self__, "settings", settings)

    @property
    @pulumi.getter(name="createdTime")
    def created_time(self) -> Optional[int]:
        return pulumi.get(self, "created_time")

    @created_time.setter
    def created_time(self, value: Optional[int]):
        pulumi.set(self, "created_time", value)

    @property
    @pulumi.getter(name="creatorUserName")
    def creator_user_name(self) -> Optional[str]:
        return pulumi.get(self, "creator_user_name")

    @creator_user_name.setter
    def creator_user_name(self, value: Optional[str]):
        pulumi.set(self, "creator_user_name", value)

    @property
    @pulumi.getter(name="jobId")
    def job_id(self) -> Optional[int]:
        return pulumi.get(self, "job_id")

    @job_id.setter
    def job_id(self, value: Optional[int]):
        pulumi.set(self, "job_id", value)

    @property
    @pulumi.getter
    def settings(self) -> Optional['GetJobJobSettingsSettingsArgs']:
        return pulumi.get(self, "settings")

    @settings.setter
    def settings(self, value: Optional['GetJobJobSettingsSettingsArgs']):
        pulumi.set(self, "settings", value)


@pulumi.input_type
class GetJobJobSettingsSettingsArgs:
    def __init__(__self__, *,
                 format: str,
                 continuous: Optional['GetJobJobSettingsSettingsContinuousArgs'] = None,
                 dbt_task: Optional['GetJobJobSettingsSettingsDbtTaskArgs'] = None,
                 email_notifications: Optional['GetJobJobSettingsSettingsEmailNotificationsArgs'] = None,
                 existing_cluster_id: Optional[str] = None,
                 git_source: Optional['GetJobJobSettingsSettingsGitSourceArgs'] = None,
                 job_clusters: Optional[Sequence['GetJobJobSettingsSettingsJobClusterArgs']] = None,
                 libraries: Optional[Sequence['GetJobJobSettingsSettingsLibraryArgs']] = None,
                 max_concurrent_runs: Optional[int] = None,
                 max_retries: Optional[int] = None,
                 min_retry_interval_millis: Optional[int] = None,
                 name: Optional[str] = None,
                 new_cluster: Optional['GetJobJobSettingsSettingsNewClusterArgs'] = None,
                 notebook_task: Optional['GetJobJobSettingsSettingsNotebookTaskArgs'] = None,
                 pipeline_task: Optional['GetJobJobSettingsSettingsPipelineTaskArgs'] = None,
                 python_wheel_task: Optional['GetJobJobSettingsSettingsPythonWheelTaskArgs'] = None,
                 retry_on_timeout: Optional[bool] = None,
                 schedule: Optional['GetJobJobSettingsSettingsScheduleArgs'] = None,
                 spark_jar_task: Optional['GetJobJobSettingsSettingsSparkJarTaskArgs'] = None,
                 spark_python_task: Optional['GetJobJobSettingsSettingsSparkPythonTaskArgs'] = None,
                 spark_submit_task: Optional['GetJobJobSettingsSettingsSparkSubmitTaskArgs'] = None,
                 tags: Optional[Mapping[str, Any]] = None,
                 tasks: Optional[Sequence['GetJobJobSettingsSettingsTaskArgs']] = None,
                 timeout_seconds: Optional[int] = None,
                 webhook_notifications: Optional['GetJobJobSettingsSettingsWebhookNotificationsArgs'] = None):
        """
        :param str name: the job name of Job if the resource was matched by id.
        """
        pulumi.set(__self__, "format", format)
        if continuous is not None:
            pulumi.set(__self__, "continuous", continuous)
        if dbt_task is not None:
            pulumi.set(__self__, "dbt_task", dbt_task)
        if email_notifications is not None:
            pulumi.set(__self__, "email_notifications", email_notifications)
        if existing_cluster_id is not None:
            pulumi.set(__self__, "existing_cluster_id", existing_cluster_id)
        if git_source is not None:
            pulumi.set(__self__, "git_source", git_source)
        if job_clusters is not None:
            pulumi.set(__self__, "job_clusters", job_clusters)
        if libraries is not None:
            pulumi.set(__self__, "libraries", libraries)
        if max_concurrent_runs is not None:
            pulumi.set(__self__, "max_concurrent_runs", max_concurrent_runs)
        if max_retries is not None:
            pulumi.set(__self__, "max_retries", max_retries)
        if min_retry_interval_millis is not None:
            pulumi.set(__self__, "min_retry_interval_millis", min_retry_interval_millis)
        if name is not None:
            pulumi.set(__self__, "name", name)
        if new_cluster is not None:
            pulumi.set(__self__, "new_cluster", new_cluster)
        if notebook_task is not None:
            pulumi.set(__self__, "notebook_task", notebook_task)
        if pipeline_task is not None:
            pulumi.set(__self__, "pipeline_task", pipeline_task)
        if python_wheel_task is not None:
            pulumi.set(__self__, "python_wheel_task", python_wheel_task)
        if retry_on_timeout is not None:
            pulumi.set(__self__, "retry_on_timeout", retry_on_timeout)
        if schedule is not None:
            pulumi.set(__self__, "schedule", schedule)
        if spark_jar_task is not None:
            pulumi.set(__self__, "spark_jar_task", spark_jar_task)
        if spark_python_task is not None:
            pulumi.set(__self__, "spark_python_task", spark_python_task)
        if spark_submit_task is not None:
            pulumi.set(__self__, "spark_submit_task", spark_submit_task)
        if tags is not None:
            pulumi.set(__self__, "tags", tags)
        if tasks is not None:
            pulumi.set(__self__, "tasks", tasks)
        if timeout_seconds is not None:
            pulumi.set(__self__, "timeout_seconds", timeout_seconds)
        if webhook_notifications is not None:
            pulumi.set(__self__, "webhook_notifications", webhook_notifications)

    @property
    @pulumi.getter
    def format(self) -> str:
        return pulumi.get(self, "format")

    @format.setter
    def format(self, value: str):
        pulumi.set(self, "format", value)

    @property
    @pulumi.getter
    def continuous(self) -> Optional['GetJobJobSettingsSettingsContinuousArgs']:
        return pulumi.get(self, "continuous")

    @continuous.setter
    def continuous(self, value: Optional['GetJobJobSettingsSettingsContinuousArgs']):
        pulumi.set(self, "continuous", value)

    @property
    @pulumi.getter(name="dbtTask")
    def dbt_task(self) -> Optional['GetJobJobSettingsSettingsDbtTaskArgs']:
        return pulumi.get(self, "dbt_task")

    @dbt_task.setter
    def dbt_task(self, value: Optional['GetJobJobSettingsSettingsDbtTaskArgs']):
        pulumi.set(self, "dbt_task", value)

    @property
    @pulumi.getter(name="emailNotifications")
    def email_notifications(self) -> Optional['GetJobJobSettingsSettingsEmailNotificationsArgs']:
        return pulumi.get(self, "email_notifications")

    @email_notifications.setter
    def email_notifications(self, value: Optional['GetJobJobSettingsSettingsEmailNotificationsArgs']):
        pulumi.set(self, "email_notifications", value)

    @property
    @pulumi.getter(name="existingClusterId")
    def existing_cluster_id(self) -> Optional[str]:
        return pulumi.get(self, "existing_cluster_id")

    @existing_cluster_id.setter
    def existing_cluster_id(self, value: Optional[str]):
        pulumi.set(self, "existing_cluster_id", value)

    @property
    @pulumi.getter(name="gitSource")
    def git_source(self) -> Optional['GetJobJobSettingsSettingsGitSourceArgs']:
        return pulumi.get(self, "git_source")

    @git_source.setter
    def git_source(self, value: Optional['GetJobJobSettingsSettingsGitSourceArgs']):
        pulumi.set(self, "git_source", value)

    @property
    @pulumi.getter(name="jobClusters")
    def job_clusters(self) -> Optional[Sequence['GetJobJobSettingsSettingsJobClusterArgs']]:
        return pulumi.get(self, "job_clusters")

    @job_clusters.setter
    def job_clusters(self, value: Optional[Sequence['GetJobJobSettingsSettingsJobClusterArgs']]):
        pulumi.set(self, "job_clusters", value)

    @property
    @pulumi.getter
    def libraries(self) -> Optional[Sequence['GetJobJobSettingsSettingsLibraryArgs']]:
        return pulumi.get(self, "libraries")

    @libraries.setter
    def libraries(self, value: Optional[Sequence['GetJobJobSettingsSettingsLibraryArgs']]):
        pulumi.set(self, "libraries", value)

    @property
    @pulumi.getter(name="maxConcurrentRuns")
    def max_concurrent_runs(self) -> Optional[int]:
        return pulumi.get(self, "max_concurrent_runs")

    @max_concurrent_runs.setter
    def max_concurrent_runs(self, value: Optional[int]):
        pulumi.set(self, "max_concurrent_runs", value)

    @property
    @pulumi.getter(name="maxRetries")
    def max_retries(self) -> Optional[int]:
        return pulumi.get(self, "max_retries")

    @max_retries.setter
    def max_retries(self, value: Optional[int]):
        pulumi.set(self, "max_retries", value)

    @property
    @pulumi.getter(name="minRetryIntervalMillis")
    def min_retry_interval_millis(self) -> Optional[int]:
        return pulumi.get(self, "min_retry_interval_millis")

    @min_retry_interval_millis.setter
    def min_retry_interval_millis(self, value: Optional[int]):
        pulumi.set(self, "min_retry_interval_millis", value)

    @property
    @pulumi.getter
    def name(self) -> Optional[str]:
        """
        the job name of Job if the resource was matched by id.
        """
        return pulumi.get(self, "name")

    @name.setter
    def name(self, value: Optional[str]):
        pulumi.set(self, "name", value)

    @property
    @pulumi.getter(name="newCluster")
    def new_cluster(self) -> Optional['GetJobJobSettingsSettingsNewClusterArgs']:
        return pulumi.get(self, "new_cluster")

    @new_cluster.setter
    def new_cluster(self, value: Optional['GetJobJobSettingsSettingsNewClusterArgs']):
        pulumi.set(self, "new_cluster", value)

    @property
    @pulumi.getter(name="notebookTask")
    def notebook_task(self) -> Optional['GetJobJobSettingsSettingsNotebookTaskArgs']:
        return pulumi.get(self, "notebook_task")

    @notebook_task.setter
    def notebook_task(self, value: Optional['GetJobJobSettingsSettingsNotebookTaskArgs']):
        pulumi.set(self, "notebook_task", value)

    @property
    @pulumi.getter(name="pipelineTask")
    def pipeline_task(self) -> Optional['GetJobJobSettingsSettingsPipelineTaskArgs']:
        return pulumi.get(self, "pipeline_task")

    @pipeline_task.setter
    def pipeline_task(self, value: Optional['GetJobJobSettingsSettingsPipelineTaskArgs']):
        pulumi.set(self, "pipeline_task", value)

    @property
    @pulumi.getter(name="pythonWheelTask")
    def python_wheel_task(self) -> Optional['GetJobJobSettingsSettingsPythonWheelTaskArgs']:
        return pulumi.get(self, "python_wheel_task")

    @python_wheel_task.setter
    def python_wheel_task(self, value: Optional['GetJobJobSettingsSettingsPythonWheelTaskArgs']):
        pulumi.set(self, "python_wheel_task", value)

    @property
    @pulumi.getter(name="retryOnTimeout")
    def retry_on_timeout(self) -> Optional[bool]:
        return pulumi.get(self, "retry_on_timeout")

    @retry_on_timeout.setter
    def retry_on_timeout(self, value: Optional[bool]):
        pulumi.set(self, "retry_on_timeout", value)

    @property
    @pulumi.getter
    def schedule(self) -> Optional['GetJobJobSettingsSettingsScheduleArgs']:
        return pulumi.get(self, "schedule")

    @schedule.setter
    def schedule(self, value: Optional['GetJobJobSettingsSettingsScheduleArgs']):
        pulumi.set(self, "schedule", value)

    @property
    @pulumi.getter(name="sparkJarTask")
    def spark_jar_task(self) -> Optional['GetJobJobSettingsSettingsSparkJarTaskArgs']:
        return pulumi.get(self, "spark_jar_task")

    @spark_jar_task.setter
    def spark_jar_task(self, value: Optional['GetJobJobSettingsSettingsSparkJarTaskArgs']):
        pulumi.set(self, "spark_jar_task", value)

    @property
    @pulumi.getter(name="sparkPythonTask")
    def spark_python_task(self) -> Optional['GetJobJobSettingsSettingsSparkPythonTaskArgs']:
        return pulumi.get(self, "spark_python_task")

    @spark_python_task.setter
    def spark_python_task(self, value: Optional['GetJobJobSettingsSettingsSparkPythonTaskArgs']):
        pulumi.set(self, "spark_python_task", value)

    @property
    @pulumi.getter(name="sparkSubmitTask")
    def spark_submit_task(self) -> Optional['GetJobJobSettingsSettingsSparkSubmitTaskArgs']:
        return pulumi.get(self, "spark_submit_task")

    @spark_submit_task.setter
    def spark_submit_task(self, value: Optional['GetJobJobSettingsSettingsSparkSubmitTaskArgs']):
        pulumi.set(self, "spark_submit_task", value)

    @property
    @pulumi.getter
    def tags(self) -> Optional[Mapping[str, Any]]:
        return pulumi.get(self, "tags")

    @tags.setter
    def tags(self, value: Optional[Mapping[str, Any]]):
        pulumi.set(self, "tags", value)

    @property
    @pulumi.getter
    def tasks(self) -> Optional[Sequence['GetJobJobSettingsSettingsTaskArgs']]:
        return pulumi.get(self, "tasks")

    @tasks.setter
    def tasks(self, value: Optional[Sequence['GetJobJobSettingsSettingsTaskArgs']]):
        pulumi.set(self, "tasks", value)

    @property
    @pulumi.getter(name="timeoutSeconds")
    def timeout_seconds(self) -> Optional[int]:
        return pulumi.get(self, "timeout_seconds")

    @timeout_seconds.setter
    def timeout_seconds(self, value: Optional[int]):
        pulumi.set(self, "timeout_seconds", value)

    @property
    @pulumi.getter(name="webhookNotifications")
    def webhook_notifications(self) -> Optional['GetJobJobSettingsSettingsWebhookNotificationsArgs']:
        return pulumi.get(self, "webhook_notifications")

    @webhook_notifications.setter
    def webhook_notifications(self, value: Optional['GetJobJobSettingsSettingsWebhookNotificationsArgs']):
        pulumi.set(self, "webhook_notifications", value)


@pulumi.input_type
class GetJobJobSettingsSettingsContinuousArgs:
    def __init__(__self__, *,
                 pause_status: str):
        pulumi.set(__self__, "pause_status", pause_status)

    @property
    @pulumi.getter(name="pauseStatus")
    def pause_status(self) -> str:
        return pulumi.get(self, "pause_status")

    @pause_status.setter
    def pause_status(self, value: str):
        pulumi.set(self, "pause_status", value)


@pulumi.input_type
class GetJobJobSettingsSettingsDbtTaskArgs:
    def __init__(__self__, *,
                 commands: Sequence[str],
                 catalog: Optional[str] = None,
                 profiles_directory: Optional[str] = None,
                 project_directory: Optional[str] = None,
                 schema: Optional[str] = None,
                 warehouse_id: Optional[str] = None):
        pulumi.set(__self__, "commands", commands)
        if catalog is not None:
            pulumi.set(__self__, "catalog", catalog)
        if profiles_directory is not None:
            pulumi.set(__self__, "profiles_directory", profiles_directory)
        if project_directory is not None:
            pulumi.set(__self__, "project_directory", project_directory)
        if schema is not None:
            pulumi.set(__self__, "schema", schema)
        if warehouse_id is not None:
            pulumi.set(__self__, "warehouse_id", warehouse_id)

    @property
    @pulumi.getter
    def commands(self) -> Sequence[str]:
        return pulumi.get(self, "commands")

    @commands.setter
    def commands(self, value: Sequence[str]):
        pulumi.set(self, "commands", value)

    @property
    @pulumi.getter
    def catalog(self) -> Optional[str]:
        return pulumi.get(self, "catalog")

    @catalog.setter
    def catalog(self, value: Optional[str]):
        pulumi.set(self, "catalog", value)

    @property
    @pulumi.getter(name="profilesDirectory")
    def profiles_directory(self) -> Optional[str]:
        return pulumi.get(self, "profiles_directory")

    @profiles_directory.setter
    def profiles_directory(self, value: Optional[str]):
        pulumi.set(self, "profiles_directory", value)

    @property
    @pulumi.getter(name="projectDirectory")
    def project_directory(self) -> Optional[str]:
        return pulumi.get(self, "project_directory")

    @project_directory.setter
    def project_directory(self, value: Optional[str]):
        pulumi.set(self, "project_directory", value)

    @property
    @pulumi.getter
    def schema(self) -> Optional[str]:
        return pulumi.get(self, "schema")

    @schema.setter
    def schema(self, value: Optional[str]):
        pulumi.set(self, "schema", value)

    @property
    @pulumi.getter(name="warehouseId")
    def warehouse_id(self) -> Optional[str]:
        return pulumi.get(self, "warehouse_id")

    @warehouse_id.setter
    def warehouse_id(self, value: Optional[str]):
        pulumi.set(self, "warehouse_id", value)


@pulumi.input_type
class GetJobJobSettingsSettingsEmailNotificationsArgs:
    def __init__(__self__, *,
                 alert_on_last_attempt: Optional[bool] = None,
                 no_alert_for_skipped_runs: Optional[bool] = None,
                 on_failures: Optional[Sequence[str]] = None,
                 on_starts: Optional[Sequence[str]] = None,
                 on_successes: Optional[Sequence[str]] = None):
        if alert_on_last_attempt is not None:
            pulumi.set(__self__, "alert_on_last_attempt", alert_on_last_attempt)
        if no_alert_for_skipped_runs is not None:
            pulumi.set(__self__, "no_alert_for_skipped_runs", no_alert_for_skipped_runs)
        if on_failures is not None:
            pulumi.set(__self__, "on_failures", on_failures)
        if on_starts is not None:
            pulumi.set(__self__, "on_starts", on_starts)
        if on_successes is not None:
            pulumi.set(__self__, "on_successes", on_successes)

    @property
    @pulumi.getter(name="alertOnLastAttempt")
    def alert_on_last_attempt(self) -> Optional[bool]:
        return pulumi.get(self, "alert_on_last_attempt")

    @alert_on_last_attempt.setter
    def alert_on_last_attempt(self, value: Optional[bool]):
        pulumi.set(self, "alert_on_last_attempt", value)

    @property
    @pulumi.getter(name="noAlertForSkippedRuns")
    def no_alert_for_skipped_runs(self) -> Optional[bool]:
        return pulumi.get(self, "no_alert_for_skipped_runs")

    @no_alert_for_skipped_runs.setter
    def no_alert_for_skipped_runs(self, value: Optional[bool]):
        pulumi.set(self, "no_alert_for_skipped_runs", value)

    @property
    @pulumi.getter(name="onFailures")
    def on_failures(self) -> Optional[Sequence[str]]:
        return pulumi.get(self, "on_failures")

    @on_failures.setter
    def on_failures(self, value: Optional[Sequence[str]]):
        pulumi.set(self, "on_failures", value)

    @property
    @pulumi.getter(name="onStarts")
    def on_starts(self) -> Optional[Sequence[str]]:
        return pulumi.get(self, "on_starts")

    @on_starts.setter
    def on_starts(self, value: Optional[Sequence[str]]):
        pulumi.set(self, "on_starts", value)

    @property
    @pulumi.getter(name="onSuccesses")
    def on_successes(self) -> Optional[Sequence[str]]:
        return pulumi.get(self, "on_successes")

    @on_successes.setter
    def on_successes(self, value: Optional[Sequence[str]]):
        pulumi.set(self, "on_successes", value)


@pulumi.input_type
class GetJobJobSettingsSettingsGitSourceArgs:
    def __init__(__self__, *,
                 url: str,
                 branch: Optional[str] = None,
                 commit: Optional[str] = None,
                 provider: Optional[str] = None,
                 tag: Optional[str] = None):
        pulumi.set(__self__, "url", url)
        if branch is not None:
            pulumi.set(__self__, "branch", branch)
        if commit is not None:
            pulumi.set(__self__, "commit", commit)
        if provider is not None:
            pulumi.set(__self__, "provider", provider)
        if tag is not None:
            pulumi.set(__self__, "tag", tag)

    @property
    @pulumi.getter
    def url(self) -> str:
        return pulumi.get(self, "url")

    @url.setter
    def url(self, value: str):
        pulumi.set(self, "url", value)

    @property
    @pulumi.getter
    def branch(self) -> Optional[str]:
        return pulumi.get(self, "branch")

    @branch.setter
    def branch(self, value: Optional[str]):
        pulumi.set(self, "branch", value)

    @property
    @pulumi.getter
    def commit(self) -> Optional[str]:
        return pulumi.get(self, "commit")

    @commit.setter
    def commit(self, value: Optional[str]):
        pulumi.set(self, "commit", value)

    @property
    @pulumi.getter
    def provider(self) -> Optional[str]:
        return pulumi.get(self, "provider")

    @provider.setter
    def provider(self, value: Optional[str]):
        pulumi.set(self, "provider", value)

    @property
    @pulumi.getter
    def tag(self) -> Optional[str]:
        return pulumi.get(self, "tag")

    @tag.setter
    def tag(self, value: Optional[str]):
        pulumi.set(self, "tag", value)


@pulumi.input_type
class GetJobJobSettingsSettingsJobClusterArgs:
    def __init__(__self__, *,
                 job_cluster_key: Optional[str] = None,
                 new_cluster: Optional['GetJobJobSettingsSettingsJobClusterNewClusterArgs'] = None):
        if job_cluster_key is not None:
            pulumi.set(__self__, "job_cluster_key", job_cluster_key)
        if new_cluster is not None:
            pulumi.set(__self__, "new_cluster", new_cluster)

    @property
    @pulumi.getter(name="jobClusterKey")
    def job_cluster_key(self) -> Optional[str]:
        return pulumi.get(self, "job_cluster_key")

    @job_cluster_key.setter
    def job_cluster_key(self, value: Optional[str]):
        pulumi.set(self, "job_cluster_key", value)

    @property
    @pulumi.getter(name="newCluster")
    def new_cluster(self) -> Optional['GetJobJobSettingsSettingsJobClusterNewClusterArgs']:
        return pulumi.get(self, "new_cluster")

    @new_cluster.setter
    def new_cluster(self, value: Optional['GetJobJobSettingsSettingsJobClusterNewClusterArgs']):
        pulumi.set(self, "new_cluster", value)


@pulumi.input_type
class GetJobJobSettingsSettingsJobClusterNewClusterArgs:
    def __init__(__self__, *,
                 driver_instance_pool_id: str,
                 driver_node_type_id: str,
                 enable_elastic_disk: bool,
                 enable_local_disk_encryption: bool,
                 node_type_id: str,
                 num_workers: int,
                 spark_version: str,
                 apply_policy_default_values: Optional[bool] = None,
                 autoscale: Optional['GetJobJobSettingsSettingsJobClusterNewClusterAutoscaleArgs'] = None,
                 autotermination_minutes: Optional[int] = None,
                 aws_attributes: Optional['GetJobJobSettingsSettingsJobClusterNewClusterAwsAttributesArgs'] = None,
                 azure_attributes: Optional['GetJobJobSettingsSettingsJobClusterNewClusterAzureAttributesArgs'] = None,
                 cluster_id: Optional[str] = None,
                 cluster_log_conf: Optional['GetJobJobSettingsSettingsJobClusterNewClusterClusterLogConfArgs'] = None,
                 cluster_mount_infos: Optional[Sequence['GetJobJobSettingsSettingsJobClusterNewClusterClusterMountInfoArgs']] = None,
                 cluster_name: Optional[str] = None,
                 custom_tags: Optional[Mapping[str, Any]] = None,
                 data_security_mode: Optional[str] = None,
                 docker_image: Optional['GetJobJobSettingsSettingsJobClusterNewClusterDockerImageArgs'] = None,
                 gcp_attributes: Optional['GetJobJobSettingsSettingsJobClusterNewClusterGcpAttributesArgs'] = None,
                 idempotency_token: Optional[str] = None,
                 init_scripts: Optional[Sequence['GetJobJobSettingsSettingsJobClusterNewClusterInitScriptArgs']] = None,
                 instance_pool_id: Optional[str] = None,
                 policy_id: Optional[str] = None,
                 runtime_engine: Optional[str] = None,
                 single_user_name: Optional[str] = None,
                 spark_conf: Optional[Mapping[str, Any]] = None,
                 spark_env_vars: Optional[Mapping[str, Any]] = None,
                 ssh_public_keys: Optional[Sequence[str]] = None,
                 workload_type: Optional['GetJobJobSettingsSettingsJobClusterNewClusterWorkloadTypeArgs'] = None):
        pulumi.set(__self__, "driver_instance_pool_id", driver_instance_pool_id)
        pulumi.set(__self__, "driver_node_type_id", driver_node_type_id)
        pulumi.set(__self__, "enable_elastic_disk", enable_elastic_disk)
        pulumi.set(__self__, "enable_local_disk_encryption", enable_local_disk_encryption)
        pulumi.set(__self__, "node_type_id", node_type_id)
        pulumi.set(__self__, "num_workers", num_workers)
        pulumi.set(__self__, "spark_version", spark_version)
        if apply_policy_default_values is not None:
            pulumi.set(__self__, "apply_policy_default_values", apply_policy_default_values)
        if autoscale is not None:
            pulumi.set(__self__, "autoscale", autoscale)
        if autotermination_minutes is not None:
            pulumi.set(__self__, "autotermination_minutes", autotermination_minutes)
        if aws_attributes is not None:
            pulumi.set(__self__, "aws_attributes", aws_attributes)
        if azure_attributes is not None:
            pulumi.set(__self__, "azure_attributes", azure_attributes)
        if cluster_id is not None:
            pulumi.set(__self__, "cluster_id", cluster_id)
        if cluster_log_conf is not None:
            pulumi.set(__self__, "cluster_log_conf", cluster_log_conf)
        if cluster_mount_infos is not None:
            pulumi.set(__self__, "cluster_mount_infos", cluster_mount_infos)
        if cluster_name is not None:
            pulumi.set(__self__, "cluster_name", cluster_name)
        if custom_tags is not None:
            pulumi.set(__self__, "custom_tags", custom_tags)
        if data_security_mode is not None:
            pulumi.set(__self__, "data_security_mode", data_security_mode)
        if docker_image is not None:
            pulumi.set(__self__, "docker_image", docker_image)
        if gcp_attributes is not None:
            pulumi.set(__self__, "gcp_attributes", gcp_attributes)
        if idempotency_token is not None:
            pulumi.set(__self__, "idempotency_token", idempotency_token)
        if init_scripts is not None:
            pulumi.set(__self__, "init_scripts", init_scripts)
        if instance_pool_id is not None:
            pulumi.set(__self__, "instance_pool_id", instance_pool_id)
        if policy_id is not None:
            pulumi.set(__self__, "policy_id", policy_id)
        if runtime_engine is not None:
            pulumi.set(__self__, "runtime_engine", runtime_engine)
        if single_user_name is not None:
            pulumi.set(__self__, "single_user_name", single_user_name)
        if spark_conf is not None:
            pulumi.set(__self__, "spark_conf", spark_conf)
        if spark_env_vars is not None:
            pulumi.set(__self__, "spark_env_vars", spark_env_vars)
        if ssh_public_keys is not None:
            pulumi.set(__self__, "ssh_public_keys", ssh_public_keys)
        if workload_type is not None:
            pulumi.set(__self__, "workload_type", workload_type)

    @property
    @pulumi.getter(name="driverInstancePoolId")
    def driver_instance_pool_id(self) -> str:
        return pulumi.get(self, "driver_instance_pool_id")

    @driver_instance_pool_id.setter
    def driver_instance_pool_id(self, value: str):
        pulumi.set(self, "driver_instance_pool_id", value)

    @property
    @pulumi.getter(name="driverNodeTypeId")
    def driver_node_type_id(self) -> str:
        return pulumi.get(self, "driver_node_type_id")

    @driver_node_type_id.setter
    def driver_node_type_id(self, value: str):
        pulumi.set(self, "driver_node_type_id", value)

    @property
    @pulumi.getter(name="enableElasticDisk")
    def enable_elastic_disk(self) -> bool:
        return pulumi.get(self, "enable_elastic_disk")

    @enable_elastic_disk.setter
    def enable_elastic_disk(self, value: bool):
        pulumi.set(self, "enable_elastic_disk", value)

    @property
    @pulumi.getter(name="enableLocalDiskEncryption")
    def enable_local_disk_encryption(self) -> bool:
        return pulumi.get(self, "enable_local_disk_encryption")

    @enable_local_disk_encryption.setter
    def enable_local_disk_encryption(self, value: bool):
        pulumi.set(self, "enable_local_disk_encryption", value)

    @property
    @pulumi.getter(name="nodeTypeId")
    def node_type_id(self) -> str:
        return pulumi.get(self, "node_type_id")

    @node_type_id.setter
    def node_type_id(self, value: str):
        pulumi.set(self, "node_type_id", value)

    @property
    @pulumi.getter(name="numWorkers")
    def num_workers(self) -> int:
        return pulumi.get(self, "num_workers")

    @num_workers.setter
    def num_workers(self, value: int):
        pulumi.set(self, "num_workers", value)

    @property
    @pulumi.getter(name="sparkVersion")
    def spark_version(self) -> str:
        return pulumi.get(self, "spark_version")

    @spark_version.setter
    def spark_version(self, value: str):
        pulumi.set(self, "spark_version", value)

    @property
    @pulumi.getter(name="applyPolicyDefaultValues")
    def apply_policy_default_values(self) -> Optional[bool]:
        return pulumi.get(self, "apply_policy_default_values")

    @apply_policy_default_values.setter
    def apply_policy_default_values(self, value: Optional[bool]):
        pulumi.set(self, "apply_policy_default_values", value)

    @property
    @pulumi.getter
    def autoscale(self) -> Optional['GetJobJobSettingsSettingsJobClusterNewClusterAutoscaleArgs']:
        return pulumi.get(self, "autoscale")

    @autoscale.setter
    def autoscale(self, value: Optional['GetJobJobSettingsSettingsJobClusterNewClusterAutoscaleArgs']):
        pulumi.set(self, "autoscale", value)

    @property
    @pulumi.getter(name="autoterminationMinutes")
    def autotermination_minutes(self) -> Optional[int]:
        return pulumi.get(self, "autotermination_minutes")

    @autotermination_minutes.setter
    def autotermination_minutes(self, value: Optional[int]):
        pulumi.set(self, "autotermination_minutes", value)

    @property
    @pulumi.getter(name="awsAttributes")
    def aws_attributes(self) -> Optional['GetJobJobSettingsSettingsJobClusterNewClusterAwsAttributesArgs']:
        return pulumi.get(self, "aws_attributes")

    @aws_attributes.setter
    def aws_attributes(self, value: Optional['GetJobJobSettingsSettingsJobClusterNewClusterAwsAttributesArgs']):
        pulumi.set(self, "aws_attributes", value)

    @property
    @pulumi.getter(name="azureAttributes")
    def azure_attributes(self) -> Optional['GetJobJobSettingsSettingsJobClusterNewClusterAzureAttributesArgs']:
        return pulumi.get(self, "azure_attributes")

    @azure_attributes.setter
    def azure_attributes(self, value: Optional['GetJobJobSettingsSettingsJobClusterNewClusterAzureAttributesArgs']):
        pulumi.set(self, "azure_attributes", value)

    @property
    @pulumi.getter(name="clusterId")
    def cluster_id(self) -> Optional[str]:
        return pulumi.get(self, "cluster_id")

    @cluster_id.setter
    def cluster_id(self, value: Optional[str]):
        pulumi.set(self, "cluster_id", value)

    @property
    @pulumi.getter(name="clusterLogConf")
    def cluster_log_conf(self) -> Optional['GetJobJobSettingsSettingsJobClusterNewClusterClusterLogConfArgs']:
        return pulumi.get(self, "cluster_log_conf")

    @cluster_log_conf.setter
    def cluster_log_conf(self, value: Optional['GetJobJobSettingsSettingsJobClusterNewClusterClusterLogConfArgs']):
        pulumi.set(self, "cluster_log_conf", value)

    @property
    @pulumi.getter(name="clusterMountInfos")
    def cluster_mount_infos(self) -> Optional[Sequence['GetJobJobSettingsSettingsJobClusterNewClusterClusterMountInfoArgs']]:
        return pulumi.get(self, "cluster_mount_infos")

    @cluster_mount_infos.setter
    def cluster_mount_infos(self, value: Optional[Sequence['GetJobJobSettingsSettingsJobClusterNewClusterClusterMountInfoArgs']]):
        pulumi.set(self, "cluster_mount_infos", value)

    @property
    @pulumi.getter(name="clusterName")
    def cluster_name(self) -> Optional[str]:
        return pulumi.get(self, "cluster_name")

    @cluster_name.setter
    def cluster_name(self, value: Optional[str]):
        pulumi.set(self, "cluster_name", value)

    @property
    @pulumi.getter(name="customTags")
    def custom_tags(self) -> Optional[Mapping[str, Any]]:
        return pulumi.get(self, "custom_tags")

    @custom_tags.setter
    def custom_tags(self, value: Optional[Mapping[str, Any]]):
        pulumi.set(self, "custom_tags", value)

    @property
    @pulumi.getter(name="dataSecurityMode")
    def data_security_mode(self) -> Optional[str]:
        return pulumi.get(self, "data_security_mode")

    @data_security_mode.setter
    def data_security_mode(self, value: Optional[str]):
        pulumi.set(self, "data_security_mode", value)

    @property
    @pulumi.getter(name="dockerImage")
    def docker_image(self) -> Optional['GetJobJobSettingsSettingsJobClusterNewClusterDockerImageArgs']:
        return pulumi.get(self, "docker_image")

    @docker_image.setter
    def docker_image(self, value: Optional['GetJobJobSettingsSettingsJobClusterNewClusterDockerImageArgs']):
        pulumi.set(self, "docker_image", value)

    @property
    @pulumi.getter(name="gcpAttributes")
    def gcp_attributes(self) -> Optional['GetJobJobSettingsSettingsJobClusterNewClusterGcpAttributesArgs']:
        return pulumi.get(self, "gcp_attributes")

    @gcp_attributes.setter
    def gcp_attributes(self, value: Optional['GetJobJobSettingsSettingsJobClusterNewClusterGcpAttributesArgs']):
        pulumi.set(self, "gcp_attributes", value)

    @property
    @pulumi.getter(name="idempotencyToken")
    def idempotency_token(self) -> Optional[str]:
        return pulumi.get(self, "idempotency_token")

    @idempotency_token.setter
    def idempotency_token(self, value: Optional[str]):
        pulumi.set(self, "idempotency_token", value)

    @property
    @pulumi.getter(name="initScripts")
    def init_scripts(self) -> Optional[Sequence['GetJobJobSettingsSettingsJobClusterNewClusterInitScriptArgs']]:
        return pulumi.get(self, "init_scripts")

    @init_scripts.setter
    def init_scripts(self, value: Optional[Sequence['GetJobJobSettingsSettingsJobClusterNewClusterInitScriptArgs']]):
        pulumi.set(self, "init_scripts", value)

    @property
    @pulumi.getter(name="instancePoolId")
    def instance_pool_id(self) -> Optional[str]:
        return pulumi.get(self, "instance_pool_id")

    @instance_pool_id.setter
    def instance_pool_id(self, value: Optional[str]):
        pulumi.set(self, "instance_pool_id", value)

    @property
    @pulumi.getter(name="policyId")
    def policy_id(self) -> Optional[str]:
        return pulumi.get(self, "policy_id")

    @policy_id.setter
    def policy_id(self, value: Optional[str]):
        pulumi.set(self, "policy_id", value)

    @property
    @pulumi.getter(name="runtimeEngine")
    def runtime_engine(self) -> Optional[str]:
        return pulumi.get(self, "runtime_engine")

    @runtime_engine.setter
    def runtime_engine(self, value: Optional[str]):
        pulumi.set(self, "runtime_engine", value)

    @property
    @pulumi.getter(name="singleUserName")
    def single_user_name(self) -> Optional[str]:
        return pulumi.get(self, "single_user_name")

    @single_user_name.setter
    def single_user_name(self, value: Optional[str]):
        pulumi.set(self, "single_user_name", value)

    @property
    @pulumi.getter(name="sparkConf")
    def spark_conf(self) -> Optional[Mapping[str, Any]]:
        return pulumi.get(self, "spark_conf")

    @spark_conf.setter
    def spark_conf(self, value: Optional[Mapping[str, Any]]):
        pulumi.set(self, "spark_conf", value)

    @property
    @pulumi.getter(name="sparkEnvVars")
    def spark_env_vars(self) -> Optional[Mapping[str, Any]]:
        return pulumi.get(self, "spark_env_vars")

    @spark_env_vars.setter
    def spark_env_vars(self, value: Optional[Mapping[str, Any]]):
        pulumi.set(self, "spark_env_vars", value)

    @property
    @pulumi.getter(name="sshPublicKeys")
    def ssh_public_keys(self) -> Optional[Sequence[str]]:
        return pulumi.get(self, "ssh_public_keys")

    @ssh_public_keys.setter
    def ssh_public_keys(self, value: Optional[Sequence[str]]):
        pulumi.set(self, "ssh_public_keys", value)

    @property
    @pulumi.getter(name="workloadType")
    def workload_type(self) -> Optional['GetJobJobSettingsSettingsJobClusterNewClusterWorkloadTypeArgs']:
        return pulumi.get(self, "workload_type")

    @workload_type.setter
    def workload_type(self, value: Optional['GetJobJobSettingsSettingsJobClusterNewClusterWorkloadTypeArgs']):
        pulumi.set(self, "workload_type", value)


@pulumi.input_type
class GetJobJobSettingsSettingsJobClusterNewClusterAutoscaleArgs:
    def __init__(__self__, *,
                 max_workers: Optional[int] = None,
                 min_workers: Optional[int] = None):
        if max_workers is not None:
            pulumi.set(__self__, "max_workers", max_workers)
        if min_workers is not None:
            pulumi.set(__self__, "min_workers", min_workers)

    @property
    @pulumi.getter(name="maxWorkers")
    def max_workers(self) -> Optional[int]:
        return pulumi.get(self, "max_workers")

    @max_workers.setter
    def max_workers(self, value: Optional[int]):
        pulumi.set(self, "max_workers", value)

    @property
    @pulumi.getter(name="minWorkers")
    def min_workers(self) -> Optional[int]:
        return pulumi.get(self, "min_workers")

    @min_workers.setter
    def min_workers(self, value: Optional[int]):
        pulumi.set(self, "min_workers", value)


@pulumi.input_type
class GetJobJobSettingsSettingsJobClusterNewClusterAwsAttributesArgs:
    def __init__(__self__, *,
                 availability: Optional[str] = None,
                 ebs_volume_count: Optional[int] = None,
                 ebs_volume_size: Optional[int] = None,
                 ebs_volume_type: Optional[str] = None,
                 first_on_demand: Optional[int] = None,
                 instance_profile_arn: Optional[str] = None,
                 spot_bid_price_percent: Optional[int] = None,
                 zone_id: Optional[str] = None):
        if availability is not None:
            pulumi.set(__self__, "availability", availability)
        if ebs_volume_count is not None:
            pulumi.set(__self__, "ebs_volume_count", ebs_volume_count)
        if ebs_volume_size is not None:
            pulumi.set(__self__, "ebs_volume_size", ebs_volume_size)
        if ebs_volume_type is not None:
            pulumi.set(__self__, "ebs_volume_type", ebs_volume_type)
        if first_on_demand is not None:
            pulumi.set(__self__, "first_on_demand", first_on_demand)
        if instance_profile_arn is not None:
            pulumi.set(__self__, "instance_profile_arn", instance_profile_arn)
        if spot_bid_price_percent is not None:
            pulumi.set(__self__, "spot_bid_price_percent", spot_bid_price_percent)
        if zone_id is not None:
            pulumi.set(__self__, "zone_id", zone_id)

    @property
    @pulumi.getter
    def availability(self) -> Optional[str]:
        return pulumi.get(self, "availability")

    @availability.setter
    def availability(self, value: Optional[str]):
        pulumi.set(self, "availability", value)

    @property
    @pulumi.getter(name="ebsVolumeCount")
    def ebs_volume_count(self) -> Optional[int]:
        return pulumi.get(self, "ebs_volume_count")

    @ebs_volume_count.setter
    def ebs_volume_count(self, value: Optional[int]):
        pulumi.set(self, "ebs_volume_count", value)

    @property
    @pulumi.getter(name="ebsVolumeSize")
    def ebs_volume_size(self) -> Optional[int]:
        return pulumi.get(self, "ebs_volume_size")

    @ebs_volume_size.setter
    def ebs_volume_size(self, value: Optional[int]):
        pulumi.set(self, "ebs_volume_size", value)

    @property
    @pulumi.getter(name="ebsVolumeType")
    def ebs_volume_type(self) -> Optional[str]:
        return pulumi.get(self, "ebs_volume_type")

    @ebs_volume_type.setter
    def ebs_volume_type(self, value: Optional[str]):
        pulumi.set(self, "ebs_volume_type", value)

    @property
    @pulumi.getter(name="firstOnDemand")
    def first_on_demand(self) -> Optional[int]:
        return pulumi.get(self, "first_on_demand")

    @first_on_demand.setter
    def first_on_demand(self, value: Optional[int]):
        pulumi.set(self, "first_on_demand", value)

    @property
    @pulumi.getter(name="instanceProfileArn")
    def instance_profile_arn(self) -> Optional[str]:
        return pulumi.get(self, "instance_profile_arn")

    @instance_profile_arn.setter
    def instance_profile_arn(self, value: Optional[str]):
        pulumi.set(self, "instance_profile_arn", value)

    @property
    @pulumi.getter(name="spotBidPricePercent")
    def spot_bid_price_percent(self) -> Optional[int]:
        return pulumi.get(self, "spot_bid_price_percent")

    @spot_bid_price_percent.setter
    def spot_bid_price_percent(self, value: Optional[int]):
        pulumi.set(self, "spot_bid_price_percent", value)

    @property
    @pulumi.getter(name="zoneId")
    def zone_id(self) -> Optional[str]:
        return pulumi.get(self, "zone_id")

    @zone_id.setter
    def zone_id(self, value: Optional[str]):
        pulumi.set(self, "zone_id", value)


@pulumi.input_type
class GetJobJobSettingsSettingsJobClusterNewClusterAzureAttributesArgs:
    def __init__(__self__, *,
                 availability: Optional[str] = None,
                 first_on_demand: Optional[int] = None,
                 spot_bid_max_price: Optional[float] = None):
        if availability is not None:
            pulumi.set(__self__, "availability", availability)
        if first_on_demand is not None:
            pulumi.set(__self__, "first_on_demand", first_on_demand)
        if spot_bid_max_price is not None:
            pulumi.set(__self__, "spot_bid_max_price", spot_bid_max_price)

    @property
    @pulumi.getter
    def availability(self) -> Optional[str]:
        return pulumi.get(self, "availability")

    @availability.setter
    def availability(self, value: Optional[str]):
        pulumi.set(self, "availability", value)

    @property
    @pulumi.getter(name="firstOnDemand")
    def first_on_demand(self) -> Optional[int]:
        return pulumi.get(self, "first_on_demand")

    @first_on_demand.setter
    def first_on_demand(self, value: Optional[int]):
        pulumi.set(self, "first_on_demand", value)

    @property
    @pulumi.getter(name="spotBidMaxPrice")
    def spot_bid_max_price(self) -> Optional[float]:
        return pulumi.get(self, "spot_bid_max_price")

    @spot_bid_max_price.setter
    def spot_bid_max_price(self, value: Optional[float]):
        pulumi.set(self, "spot_bid_max_price", value)


@pulumi.input_type
class GetJobJobSettingsSettingsJobClusterNewClusterClusterLogConfArgs:
    def __init__(__self__, *,
                 dbfs: Optional['GetJobJobSettingsSettingsJobClusterNewClusterClusterLogConfDbfsArgs'] = None,
                 s3: Optional['GetJobJobSettingsSettingsJobClusterNewClusterClusterLogConfS3Args'] = None):
        if dbfs is not None:
            pulumi.set(__self__, "dbfs", dbfs)
        if s3 is not None:
            pulumi.set(__self__, "s3", s3)

    @property
    @pulumi.getter
    def dbfs(self) -> Optional['GetJobJobSettingsSettingsJobClusterNewClusterClusterLogConfDbfsArgs']:
        return pulumi.get(self, "dbfs")

    @dbfs.setter
    def dbfs(self, value: Optional['GetJobJobSettingsSettingsJobClusterNewClusterClusterLogConfDbfsArgs']):
        pulumi.set(self, "dbfs", value)

    @property
    @pulumi.getter
    def s3(self) -> Optional['GetJobJobSettingsSettingsJobClusterNewClusterClusterLogConfS3Args']:
        return pulumi.get(self, "s3")

    @s3.setter
    def s3(self, value: Optional['GetJobJobSettingsSettingsJobClusterNewClusterClusterLogConfS3Args']):
        pulumi.set(self, "s3", value)


@pulumi.input_type
class GetJobJobSettingsSettingsJobClusterNewClusterClusterLogConfDbfsArgs:
    def __init__(__self__, *,
                 destination: str):
        pulumi.set(__self__, "destination", destination)

    @property
    @pulumi.getter
    def destination(self) -> str:
        return pulumi.get(self, "destination")

    @destination.setter
    def destination(self, value: str):
        pulumi.set(self, "destination", value)


@pulumi.input_type
class GetJobJobSettingsSettingsJobClusterNewClusterClusterLogConfS3Args:
    def __init__(__self__, *,
                 destination: str,
                 canned_acl: Optional[str] = None,
                 enable_encryption: Optional[bool] = None,
                 encryption_type: Optional[str] = None,
                 endpoint: Optional[str] = None,
                 kms_key: Optional[str] = None,
                 region: Optional[str] = None):
        pulumi.set(__self__, "destination", destination)
        if canned_acl is not None:
            pulumi.set(__self__, "canned_acl", canned_acl)
        if enable_encryption is not None:
            pulumi.set(__self__, "enable_encryption", enable_encryption)
        if encryption_type is not None:
            pulumi.set(__self__, "encryption_type", encryption_type)
        if endpoint is not None:
            pulumi.set(__self__, "endpoint", endpoint)
        if kms_key is not None:
            pulumi.set(__self__, "kms_key", kms_key)
        if region is not None:
            pulumi.set(__self__, "region", region)

    @property
    @pulumi.getter
    def destination(self) -> str:
        return pulumi.get(self, "destination")

    @destination.setter
    def destination(self, value: str):
        pulumi.set(self, "destination", value)

    @property
    @pulumi.getter(name="cannedAcl")
    def canned_acl(self) -> Optional[str]:
        return pulumi.get(self, "canned_acl")

    @canned_acl.setter
    def canned_acl(self, value: Optional[str]):
        pulumi.set(self, "canned_acl", value)

    @property
    @pulumi.getter(name="enableEncryption")
    def enable_encryption(self) -> Optional[bool]:
        return pulumi.get(self, "enable_encryption")

    @enable_encryption.setter
    def enable_encryption(self, value: Optional[bool]):
        pulumi.set(self, "enable_encryption", value)

    @property
    @pulumi.getter(name="encryptionType")
    def encryption_type(self) -> Optional[str]:
        return pulumi.get(self, "encryption_type")

    @encryption_type.setter
    def encryption_type(self, value: Optional[str]):
        pulumi.set(self, "encryption_type", value)

    @property
    @pulumi.getter
    def endpoint(self) -> Optional[str]:
        return pulumi.get(self, "endpoint")

    @endpoint.setter
    def endpoint(self, value: Optional[str]):
        pulumi.set(self, "endpoint", value)

    @property
    @pulumi.getter(name="kmsKey")
    def kms_key(self) -> Optional[str]:
        return pulumi.get(self, "kms_key")

    @kms_key.setter
    def kms_key(self, value: Optional[str]):
        pulumi.set(self, "kms_key", value)

    @property
    @pulumi.getter
    def region(self) -> Optional[str]:
        return pulumi.get(self, "region")

    @region.setter
    def region(self, value: Optional[str]):
        pulumi.set(self, "region", value)


@pulumi.input_type
class GetJobJobSettingsSettingsJobClusterNewClusterClusterMountInfoArgs:
    def __init__(__self__, *,
                 local_mount_dir_path: str,
                 network_filesystem_info: 'GetJobJobSettingsSettingsJobClusterNewClusterClusterMountInfoNetworkFilesystemInfoArgs',
                 remote_mount_dir_path: Optional[str] = None):
        pulumi.set(__self__, "local_mount_dir_path", local_mount_dir_path)
        pulumi.set(__self__, "network_filesystem_info", network_filesystem_info)
        if remote_mount_dir_path is not None:
            pulumi.set(__self__, "remote_mount_dir_path", remote_mount_dir_path)

    @property
    @pulumi.getter(name="localMountDirPath")
    def local_mount_dir_path(self) -> str:
        return pulumi.get(self, "local_mount_dir_path")

    @local_mount_dir_path.setter
    def local_mount_dir_path(self, value: str):
        pulumi.set(self, "local_mount_dir_path", value)

    @property
    @pulumi.getter(name="networkFilesystemInfo")
    def network_filesystem_info(self) -> 'GetJobJobSettingsSettingsJobClusterNewClusterClusterMountInfoNetworkFilesystemInfoArgs':
        return pulumi.get(self, "network_filesystem_info")

    @network_filesystem_info.setter
    def network_filesystem_info(self, value: 'GetJobJobSettingsSettingsJobClusterNewClusterClusterMountInfoNetworkFilesystemInfoArgs'):
        pulumi.set(self, "network_filesystem_info", value)

    @property
    @pulumi.getter(name="remoteMountDirPath")
    def remote_mount_dir_path(self) -> Optional[str]:
        return pulumi.get(self, "remote_mount_dir_path")

    @remote_mount_dir_path.setter
    def remote_mount_dir_path(self, value: Optional[str]):
        pulumi.set(self, "remote_mount_dir_path", value)


@pulumi.input_type
class GetJobJobSettingsSettingsJobClusterNewClusterClusterMountInfoNetworkFilesystemInfoArgs:
    def __init__(__self__, *,
                 server_address: str,
                 mount_options: Optional[str] = None):
        pulumi.set(__self__, "server_address", server_address)
        if mount_options is not None:
            pulumi.set(__self__, "mount_options", mount_options)

    @property
    @pulumi.getter(name="serverAddress")
    def server_address(self) -> str:
        return pulumi.get(self, "server_address")

    @server_address.setter
    def server_address(self, value: str):
        pulumi.set(self, "server_address", value)

    @property
    @pulumi.getter(name="mountOptions")
    def mount_options(self) -> Optional[str]:
        return pulumi.get(self, "mount_options")

    @mount_options.setter
    def mount_options(self, value: Optional[str]):
        pulumi.set(self, "mount_options", value)


@pulumi.input_type
class GetJobJobSettingsSettingsJobClusterNewClusterDockerImageArgs:
    def __init__(__self__, *,
                 url: str,
                 basic_auth: Optional['GetJobJobSettingsSettingsJobClusterNewClusterDockerImageBasicAuthArgs'] = None):
        pulumi.set(__self__, "url", url)
        if basic_auth is not None:
            pulumi.set(__self__, "basic_auth", basic_auth)

    @property
    @pulumi.getter
    def url(self) -> str:
        return pulumi.get(self, "url")

    @url.setter
    def url(self, value: str):
        pulumi.set(self, "url", value)

    @property
    @pulumi.getter(name="basicAuth")
    def basic_auth(self) -> Optional['GetJobJobSettingsSettingsJobClusterNewClusterDockerImageBasicAuthArgs']:
        return pulumi.get(self, "basic_auth")

    @basic_auth.setter
    def basic_auth(self, value: Optional['GetJobJobSettingsSettingsJobClusterNewClusterDockerImageBasicAuthArgs']):
        pulumi.set(self, "basic_auth", value)


@pulumi.input_type
class GetJobJobSettingsSettingsJobClusterNewClusterDockerImageBasicAuthArgs:
    def __init__(__self__, *,
                 password: str,
                 username: str):
        pulumi.set(__self__, "password", password)
        pulumi.set(__self__, "username", username)

    @property
    @pulumi.getter
    def password(self) -> str:
        return pulumi.get(self, "password")

    @password.setter
    def password(self, value: str):
        pulumi.set(self, "password", value)

    @property
    @pulumi.getter
    def username(self) -> str:
        return pulumi.get(self, "username")

    @username.setter
    def username(self, value: str):
        pulumi.set(self, "username", value)


@pulumi.input_type
class GetJobJobSettingsSettingsJobClusterNewClusterGcpAttributesArgs:
    def __init__(__self__, *,
                 availability: Optional[str] = None,
                 boot_disk_size: Optional[int] = None,
                 google_service_account: Optional[str] = None,
                 use_preemptible_executors: Optional[bool] = None,
                 zone_id: Optional[str] = None):
        if availability is not None:
            pulumi.set(__self__, "availability", availability)
        if boot_disk_size is not None:
            pulumi.set(__self__, "boot_disk_size", boot_disk_size)
        if google_service_account is not None:
            pulumi.set(__self__, "google_service_account", google_service_account)
        if use_preemptible_executors is not None:
            pulumi.set(__self__, "use_preemptible_executors", use_preemptible_executors)
        if zone_id is not None:
            pulumi.set(__self__, "zone_id", zone_id)

    @property
    @pulumi.getter
    def availability(self) -> Optional[str]:
        return pulumi.get(self, "availability")

    @availability.setter
    def availability(self, value: Optional[str]):
        pulumi.set(self, "availability", value)

    @property
    @pulumi.getter(name="bootDiskSize")
    def boot_disk_size(self) -> Optional[int]:
        return pulumi.get(self, "boot_disk_size")

    @boot_disk_size.setter
    def boot_disk_size(self, value: Optional[int]):
        pulumi.set(self, "boot_disk_size", value)

    @property
    @pulumi.getter(name="googleServiceAccount")
    def google_service_account(self) -> Optional[str]:
        return pulumi.get(self, "google_service_account")

    @google_service_account.setter
    def google_service_account(self, value: Optional[str]):
        pulumi.set(self, "google_service_account", value)

    @property
    @pulumi.getter(name="usePreemptibleExecutors")
    def use_preemptible_executors(self) -> Optional[bool]:
        return pulumi.get(self, "use_preemptible_executors")

    @use_preemptible_executors.setter
    def use_preemptible_executors(self, value: Optional[bool]):
        pulumi.set(self, "use_preemptible_executors", value)

    @property
    @pulumi.getter(name="zoneId")
    def zone_id(self) -> Optional[str]:
        return pulumi.get(self, "zone_id")

    @zone_id.setter
    def zone_id(self, value: Optional[str]):
        pulumi.set(self, "zone_id", value)


@pulumi.input_type
class GetJobJobSettingsSettingsJobClusterNewClusterInitScriptArgs:
    def __init__(__self__, *,
                 abfss: Optional['GetJobJobSettingsSettingsJobClusterNewClusterInitScriptAbfssArgs'] = None,
                 dbfs: Optional['GetJobJobSettingsSettingsJobClusterNewClusterInitScriptDbfsArgs'] = None,
                 file: Optional['GetJobJobSettingsSettingsJobClusterNewClusterInitScriptFileArgs'] = None,
                 gcs: Optional['GetJobJobSettingsSettingsJobClusterNewClusterInitScriptGcsArgs'] = None,
                 s3: Optional['GetJobJobSettingsSettingsJobClusterNewClusterInitScriptS3Args'] = None):
        if abfss is not None:
            pulumi.set(__self__, "abfss", abfss)
        if dbfs is not None:
            pulumi.set(__self__, "dbfs", dbfs)
        if file is not None:
            pulumi.set(__self__, "file", file)
        if gcs is not None:
            pulumi.set(__self__, "gcs", gcs)
        if s3 is not None:
            pulumi.set(__self__, "s3", s3)

    @property
    @pulumi.getter
    def abfss(self) -> Optional['GetJobJobSettingsSettingsJobClusterNewClusterInitScriptAbfssArgs']:
        return pulumi.get(self, "abfss")

    @abfss.setter
    def abfss(self, value: Optional['GetJobJobSettingsSettingsJobClusterNewClusterInitScriptAbfssArgs']):
        pulumi.set(self, "abfss", value)

    @property
    @pulumi.getter
    def dbfs(self) -> Optional['GetJobJobSettingsSettingsJobClusterNewClusterInitScriptDbfsArgs']:
        return pulumi.get(self, "dbfs")

    @dbfs.setter
    def dbfs(self, value: Optional['GetJobJobSettingsSettingsJobClusterNewClusterInitScriptDbfsArgs']):
        pulumi.set(self, "dbfs", value)

    @property
    @pulumi.getter
    def file(self) -> Optional['GetJobJobSettingsSettingsJobClusterNewClusterInitScriptFileArgs']:
        return pulumi.get(self, "file")

    @file.setter
    def file(self, value: Optional['GetJobJobSettingsSettingsJobClusterNewClusterInitScriptFileArgs']):
        pulumi.set(self, "file", value)

    @property
    @pulumi.getter
    def gcs(self) -> Optional['GetJobJobSettingsSettingsJobClusterNewClusterInitScriptGcsArgs']:
        return pulumi.get(self, "gcs")

    @gcs.setter
    def gcs(self, value: Optional['GetJobJobSettingsSettingsJobClusterNewClusterInitScriptGcsArgs']):
        pulumi.set(self, "gcs", value)

    @property
    @pulumi.getter
    def s3(self) -> Optional['GetJobJobSettingsSettingsJobClusterNewClusterInitScriptS3Args']:
        return pulumi.get(self, "s3")

    @s3.setter
    def s3(self, value: Optional['GetJobJobSettingsSettingsJobClusterNewClusterInitScriptS3Args']):
        pulumi.set(self, "s3", value)


@pulumi.input_type
class GetJobJobSettingsSettingsJobClusterNewClusterInitScriptAbfssArgs:
    def __init__(__self__, *,
                 destination: Optional[str] = None):
        if destination is not None:
            pulumi.set(__self__, "destination", destination)

    @property
    @pulumi.getter
    def destination(self) -> Optional[str]:
        return pulumi.get(self, "destination")

    @destination.setter
    def destination(self, value: Optional[str]):
        pulumi.set(self, "destination", value)


@pulumi.input_type
class GetJobJobSettingsSettingsJobClusterNewClusterInitScriptDbfsArgs:
    def __init__(__self__, *,
                 destination: str):
        pulumi.set(__self__, "destination", destination)

    @property
    @pulumi.getter
    def destination(self) -> str:
        return pulumi.get(self, "destination")

    @destination.setter
    def destination(self, value: str):
        pulumi.set(self, "destination", value)


@pulumi.input_type
class GetJobJobSettingsSettingsJobClusterNewClusterInitScriptFileArgs:
    def __init__(__self__, *,
                 destination: Optional[str] = None):
        if destination is not None:
            pulumi.set(__self__, "destination", destination)

    @property
    @pulumi.getter
    def destination(self) -> Optional[str]:
        return pulumi.get(self, "destination")

    @destination.setter
    def destination(self, value: Optional[str]):
        pulumi.set(self, "destination", value)


@pulumi.input_type
class GetJobJobSettingsSettingsJobClusterNewClusterInitScriptGcsArgs:
    def __init__(__self__, *,
                 destination: Optional[str] = None):
        if destination is not None:
            pulumi.set(__self__, "destination", destination)

    @property
    @pulumi.getter
    def destination(self) -> Optional[str]:
        return pulumi.get(self, "destination")

    @destination.setter
    def destination(self, value: Optional[str]):
        pulumi.set(self, "destination", value)


@pulumi.input_type
class GetJobJobSettingsSettingsJobClusterNewClusterInitScriptS3Args:
    def __init__(__self__, *,
                 destination: str,
                 canned_acl: Optional[str] = None,
                 enable_encryption: Optional[bool] = None,
                 encryption_type: Optional[str] = None,
                 endpoint: Optional[str] = None,
                 kms_key: Optional[str] = None,
                 region: Optional[str] = None):
        pulumi.set(__self__, "destination", destination)
        if canned_acl is not None:
            pulumi.set(__self__, "canned_acl", canned_acl)
        if enable_encryption is not None:
            pulumi.set(__self__, "enable_encryption", enable_encryption)
        if encryption_type is not None:
            pulumi.set(__self__, "encryption_type", encryption_type)
        if endpoint is not None:
            pulumi.set(__self__, "endpoint", endpoint)
        if kms_key is not None:
            pulumi.set(__self__, "kms_key", kms_key)
        if region is not None:
            pulumi.set(__self__, "region", region)

    @property
    @pulumi.getter
    def destination(self) -> str:
        return pulumi.get(self, "destination")

    @destination.setter
    def destination(self, value: str):
        pulumi.set(self, "destination", value)

    @property
    @pulumi.getter(name="cannedAcl")
    def canned_acl(self) -> Optional[str]:
        return pulumi.get(self, "canned_acl")

    @canned_acl.setter
    def canned_acl(self, value: Optional[str]):
        pulumi.set(self, "canned_acl", value)

    @property
    @pulumi.getter(name="enableEncryption")
    def enable_encryption(self) -> Optional[bool]:
        return pulumi.get(self, "enable_encryption")

    @enable_encryption.setter
    def enable_encryption(self, value: Optional[bool]):
        pulumi.set(self, "enable_encryption", value)

    @property
    @pulumi.getter(name="encryptionType")
    def encryption_type(self) -> Optional[str]:
        return pulumi.get(self, "encryption_type")

    @encryption_type.setter
    def encryption_type(self, value: Optional[str]):
        pulumi.set(self, "encryption_type", value)

    @property
    @pulumi.getter
    def endpoint(self) -> Optional[str]:
        return pulumi.get(self, "endpoint")

    @endpoint.setter
    def endpoint(self, value: Optional[str]):
        pulumi.set(self, "endpoint", value)

    @property
    @pulumi.getter(name="kmsKey")
    def kms_key(self) -> Optional[str]:
        return pulumi.get(self, "kms_key")

    @kms_key.setter
    def kms_key(self, value: Optional[str]):
        pulumi.set(self, "kms_key", value)

    @property
    @pulumi.getter
    def region(self) -> Optional[str]:
        return pulumi.get(self, "region")

    @region.setter
    def region(self, value: Optional[str]):
        pulumi.set(self, "region", value)


@pulumi.input_type
class GetJobJobSettingsSettingsJobClusterNewClusterWorkloadTypeArgs:
    def __init__(__self__, *,
                 clients: 'GetJobJobSettingsSettingsJobClusterNewClusterWorkloadTypeClientsArgs'):
        pulumi.set(__self__, "clients", clients)

    @property
    @pulumi.getter
    def clients(self) -> 'GetJobJobSettingsSettingsJobClusterNewClusterWorkloadTypeClientsArgs':
        return pulumi.get(self, "clients")

    @clients.setter
    def clients(self, value: 'GetJobJobSettingsSettingsJobClusterNewClusterWorkloadTypeClientsArgs'):
        pulumi.set(self, "clients", value)


@pulumi.input_type
class GetJobJobSettingsSettingsJobClusterNewClusterWorkloadTypeClientsArgs:
    def __init__(__self__, *,
                 jobs: Optional[bool] = None,
                 notebooks: Optional[bool] = None):
        if jobs is not None:
            pulumi.set(__self__, "jobs", jobs)
        if notebooks is not None:
            pulumi.set(__self__, "notebooks", notebooks)

    @property
    @pulumi.getter
    def jobs(self) -> Optional[bool]:
        return pulumi.get(self, "jobs")

    @jobs.setter
    def jobs(self, value: Optional[bool]):
        pulumi.set(self, "jobs", value)

    @property
    @pulumi.getter
    def notebooks(self) -> Optional[bool]:
        return pulumi.get(self, "notebooks")

    @notebooks.setter
    def notebooks(self, value: Optional[bool]):
        pulumi.set(self, "notebooks", value)


@pulumi.input_type
class GetJobJobSettingsSettingsLibraryArgs:
    def __init__(__self__, *,
                 cran: Optional['GetJobJobSettingsSettingsLibraryCranArgs'] = None,
                 egg: Optional[str] = None,
                 jar: Optional[str] = None,
                 maven: Optional['GetJobJobSettingsSettingsLibraryMavenArgs'] = None,
                 pypi: Optional['GetJobJobSettingsSettingsLibraryPypiArgs'] = None,
                 whl: Optional[str] = None):
        if cran is not None:
            pulumi.set(__self__, "cran", cran)
        if egg is not None:
            pulumi.set(__self__, "egg", egg)
        if jar is not None:
            pulumi.set(__self__, "jar", jar)
        if maven is not None:
            pulumi.set(__self__, "maven", maven)
        if pypi is not None:
            pulumi.set(__self__, "pypi", pypi)
        if whl is not None:
            pulumi.set(__self__, "whl", whl)

    @property
    @pulumi.getter
    def cran(self) -> Optional['GetJobJobSettingsSettingsLibraryCranArgs']:
        return pulumi.get(self, "cran")

    @cran.setter
    def cran(self, value: Optional['GetJobJobSettingsSettingsLibraryCranArgs']):
        pulumi.set(self, "cran", value)

    @property
    @pulumi.getter
    def egg(self) -> Optional[str]:
        return pulumi.get(self, "egg")

    @egg.setter
    def egg(self, value: Optional[str]):
        pulumi.set(self, "egg", value)

    @property
    @pulumi.getter
    def jar(self) -> Optional[str]:
        return pulumi.get(self, "jar")

    @jar.setter
    def jar(self, value: Optional[str]):
        pulumi.set(self, "jar", value)

    @property
    @pulumi.getter
    def maven(self) -> Optional['GetJobJobSettingsSettingsLibraryMavenArgs']:
        return pulumi.get(self, "maven")

    @maven.setter
    def maven(self, value: Optional['GetJobJobSettingsSettingsLibraryMavenArgs']):
        pulumi.set(self, "maven", value)

    @property
    @pulumi.getter
    def pypi(self) -> Optional['GetJobJobSettingsSettingsLibraryPypiArgs']:
        return pulumi.get(self, "pypi")

    @pypi.setter
    def pypi(self, value: Optional['GetJobJobSettingsSettingsLibraryPypiArgs']):
        pulumi.set(self, "pypi", value)

    @property
    @pulumi.getter
    def whl(self) -> Optional[str]:
        return pulumi.get(self, "whl")

    @whl.setter
    def whl(self, value: Optional[str]):
        pulumi.set(self, "whl", value)


@pulumi.input_type
class GetJobJobSettingsSettingsLibraryCranArgs:
    def __init__(__self__, *,
                 package: str,
                 repo: Optional[str] = None):
        pulumi.set(__self__, "package", package)
        if repo is not None:
            pulumi.set(__self__, "repo", repo)

    @property
    @pulumi.getter
    def package(self) -> str:
        return pulumi.get(self, "package")

    @package.setter
    def package(self, value: str):
        pulumi.set(self, "package", value)

    @property
    @pulumi.getter
    def repo(self) -> Optional[str]:
        return pulumi.get(self, "repo")

    @repo.setter
    def repo(self, value: Optional[str]):
        pulumi.set(self, "repo", value)


@pulumi.input_type
class GetJobJobSettingsSettingsLibraryMavenArgs:
    def __init__(__self__, *,
                 coordinates: str,
                 exclusions: Optional[Sequence[str]] = None,
                 repo: Optional[str] = None):
        pulumi.set(__self__, "coordinates", coordinates)
        if exclusions is not None:
            pulumi.set(__self__, "exclusions", exclusions)
        if repo is not None:
            pulumi.set(__self__, "repo", repo)

    @property
    @pulumi.getter
    def coordinates(self) -> str:
        return pulumi.get(self, "coordinates")

    @coordinates.setter
    def coordinates(self, value: str):
        pulumi.set(self, "coordinates", value)

    @property
    @pulumi.getter
    def exclusions(self) -> Optional[Sequence[str]]:
        return pulumi.get(self, "exclusions")

    @exclusions.setter
    def exclusions(self, value: Optional[Sequence[str]]):
        pulumi.set(self, "exclusions", value)

    @property
    @pulumi.getter
    def repo(self) -> Optional[str]:
        return pulumi.get(self, "repo")

    @repo.setter
    def repo(self, value: Optional[str]):
        pulumi.set(self, "repo", value)


@pulumi.input_type
class GetJobJobSettingsSettingsLibraryPypiArgs:
    def __init__(__self__, *,
                 package: str,
                 repo: Optional[str] = None):
        pulumi.set(__self__, "package", package)
        if repo is not None:
            pulumi.set(__self__, "repo", repo)

    @property
    @pulumi.getter
    def package(self) -> str:
        return pulumi.get(self, "package")

    @package.setter
    def package(self, value: str):
        pulumi.set(self, "package", value)

    @property
    @pulumi.getter
    def repo(self) -> Optional[str]:
        return pulumi.get(self, "repo")

    @repo.setter
    def repo(self, value: Optional[str]):
        pulumi.set(self, "repo", value)


@pulumi.input_type
class GetJobJobSettingsSettingsNewClusterArgs:
    def __init__(__self__, *,
                 driver_instance_pool_id: str,
                 driver_node_type_id: str,
                 enable_elastic_disk: bool,
                 enable_local_disk_encryption: bool,
                 node_type_id: str,
                 num_workers: int,
                 spark_version: str,
                 apply_policy_default_values: Optional[bool] = None,
                 autoscale: Optional['GetJobJobSettingsSettingsNewClusterAutoscaleArgs'] = None,
                 autotermination_minutes: Optional[int] = None,
                 aws_attributes: Optional['GetJobJobSettingsSettingsNewClusterAwsAttributesArgs'] = None,
                 azure_attributes: Optional['GetJobJobSettingsSettingsNewClusterAzureAttributesArgs'] = None,
                 cluster_id: Optional[str] = None,
                 cluster_log_conf: Optional['GetJobJobSettingsSettingsNewClusterClusterLogConfArgs'] = None,
                 cluster_mount_infos: Optional[Sequence['GetJobJobSettingsSettingsNewClusterClusterMountInfoArgs']] = None,
                 cluster_name: Optional[str] = None,
                 custom_tags: Optional[Mapping[str, Any]] = None,
                 data_security_mode: Optional[str] = None,
                 docker_image: Optional['GetJobJobSettingsSettingsNewClusterDockerImageArgs'] = None,
                 gcp_attributes: Optional['GetJobJobSettingsSettingsNewClusterGcpAttributesArgs'] = None,
                 idempotency_token: Optional[str] = None,
                 init_scripts: Optional[Sequence['GetJobJobSettingsSettingsNewClusterInitScriptArgs']] = None,
                 instance_pool_id: Optional[str] = None,
                 policy_id: Optional[str] = None,
                 runtime_engine: Optional[str] = None,
                 single_user_name: Optional[str] = None,
                 spark_conf: Optional[Mapping[str, Any]] = None,
                 spark_env_vars: Optional[Mapping[str, Any]] = None,
                 ssh_public_keys: Optional[Sequence[str]] = None,
                 workload_type: Optional['GetJobJobSettingsSettingsNewClusterWorkloadTypeArgs'] = None):
        pulumi.set(__self__, "driver_instance_pool_id", driver_instance_pool_id)
        pulumi.set(__self__, "driver_node_type_id", driver_node_type_id)
        pulumi.set(__self__, "enable_elastic_disk", enable_elastic_disk)
        pulumi.set(__self__, "enable_local_disk_encryption", enable_local_disk_encryption)
        pulumi.set(__self__, "node_type_id", node_type_id)
        pulumi.set(__self__, "num_workers", num_workers)
        pulumi.set(__self__, "spark_version", spark_version)
        if apply_policy_default_values is not None:
            pulumi.set(__self__, "apply_policy_default_values", apply_policy_default_values)
        if autoscale is not None:
            pulumi.set(__self__, "autoscale", autoscale)
        if autotermination_minutes is not None:
            pulumi.set(__self__, "autotermination_minutes", autotermination_minutes)
        if aws_attributes is not None:
            pulumi.set(__self__, "aws_attributes", aws_attributes)
        if azure_attributes is not None:
            pulumi.set(__self__, "azure_attributes", azure_attributes)
        if cluster_id is not None:
            pulumi.set(__self__, "cluster_id", cluster_id)
        if cluster_log_conf is not None:
            pulumi.set(__self__, "cluster_log_conf", cluster_log_conf)
        if cluster_mount_infos is not None:
            pulumi.set(__self__, "cluster_mount_infos", cluster_mount_infos)
        if cluster_name is not None:
            pulumi.set(__self__, "cluster_name", cluster_name)
        if custom_tags is not None:
            pulumi.set(__self__, "custom_tags", custom_tags)
        if data_security_mode is not None:
            pulumi.set(__self__, "data_security_mode", data_security_mode)
        if docker_image is not None:
            pulumi.set(__self__, "docker_image", docker_image)
        if gcp_attributes is not None:
            pulumi.set(__self__, "gcp_attributes", gcp_attributes)
        if idempotency_token is not None:
            pulumi.set(__self__, "idempotency_token", idempotency_token)
        if init_scripts is not None:
            pulumi.set(__self__, "init_scripts", init_scripts)
        if instance_pool_id is not None:
            pulumi.set(__self__, "instance_pool_id", instance_pool_id)
        if policy_id is not None:
            pulumi.set(__self__, "policy_id", policy_id)
        if runtime_engine is not None:
            pulumi.set(__self__, "runtime_engine", runtime_engine)
        if single_user_name is not None:
            pulumi.set(__self__, "single_user_name", single_user_name)
        if spark_conf is not None:
            pulumi.set(__self__, "spark_conf", spark_conf)
        if spark_env_vars is not None:
            pulumi.set(__self__, "spark_env_vars", spark_env_vars)
        if ssh_public_keys is not None:
            pulumi.set(__self__, "ssh_public_keys", ssh_public_keys)
        if workload_type is not None:
            pulumi.set(__self__, "workload_type", workload_type)

    @property
    @pulumi.getter(name="driverInstancePoolId")
    def driver_instance_pool_id(self) -> str:
        return pulumi.get(self, "driver_instance_pool_id")

    @driver_instance_pool_id.setter
    def driver_instance_pool_id(self, value: str):
        pulumi.set(self, "driver_instance_pool_id", value)

    @property
    @pulumi.getter(name="driverNodeTypeId")
    def driver_node_type_id(self) -> str:
        return pulumi.get(self, "driver_node_type_id")

    @driver_node_type_id.setter
    def driver_node_type_id(self, value: str):
        pulumi.set(self, "driver_node_type_id", value)

    @property
    @pulumi.getter(name="enableElasticDisk")
    def enable_elastic_disk(self) -> bool:
        return pulumi.get(self, "enable_elastic_disk")

    @enable_elastic_disk.setter
    def enable_elastic_disk(self, value: bool):
        pulumi.set(self, "enable_elastic_disk", value)

    @property
    @pulumi.getter(name="enableLocalDiskEncryption")
    def enable_local_disk_encryption(self) -> bool:
        return pulumi.get(self, "enable_local_disk_encryption")

    @enable_local_disk_encryption.setter
    def enable_local_disk_encryption(self, value: bool):
        pulumi.set(self, "enable_local_disk_encryption", value)

    @property
    @pulumi.getter(name="nodeTypeId")
    def node_type_id(self) -> str:
        return pulumi.get(self, "node_type_id")

    @node_type_id.setter
    def node_type_id(self, value: str):
        pulumi.set(self, "node_type_id", value)

    @property
    @pulumi.getter(name="numWorkers")
    def num_workers(self) -> int:
        return pulumi.get(self, "num_workers")

    @num_workers.setter
    def num_workers(self, value: int):
        pulumi.set(self, "num_workers", value)

    @property
    @pulumi.getter(name="sparkVersion")
    def spark_version(self) -> str:
        return pulumi.get(self, "spark_version")

    @spark_version.setter
    def spark_version(self, value: str):
        pulumi.set(self, "spark_version", value)

    @property
    @pulumi.getter(name="applyPolicyDefaultValues")
    def apply_policy_default_values(self) -> Optional[bool]:
        return pulumi.get(self, "apply_policy_default_values")

    @apply_policy_default_values.setter
    def apply_policy_default_values(self, value: Optional[bool]):
        pulumi.set(self, "apply_policy_default_values", value)

    @property
    @pulumi.getter
    def autoscale(self) -> Optional['GetJobJobSettingsSettingsNewClusterAutoscaleArgs']:
        return pulumi.get(self, "autoscale")

    @autoscale.setter
    def autoscale(self, value: Optional['GetJobJobSettingsSettingsNewClusterAutoscaleArgs']):
        pulumi.set(self, "autoscale", value)

    @property
    @pulumi.getter(name="autoterminationMinutes")
    def autotermination_minutes(self) -> Optional[int]:
        return pulumi.get(self, "autotermination_minutes")

    @autotermination_minutes.setter
    def autotermination_minutes(self, value: Optional[int]):
        pulumi.set(self, "autotermination_minutes", value)

    @property
    @pulumi.getter(name="awsAttributes")
    def aws_attributes(self) -> Optional['GetJobJobSettingsSettingsNewClusterAwsAttributesArgs']:
        return pulumi.get(self, "aws_attributes")

    @aws_attributes.setter
    def aws_attributes(self, value: Optional['GetJobJobSettingsSettingsNewClusterAwsAttributesArgs']):
        pulumi.set(self, "aws_attributes", value)

    @property
    @pulumi.getter(name="azureAttributes")
    def azure_attributes(self) -> Optional['GetJobJobSettingsSettingsNewClusterAzureAttributesArgs']:
        return pulumi.get(self, "azure_attributes")

    @azure_attributes.setter
    def azure_attributes(self, value: Optional['GetJobJobSettingsSettingsNewClusterAzureAttributesArgs']):
        pulumi.set(self, "azure_attributes", value)

    @property
    @pulumi.getter(name="clusterId")
    def cluster_id(self) -> Optional[str]:
        return pulumi.get(self, "cluster_id")

    @cluster_id.setter
    def cluster_id(self, value: Optional[str]):
        pulumi.set(self, "cluster_id", value)

    @property
    @pulumi.getter(name="clusterLogConf")
    def cluster_log_conf(self) -> Optional['GetJobJobSettingsSettingsNewClusterClusterLogConfArgs']:
        return pulumi.get(self, "cluster_log_conf")

    @cluster_log_conf.setter
    def cluster_log_conf(self, value: Optional['GetJobJobSettingsSettingsNewClusterClusterLogConfArgs']):
        pulumi.set(self, "cluster_log_conf", value)

    @property
    @pulumi.getter(name="clusterMountInfos")
    def cluster_mount_infos(self) -> Optional[Sequence['GetJobJobSettingsSettingsNewClusterClusterMountInfoArgs']]:
        return pulumi.get(self, "cluster_mount_infos")

    @cluster_mount_infos.setter
    def cluster_mount_infos(self, value: Optional[Sequence['GetJobJobSettingsSettingsNewClusterClusterMountInfoArgs']]):
        pulumi.set(self, "cluster_mount_infos", value)

    @property
    @pulumi.getter(name="clusterName")
    def cluster_name(self) -> Optional[str]:
        return pulumi.get(self, "cluster_name")

    @cluster_name.setter
    def cluster_name(self, value: Optional[str]):
        pulumi.set(self, "cluster_name", value)

    @property
    @pulumi.getter(name="customTags")
    def custom_tags(self) -> Optional[Mapping[str, Any]]:
        return pulumi.get(self, "custom_tags")

    @custom_tags.setter
    def custom_tags(self, value: Optional[Mapping[str, Any]]):
        pulumi.set(self, "custom_tags", value)

    @property
    @pulumi.getter(name="dataSecurityMode")
    def data_security_mode(self) -> Optional[str]:
        return pulumi.get(self, "data_security_mode")

    @data_security_mode.setter
    def data_security_mode(self, value: Optional[str]):
        pulumi.set(self, "data_security_mode", value)

    @property
    @pulumi.getter(name="dockerImage")
    def docker_image(self) -> Optional['GetJobJobSettingsSettingsNewClusterDockerImageArgs']:
        return pulumi.get(self, "docker_image")

    @docker_image.setter
    def docker_image(self, value: Optional['GetJobJobSettingsSettingsNewClusterDockerImageArgs']):
        pulumi.set(self, "docker_image", value)

    @property
    @pulumi.getter(name="gcpAttributes")
    def gcp_attributes(self) -> Optional['GetJobJobSettingsSettingsNewClusterGcpAttributesArgs']:
        return pulumi.get(self, "gcp_attributes")

    @gcp_attributes.setter
    def gcp_attributes(self, value: Optional['GetJobJobSettingsSettingsNewClusterGcpAttributesArgs']):
        pulumi.set(self, "gcp_attributes", value)

    @property
    @pulumi.getter(name="idempotencyToken")
    def idempotency_token(self) -> Optional[str]:
        return pulumi.get(self, "idempotency_token")

    @idempotency_token.setter
    def idempotency_token(self, value: Optional[str]):
        pulumi.set(self, "idempotency_token", value)

    @property
    @pulumi.getter(name="initScripts")
    def init_scripts(self) -> Optional[Sequence['GetJobJobSettingsSettingsNewClusterInitScriptArgs']]:
        return pulumi.get(self, "init_scripts")

    @init_scripts.setter
    def init_scripts(self, value: Optional[Sequence['GetJobJobSettingsSettingsNewClusterInitScriptArgs']]):
        pulumi.set(self, "init_scripts", value)

    @property
    @pulumi.getter(name="instancePoolId")
    def instance_pool_id(self) -> Optional[str]:
        return pulumi.get(self, "instance_pool_id")

    @instance_pool_id.setter
    def instance_pool_id(self, value: Optional[str]):
        pulumi.set(self, "instance_pool_id", value)

    @property
    @pulumi.getter(name="policyId")
    def policy_id(self) -> Optional[str]:
        return pulumi.get(self, "policy_id")

    @policy_id.setter
    def policy_id(self, value: Optional[str]):
        pulumi.set(self, "policy_id", value)

    @property
    @pulumi.getter(name="runtimeEngine")
    def runtime_engine(self) -> Optional[str]:
        return pulumi.get(self, "runtime_engine")

    @runtime_engine.setter
    def runtime_engine(self, value: Optional[str]):
        pulumi.set(self, "runtime_engine", value)

    @property
    @pulumi.getter(name="singleUserName")
    def single_user_name(self) -> Optional[str]:
        return pulumi.get(self, "single_user_name")

    @single_user_name.setter
    def single_user_name(self, value: Optional[str]):
        pulumi.set(self, "single_user_name", value)

    @property
    @pulumi.getter(name="sparkConf")
    def spark_conf(self) -> Optional[Mapping[str, Any]]:
        return pulumi.get(self, "spark_conf")

    @spark_conf.setter
    def spark_conf(self, value: Optional[Mapping[str, Any]]):
        pulumi.set(self, "spark_conf", value)

    @property
    @pulumi.getter(name="sparkEnvVars")
    def spark_env_vars(self) -> Optional[Mapping[str, Any]]:
        return pulumi.get(self, "spark_env_vars")

    @spark_env_vars.setter
    def spark_env_vars(self, value: Optional[Mapping[str, Any]]):
        pulumi.set(self, "spark_env_vars", value)

    @property
    @pulumi.getter(name="sshPublicKeys")
    def ssh_public_keys(self) -> Optional[Sequence[str]]:
        return pulumi.get(self, "ssh_public_keys")

    @ssh_public_keys.setter
    def ssh_public_keys(self, value: Optional[Sequence[str]]):
        pulumi.set(self, "ssh_public_keys", value)

    @property
    @pulumi.getter(name="workloadType")
    def workload_type(self) -> Optional['GetJobJobSettingsSettingsNewClusterWorkloadTypeArgs']:
        return pulumi.get(self, "workload_type")

    @workload_type.setter
    def workload_type(self, value: Optional['GetJobJobSettingsSettingsNewClusterWorkloadTypeArgs']):
        pulumi.set(self, "workload_type", value)


@pulumi.input_type
class GetJobJobSettingsSettingsNewClusterAutoscaleArgs:
    def __init__(__self__, *,
                 max_workers: Optional[int] = None,
                 min_workers: Optional[int] = None):
        if max_workers is not None:
            pulumi.set(__self__, "max_workers", max_workers)
        if min_workers is not None:
            pulumi.set(__self__, "min_workers", min_workers)

    @property
    @pulumi.getter(name="maxWorkers")
    def max_workers(self) -> Optional[int]:
        return pulumi.get(self, "max_workers")

    @max_workers.setter
    def max_workers(self, value: Optional[int]):
        pulumi.set(self, "max_workers", value)

    @property
    @pulumi.getter(name="minWorkers")
    def min_workers(self) -> Optional[int]:
        return pulumi.get(self, "min_workers")

    @min_workers.setter
    def min_workers(self, value: Optional[int]):
        pulumi.set(self, "min_workers", value)


@pulumi.input_type
class GetJobJobSettingsSettingsNewClusterAwsAttributesArgs:
    def __init__(__self__, *,
                 availability: Optional[str] = None,
                 ebs_volume_count: Optional[int] = None,
                 ebs_volume_size: Optional[int] = None,
                 ebs_volume_type: Optional[str] = None,
                 first_on_demand: Optional[int] = None,
                 instance_profile_arn: Optional[str] = None,
                 spot_bid_price_percent: Optional[int] = None,
                 zone_id: Optional[str] = None):
        if availability is not None:
            pulumi.set(__self__, "availability", availability)
        if ebs_volume_count is not None:
            pulumi.set(__self__, "ebs_volume_count", ebs_volume_count)
        if ebs_volume_size is not None:
            pulumi.set(__self__, "ebs_volume_size", ebs_volume_size)
        if ebs_volume_type is not None:
            pulumi.set(__self__, "ebs_volume_type", ebs_volume_type)
        if first_on_demand is not None:
            pulumi.set(__self__, "first_on_demand", first_on_demand)
        if instance_profile_arn is not None:
            pulumi.set(__self__, "instance_profile_arn", instance_profile_arn)
        if spot_bid_price_percent is not None:
            pulumi.set(__self__, "spot_bid_price_percent", spot_bid_price_percent)
        if zone_id is not None:
            pulumi.set(__self__, "zone_id", zone_id)

    @property
    @pulumi.getter
    def availability(self) -> Optional[str]:
        return pulumi.get(self, "availability")

    @availability.setter
    def availability(self, value: Optional[str]):
        pulumi.set(self, "availability", value)

    @property
    @pulumi.getter(name="ebsVolumeCount")
    def ebs_volume_count(self) -> Optional[int]:
        return pulumi.get(self, "ebs_volume_count")

    @ebs_volume_count.setter
    def ebs_volume_count(self, value: Optional[int]):
        pulumi.set(self, "ebs_volume_count", value)

    @property
    @pulumi.getter(name="ebsVolumeSize")
    def ebs_volume_size(self) -> Optional[int]:
        return pulumi.get(self, "ebs_volume_size")

    @ebs_volume_size.setter
    def ebs_volume_size(self, value: Optional[int]):
        pulumi.set(self, "ebs_volume_size", value)

    @property
    @pulumi.getter(name="ebsVolumeType")
    def ebs_volume_type(self) -> Optional[str]:
        return pulumi.get(self, "ebs_volume_type")

    @ebs_volume_type.setter
    def ebs_volume_type(self, value: Optional[str]):
        pulumi.set(self, "ebs_volume_type", value)

    @property
    @pulumi.getter(name="firstOnDemand")
    def first_on_demand(self) -> Optional[int]:
        return pulumi.get(self, "first_on_demand")

    @first_on_demand.setter
    def first_on_demand(self, value: Optional[int]):
        pulumi.set(self, "first_on_demand", value)

    @property
    @pulumi.getter(name="instanceProfileArn")
    def instance_profile_arn(self) -> Optional[str]:
        return pulumi.get(self, "instance_profile_arn")

    @instance_profile_arn.setter
    def instance_profile_arn(self, value: Optional[str]):
        pulumi.set(self, "instance_profile_arn", value)

    @property
    @pulumi.getter(name="spotBidPricePercent")
    def spot_bid_price_percent(self) -> Optional[int]:
        return pulumi.get(self, "spot_bid_price_percent")

    @spot_bid_price_percent.setter
    def spot_bid_price_percent(self, value: Optional[int]):
        pulumi.set(self, "spot_bid_price_percent", value)

    @property
    @pulumi.getter(name="zoneId")
    def zone_id(self) -> Optional[str]:
        return pulumi.get(self, "zone_id")

    @zone_id.setter
    def zone_id(self, value: Optional[str]):
        pulumi.set(self, "zone_id", value)


@pulumi.input_type
class GetJobJobSettingsSettingsNewClusterAzureAttributesArgs:
    def __init__(__self__, *,
                 availability: Optional[str] = None,
                 first_on_demand: Optional[int] = None,
                 spot_bid_max_price: Optional[float] = None):
        if availability is not None:
            pulumi.set(__self__, "availability", availability)
        if first_on_demand is not None:
            pulumi.set(__self__, "first_on_demand", first_on_demand)
        if spot_bid_max_price is not None:
            pulumi.set(__self__, "spot_bid_max_price", spot_bid_max_price)

    @property
    @pulumi.getter
    def availability(self) -> Optional[str]:
        return pulumi.get(self, "availability")

    @availability.setter
    def availability(self, value: Optional[str]):
        pulumi.set(self, "availability", value)

    @property
    @pulumi.getter(name="firstOnDemand")
    def first_on_demand(self) -> Optional[int]:
        return pulumi.get(self, "first_on_demand")

    @first_on_demand.setter
    def first_on_demand(self, value: Optional[int]):
        pulumi.set(self, "first_on_demand", value)

    @property
    @pulumi.getter(name="spotBidMaxPrice")
    def spot_bid_max_price(self) -> Optional[float]:
        return pulumi.get(self, "spot_bid_max_price")

    @spot_bid_max_price.setter
    def spot_bid_max_price(self, value: Optional[float]):
        pulumi.set(self, "spot_bid_max_price", value)


@pulumi.input_type
class GetJobJobSettingsSettingsNewClusterClusterLogConfArgs:
    def __init__(__self__, *,
                 dbfs: Optional['GetJobJobSettingsSettingsNewClusterClusterLogConfDbfsArgs'] = None,
                 s3: Optional['GetJobJobSettingsSettingsNewClusterClusterLogConfS3Args'] = None):
        if dbfs is not None:
            pulumi.set(__self__, "dbfs", dbfs)
        if s3 is not None:
            pulumi.set(__self__, "s3", s3)

    @property
    @pulumi.getter
    def dbfs(self) -> Optional['GetJobJobSettingsSettingsNewClusterClusterLogConfDbfsArgs']:
        return pulumi.get(self, "dbfs")

    @dbfs.setter
    def dbfs(self, value: Optional['GetJobJobSettingsSettingsNewClusterClusterLogConfDbfsArgs']):
        pulumi.set(self, "dbfs", value)

    @property
    @pulumi.getter
    def s3(self) -> Optional['GetJobJobSettingsSettingsNewClusterClusterLogConfS3Args']:
        return pulumi.get(self, "s3")

    @s3.setter
    def s3(self, value: Optional['GetJobJobSettingsSettingsNewClusterClusterLogConfS3Args']):
        pulumi.set(self, "s3", value)


@pulumi.input_type
class GetJobJobSettingsSettingsNewClusterClusterLogConfDbfsArgs:
    def __init__(__self__, *,
                 destination: str):
        pulumi.set(__self__, "destination", destination)

    @property
    @pulumi.getter
    def destination(self) -> str:
        return pulumi.get(self, "destination")

    @destination.setter
    def destination(self, value: str):
        pulumi.set(self, "destination", value)


@pulumi.input_type
class GetJobJobSettingsSettingsNewClusterClusterLogConfS3Args:
    def __init__(__self__, *,
                 destination: str,
                 canned_acl: Optional[str] = None,
                 enable_encryption: Optional[bool] = None,
                 encryption_type: Optional[str] = None,
                 endpoint: Optional[str] = None,
                 kms_key: Optional[str] = None,
                 region: Optional[str] = None):
        pulumi.set(__self__, "destination", destination)
        if canned_acl is not None:
            pulumi.set(__self__, "canned_acl", canned_acl)
        if enable_encryption is not None:
            pulumi.set(__self__, "enable_encryption", enable_encryption)
        if encryption_type is not None:
            pulumi.set(__self__, "encryption_type", encryption_type)
        if endpoint is not None:
            pulumi.set(__self__, "endpoint", endpoint)
        if kms_key is not None:
            pulumi.set(__self__, "kms_key", kms_key)
        if region is not None:
            pulumi.set(__self__, "region", region)

    @property
    @pulumi.getter
    def destination(self) -> str:
        return pulumi.get(self, "destination")

    @destination.setter
    def destination(self, value: str):
        pulumi.set(self, "destination", value)

    @property
    @pulumi.getter(name="cannedAcl")
    def canned_acl(self) -> Optional[str]:
        return pulumi.get(self, "canned_acl")

    @canned_acl.setter
    def canned_acl(self, value: Optional[str]):
        pulumi.set(self, "canned_acl", value)

    @property
    @pulumi.getter(name="enableEncryption")
    def enable_encryption(self) -> Optional[bool]:
        return pulumi.get(self, "enable_encryption")

    @enable_encryption.setter
    def enable_encryption(self, value: Optional[bool]):
        pulumi.set(self, "enable_encryption", value)

    @property
    @pulumi.getter(name="encryptionType")
    def encryption_type(self) -> Optional[str]:
        return pulumi.get(self, "encryption_type")

    @encryption_type.setter
    def encryption_type(self, value: Optional[str]):
        pulumi.set(self, "encryption_type", value)

    @property
    @pulumi.getter
    def endpoint(self) -> Optional[str]:
        return pulumi.get(self, "endpoint")

    @endpoint.setter
    def endpoint(self, value: Optional[str]):
        pulumi.set(self, "endpoint", value)

    @property
    @pulumi.getter(name="kmsKey")
    def kms_key(self) -> Optional[str]:
        return pulumi.get(self, "kms_key")

    @kms_key.setter
    def kms_key(self, value: Optional[str]):
        pulumi.set(self, "kms_key", value)

    @property
    @pulumi.getter
    def region(self) -> Optional[str]:
        return pulumi.get(self, "region")

    @region.setter
    def region(self, value: Optional[str]):
        pulumi.set(self, "region", value)


@pulumi.input_type
class GetJobJobSettingsSettingsNewClusterClusterMountInfoArgs:
    def __init__(__self__, *,
                 local_mount_dir_path: str,
                 network_filesystem_info: 'GetJobJobSettingsSettingsNewClusterClusterMountInfoNetworkFilesystemInfoArgs',
                 remote_mount_dir_path: Optional[str] = None):
        pulumi.set(__self__, "local_mount_dir_path", local_mount_dir_path)
        pulumi.set(__self__, "network_filesystem_info", network_filesystem_info)
        if remote_mount_dir_path is not None:
            pulumi.set(__self__, "remote_mount_dir_path", remote_mount_dir_path)

    @property
    @pulumi.getter(name="localMountDirPath")
    def local_mount_dir_path(self) -> str:
        return pulumi.get(self, "local_mount_dir_path")

    @local_mount_dir_path.setter
    def local_mount_dir_path(self, value: str):
        pulumi.set(self, "local_mount_dir_path", value)

    @property
    @pulumi.getter(name="networkFilesystemInfo")
    def network_filesystem_info(self) -> 'GetJobJobSettingsSettingsNewClusterClusterMountInfoNetworkFilesystemInfoArgs':
        return pulumi.get(self, "network_filesystem_info")

    @network_filesystem_info.setter
    def network_filesystem_info(self, value: 'GetJobJobSettingsSettingsNewClusterClusterMountInfoNetworkFilesystemInfoArgs'):
        pulumi.set(self, "network_filesystem_info", value)

    @property
    @pulumi.getter(name="remoteMountDirPath")
    def remote_mount_dir_path(self) -> Optional[str]:
        return pulumi.get(self, "remote_mount_dir_path")

    @remote_mount_dir_path.setter
    def remote_mount_dir_path(self, value: Optional[str]):
        pulumi.set(self, "remote_mount_dir_path", value)


@pulumi.input_type
class GetJobJobSettingsSettingsNewClusterClusterMountInfoNetworkFilesystemInfoArgs:
    def __init__(__self__, *,
                 server_address: str,
                 mount_options: Optional[str] = None):
        pulumi.set(__self__, "server_address", server_address)
        if mount_options is not None:
            pulumi.set(__self__, "mount_options", mount_options)

    @property
    @pulumi.getter(name="serverAddress")
    def server_address(self) -> str:
        return pulumi.get(self, "server_address")

    @server_address.setter
    def server_address(self, value: str):
        pulumi.set(self, "server_address", value)

    @property
    @pulumi.getter(name="mountOptions")
    def mount_options(self) -> Optional[str]:
        return pulumi.get(self, "mount_options")

    @mount_options.setter
    def mount_options(self, value: Optional[str]):
        pulumi.set(self, "mount_options", value)


@pulumi.input_type
class GetJobJobSettingsSettingsNewClusterDockerImageArgs:
    def __init__(__self__, *,
                 url: str,
                 basic_auth: Optional['GetJobJobSettingsSettingsNewClusterDockerImageBasicAuthArgs'] = None):
        pulumi.set(__self__, "url", url)
        if basic_auth is not None:
            pulumi.set(__self__, "basic_auth", basic_auth)

    @property
    @pulumi.getter
    def url(self) -> str:
        return pulumi.get(self, "url")

    @url.setter
    def url(self, value: str):
        pulumi.set(self, "url", value)

    @property
    @pulumi.getter(name="basicAuth")
    def basic_auth(self) -> Optional['GetJobJobSettingsSettingsNewClusterDockerImageBasicAuthArgs']:
        return pulumi.get(self, "basic_auth")

    @basic_auth.setter
    def basic_auth(self, value: Optional['GetJobJobSettingsSettingsNewClusterDockerImageBasicAuthArgs']):
        pulumi.set(self, "basic_auth", value)


@pulumi.input_type
class GetJobJobSettingsSettingsNewClusterDockerImageBasicAuthArgs:
    def __init__(__self__, *,
                 password: str,
                 username: str):
        pulumi.set(__self__, "password", password)
        pulumi.set(__self__, "username", username)

    @property
    @pulumi.getter
    def password(self) -> str:
        return pulumi.get(self, "password")

    @password.setter
    def password(self, value: str):
        pulumi.set(self, "password", value)

    @property
    @pulumi.getter
    def username(self) -> str:
        return pulumi.get(self, "username")

    @username.setter
    def username(self, value: str):
        pulumi.set(self, "username", value)


@pulumi.input_type
class GetJobJobSettingsSettingsNewClusterGcpAttributesArgs:
    def __init__(__self__, *,
                 availability: Optional[str] = None,
                 boot_disk_size: Optional[int] = None,
                 google_service_account: Optional[str] = None,
                 use_preemptible_executors: Optional[bool] = None,
                 zone_id: Optional[str] = None):
        if availability is not None:
            pulumi.set(__self__, "availability", availability)
        if boot_disk_size is not None:
            pulumi.set(__self__, "boot_disk_size", boot_disk_size)
        if google_service_account is not None:
            pulumi.set(__self__, "google_service_account", google_service_account)
        if use_preemptible_executors is not None:
            pulumi.set(__self__, "use_preemptible_executors", use_preemptible_executors)
        if zone_id is not None:
            pulumi.set(__self__, "zone_id", zone_id)

    @property
    @pulumi.getter
    def availability(self) -> Optional[str]:
        return pulumi.get(self, "availability")

    @availability.setter
    def availability(self, value: Optional[str]):
        pulumi.set(self, "availability", value)

    @property
    @pulumi.getter(name="bootDiskSize")
    def boot_disk_size(self) -> Optional[int]:
        return pulumi.get(self, "boot_disk_size")

    @boot_disk_size.setter
    def boot_disk_size(self, value: Optional[int]):
        pulumi.set(self, "boot_disk_size", value)

    @property
    @pulumi.getter(name="googleServiceAccount")
    def google_service_account(self) -> Optional[str]:
        return pulumi.get(self, "google_service_account")

    @google_service_account.setter
    def google_service_account(self, value: Optional[str]):
        pulumi.set(self, "google_service_account", value)

    @property
    @pulumi.getter(name="usePreemptibleExecutors")
    def use_preemptible_executors(self) -> Optional[bool]:
        return pulumi.get(self, "use_preemptible_executors")

    @use_preemptible_executors.setter
    def use_preemptible_executors(self, value: Optional[bool]):
        pulumi.set(self, "use_preemptible_executors", value)

    @property
    @pulumi.getter(name="zoneId")
    def zone_id(self) -> Optional[str]:
        return pulumi.get(self, "zone_id")

    @zone_id.setter
    def zone_id(self, value: Optional[str]):
        pulumi.set(self, "zone_id", value)


@pulumi.input_type
class GetJobJobSettingsSettingsNewClusterInitScriptArgs:
    def __init__(__self__, *,
                 abfss: Optional['GetJobJobSettingsSettingsNewClusterInitScriptAbfssArgs'] = None,
                 dbfs: Optional['GetJobJobSettingsSettingsNewClusterInitScriptDbfsArgs'] = None,
                 file: Optional['GetJobJobSettingsSettingsNewClusterInitScriptFileArgs'] = None,
                 gcs: Optional['GetJobJobSettingsSettingsNewClusterInitScriptGcsArgs'] = None,
                 s3: Optional['GetJobJobSettingsSettingsNewClusterInitScriptS3Args'] = None):
        if abfss is not None:
            pulumi.set(__self__, "abfss", abfss)
        if dbfs is not None:
            pulumi.set(__self__, "dbfs", dbfs)
        if file is not None:
            pulumi.set(__self__, "file", file)
        if gcs is not None:
            pulumi.set(__self__, "gcs", gcs)
        if s3 is not None:
            pulumi.set(__self__, "s3", s3)

    @property
    @pulumi.getter
    def abfss(self) -> Optional['GetJobJobSettingsSettingsNewClusterInitScriptAbfssArgs']:
        return pulumi.get(self, "abfss")

    @abfss.setter
    def abfss(self, value: Optional['GetJobJobSettingsSettingsNewClusterInitScriptAbfssArgs']):
        pulumi.set(self, "abfss", value)

    @property
    @pulumi.getter
    def dbfs(self) -> Optional['GetJobJobSettingsSettingsNewClusterInitScriptDbfsArgs']:
        return pulumi.get(self, "dbfs")

    @dbfs.setter
    def dbfs(self, value: Optional['GetJobJobSettingsSettingsNewClusterInitScriptDbfsArgs']):
        pulumi.set(self, "dbfs", value)

    @property
    @pulumi.getter
    def file(self) -> Optional['GetJobJobSettingsSettingsNewClusterInitScriptFileArgs']:
        return pulumi.get(self, "file")

    @file.setter
    def file(self, value: Optional['GetJobJobSettingsSettingsNewClusterInitScriptFileArgs']):
        pulumi.set(self, "file", value)

    @property
    @pulumi.getter
    def gcs(self) -> Optional['GetJobJobSettingsSettingsNewClusterInitScriptGcsArgs']:
        return pulumi.get(self, "gcs")

    @gcs.setter
    def gcs(self, value: Optional['GetJobJobSettingsSettingsNewClusterInitScriptGcsArgs']):
        pulumi.set(self, "gcs", value)

    @property
    @pulumi.getter
    def s3(self) -> Optional['GetJobJobSettingsSettingsNewClusterInitScriptS3Args']:
        return pulumi.get(self, "s3")

    @s3.setter
    def s3(self, value: Optional['GetJobJobSettingsSettingsNewClusterInitScriptS3Args']):
        pulumi.set(self, "s3", value)


@pulumi.input_type
class GetJobJobSettingsSettingsNewClusterInitScriptAbfssArgs:
    def __init__(__self__, *,
                 destination: Optional[str] = None):
        if destination is not None:
            pulumi.set(__self__, "destination", destination)

    @property
    @pulumi.getter
    def destination(self) -> Optional[str]:
        return pulumi.get(self, "destination")

    @destination.setter
    def destination(self, value: Optional[str]):
        pulumi.set(self, "destination", value)


@pulumi.input_type
class GetJobJobSettingsSettingsNewClusterInitScriptDbfsArgs:
    def __init__(__self__, *,
                 destination: str):
        pulumi.set(__self__, "destination", destination)

    @property
    @pulumi.getter
    def destination(self) -> str:
        return pulumi.get(self, "destination")

    @destination.setter
    def destination(self, value: str):
        pulumi.set(self, "destination", value)


@pulumi.input_type
class GetJobJobSettingsSettingsNewClusterInitScriptFileArgs:
    def __init__(__self__, *,
                 destination: Optional[str] = None):
        if destination is not None:
            pulumi.set(__self__, "destination", destination)

    @property
    @pulumi.getter
    def destination(self) -> Optional[str]:
        return pulumi.get(self, "destination")

    @destination.setter
    def destination(self, value: Optional[str]):
        pulumi.set(self, "destination", value)


@pulumi.input_type
class GetJobJobSettingsSettingsNewClusterInitScriptGcsArgs:
    def __init__(__self__, *,
                 destination: Optional[str] = None):
        if destination is not None:
            pulumi.set(__self__, "destination", destination)

    @property
    @pulumi.getter
    def destination(self) -> Optional[str]:
        return pulumi.get(self, "destination")

    @destination.setter
    def destination(self, value: Optional[str]):
        pulumi.set(self, "destination", value)


@pulumi.input_type
class GetJobJobSettingsSettingsNewClusterInitScriptS3Args:
    def __init__(__self__, *,
                 destination: str,
                 canned_acl: Optional[str] = None,
                 enable_encryption: Optional[bool] = None,
                 encryption_type: Optional[str] = None,
                 endpoint: Optional[str] = None,
                 kms_key: Optional[str] = None,
                 region: Optional[str] = None):
        pulumi.set(__self__, "destination", destination)
        if canned_acl is not None:
            pulumi.set(__self__, "canned_acl", canned_acl)
        if enable_encryption is not None:
            pulumi.set(__self__, "enable_encryption", enable_encryption)
        if encryption_type is not None:
            pulumi.set(__self__, "encryption_type", encryption_type)
        if endpoint is not None:
            pulumi.set(__self__, "endpoint", endpoint)
        if kms_key is not None:
            pulumi.set(__self__, "kms_key", kms_key)
        if region is not None:
            pulumi.set(__self__, "region", region)

    @property
    @pulumi.getter
    def destination(self) -> str:
        return pulumi.get(self, "destination")

    @destination.setter
    def destination(self, value: str):
        pulumi.set(self, "destination", value)

    @property
    @pulumi.getter(name="cannedAcl")
    def canned_acl(self) -> Optional[str]:
        return pulumi.get(self, "canned_acl")

    @canned_acl.setter
    def canned_acl(self, value: Optional[str]):
        pulumi.set(self, "canned_acl", value)

    @property
    @pulumi.getter(name="enableEncryption")
    def enable_encryption(self) -> Optional[bool]:
        return pulumi.get(self, "enable_encryption")

    @enable_encryption.setter
    def enable_encryption(self, value: Optional[bool]):
        pulumi.set(self, "enable_encryption", value)

    @property
    @pulumi.getter(name="encryptionType")
    def encryption_type(self) -> Optional[str]:
        return pulumi.get(self, "encryption_type")

    @encryption_type.setter
    def encryption_type(self, value: Optional[str]):
        pulumi.set(self, "encryption_type", value)

    @property
    @pulumi.getter
    def endpoint(self) -> Optional[str]:
        return pulumi.get(self, "endpoint")

    @endpoint.setter
    def endpoint(self, value: Optional[str]):
        pulumi.set(self, "endpoint", value)

    @property
    @pulumi.getter(name="kmsKey")
    def kms_key(self) -> Optional[str]:
        return pulumi.get(self, "kms_key")

    @kms_key.setter
    def kms_key(self, value: Optional[str]):
        pulumi.set(self, "kms_key", value)

    @property
    @pulumi.getter
    def region(self) -> Optional[str]:
        return pulumi.get(self, "region")

    @region.setter
    def region(self, value: Optional[str]):
        pulumi.set(self, "region", value)


@pulumi.input_type
class GetJobJobSettingsSettingsNewClusterWorkloadTypeArgs:
    def __init__(__self__, *,
                 clients: 'GetJobJobSettingsSettingsNewClusterWorkloadTypeClientsArgs'):
        pulumi.set(__self__, "clients", clients)

    @property
    @pulumi.getter
    def clients(self) -> 'GetJobJobSettingsSettingsNewClusterWorkloadTypeClientsArgs':
        return pulumi.get(self, "clients")

    @clients.setter
    def clients(self, value: 'GetJobJobSettingsSettingsNewClusterWorkloadTypeClientsArgs'):
        pulumi.set(self, "clients", value)


@pulumi.input_type
class GetJobJobSettingsSettingsNewClusterWorkloadTypeClientsArgs:
    def __init__(__self__, *,
                 jobs: Optional[bool] = None,
                 notebooks: Optional[bool] = None):
        if jobs is not None:
            pulumi.set(__self__, "jobs", jobs)
        if notebooks is not None:
            pulumi.set(__self__, "notebooks", notebooks)

    @property
    @pulumi.getter
    def jobs(self) -> Optional[bool]:
        return pulumi.get(self, "jobs")

    @jobs.setter
    def jobs(self, value: Optional[bool]):
        pulumi.set(self, "jobs", value)

    @property
    @pulumi.getter
    def notebooks(self) -> Optional[bool]:
        return pulumi.get(self, "notebooks")

    @notebooks.setter
    def notebooks(self, value: Optional[bool]):
        pulumi.set(self, "notebooks", value)


@pulumi.input_type
class GetJobJobSettingsSettingsNotebookTaskArgs:
    def __init__(__self__, *,
                 notebook_path: str,
                 base_parameters: Optional[Mapping[str, Any]] = None,
                 source: Optional[str] = None):
        pulumi.set(__self__, "notebook_path", notebook_path)
        if base_parameters is not None:
            pulumi.set(__self__, "base_parameters", base_parameters)
        if source is not None:
            pulumi.set(__self__, "source", source)

    @property
    @pulumi.getter(name="notebookPath")
    def notebook_path(self) -> str:
        return pulumi.get(self, "notebook_path")

    @notebook_path.setter
    def notebook_path(self, value: str):
        pulumi.set(self, "notebook_path", value)

    @property
    @pulumi.getter(name="baseParameters")
    def base_parameters(self) -> Optional[Mapping[str, Any]]:
        return pulumi.get(self, "base_parameters")

    @base_parameters.setter
    def base_parameters(self, value: Optional[Mapping[str, Any]]):
        pulumi.set(self, "base_parameters", value)

    @property
    @pulumi.getter
    def source(self) -> Optional[str]:
        return pulumi.get(self, "source")

    @source.setter
    def source(self, value: Optional[str]):
        pulumi.set(self, "source", value)


@pulumi.input_type
class GetJobJobSettingsSettingsPipelineTaskArgs:
    def __init__(__self__, *,
                 pipeline_id: str):
        pulumi.set(__self__, "pipeline_id", pipeline_id)

    @property
    @pulumi.getter(name="pipelineId")
    def pipeline_id(self) -> str:
        return pulumi.get(self, "pipeline_id")

    @pipeline_id.setter
    def pipeline_id(self, value: str):
        pulumi.set(self, "pipeline_id", value)


@pulumi.input_type
class GetJobJobSettingsSettingsPythonWheelTaskArgs:
    def __init__(__self__, *,
                 entry_point: Optional[str] = None,
                 named_parameters: Optional[Mapping[str, Any]] = None,
                 package_name: Optional[str] = None,
                 parameters: Optional[Sequence[str]] = None):
        if entry_point is not None:
            pulumi.set(__self__, "entry_point", entry_point)
        if named_parameters is not None:
            pulumi.set(__self__, "named_parameters", named_parameters)
        if package_name is not None:
            pulumi.set(__self__, "package_name", package_name)
        if parameters is not None:
            pulumi.set(__self__, "parameters", parameters)

    @property
    @pulumi.getter(name="entryPoint")
    def entry_point(self) -> Optional[str]:
        return pulumi.get(self, "entry_point")

    @entry_point.setter
    def entry_point(self, value: Optional[str]):
        pulumi.set(self, "entry_point", value)

    @property
    @pulumi.getter(name="namedParameters")
    def named_parameters(self) -> Optional[Mapping[str, Any]]:
        return pulumi.get(self, "named_parameters")

    @named_parameters.setter
    def named_parameters(self, value: Optional[Mapping[str, Any]]):
        pulumi.set(self, "named_parameters", value)

    @property
    @pulumi.getter(name="packageName")
    def package_name(self) -> Optional[str]:
        return pulumi.get(self, "package_name")

    @package_name.setter
    def package_name(self, value: Optional[str]):
        pulumi.set(self, "package_name", value)

    @property
    @pulumi.getter
    def parameters(self) -> Optional[Sequence[str]]:
        return pulumi.get(self, "parameters")

    @parameters.setter
    def parameters(self, value: Optional[Sequence[str]]):
        pulumi.set(self, "parameters", value)


@pulumi.input_type
class GetJobJobSettingsSettingsScheduleArgs:
    def __init__(__self__, *,
                 pause_status: str,
                 quartz_cron_expression: str,
                 timezone_id: str):
        pulumi.set(__self__, "pause_status", pause_status)
        pulumi.set(__self__, "quartz_cron_expression", quartz_cron_expression)
        pulumi.set(__self__, "timezone_id", timezone_id)

    @property
    @pulumi.getter(name="pauseStatus")
    def pause_status(self) -> str:
        return pulumi.get(self, "pause_status")

    @pause_status.setter
    def pause_status(self, value: str):
        pulumi.set(self, "pause_status", value)

    @property
    @pulumi.getter(name="quartzCronExpression")
    def quartz_cron_expression(self) -> str:
        return pulumi.get(self, "quartz_cron_expression")

    @quartz_cron_expression.setter
    def quartz_cron_expression(self, value: str):
        pulumi.set(self, "quartz_cron_expression", value)

    @property
    @pulumi.getter(name="timezoneId")
    def timezone_id(self) -> str:
        return pulumi.get(self, "timezone_id")

    @timezone_id.setter
    def timezone_id(self, value: str):
        pulumi.set(self, "timezone_id", value)


@pulumi.input_type
class GetJobJobSettingsSettingsSparkJarTaskArgs:
    def __init__(__self__, *,
                 jar_uri: Optional[str] = None,
                 main_class_name: Optional[str] = None,
                 parameters: Optional[Sequence[str]] = None):
        if jar_uri is not None:
            pulumi.set(__self__, "jar_uri", jar_uri)
        if main_class_name is not None:
            pulumi.set(__self__, "main_class_name", main_class_name)
        if parameters is not None:
            pulumi.set(__self__, "parameters", parameters)

    @property
    @pulumi.getter(name="jarUri")
    def jar_uri(self) -> Optional[str]:
        return pulumi.get(self, "jar_uri")

    @jar_uri.setter
    def jar_uri(self, value: Optional[str]):
        pulumi.set(self, "jar_uri", value)

    @property
    @pulumi.getter(name="mainClassName")
    def main_class_name(self) -> Optional[str]:
        return pulumi.get(self, "main_class_name")

    @main_class_name.setter
    def main_class_name(self, value: Optional[str]):
        pulumi.set(self, "main_class_name", value)

    @property
    @pulumi.getter
    def parameters(self) -> Optional[Sequence[str]]:
        return pulumi.get(self, "parameters")

    @parameters.setter
    def parameters(self, value: Optional[Sequence[str]]):
        pulumi.set(self, "parameters", value)


@pulumi.input_type
class GetJobJobSettingsSettingsSparkPythonTaskArgs:
    def __init__(__self__, *,
                 python_file: str,
                 parameters: Optional[Sequence[str]] = None):
        pulumi.set(__self__, "python_file", python_file)
        if parameters is not None:
            pulumi.set(__self__, "parameters", parameters)

    @property
    @pulumi.getter(name="pythonFile")
    def python_file(self) -> str:
        return pulumi.get(self, "python_file")

    @python_file.setter
    def python_file(self, value: str):
        pulumi.set(self, "python_file", value)

    @property
    @pulumi.getter
    def parameters(self) -> Optional[Sequence[str]]:
        return pulumi.get(self, "parameters")

    @parameters.setter
    def parameters(self, value: Optional[Sequence[str]]):
        pulumi.set(self, "parameters", value)


@pulumi.input_type
class GetJobJobSettingsSettingsSparkSubmitTaskArgs:
    def __init__(__self__, *,
                 parameters: Optional[Sequence[str]] = None):
        if parameters is not None:
            pulumi.set(__self__, "parameters", parameters)

    @property
    @pulumi.getter
    def parameters(self) -> Optional[Sequence[str]]:
        return pulumi.get(self, "parameters")

    @parameters.setter
    def parameters(self, value: Optional[Sequence[str]]):
        pulumi.set(self, "parameters", value)


@pulumi.input_type
class GetJobJobSettingsSettingsTaskArgs:
    def __init__(__self__, *,
                 retry_on_timeout: bool,
                 dbt_task: Optional['GetJobJobSettingsSettingsTaskDbtTaskArgs'] = None,
                 depends_ons: Optional[Sequence['GetJobJobSettingsSettingsTaskDependsOnArgs']] = None,
                 description: Optional[str] = None,
                 email_notifications: Optional['GetJobJobSettingsSettingsTaskEmailNotificationsArgs'] = None,
                 existing_cluster_id: Optional[str] = None,
                 job_cluster_key: Optional[str] = None,
                 libraries: Optional[Sequence['GetJobJobSettingsSettingsTaskLibraryArgs']] = None,
                 max_retries: Optional[int] = None,
                 min_retry_interval_millis: Optional[int] = None,
                 new_cluster: Optional['GetJobJobSettingsSettingsTaskNewClusterArgs'] = None,
                 notebook_task: Optional['GetJobJobSettingsSettingsTaskNotebookTaskArgs'] = None,
                 pipeline_task: Optional['GetJobJobSettingsSettingsTaskPipelineTaskArgs'] = None,
                 python_wheel_task: Optional['GetJobJobSettingsSettingsTaskPythonWheelTaskArgs'] = None,
                 spark_jar_task: Optional['GetJobJobSettingsSettingsTaskSparkJarTaskArgs'] = None,
                 spark_python_task: Optional['GetJobJobSettingsSettingsTaskSparkPythonTaskArgs'] = None,
                 spark_submit_task: Optional['GetJobJobSettingsSettingsTaskSparkSubmitTaskArgs'] = None,
                 sql_task: Optional['GetJobJobSettingsSettingsTaskSqlTaskArgs'] = None,
                 task_key: Optional[str] = None,
                 timeout_seconds: Optional[int] = None):
        pulumi.set(__self__, "retry_on_timeout", retry_on_timeout)
        if dbt_task is not None:
            pulumi.set(__self__, "dbt_task", dbt_task)
        if depends_ons is not None:
            pulumi.set(__self__, "depends_ons", depends_ons)
        if description is not None:
            pulumi.set(__self__, "description", description)
        if email_notifications is not None:
            pulumi.set(__self__, "email_notifications", email_notifications)
        if existing_cluster_id is not None:
            pulumi.set(__self__, "existing_cluster_id", existing_cluster_id)
        if job_cluster_key is not None:
            pulumi.set(__self__, "job_cluster_key", job_cluster_key)
        if libraries is not None:
            pulumi.set(__self__, "libraries", libraries)
        if max_retries is not None:
            pulumi.set(__self__, "max_retries", max_retries)
        if min_retry_interval_millis is not None:
            pulumi.set(__self__, "min_retry_interval_millis", min_retry_interval_millis)
        if new_cluster is not None:
            pulumi.set(__self__, "new_cluster", new_cluster)
        if notebook_task is not None:
            pulumi.set(__self__, "notebook_task", notebook_task)
        if pipeline_task is not None:
            pulumi.set(__self__, "pipeline_task", pipeline_task)
        if python_wheel_task is not None:
            pulumi.set(__self__, "python_wheel_task", python_wheel_task)
        if spark_jar_task is not None:
            pulumi.set(__self__, "spark_jar_task", spark_jar_task)
        if spark_python_task is not None:
            pulumi.set(__self__, "spark_python_task", spark_python_task)
        if spark_submit_task is not None:
            pulumi.set(__self__, "spark_submit_task", spark_submit_task)
        if sql_task is not None:
            pulumi.set(__self__, "sql_task", sql_task)
        if task_key is not None:
            pulumi.set(__self__, "task_key", task_key)
        if timeout_seconds is not None:
            pulumi.set(__self__, "timeout_seconds", timeout_seconds)

    @property
    @pulumi.getter(name="retryOnTimeout")
    def retry_on_timeout(self) -> bool:
        return pulumi.get(self, "retry_on_timeout")

    @retry_on_timeout.setter
    def retry_on_timeout(self, value: bool):
        pulumi.set(self, "retry_on_timeout", value)

    @property
    @pulumi.getter(name="dbtTask")
    def dbt_task(self) -> Optional['GetJobJobSettingsSettingsTaskDbtTaskArgs']:
        return pulumi.get(self, "dbt_task")

    @dbt_task.setter
    def dbt_task(self, value: Optional['GetJobJobSettingsSettingsTaskDbtTaskArgs']):
        pulumi.set(self, "dbt_task", value)

    @property
    @pulumi.getter(name="dependsOns")
    def depends_ons(self) -> Optional[Sequence['GetJobJobSettingsSettingsTaskDependsOnArgs']]:
        return pulumi.get(self, "depends_ons")

    @depends_ons.setter
    def depends_ons(self, value: Optional[Sequence['GetJobJobSettingsSettingsTaskDependsOnArgs']]):
        pulumi.set(self, "depends_ons", value)

    @property
    @pulumi.getter
    def description(self) -> Optional[str]:
        return pulumi.get(self, "description")

    @description.setter
    def description(self, value: Optional[str]):
        pulumi.set(self, "description", value)

    @property
    @pulumi.getter(name="emailNotifications")
    def email_notifications(self) -> Optional['GetJobJobSettingsSettingsTaskEmailNotificationsArgs']:
        return pulumi.get(self, "email_notifications")

    @email_notifications.setter
    def email_notifications(self, value: Optional['GetJobJobSettingsSettingsTaskEmailNotificationsArgs']):
        pulumi.set(self, "email_notifications", value)

    @property
    @pulumi.getter(name="existingClusterId")
    def existing_cluster_id(self) -> Optional[str]:
        return pulumi.get(self, "existing_cluster_id")

    @existing_cluster_id.setter
    def existing_cluster_id(self, value: Optional[str]):
        pulumi.set(self, "existing_cluster_id", value)

    @property
    @pulumi.getter(name="jobClusterKey")
    def job_cluster_key(self) -> Optional[str]:
        return pulumi.get(self, "job_cluster_key")

    @job_cluster_key.setter
    def job_cluster_key(self, value: Optional[str]):
        pulumi.set(self, "job_cluster_key", value)

    @property
    @pulumi.getter
    def libraries(self) -> Optional[Sequence['GetJobJobSettingsSettingsTaskLibraryArgs']]:
        return pulumi.get(self, "libraries")

    @libraries.setter
    def libraries(self, value: Optional[Sequence['GetJobJobSettingsSettingsTaskLibraryArgs']]):
        pulumi.set(self, "libraries", value)

    @property
    @pulumi.getter(name="maxRetries")
    def max_retries(self) -> Optional[int]:
        return pulumi.get(self, "max_retries")

    @max_retries.setter
    def max_retries(self, value: Optional[int]):
        pulumi.set(self, "max_retries", value)

    @property
    @pulumi.getter(name="minRetryIntervalMillis")
    def min_retry_interval_millis(self) -> Optional[int]:
        return pulumi.get(self, "min_retry_interval_millis")

    @min_retry_interval_millis.setter
    def min_retry_interval_millis(self, value: Optional[int]):
        pulumi.set(self, "min_retry_interval_millis", value)

    @property
    @pulumi.getter(name="newCluster")
    def new_cluster(self) -> Optional['GetJobJobSettingsSettingsTaskNewClusterArgs']:
        return pulumi.get(self, "new_cluster")

    @new_cluster.setter
    def new_cluster(self, value: Optional['GetJobJobSettingsSettingsTaskNewClusterArgs']):
        pulumi.set(self, "new_cluster", value)

    @property
    @pulumi.getter(name="notebookTask")
    def notebook_task(self) -> Optional['GetJobJobSettingsSettingsTaskNotebookTaskArgs']:
        return pulumi.get(self, "notebook_task")

    @notebook_task.setter
    def notebook_task(self, value: Optional['GetJobJobSettingsSettingsTaskNotebookTaskArgs']):
        pulumi.set(self, "notebook_task", value)

    @property
    @pulumi.getter(name="pipelineTask")
    def pipeline_task(self) -> Optional['GetJobJobSettingsSettingsTaskPipelineTaskArgs']:
        return pulumi.get(self, "pipeline_task")

    @pipeline_task.setter
    def pipeline_task(self, value: Optional['GetJobJobSettingsSettingsTaskPipelineTaskArgs']):
        pulumi.set(self, "pipeline_task", value)

    @property
    @pulumi.getter(name="pythonWheelTask")
    def python_wheel_task(self) -> Optional['GetJobJobSettingsSettingsTaskPythonWheelTaskArgs']:
        return pulumi.get(self, "python_wheel_task")

    @python_wheel_task.setter
    def python_wheel_task(self, value: Optional['GetJobJobSettingsSettingsTaskPythonWheelTaskArgs']):
        pulumi.set(self, "python_wheel_task", value)

    @property
    @pulumi.getter(name="sparkJarTask")
    def spark_jar_task(self) -> Optional['GetJobJobSettingsSettingsTaskSparkJarTaskArgs']:
        return pulumi.get(self, "spark_jar_task")

    @spark_jar_task.setter
    def spark_jar_task(self, value: Optional['GetJobJobSettingsSettingsTaskSparkJarTaskArgs']):
        pulumi.set(self, "spark_jar_task", value)

    @property
    @pulumi.getter(name="sparkPythonTask")
    def spark_python_task(self) -> Optional['GetJobJobSettingsSettingsTaskSparkPythonTaskArgs']:
        return pulumi.get(self, "spark_python_task")

    @spark_python_task.setter
    def spark_python_task(self, value: Optional['GetJobJobSettingsSettingsTaskSparkPythonTaskArgs']):
        pulumi.set(self, "spark_python_task", value)

    @property
    @pulumi.getter(name="sparkSubmitTask")
    def spark_submit_task(self) -> Optional['GetJobJobSettingsSettingsTaskSparkSubmitTaskArgs']:
        return pulumi.get(self, "spark_submit_task")

    @spark_submit_task.setter
    def spark_submit_task(self, value: Optional['GetJobJobSettingsSettingsTaskSparkSubmitTaskArgs']):
        pulumi.set(self, "spark_submit_task", value)

    @property
    @pulumi.getter(name="sqlTask")
    def sql_task(self) -> Optional['GetJobJobSettingsSettingsTaskSqlTaskArgs']:
        return pulumi.get(self, "sql_task")

    @sql_task.setter
    def sql_task(self, value: Optional['GetJobJobSettingsSettingsTaskSqlTaskArgs']):
        pulumi.set(self, "sql_task", value)

    @property
    @pulumi.getter(name="taskKey")
    def task_key(self) -> Optional[str]:
        return pulumi.get(self, "task_key")

    @task_key.setter
    def task_key(self, value: Optional[str]):
        pulumi.set(self, "task_key", value)

    @property
    @pulumi.getter(name="timeoutSeconds")
    def timeout_seconds(self) -> Optional[int]:
        return pulumi.get(self, "timeout_seconds")

    @timeout_seconds.setter
    def timeout_seconds(self, value: Optional[int]):
        pulumi.set(self, "timeout_seconds", value)


@pulumi.input_type
class GetJobJobSettingsSettingsTaskDbtTaskArgs:
    def __init__(__self__, *,
                 commands: Sequence[str],
                 catalog: Optional[str] = None,
                 profiles_directory: Optional[str] = None,
                 project_directory: Optional[str] = None,
                 schema: Optional[str] = None,
                 warehouse_id: Optional[str] = None):
        pulumi.set(__self__, "commands", commands)
        if catalog is not None:
            pulumi.set(__self__, "catalog", catalog)
        if profiles_directory is not None:
            pulumi.set(__self__, "profiles_directory", profiles_directory)
        if project_directory is not None:
            pulumi.set(__self__, "project_directory", project_directory)
        if schema is not None:
            pulumi.set(__self__, "schema", schema)
        if warehouse_id is not None:
            pulumi.set(__self__, "warehouse_id", warehouse_id)

    @property
    @pulumi.getter
    def commands(self) -> Sequence[str]:
        return pulumi.get(self, "commands")

    @commands.setter
    def commands(self, value: Sequence[str]):
        pulumi.set(self, "commands", value)

    @property
    @pulumi.getter
    def catalog(self) -> Optional[str]:
        return pulumi.get(self, "catalog")

    @catalog.setter
    def catalog(self, value: Optional[str]):
        pulumi.set(self, "catalog", value)

    @property
    @pulumi.getter(name="profilesDirectory")
    def profiles_directory(self) -> Optional[str]:
        return pulumi.get(self, "profiles_directory")

    @profiles_directory.setter
    def profiles_directory(self, value: Optional[str]):
        pulumi.set(self, "profiles_directory", value)

    @property
    @pulumi.getter(name="projectDirectory")
    def project_directory(self) -> Optional[str]:
        return pulumi.get(self, "project_directory")

    @project_directory.setter
    def project_directory(self, value: Optional[str]):
        pulumi.set(self, "project_directory", value)

    @property
    @pulumi.getter
    def schema(self) -> Optional[str]:
        return pulumi.get(self, "schema")

    @schema.setter
    def schema(self, value: Optional[str]):
        pulumi.set(self, "schema", value)

    @property
    @pulumi.getter(name="warehouseId")
    def warehouse_id(self) -> Optional[str]:
        return pulumi.get(self, "warehouse_id")

    @warehouse_id.setter
    def warehouse_id(self, value: Optional[str]):
        pulumi.set(self, "warehouse_id", value)


@pulumi.input_type
class GetJobJobSettingsSettingsTaskDependsOnArgs:
    def __init__(__self__, *,
                 task_key: Optional[str] = None):
        if task_key is not None:
            pulumi.set(__self__, "task_key", task_key)

    @property
    @pulumi.getter(name="taskKey")
    def task_key(self) -> Optional[str]:
        return pulumi.get(self, "task_key")

    @task_key.setter
    def task_key(self, value: Optional[str]):
        pulumi.set(self, "task_key", value)


@pulumi.input_type
class GetJobJobSettingsSettingsTaskEmailNotificationsArgs:
    def __init__(__self__, *,
                 alert_on_last_attempt: Optional[bool] = None,
                 no_alert_for_skipped_runs: Optional[bool] = None,
                 on_failures: Optional[Sequence[str]] = None,
                 on_starts: Optional[Sequence[str]] = None,
                 on_successes: Optional[Sequence[str]] = None):
        if alert_on_last_attempt is not None:
            pulumi.set(__self__, "alert_on_last_attempt", alert_on_last_attempt)
        if no_alert_for_skipped_runs is not None:
            pulumi.set(__self__, "no_alert_for_skipped_runs", no_alert_for_skipped_runs)
        if on_failures is not None:
            pulumi.set(__self__, "on_failures", on_failures)
        if on_starts is not None:
            pulumi.set(__self__, "on_starts", on_starts)
        if on_successes is not None:
            pulumi.set(__self__, "on_successes", on_successes)

    @property
    @pulumi.getter(name="alertOnLastAttempt")
    def alert_on_last_attempt(self) -> Optional[bool]:
        return pulumi.get(self, "alert_on_last_attempt")

    @alert_on_last_attempt.setter
    def alert_on_last_attempt(self, value: Optional[bool]):
        pulumi.set(self, "alert_on_last_attempt", value)

    @property
    @pulumi.getter(name="noAlertForSkippedRuns")
    def no_alert_for_skipped_runs(self) -> Optional[bool]:
        return pulumi.get(self, "no_alert_for_skipped_runs")

    @no_alert_for_skipped_runs.setter
    def no_alert_for_skipped_runs(self, value: Optional[bool]):
        pulumi.set(self, "no_alert_for_skipped_runs", value)

    @property
    @pulumi.getter(name="onFailures")
    def on_failures(self) -> Optional[Sequence[str]]:
        return pulumi.get(self, "on_failures")

    @on_failures.setter
    def on_failures(self, value: Optional[Sequence[str]]):
        pulumi.set(self, "on_failures", value)

    @property
    @pulumi.getter(name="onStarts")
    def on_starts(self) -> Optional[Sequence[str]]:
        return pulumi.get(self, "on_starts")

    @on_starts.setter
    def on_starts(self, value: Optional[Sequence[str]]):
        pulumi.set(self, "on_starts", value)

    @property
    @pulumi.getter(name="onSuccesses")
    def on_successes(self) -> Optional[Sequence[str]]:
        return pulumi.get(self, "on_successes")

    @on_successes.setter
    def on_successes(self, value: Optional[Sequence[str]]):
        pulumi.set(self, "on_successes", value)


@pulumi.input_type
class GetJobJobSettingsSettingsTaskLibraryArgs:
    def __init__(__self__, *,
                 cran: Optional['GetJobJobSettingsSettingsTaskLibraryCranArgs'] = None,
                 egg: Optional[str] = None,
                 jar: Optional[str] = None,
                 maven: Optional['GetJobJobSettingsSettingsTaskLibraryMavenArgs'] = None,
                 pypi: Optional['GetJobJobSettingsSettingsTaskLibraryPypiArgs'] = None,
                 whl: Optional[str] = None):
        if cran is not None:
            pulumi.set(__self__, "cran", cran)
        if egg is not None:
            pulumi.set(__self__, "egg", egg)
        if jar is not None:
            pulumi.set(__self__, "jar", jar)
        if maven is not None:
            pulumi.set(__self__, "maven", maven)
        if pypi is not None:
            pulumi.set(__self__, "pypi", pypi)
        if whl is not None:
            pulumi.set(__self__, "whl", whl)

    @property
    @pulumi.getter
    def cran(self) -> Optional['GetJobJobSettingsSettingsTaskLibraryCranArgs']:
        return pulumi.get(self, "cran")

    @cran.setter
    def cran(self, value: Optional['GetJobJobSettingsSettingsTaskLibraryCranArgs']):
        pulumi.set(self, "cran", value)

    @property
    @pulumi.getter
    def egg(self) -> Optional[str]:
        return pulumi.get(self, "egg")

    @egg.setter
    def egg(self, value: Optional[str]):
        pulumi.set(self, "egg", value)

    @property
    @pulumi.getter
    def jar(self) -> Optional[str]:
        return pulumi.get(self, "jar")

    @jar.setter
    def jar(self, value: Optional[str]):
        pulumi.set(self, "jar", value)

    @property
    @pulumi.getter
    def maven(self) -> Optional['GetJobJobSettingsSettingsTaskLibraryMavenArgs']:
        return pulumi.get(self, "maven")

    @maven.setter
    def maven(self, value: Optional['GetJobJobSettingsSettingsTaskLibraryMavenArgs']):
        pulumi.set(self, "maven", value)

    @property
    @pulumi.getter
    def pypi(self) -> Optional['GetJobJobSettingsSettingsTaskLibraryPypiArgs']:
        return pulumi.get(self, "pypi")

    @pypi.setter
    def pypi(self, value: Optional['GetJobJobSettingsSettingsTaskLibraryPypiArgs']):
        pulumi.set(self, "pypi", value)

    @property
    @pulumi.getter
    def whl(self) -> Optional[str]:
        return pulumi.get(self, "whl")

    @whl.setter
    def whl(self, value: Optional[str]):
        pulumi.set(self, "whl", value)


@pulumi.input_type
class GetJobJobSettingsSettingsTaskLibraryCranArgs:
    def __init__(__self__, *,
                 package: str,
                 repo: Optional[str] = None):
        pulumi.set(__self__, "package", package)
        if repo is not None:
            pulumi.set(__self__, "repo", repo)

    @property
    @pulumi.getter
    def package(self) -> str:
        return pulumi.get(self, "package")

    @package.setter
    def package(self, value: str):
        pulumi.set(self, "package", value)

    @property
    @pulumi.getter
    def repo(self) -> Optional[str]:
        return pulumi.get(self, "repo")

    @repo.setter
    def repo(self, value: Optional[str]):
        pulumi.set(self, "repo", value)


@pulumi.input_type
class GetJobJobSettingsSettingsTaskLibraryMavenArgs:
    def __init__(__self__, *,
                 coordinates: str,
                 exclusions: Optional[Sequence[str]] = None,
                 repo: Optional[str] = None):
        pulumi.set(__self__, "coordinates", coordinates)
        if exclusions is not None:
            pulumi.set(__self__, "exclusions", exclusions)
        if repo is not None:
            pulumi.set(__self__, "repo", repo)

    @property
    @pulumi.getter
    def coordinates(self) -> str:
        return pulumi.get(self, "coordinates")

    @coordinates.setter
    def coordinates(self, value: str):
        pulumi.set(self, "coordinates", value)

    @property
    @pulumi.getter
    def exclusions(self) -> Optional[Sequence[str]]:
        return pulumi.get(self, "exclusions")

    @exclusions.setter
    def exclusions(self, value: Optional[Sequence[str]]):
        pulumi.set(self, "exclusions", value)

    @property
    @pulumi.getter
    def repo(self) -> Optional[str]:
        return pulumi.get(self, "repo")

    @repo.setter
    def repo(self, value: Optional[str]):
        pulumi.set(self, "repo", value)


@pulumi.input_type
class GetJobJobSettingsSettingsTaskLibraryPypiArgs:
    def __init__(__self__, *,
                 package: str,
                 repo: Optional[str] = None):
        pulumi.set(__self__, "package", package)
        if repo is not None:
            pulumi.set(__self__, "repo", repo)

    @property
    @pulumi.getter
    def package(self) -> str:
        return pulumi.get(self, "package")

    @package.setter
    def package(self, value: str):
        pulumi.set(self, "package", value)

    @property
    @pulumi.getter
    def repo(self) -> Optional[str]:
        return pulumi.get(self, "repo")

    @repo.setter
    def repo(self, value: Optional[str]):
        pulumi.set(self, "repo", value)


@pulumi.input_type
class GetJobJobSettingsSettingsTaskNewClusterArgs:
    def __init__(__self__, *,
                 driver_instance_pool_id: str,
                 driver_node_type_id: str,
                 enable_elastic_disk: bool,
                 enable_local_disk_encryption: bool,
                 node_type_id: str,
                 num_workers: int,
                 spark_version: str,
                 apply_policy_default_values: Optional[bool] = None,
                 autoscale: Optional['GetJobJobSettingsSettingsTaskNewClusterAutoscaleArgs'] = None,
                 autotermination_minutes: Optional[int] = None,
                 aws_attributes: Optional['GetJobJobSettingsSettingsTaskNewClusterAwsAttributesArgs'] = None,
                 azure_attributes: Optional['GetJobJobSettingsSettingsTaskNewClusterAzureAttributesArgs'] = None,
                 cluster_id: Optional[str] = None,
                 cluster_log_conf: Optional['GetJobJobSettingsSettingsTaskNewClusterClusterLogConfArgs'] = None,
                 cluster_mount_infos: Optional[Sequence['GetJobJobSettingsSettingsTaskNewClusterClusterMountInfoArgs']] = None,
                 cluster_name: Optional[str] = None,
                 custom_tags: Optional[Mapping[str, Any]] = None,
                 data_security_mode: Optional[str] = None,
                 docker_image: Optional['GetJobJobSettingsSettingsTaskNewClusterDockerImageArgs'] = None,
                 gcp_attributes: Optional['GetJobJobSettingsSettingsTaskNewClusterGcpAttributesArgs'] = None,
                 idempotency_token: Optional[str] = None,
                 init_scripts: Optional[Sequence['GetJobJobSettingsSettingsTaskNewClusterInitScriptArgs']] = None,
                 instance_pool_id: Optional[str] = None,
                 policy_id: Optional[str] = None,
                 runtime_engine: Optional[str] = None,
                 single_user_name: Optional[str] = None,
                 spark_conf: Optional[Mapping[str, Any]] = None,
                 spark_env_vars: Optional[Mapping[str, Any]] = None,
                 ssh_public_keys: Optional[Sequence[str]] = None,
                 workload_type: Optional['GetJobJobSettingsSettingsTaskNewClusterWorkloadTypeArgs'] = None):
        pulumi.set(__self__, "driver_instance_pool_id", driver_instance_pool_id)
        pulumi.set(__self__, "driver_node_type_id", driver_node_type_id)
        pulumi.set(__self__, "enable_elastic_disk", enable_elastic_disk)
        pulumi.set(__self__, "enable_local_disk_encryption", enable_local_disk_encryption)
        pulumi.set(__self__, "node_type_id", node_type_id)
        pulumi.set(__self__, "num_workers", num_workers)
        pulumi.set(__self__, "spark_version", spark_version)
        if apply_policy_default_values is not None:
            pulumi.set(__self__, "apply_policy_default_values", apply_policy_default_values)
        if autoscale is not None:
            pulumi.set(__self__, "autoscale", autoscale)
        if autotermination_minutes is not None:
            pulumi.set(__self__, "autotermination_minutes", autotermination_minutes)
        if aws_attributes is not None:
            pulumi.set(__self__, "aws_attributes", aws_attributes)
        if azure_attributes is not None:
            pulumi.set(__self__, "azure_attributes", azure_attributes)
        if cluster_id is not None:
            pulumi.set(__self__, "cluster_id", cluster_id)
        if cluster_log_conf is not None:
            pulumi.set(__self__, "cluster_log_conf", cluster_log_conf)
        if cluster_mount_infos is not None:
            pulumi.set(__self__, "cluster_mount_infos", cluster_mount_infos)
        if cluster_name is not None:
            pulumi.set(__self__, "cluster_name", cluster_name)
        if custom_tags is not None:
            pulumi.set(__self__, "custom_tags", custom_tags)
        if data_security_mode is not None:
            pulumi.set(__self__, "data_security_mode", data_security_mode)
        if docker_image is not None:
            pulumi.set(__self__, "docker_image", docker_image)
        if gcp_attributes is not None:
            pulumi.set(__self__, "gcp_attributes", gcp_attributes)
        if idempotency_token is not None:
            pulumi.set(__self__, "idempotency_token", idempotency_token)
        if init_scripts is not None:
            pulumi.set(__self__, "init_scripts", init_scripts)
        if instance_pool_id is not None:
            pulumi.set(__self__, "instance_pool_id", instance_pool_id)
        if policy_id is not None:
            pulumi.set(__self__, "policy_id", policy_id)
        if runtime_engine is not None:
            pulumi.set(__self__, "runtime_engine", runtime_engine)
        if single_user_name is not None:
            pulumi.set(__self__, "single_user_name", single_user_name)
        if spark_conf is not None:
            pulumi.set(__self__, "spark_conf", spark_conf)
        if spark_env_vars is not None:
            pulumi.set(__self__, "spark_env_vars", spark_env_vars)
        if ssh_public_keys is not None:
            pulumi.set(__self__, "ssh_public_keys", ssh_public_keys)
        if workload_type is not None:
            pulumi.set(__self__, "workload_type", workload_type)

    @property
    @pulumi.getter(name="driverInstancePoolId")
    def driver_instance_pool_id(self) -> str:
        return pulumi.get(self, "driver_instance_pool_id")

    @driver_instance_pool_id.setter
    def driver_instance_pool_id(self, value: str):
        pulumi.set(self, "driver_instance_pool_id", value)

    @property
    @pulumi.getter(name="driverNodeTypeId")
    def driver_node_type_id(self) -> str:
        return pulumi.get(self, "driver_node_type_id")

    @driver_node_type_id.setter
    def driver_node_type_id(self, value: str):
        pulumi.set(self, "driver_node_type_id", value)

    @property
    @pulumi.getter(name="enableElasticDisk")
    def enable_elastic_disk(self) -> bool:
        return pulumi.get(self, "enable_elastic_disk")

    @enable_elastic_disk.setter
    def enable_elastic_disk(self, value: bool):
        pulumi.set(self, "enable_elastic_disk", value)

    @property
    @pulumi.getter(name="enableLocalDiskEncryption")
    def enable_local_disk_encryption(self) -> bool:
        return pulumi.get(self, "enable_local_disk_encryption")

    @enable_local_disk_encryption.setter
    def enable_local_disk_encryption(self, value: bool):
        pulumi.set(self, "enable_local_disk_encryption", value)

    @property
    @pulumi.getter(name="nodeTypeId")
    def node_type_id(self) -> str:
        return pulumi.get(self, "node_type_id")

    @node_type_id.setter
    def node_type_id(self, value: str):
        pulumi.set(self, "node_type_id", value)

    @property
    @pulumi.getter(name="numWorkers")
    def num_workers(self) -> int:
        return pulumi.get(self, "num_workers")

    @num_workers.setter
    def num_workers(self, value: int):
        pulumi.set(self, "num_workers", value)

    @property
    @pulumi.getter(name="sparkVersion")
    def spark_version(self) -> str:
        return pulumi.get(self, "spark_version")

    @spark_version.setter
    def spark_version(self, value: str):
        pulumi.set(self, "spark_version", value)

    @property
    @pulumi.getter(name="applyPolicyDefaultValues")
    def apply_policy_default_values(self) -> Optional[bool]:
        return pulumi.get(self, "apply_policy_default_values")

    @apply_policy_default_values.setter
    def apply_policy_default_values(self, value: Optional[bool]):
        pulumi.set(self, "apply_policy_default_values", value)

    @property
    @pulumi.getter
    def autoscale(self) -> Optional['GetJobJobSettingsSettingsTaskNewClusterAutoscaleArgs']:
        return pulumi.get(self, "autoscale")

    @autoscale.setter
    def autoscale(self, value: Optional['GetJobJobSettingsSettingsTaskNewClusterAutoscaleArgs']):
        pulumi.set(self, "autoscale", value)

    @property
    @pulumi.getter(name="autoterminationMinutes")
    def autotermination_minutes(self) -> Optional[int]:
        return pulumi.get(self, "autotermination_minutes")

    @autotermination_minutes.setter
    def autotermination_minutes(self, value: Optional[int]):
        pulumi.set(self, "autotermination_minutes", value)

    @property
    @pulumi.getter(name="awsAttributes")
    def aws_attributes(self) -> Optional['GetJobJobSettingsSettingsTaskNewClusterAwsAttributesArgs']:
        return pulumi.get(self, "aws_attributes")

    @aws_attributes.setter
    def aws_attributes(self, value: Optional['GetJobJobSettingsSettingsTaskNewClusterAwsAttributesArgs']):
        pulumi.set(self, "aws_attributes", value)

    @property
    @pulumi.getter(name="azureAttributes")
    def azure_attributes(self) -> Optional['GetJobJobSettingsSettingsTaskNewClusterAzureAttributesArgs']:
        return pulumi.get(self, "azure_attributes")

    @azure_attributes.setter
    def azure_attributes(self, value: Optional['GetJobJobSettingsSettingsTaskNewClusterAzureAttributesArgs']):
        pulumi.set(self, "azure_attributes", value)

    @property
    @pulumi.getter(name="clusterId")
    def cluster_id(self) -> Optional[str]:
        return pulumi.get(self, "cluster_id")

    @cluster_id.setter
    def cluster_id(self, value: Optional[str]):
        pulumi.set(self, "cluster_id", value)

    @property
    @pulumi.getter(name="clusterLogConf")
    def cluster_log_conf(self) -> Optional['GetJobJobSettingsSettingsTaskNewClusterClusterLogConfArgs']:
        return pulumi.get(self, "cluster_log_conf")

    @cluster_log_conf.setter
    def cluster_log_conf(self, value: Optional['GetJobJobSettingsSettingsTaskNewClusterClusterLogConfArgs']):
        pulumi.set(self, "cluster_log_conf", value)

    @property
    @pulumi.getter(name="clusterMountInfos")
    def cluster_mount_infos(self) -> Optional[Sequence['GetJobJobSettingsSettingsTaskNewClusterClusterMountInfoArgs']]:
        return pulumi.get(self, "cluster_mount_infos")

    @cluster_mount_infos.setter
    def cluster_mount_infos(self, value: Optional[Sequence['GetJobJobSettingsSettingsTaskNewClusterClusterMountInfoArgs']]):
        pulumi.set(self, "cluster_mount_infos", value)

    @property
    @pulumi.getter(name="clusterName")
    def cluster_name(self) -> Optional[str]:
        return pulumi.get(self, "cluster_name")

    @cluster_name.setter
    def cluster_name(self, value: Optional[str]):
        pulumi.set(self, "cluster_name", value)

    @property
    @pulumi.getter(name="customTags")
    def custom_tags(self) -> Optional[Mapping[str, Any]]:
        return pulumi.get(self, "custom_tags")

    @custom_tags.setter
    def custom_tags(self, value: Optional[Mapping[str, Any]]):
        pulumi.set(self, "custom_tags", value)

    @property
    @pulumi.getter(name="dataSecurityMode")
    def data_security_mode(self) -> Optional[str]:
        return pulumi.get(self, "data_security_mode")

    @data_security_mode.setter
    def data_security_mode(self, value: Optional[str]):
        pulumi.set(self, "data_security_mode", value)

    @property
    @pulumi.getter(name="dockerImage")
    def docker_image(self) -> Optional['GetJobJobSettingsSettingsTaskNewClusterDockerImageArgs']:
        return pulumi.get(self, "docker_image")

    @docker_image.setter
    def docker_image(self, value: Optional['GetJobJobSettingsSettingsTaskNewClusterDockerImageArgs']):
        pulumi.set(self, "docker_image", value)

    @property
    @pulumi.getter(name="gcpAttributes")
    def gcp_attributes(self) -> Optional['GetJobJobSettingsSettingsTaskNewClusterGcpAttributesArgs']:
        return pulumi.get(self, "gcp_attributes")

    @gcp_attributes.setter
    def gcp_attributes(self, value: Optional['GetJobJobSettingsSettingsTaskNewClusterGcpAttributesArgs']):
        pulumi.set(self, "gcp_attributes", value)

    @property
    @pulumi.getter(name="idempotencyToken")
    def idempotency_token(self) -> Optional[str]:
        return pulumi.get(self, "idempotency_token")

    @idempotency_token.setter
    def idempotency_token(self, value: Optional[str]):
        pulumi.set(self, "idempotency_token", value)

    @property
    @pulumi.getter(name="initScripts")
    def init_scripts(self) -> Optional[Sequence['GetJobJobSettingsSettingsTaskNewClusterInitScriptArgs']]:
        return pulumi.get(self, "init_scripts")

    @init_scripts.setter
    def init_scripts(self, value: Optional[Sequence['GetJobJobSettingsSettingsTaskNewClusterInitScriptArgs']]):
        pulumi.set(self, "init_scripts", value)

    @property
    @pulumi.getter(name="instancePoolId")
    def instance_pool_id(self) -> Optional[str]:
        return pulumi.get(self, "instance_pool_id")

    @instance_pool_id.setter
    def instance_pool_id(self, value: Optional[str]):
        pulumi.set(self, "instance_pool_id", value)

    @property
    @pulumi.getter(name="policyId")
    def policy_id(self) -> Optional[str]:
        return pulumi.get(self, "policy_id")

    @policy_id.setter
    def policy_id(self, value: Optional[str]):
        pulumi.set(self, "policy_id", value)

    @property
    @pulumi.getter(name="runtimeEngine")
    def runtime_engine(self) -> Optional[str]:
        return pulumi.get(self, "runtime_engine")

    @runtime_engine.setter
    def runtime_engine(self, value: Optional[str]):
        pulumi.set(self, "runtime_engine", value)

    @property
    @pulumi.getter(name="singleUserName")
    def single_user_name(self) -> Optional[str]:
        return pulumi.get(self, "single_user_name")

    @single_user_name.setter
    def single_user_name(self, value: Optional[str]):
        pulumi.set(self, "single_user_name", value)

    @property
    @pulumi.getter(name="sparkConf")
    def spark_conf(self) -> Optional[Mapping[str, Any]]:
        return pulumi.get(self, "spark_conf")

    @spark_conf.setter
    def spark_conf(self, value: Optional[Mapping[str, Any]]):
        pulumi.set(self, "spark_conf", value)

    @property
    @pulumi.getter(name="sparkEnvVars")
    def spark_env_vars(self) -> Optional[Mapping[str, Any]]:
        return pulumi.get(self, "spark_env_vars")

    @spark_env_vars.setter
    def spark_env_vars(self, value: Optional[Mapping[str, Any]]):
        pulumi.set(self, "spark_env_vars", value)

    @property
    @pulumi.getter(name="sshPublicKeys")
    def ssh_public_keys(self) -> Optional[Sequence[str]]:
        return pulumi.get(self, "ssh_public_keys")

    @ssh_public_keys.setter
    def ssh_public_keys(self, value: Optional[Sequence[str]]):
        pulumi.set(self, "ssh_public_keys", value)

    @property
    @pulumi.getter(name="workloadType")
    def workload_type(self) -> Optional['GetJobJobSettingsSettingsTaskNewClusterWorkloadTypeArgs']:
        return pulumi.get(self, "workload_type")

    @workload_type.setter
    def workload_type(self, value: Optional['GetJobJobSettingsSettingsTaskNewClusterWorkloadTypeArgs']):
        pulumi.set(self, "workload_type", value)


@pulumi.input_type
class GetJobJobSettingsSettingsTaskNewClusterAutoscaleArgs:
    def __init__(__self__, *,
                 max_workers: Optional[int] = None,
                 min_workers: Optional[int] = None):
        if max_workers is not None:
            pulumi.set(__self__, "max_workers", max_workers)
        if min_workers is not None:
            pulumi.set(__self__, "min_workers", min_workers)

    @property
    @pulumi.getter(name="maxWorkers")
    def max_workers(self) -> Optional[int]:
        return pulumi.get(self, "max_workers")

    @max_workers.setter
    def max_workers(self, value: Optional[int]):
        pulumi.set(self, "max_workers", value)

    @property
    @pulumi.getter(name="minWorkers")
    def min_workers(self) -> Optional[int]:
        return pulumi.get(self, "min_workers")

    @min_workers.setter
    def min_workers(self, value: Optional[int]):
        pulumi.set(self, "min_workers", value)


@pulumi.input_type
class GetJobJobSettingsSettingsTaskNewClusterAwsAttributesArgs:
    def __init__(__self__, *,
                 availability: Optional[str] = None,
                 ebs_volume_count: Optional[int] = None,
                 ebs_volume_size: Optional[int] = None,
                 ebs_volume_type: Optional[str] = None,
                 first_on_demand: Optional[int] = None,
                 instance_profile_arn: Optional[str] = None,
                 spot_bid_price_percent: Optional[int] = None,
                 zone_id: Optional[str] = None):
        if availability is not None:
            pulumi.set(__self__, "availability", availability)
        if ebs_volume_count is not None:
            pulumi.set(__self__, "ebs_volume_count", ebs_volume_count)
        if ebs_volume_size is not None:
            pulumi.set(__self__, "ebs_volume_size", ebs_volume_size)
        if ebs_volume_type is not None:
            pulumi.set(__self__, "ebs_volume_type", ebs_volume_type)
        if first_on_demand is not None:
            pulumi.set(__self__, "first_on_demand", first_on_demand)
        if instance_profile_arn is not None:
            pulumi.set(__self__, "instance_profile_arn", instance_profile_arn)
        if spot_bid_price_percent is not None:
            pulumi.set(__self__, "spot_bid_price_percent", spot_bid_price_percent)
        if zone_id is not None:
            pulumi.set(__self__, "zone_id", zone_id)

    @property
    @pulumi.getter
    def availability(self) -> Optional[str]:
        return pulumi.get(self, "availability")

    @availability.setter
    def availability(self, value: Optional[str]):
        pulumi.set(self, "availability", value)

    @property
    @pulumi.getter(name="ebsVolumeCount")
    def ebs_volume_count(self) -> Optional[int]:
        return pulumi.get(self, "ebs_volume_count")

    @ebs_volume_count.setter
    def ebs_volume_count(self, value: Optional[int]):
        pulumi.set(self, "ebs_volume_count", value)

    @property
    @pulumi.getter(name="ebsVolumeSize")
    def ebs_volume_size(self) -> Optional[int]:
        return pulumi.get(self, "ebs_volume_size")

    @ebs_volume_size.setter
    def ebs_volume_size(self, value: Optional[int]):
        pulumi.set(self, "ebs_volume_size", value)

    @property
    @pulumi.getter(name="ebsVolumeType")
    def ebs_volume_type(self) -> Optional[str]:
        return pulumi.get(self, "ebs_volume_type")

    @ebs_volume_type.setter
    def ebs_volume_type(self, value: Optional[str]):
        pulumi.set(self, "ebs_volume_type", value)

    @property
    @pulumi.getter(name="firstOnDemand")
    def first_on_demand(self) -> Optional[int]:
        return pulumi.get(self, "first_on_demand")

    @first_on_demand.setter
    def first_on_demand(self, value: Optional[int]):
        pulumi.set(self, "first_on_demand", value)

    @property
    @pulumi.getter(name="instanceProfileArn")
    def instance_profile_arn(self) -> Optional[str]:
        return pulumi.get(self, "instance_profile_arn")

    @instance_profile_arn.setter
    def instance_profile_arn(self, value: Optional[str]):
        pulumi.set(self, "instance_profile_arn", value)

    @property
    @pulumi.getter(name="spotBidPricePercent")
    def spot_bid_price_percent(self) -> Optional[int]:
        return pulumi.get(self, "spot_bid_price_percent")

    @spot_bid_price_percent.setter
    def spot_bid_price_percent(self, value: Optional[int]):
        pulumi.set(self, "spot_bid_price_percent", value)

    @property
    @pulumi.getter(name="zoneId")
    def zone_id(self) -> Optional[str]:
        return pulumi.get(self, "zone_id")

    @zone_id.setter
    def zone_id(self, value: Optional[str]):
        pulumi.set(self, "zone_id", value)


@pulumi.input_type
class GetJobJobSettingsSettingsTaskNewClusterAzureAttributesArgs:
    def __init__(__self__, *,
                 availability: Optional[str] = None,
                 first_on_demand: Optional[int] = None,
                 spot_bid_max_price: Optional[float] = None):
        if availability is not None:
            pulumi.set(__self__, "availability", availability)
        if first_on_demand is not None:
            pulumi.set(__self__, "first_on_demand", first_on_demand)
        if spot_bid_max_price is not None:
            pulumi.set(__self__, "spot_bid_max_price", spot_bid_max_price)

    @property
    @pulumi.getter
    def availability(self) -> Optional[str]:
        return pulumi.get(self, "availability")

    @availability.setter
    def availability(self, value: Optional[str]):
        pulumi.set(self, "availability", value)

    @property
    @pulumi.getter(name="firstOnDemand")
    def first_on_demand(self) -> Optional[int]:
        return pulumi.get(self, "first_on_demand")

    @first_on_demand.setter
    def first_on_demand(self, value: Optional[int]):
        pulumi.set(self, "first_on_demand", value)

    @property
    @pulumi.getter(name="spotBidMaxPrice")
    def spot_bid_max_price(self) -> Optional[float]:
        return pulumi.get(self, "spot_bid_max_price")

    @spot_bid_max_price.setter
    def spot_bid_max_price(self, value: Optional[float]):
        pulumi.set(self, "spot_bid_max_price", value)


@pulumi.input_type
class GetJobJobSettingsSettingsTaskNewClusterClusterLogConfArgs:
    def __init__(__self__, *,
                 dbfs: Optional['GetJobJobSettingsSettingsTaskNewClusterClusterLogConfDbfsArgs'] = None,
                 s3: Optional['GetJobJobSettingsSettingsTaskNewClusterClusterLogConfS3Args'] = None):
        if dbfs is not None:
            pulumi.set(__self__, "dbfs", dbfs)
        if s3 is not None:
            pulumi.set(__self__, "s3", s3)

    @property
    @pulumi.getter
    def dbfs(self) -> Optional['GetJobJobSettingsSettingsTaskNewClusterClusterLogConfDbfsArgs']:
        return pulumi.get(self, "dbfs")

    @dbfs.setter
    def dbfs(self, value: Optional['GetJobJobSettingsSettingsTaskNewClusterClusterLogConfDbfsArgs']):
        pulumi.set(self, "dbfs", value)

    @property
    @pulumi.getter
    def s3(self) -> Optional['GetJobJobSettingsSettingsTaskNewClusterClusterLogConfS3Args']:
        return pulumi.get(self, "s3")

    @s3.setter
    def s3(self, value: Optional['GetJobJobSettingsSettingsTaskNewClusterClusterLogConfS3Args']):
        pulumi.set(self, "s3", value)


@pulumi.input_type
class GetJobJobSettingsSettingsTaskNewClusterClusterLogConfDbfsArgs:
    def __init__(__self__, *,
                 destination: str):
        pulumi.set(__self__, "destination", destination)

    @property
    @pulumi.getter
    def destination(self) -> str:
        return pulumi.get(self, "destination")

    @destination.setter
    def destination(self, value: str):
        pulumi.set(self, "destination", value)


@pulumi.input_type
class GetJobJobSettingsSettingsTaskNewClusterClusterLogConfS3Args:
    def __init__(__self__, *,
                 destination: str,
                 canned_acl: Optional[str] = None,
                 enable_encryption: Optional[bool] = None,
                 encryption_type: Optional[str] = None,
                 endpoint: Optional[str] = None,
                 kms_key: Optional[str] = None,
                 region: Optional[str] = None):
        pulumi.set(__self__, "destination", destination)
        if canned_acl is not None:
            pulumi.set(__self__, "canned_acl", canned_acl)
        if enable_encryption is not None:
            pulumi.set(__self__, "enable_encryption", enable_encryption)
        if encryption_type is not None:
            pulumi.set(__self__, "encryption_type", encryption_type)
        if endpoint is not None:
            pulumi.set(__self__, "endpoint", endpoint)
        if kms_key is not None:
            pulumi.set(__self__, "kms_key", kms_key)
        if region is not None:
            pulumi.set(__self__, "region", region)

    @property
    @pulumi.getter
    def destination(self) -> str:
        return pulumi.get(self, "destination")

    @destination.setter
    def destination(self, value: str):
        pulumi.set(self, "destination", value)

    @property
    @pulumi.getter(name="cannedAcl")
    def canned_acl(self) -> Optional[str]:
        return pulumi.get(self, "canned_acl")

    @canned_acl.setter
    def canned_acl(self, value: Optional[str]):
        pulumi.set(self, "canned_acl", value)

    @property
    @pulumi.getter(name="enableEncryption")
    def enable_encryption(self) -> Optional[bool]:
        return pulumi.get(self, "enable_encryption")

    @enable_encryption.setter
    def enable_encryption(self, value: Optional[bool]):
        pulumi.set(self, "enable_encryption", value)

    @property
    @pulumi.getter(name="encryptionType")
    def encryption_type(self) -> Optional[str]:
        return pulumi.get(self, "encryption_type")

    @encryption_type.setter
    def encryption_type(self, value: Optional[str]):
        pulumi.set(self, "encryption_type", value)

    @property
    @pulumi.getter
    def endpoint(self) -> Optional[str]:
        return pulumi.get(self, "endpoint")

    @endpoint.setter
    def endpoint(self, value: Optional[str]):
        pulumi.set(self, "endpoint", value)

    @property
    @pulumi.getter(name="kmsKey")
    def kms_key(self) -> Optional[str]:
        return pulumi.get(self, "kms_key")

    @kms_key.setter
    def kms_key(self, value: Optional[str]):
        pulumi.set(self, "kms_key", value)

    @property
    @pulumi.getter
    def region(self) -> Optional[str]:
        return pulumi.get(self, "region")

    @region.setter
    def region(self, value: Optional[str]):
        pulumi.set(self, "region", value)


@pulumi.input_type
class GetJobJobSettingsSettingsTaskNewClusterClusterMountInfoArgs:
    def __init__(__self__, *,
                 local_mount_dir_path: str,
                 network_filesystem_info: 'GetJobJobSettingsSettingsTaskNewClusterClusterMountInfoNetworkFilesystemInfoArgs',
                 remote_mount_dir_path: Optional[str] = None):
        pulumi.set(__self__, "local_mount_dir_path", local_mount_dir_path)
        pulumi.set(__self__, "network_filesystem_info", network_filesystem_info)
        if remote_mount_dir_path is not None:
            pulumi.set(__self__, "remote_mount_dir_path", remote_mount_dir_path)

    @property
    @pulumi.getter(name="localMountDirPath")
    def local_mount_dir_path(self) -> str:
        return pulumi.get(self, "local_mount_dir_path")

    @local_mount_dir_path.setter
    def local_mount_dir_path(self, value: str):
        pulumi.set(self, "local_mount_dir_path", value)

    @property
    @pulumi.getter(name="networkFilesystemInfo")
    def network_filesystem_info(self) -> 'GetJobJobSettingsSettingsTaskNewClusterClusterMountInfoNetworkFilesystemInfoArgs':
        return pulumi.get(self, "network_filesystem_info")

    @network_filesystem_info.setter
    def network_filesystem_info(self, value: 'GetJobJobSettingsSettingsTaskNewClusterClusterMountInfoNetworkFilesystemInfoArgs'):
        pulumi.set(self, "network_filesystem_info", value)

    @property
    @pulumi.getter(name="remoteMountDirPath")
    def remote_mount_dir_path(self) -> Optional[str]:
        return pulumi.get(self, "remote_mount_dir_path")

    @remote_mount_dir_path.setter
    def remote_mount_dir_path(self, value: Optional[str]):
        pulumi.set(self, "remote_mount_dir_path", value)


@pulumi.input_type
class GetJobJobSettingsSettingsTaskNewClusterClusterMountInfoNetworkFilesystemInfoArgs:
    def __init__(__self__, *,
                 server_address: str,
                 mount_options: Optional[str] = None):
        pulumi.set(__self__, "server_address", server_address)
        if mount_options is not None:
            pulumi.set(__self__, "mount_options", mount_options)

    @property
    @pulumi.getter(name="serverAddress")
    def server_address(self) -> str:
        return pulumi.get(self, "server_address")

    @server_address.setter
    def server_address(self, value: str):
        pulumi.set(self, "server_address", value)

    @property
    @pulumi.getter(name="mountOptions")
    def mount_options(self) -> Optional[str]:
        return pulumi.get(self, "mount_options")

    @mount_options.setter
    def mount_options(self, value: Optional[str]):
        pulumi.set(self, "mount_options", value)


@pulumi.input_type
class GetJobJobSettingsSettingsTaskNewClusterDockerImageArgs:
    def __init__(__self__, *,
                 url: str,
                 basic_auth: Optional['GetJobJobSettingsSettingsTaskNewClusterDockerImageBasicAuthArgs'] = None):
        pulumi.set(__self__, "url", url)
        if basic_auth is not None:
            pulumi.set(__self__, "basic_auth", basic_auth)

    @property
    @pulumi.getter
    def url(self) -> str:
        return pulumi.get(self, "url")

    @url.setter
    def url(self, value: str):
        pulumi.set(self, "url", value)

    @property
    @pulumi.getter(name="basicAuth")
    def basic_auth(self) -> Optional['GetJobJobSettingsSettingsTaskNewClusterDockerImageBasicAuthArgs']:
        return pulumi.get(self, "basic_auth")

    @basic_auth.setter
    def basic_auth(self, value: Optional['GetJobJobSettingsSettingsTaskNewClusterDockerImageBasicAuthArgs']):
        pulumi.set(self, "basic_auth", value)


@pulumi.input_type
class GetJobJobSettingsSettingsTaskNewClusterDockerImageBasicAuthArgs:
    def __init__(__self__, *,
                 password: str,
                 username: str):
        pulumi.set(__self__, "password", password)
        pulumi.set(__self__, "username", username)

    @property
    @pulumi.getter
    def password(self) -> str:
        return pulumi.get(self, "password")

    @password.setter
    def password(self, value: str):
        pulumi.set(self, "password", value)

    @property
    @pulumi.getter
    def username(self) -> str:
        return pulumi.get(self, "username")

    @username.setter
    def username(self, value: str):
        pulumi.set(self, "username", value)


@pulumi.input_type
class GetJobJobSettingsSettingsTaskNewClusterGcpAttributesArgs:
    def __init__(__self__, *,
                 availability: Optional[str] = None,
                 boot_disk_size: Optional[int] = None,
                 google_service_account: Optional[str] = None,
                 use_preemptible_executors: Optional[bool] = None,
                 zone_id: Optional[str] = None):
        if availability is not None:
            pulumi.set(__self__, "availability", availability)
        if boot_disk_size is not None:
            pulumi.set(__self__, "boot_disk_size", boot_disk_size)
        if google_service_account is not None:
            pulumi.set(__self__, "google_service_account", google_service_account)
        if use_preemptible_executors is not None:
            pulumi.set(__self__, "use_preemptible_executors", use_preemptible_executors)
        if zone_id is not None:
            pulumi.set(__self__, "zone_id", zone_id)

    @property
    @pulumi.getter
    def availability(self) -> Optional[str]:
        return pulumi.get(self, "availability")

    @availability.setter
    def availability(self, value: Optional[str]):
        pulumi.set(self, "availability", value)

    @property
    @pulumi.getter(name="bootDiskSize")
    def boot_disk_size(self) -> Optional[int]:
        return pulumi.get(self, "boot_disk_size")

    @boot_disk_size.setter
    def boot_disk_size(self, value: Optional[int]):
        pulumi.set(self, "boot_disk_size", value)

    @property
    @pulumi.getter(name="googleServiceAccount")
    def google_service_account(self) -> Optional[str]:
        return pulumi.get(self, "google_service_account")

    @google_service_account.setter
    def google_service_account(self, value: Optional[str]):
        pulumi.set(self, "google_service_account", value)

    @property
    @pulumi.getter(name="usePreemptibleExecutors")
    def use_preemptible_executors(self) -> Optional[bool]:
        return pulumi.get(self, "use_preemptible_executors")

    @use_preemptible_executors.setter
    def use_preemptible_executors(self, value: Optional[bool]):
        pulumi.set(self, "use_preemptible_executors", value)

    @property
    @pulumi.getter(name="zoneId")
    def zone_id(self) -> Optional[str]:
        return pulumi.get(self, "zone_id")

    @zone_id.setter
    def zone_id(self, value: Optional[str]):
        pulumi.set(self, "zone_id", value)


@pulumi.input_type
class GetJobJobSettingsSettingsTaskNewClusterInitScriptArgs:
    def __init__(__self__, *,
                 abfss: Optional['GetJobJobSettingsSettingsTaskNewClusterInitScriptAbfssArgs'] = None,
                 dbfs: Optional['GetJobJobSettingsSettingsTaskNewClusterInitScriptDbfsArgs'] = None,
                 file: Optional['GetJobJobSettingsSettingsTaskNewClusterInitScriptFileArgs'] = None,
                 gcs: Optional['GetJobJobSettingsSettingsTaskNewClusterInitScriptGcsArgs'] = None,
                 s3: Optional['GetJobJobSettingsSettingsTaskNewClusterInitScriptS3Args'] = None):
        if abfss is not None:
            pulumi.set(__self__, "abfss", abfss)
        if dbfs is not None:
            pulumi.set(__self__, "dbfs", dbfs)
        if file is not None:
            pulumi.set(__self__, "file", file)
        if gcs is not None:
            pulumi.set(__self__, "gcs", gcs)
        if s3 is not None:
            pulumi.set(__self__, "s3", s3)

    @property
    @pulumi.getter
    def abfss(self) -> Optional['GetJobJobSettingsSettingsTaskNewClusterInitScriptAbfssArgs']:
        return pulumi.get(self, "abfss")

    @abfss.setter
    def abfss(self, value: Optional['GetJobJobSettingsSettingsTaskNewClusterInitScriptAbfssArgs']):
        pulumi.set(self, "abfss", value)

    @property
    @pulumi.getter
    def dbfs(self) -> Optional['GetJobJobSettingsSettingsTaskNewClusterInitScriptDbfsArgs']:
        return pulumi.get(self, "dbfs")

    @dbfs.setter
    def dbfs(self, value: Optional['GetJobJobSettingsSettingsTaskNewClusterInitScriptDbfsArgs']):
        pulumi.set(self, "dbfs", value)

    @property
    @pulumi.getter
    def file(self) -> Optional['GetJobJobSettingsSettingsTaskNewClusterInitScriptFileArgs']:
        return pulumi.get(self, "file")

    @file.setter
    def file(self, value: Optional['GetJobJobSettingsSettingsTaskNewClusterInitScriptFileArgs']):
        pulumi.set(self, "file", value)

    @property
    @pulumi.getter
    def gcs(self) -> Optional['GetJobJobSettingsSettingsTaskNewClusterInitScriptGcsArgs']:
        return pulumi.get(self, "gcs")

    @gcs.setter
    def gcs(self, value: Optional['GetJobJobSettingsSettingsTaskNewClusterInitScriptGcsArgs']):
        pulumi.set(self, "gcs", value)

    @property
    @pulumi.getter
    def s3(self) -> Optional['GetJobJobSettingsSettingsTaskNewClusterInitScriptS3Args']:
        return pulumi.get(self, "s3")

    @s3.setter
    def s3(self, value: Optional['GetJobJobSettingsSettingsTaskNewClusterInitScriptS3Args']):
        pulumi.set(self, "s3", value)


@pulumi.input_type
class GetJobJobSettingsSettingsTaskNewClusterInitScriptAbfssArgs:
    def __init__(__self__, *,
                 destination: Optional[str] = None):
        if destination is not None:
            pulumi.set(__self__, "destination", destination)

    @property
    @pulumi.getter
    def destination(self) -> Optional[str]:
        return pulumi.get(self, "destination")

    @destination.setter
    def destination(self, value: Optional[str]):
        pulumi.set(self, "destination", value)


@pulumi.input_type
class GetJobJobSettingsSettingsTaskNewClusterInitScriptDbfsArgs:
    def __init__(__self__, *,
                 destination: str):
        pulumi.set(__self__, "destination", destination)

    @property
    @pulumi.getter
    def destination(self) -> str:
        return pulumi.get(self, "destination")

    @destination.setter
    def destination(self, value: str):
        pulumi.set(self, "destination", value)


@pulumi.input_type
class GetJobJobSettingsSettingsTaskNewClusterInitScriptFileArgs:
    def __init__(__self__, *,
                 destination: Optional[str] = None):
        if destination is not None:
            pulumi.set(__self__, "destination", destination)

    @property
    @pulumi.getter
    def destination(self) -> Optional[str]:
        return pulumi.get(self, "destination")

    @destination.setter
    def destination(self, value: Optional[str]):
        pulumi.set(self, "destination", value)


@pulumi.input_type
class GetJobJobSettingsSettingsTaskNewClusterInitScriptGcsArgs:
    def __init__(__self__, *,
                 destination: Optional[str] = None):
        if destination is not None:
            pulumi.set(__self__, "destination", destination)

    @property
    @pulumi.getter
    def destination(self) -> Optional[str]:
        return pulumi.get(self, "destination")

    @destination.setter
    def destination(self, value: Optional[str]):
        pulumi.set(self, "destination", value)


@pulumi.input_type
class GetJobJobSettingsSettingsTaskNewClusterInitScriptS3Args:
    def __init__(__self__, *,
                 destination: str,
                 canned_acl: Optional[str] = None,
                 enable_encryption: Optional[bool] = None,
                 encryption_type: Optional[str] = None,
                 endpoint: Optional[str] = None,
                 kms_key: Optional[str] = None,
                 region: Optional[str] = None):
        pulumi.set(__self__, "destination", destination)
        if canned_acl is not None:
            pulumi.set(__self__, "canned_acl", canned_acl)
        if enable_encryption is not None:
            pulumi.set(__self__, "enable_encryption", enable_encryption)
        if encryption_type is not None:
            pulumi.set(__self__, "encryption_type", encryption_type)
        if endpoint is not None:
            pulumi.set(__self__, "endpoint", endpoint)
        if kms_key is not None:
            pulumi.set(__self__, "kms_key", kms_key)
        if region is not None:
            pulumi.set(__self__, "region", region)

    @property
    @pulumi.getter
    def destination(self) -> str:
        return pulumi.get(self, "destination")

    @destination.setter
    def destination(self, value: str):
        pulumi.set(self, "destination", value)

    @property
    @pulumi.getter(name="cannedAcl")
    def canned_acl(self) -> Optional[str]:
        return pulumi.get(self, "canned_acl")

    @canned_acl.setter
    def canned_acl(self, value: Optional[str]):
        pulumi.set(self, "canned_acl", value)

    @property
    @pulumi.getter(name="enableEncryption")
    def enable_encryption(self) -> Optional[bool]:
        return pulumi.get(self, "enable_encryption")

    @enable_encryption.setter
    def enable_encryption(self, value: Optional[bool]):
        pulumi.set(self, "enable_encryption", value)

    @property
    @pulumi.getter(name="encryptionType")
    def encryption_type(self) -> Optional[str]:
        return pulumi.get(self, "encryption_type")

    @encryption_type.setter
    def encryption_type(self, value: Optional[str]):
        pulumi.set(self, "encryption_type", value)

    @property
    @pulumi.getter
    def endpoint(self) -> Optional[str]:
        return pulumi.get(self, "endpoint")

    @endpoint.setter
    def endpoint(self, value: Optional[str]):
        pulumi.set(self, "endpoint", value)

    @property
    @pulumi.getter(name="kmsKey")
    def kms_key(self) -> Optional[str]:
        return pulumi.get(self, "kms_key")

    @kms_key.setter
    def kms_key(self, value: Optional[str]):
        pulumi.set(self, "kms_key", value)

    @property
    @pulumi.getter
    def region(self) -> Optional[str]:
        return pulumi.get(self, "region")

    @region.setter
    def region(self, value: Optional[str]):
        pulumi.set(self, "region", value)


@pulumi.input_type
class GetJobJobSettingsSettingsTaskNewClusterWorkloadTypeArgs:
    def __init__(__self__, *,
                 clients: 'GetJobJobSettingsSettingsTaskNewClusterWorkloadTypeClientsArgs'):
        pulumi.set(__self__, "clients", clients)

    @property
    @pulumi.getter
    def clients(self) -> 'GetJobJobSettingsSettingsTaskNewClusterWorkloadTypeClientsArgs':
        return pulumi.get(self, "clients")

    @clients.setter
    def clients(self, value: 'GetJobJobSettingsSettingsTaskNewClusterWorkloadTypeClientsArgs'):
        pulumi.set(self, "clients", value)


@pulumi.input_type
class GetJobJobSettingsSettingsTaskNewClusterWorkloadTypeClientsArgs:
    def __init__(__self__, *,
                 jobs: Optional[bool] = None,
                 notebooks: Optional[bool] = None):
        if jobs is not None:
            pulumi.set(__self__, "jobs", jobs)
        if notebooks is not None:
            pulumi.set(__self__, "notebooks", notebooks)

    @property
    @pulumi.getter
    def jobs(self) -> Optional[bool]:
        return pulumi.get(self, "jobs")

    @jobs.setter
    def jobs(self, value: Optional[bool]):
        pulumi.set(self, "jobs", value)

    @property
    @pulumi.getter
    def notebooks(self) -> Optional[bool]:
        return pulumi.get(self, "notebooks")

    @notebooks.setter
    def notebooks(self, value: Optional[bool]):
        pulumi.set(self, "notebooks", value)


@pulumi.input_type
class GetJobJobSettingsSettingsTaskNotebookTaskArgs:
    def __init__(__self__, *,
                 notebook_path: str,
                 base_parameters: Optional[Mapping[str, Any]] = None,
                 source: Optional[str] = None):
        pulumi.set(__self__, "notebook_path", notebook_path)
        if base_parameters is not None:
            pulumi.set(__self__, "base_parameters", base_parameters)
        if source is not None:
            pulumi.set(__self__, "source", source)

    @property
    @pulumi.getter(name="notebookPath")
    def notebook_path(self) -> str:
        return pulumi.get(self, "notebook_path")

    @notebook_path.setter
    def notebook_path(self, value: str):
        pulumi.set(self, "notebook_path", value)

    @property
    @pulumi.getter(name="baseParameters")
    def base_parameters(self) -> Optional[Mapping[str, Any]]:
        return pulumi.get(self, "base_parameters")

    @base_parameters.setter
    def base_parameters(self, value: Optional[Mapping[str, Any]]):
        pulumi.set(self, "base_parameters", value)

    @property
    @pulumi.getter
    def source(self) -> Optional[str]:
        return pulumi.get(self, "source")

    @source.setter
    def source(self, value: Optional[str]):
        pulumi.set(self, "source", value)


@pulumi.input_type
class GetJobJobSettingsSettingsTaskPipelineTaskArgs:
    def __init__(__self__, *,
                 pipeline_id: str):
        pulumi.set(__self__, "pipeline_id", pipeline_id)

    @property
    @pulumi.getter(name="pipelineId")
    def pipeline_id(self) -> str:
        return pulumi.get(self, "pipeline_id")

    @pipeline_id.setter
    def pipeline_id(self, value: str):
        pulumi.set(self, "pipeline_id", value)


@pulumi.input_type
class GetJobJobSettingsSettingsTaskPythonWheelTaskArgs:
    def __init__(__self__, *,
                 entry_point: Optional[str] = None,
                 named_parameters: Optional[Mapping[str, Any]] = None,
                 package_name: Optional[str] = None,
                 parameters: Optional[Sequence[str]] = None):
        if entry_point is not None:
            pulumi.set(__self__, "entry_point", entry_point)
        if named_parameters is not None:
            pulumi.set(__self__, "named_parameters", named_parameters)
        if package_name is not None:
            pulumi.set(__self__, "package_name", package_name)
        if parameters is not None:
            pulumi.set(__self__, "parameters", parameters)

    @property
    @pulumi.getter(name="entryPoint")
    def entry_point(self) -> Optional[str]:
        return pulumi.get(self, "entry_point")

    @entry_point.setter
    def entry_point(self, value: Optional[str]):
        pulumi.set(self, "entry_point", value)

    @property
    @pulumi.getter(name="namedParameters")
    def named_parameters(self) -> Optional[Mapping[str, Any]]:
        return pulumi.get(self, "named_parameters")

    @named_parameters.setter
    def named_parameters(self, value: Optional[Mapping[str, Any]]):
        pulumi.set(self, "named_parameters", value)

    @property
    @pulumi.getter(name="packageName")
    def package_name(self) -> Optional[str]:
        return pulumi.get(self, "package_name")

    @package_name.setter
    def package_name(self, value: Optional[str]):
        pulumi.set(self, "package_name", value)

    @property
    @pulumi.getter
    def parameters(self) -> Optional[Sequence[str]]:
        return pulumi.get(self, "parameters")

    @parameters.setter
    def parameters(self, value: Optional[Sequence[str]]):
        pulumi.set(self, "parameters", value)


@pulumi.input_type
class GetJobJobSettingsSettingsTaskSparkJarTaskArgs:
    def __init__(__self__, *,
                 jar_uri: Optional[str] = None,
                 main_class_name: Optional[str] = None,
                 parameters: Optional[Sequence[str]] = None):
        if jar_uri is not None:
            pulumi.set(__self__, "jar_uri", jar_uri)
        if main_class_name is not None:
            pulumi.set(__self__, "main_class_name", main_class_name)
        if parameters is not None:
            pulumi.set(__self__, "parameters", parameters)

    @property
    @pulumi.getter(name="jarUri")
    def jar_uri(self) -> Optional[str]:
        return pulumi.get(self, "jar_uri")

    @jar_uri.setter
    def jar_uri(self, value: Optional[str]):
        pulumi.set(self, "jar_uri", value)

    @property
    @pulumi.getter(name="mainClassName")
    def main_class_name(self) -> Optional[str]:
        return pulumi.get(self, "main_class_name")

    @main_class_name.setter
    def main_class_name(self, value: Optional[str]):
        pulumi.set(self, "main_class_name", value)

    @property
    @pulumi.getter
    def parameters(self) -> Optional[Sequence[str]]:
        return pulumi.get(self, "parameters")

    @parameters.setter
    def parameters(self, value: Optional[Sequence[str]]):
        pulumi.set(self, "parameters", value)


@pulumi.input_type
class GetJobJobSettingsSettingsTaskSparkPythonTaskArgs:
    def __init__(__self__, *,
                 python_file: str,
                 parameters: Optional[Sequence[str]] = None):
        pulumi.set(__self__, "python_file", python_file)
        if parameters is not None:
            pulumi.set(__self__, "parameters", parameters)

    @property
    @pulumi.getter(name="pythonFile")
    def python_file(self) -> str:
        return pulumi.get(self, "python_file")

    @python_file.setter
    def python_file(self, value: str):
        pulumi.set(self, "python_file", value)

    @property
    @pulumi.getter
    def parameters(self) -> Optional[Sequence[str]]:
        return pulumi.get(self, "parameters")

    @parameters.setter
    def parameters(self, value: Optional[Sequence[str]]):
        pulumi.set(self, "parameters", value)


@pulumi.input_type
class GetJobJobSettingsSettingsTaskSparkSubmitTaskArgs:
    def __init__(__self__, *,
                 parameters: Optional[Sequence[str]] = None):
        if parameters is not None:
            pulumi.set(__self__, "parameters", parameters)

    @property
    @pulumi.getter
    def parameters(self) -> Optional[Sequence[str]]:
        return pulumi.get(self, "parameters")

    @parameters.setter
    def parameters(self, value: Optional[Sequence[str]]):
        pulumi.set(self, "parameters", value)


@pulumi.input_type
class GetJobJobSettingsSettingsTaskSqlTaskArgs:
    def __init__(__self__, *,
                 alert: Optional['GetJobJobSettingsSettingsTaskSqlTaskAlertArgs'] = None,
                 dashboard: Optional['GetJobJobSettingsSettingsTaskSqlTaskDashboardArgs'] = None,
                 parameters: Optional[Mapping[str, Any]] = None,
                 query: Optional['GetJobJobSettingsSettingsTaskSqlTaskQueryArgs'] = None,
                 warehouse_id: Optional[str] = None):
        if alert is not None:
            pulumi.set(__self__, "alert", alert)
        if dashboard is not None:
            pulumi.set(__self__, "dashboard", dashboard)
        if parameters is not None:
            pulumi.set(__self__, "parameters", parameters)
        if query is not None:
            pulumi.set(__self__, "query", query)
        if warehouse_id is not None:
            pulumi.set(__self__, "warehouse_id", warehouse_id)

    @property
    @pulumi.getter
    def alert(self) -> Optional['GetJobJobSettingsSettingsTaskSqlTaskAlertArgs']:
        return pulumi.get(self, "alert")

    @alert.setter
    def alert(self, value: Optional['GetJobJobSettingsSettingsTaskSqlTaskAlertArgs']):
        pulumi.set(self, "alert", value)

    @property
    @pulumi.getter
    def dashboard(self) -> Optional['GetJobJobSettingsSettingsTaskSqlTaskDashboardArgs']:
        return pulumi.get(self, "dashboard")

    @dashboard.setter
    def dashboard(self, value: Optional['GetJobJobSettingsSettingsTaskSqlTaskDashboardArgs']):
        pulumi.set(self, "dashboard", value)

    @property
    @pulumi.getter
    def parameters(self) -> Optional[Mapping[str, Any]]:
        return pulumi.get(self, "parameters")

    @parameters.setter
    def parameters(self, value: Optional[Mapping[str, Any]]):
        pulumi.set(self, "parameters", value)

    @property
    @pulumi.getter
    def query(self) -> Optional['GetJobJobSettingsSettingsTaskSqlTaskQueryArgs']:
        return pulumi.get(self, "query")

    @query.setter
    def query(self, value: Optional['GetJobJobSettingsSettingsTaskSqlTaskQueryArgs']):
        pulumi.set(self, "query", value)

    @property
    @pulumi.getter(name="warehouseId")
    def warehouse_id(self) -> Optional[str]:
        return pulumi.get(self, "warehouse_id")

    @warehouse_id.setter
    def warehouse_id(self, value: Optional[str]):
        pulumi.set(self, "warehouse_id", value)


@pulumi.input_type
class GetJobJobSettingsSettingsTaskSqlTaskAlertArgs:
    def __init__(__self__, *,
                 alert_id: str):
        pulumi.set(__self__, "alert_id", alert_id)

    @property
    @pulumi.getter(name="alertId")
    def alert_id(self) -> str:
        return pulumi.get(self, "alert_id")

    @alert_id.setter
    def alert_id(self, value: str):
        pulumi.set(self, "alert_id", value)


@pulumi.input_type
class GetJobJobSettingsSettingsTaskSqlTaskDashboardArgs:
    def __init__(__self__, *,
                 dashboard_id: str):
        pulumi.set(__self__, "dashboard_id", dashboard_id)

    @property
    @pulumi.getter(name="dashboardId")
    def dashboard_id(self) -> str:
        return pulumi.get(self, "dashboard_id")

    @dashboard_id.setter
    def dashboard_id(self, value: str):
        pulumi.set(self, "dashboard_id", value)


@pulumi.input_type
class GetJobJobSettingsSettingsTaskSqlTaskQueryArgs:
    def __init__(__self__, *,
                 query_id: str):
        pulumi.set(__self__, "query_id", query_id)

    @property
    @pulumi.getter(name="queryId")
    def query_id(self) -> str:
        return pulumi.get(self, "query_id")

    @query_id.setter
    def query_id(self, value: str):
        pulumi.set(self, "query_id", value)


@pulumi.input_type
class GetJobJobSettingsSettingsWebhookNotificationsArgs:
    def __init__(__self__, *,
                 on_failures: Optional[Sequence['GetJobJobSettingsSettingsWebhookNotificationsOnFailureArgs']] = None,
                 on_starts: Optional[Sequence['GetJobJobSettingsSettingsWebhookNotificationsOnStartArgs']] = None,
                 on_successes: Optional[Sequence['GetJobJobSettingsSettingsWebhookNotificationsOnSuccessArgs']] = None):
        if on_failures is not None:
            pulumi.set(__self__, "on_failures", on_failures)
        if on_starts is not None:
            pulumi.set(__self__, "on_starts", on_starts)
        if on_successes is not None:
            pulumi.set(__self__, "on_successes", on_successes)

    @property
    @pulumi.getter(name="onFailures")
    def on_failures(self) -> Optional[Sequence['GetJobJobSettingsSettingsWebhookNotificationsOnFailureArgs']]:
        return pulumi.get(self, "on_failures")

    @on_failures.setter
    def on_failures(self, value: Optional[Sequence['GetJobJobSettingsSettingsWebhookNotificationsOnFailureArgs']]):
        pulumi.set(self, "on_failures", value)

    @property
    @pulumi.getter(name="onStarts")
    def on_starts(self) -> Optional[Sequence['GetJobJobSettingsSettingsWebhookNotificationsOnStartArgs']]:
        return pulumi.get(self, "on_starts")

    @on_starts.setter
    def on_starts(self, value: Optional[Sequence['GetJobJobSettingsSettingsWebhookNotificationsOnStartArgs']]):
        pulumi.set(self, "on_starts", value)

    @property
    @pulumi.getter(name="onSuccesses")
    def on_successes(self) -> Optional[Sequence['GetJobJobSettingsSettingsWebhookNotificationsOnSuccessArgs']]:
        return pulumi.get(self, "on_successes")

    @on_successes.setter
    def on_successes(self, value: Optional[Sequence['GetJobJobSettingsSettingsWebhookNotificationsOnSuccessArgs']]):
        pulumi.set(self, "on_successes", value)


@pulumi.input_type
class GetJobJobSettingsSettingsWebhookNotificationsOnFailureArgs:
    def __init__(__self__, *,
                 id: str):
        """
        :param str id: the id of Job if the resource was matched by name.
        """
        pulumi.set(__self__, "id", id)

    @property
    @pulumi.getter
    def id(self) -> str:
        """
        the id of Job if the resource was matched by name.
        """
        return pulumi.get(self, "id")

    @id.setter
    def id(self, value: str):
        pulumi.set(self, "id", value)


@pulumi.input_type
class GetJobJobSettingsSettingsWebhookNotificationsOnStartArgs:
    def __init__(__self__, *,
                 id: str):
        """
        :param str id: the id of Job if the resource was matched by name.
        """
        pulumi.set(__self__, "id", id)

    @property
    @pulumi.getter
    def id(self) -> str:
        """
        the id of Job if the resource was matched by name.
        """
        return pulumi.get(self, "id")

    @id.setter
    def id(self, value: str):
        pulumi.set(self, "id", value)


@pulumi.input_type
class GetJobJobSettingsSettingsWebhookNotificationsOnSuccessArgs:
    def __init__(__self__, *,
                 id: str):
        """
        :param str id: the id of Job if the resource was matched by name.
        """
        pulumi.set(__self__, "id", id)

    @property
    @pulumi.getter
    def id(self) -> str:
        """
        the id of Job if the resource was matched by name.
        """
        return pulumi.get(self, "id")

    @id.setter
    def id(self, value: str):
        pulumi.set(self, "id", value)


@pulumi.input_type
class GetShareObjectArgs:
    def __init__(__self__, *,
                 added_at: int,
                 added_by: str,
                 data_object_type: str,
                 name: str,
                 status: str,
                 cdf_enabled: Optional[bool] = None,
                 comment: Optional[str] = None,
                 history_data_sharing_status: Optional[str] = None,
                 partitions: Optional[Sequence['GetShareObjectPartitionArgs']] = None,
                 shared_as: Optional[str] = None,
                 start_version: Optional[int] = None):
        """
        :param str data_object_type: Type of the object.
        :param str name: The name of the share
        :param str comment: Description about the object.
        """
        pulumi.set(__self__, "added_at", added_at)
        pulumi.set(__self__, "added_by", added_by)
        pulumi.set(__self__, "data_object_type", data_object_type)
        pulumi.set(__self__, "name", name)
        pulumi.set(__self__, "status", status)
        if cdf_enabled is not None:
            pulumi.set(__self__, "cdf_enabled", cdf_enabled)
        if comment is not None:
            pulumi.set(__self__, "comment", comment)
        if history_data_sharing_status is not None:
            pulumi.set(__self__, "history_data_sharing_status", history_data_sharing_status)
        if partitions is not None:
            pulumi.set(__self__, "partitions", partitions)
        if shared_as is not None:
            pulumi.set(__self__, "shared_as", shared_as)
        if start_version is not None:
            pulumi.set(__self__, "start_version", start_version)

    @property
    @pulumi.getter(name="addedAt")
    def added_at(self) -> int:
        return pulumi.get(self, "added_at")

    @added_at.setter
    def added_at(self, value: int):
        pulumi.set(self, "added_at", value)

    @property
    @pulumi.getter(name="addedBy")
    def added_by(self) -> str:
        return pulumi.get(self, "added_by")

    @added_by.setter
    def added_by(self, value: str):
        pulumi.set(self, "added_by", value)

    @property
    @pulumi.getter(name="dataObjectType")
    def data_object_type(self) -> str:
        """
        Type of the object.
        """
        return pulumi.get(self, "data_object_type")

    @data_object_type.setter
    def data_object_type(self, value: str):
        pulumi.set(self, "data_object_type", value)

    @property
    @pulumi.getter
    def name(self) -> str:
        """
        The name of the share
        """
        return pulumi.get(self, "name")

    @name.setter
    def name(self, value: str):
        pulumi.set(self, "name", value)

    @property
    @pulumi.getter
    def status(self) -> str:
        return pulumi.get(self, "status")

    @status.setter
    def status(self, value: str):
        pulumi.set(self, "status", value)

    @property
    @pulumi.getter(name="cdfEnabled")
    def cdf_enabled(self) -> Optional[bool]:
        return pulumi.get(self, "cdf_enabled")

    @cdf_enabled.setter
    def cdf_enabled(self, value: Optional[bool]):
        pulumi.set(self, "cdf_enabled", value)

    @property
    @pulumi.getter
    def comment(self) -> Optional[str]:
        """
        Description about the object.
        """
        return pulumi.get(self, "comment")

    @comment.setter
    def comment(self, value: Optional[str]):
        pulumi.set(self, "comment", value)

    @property
    @pulumi.getter(name="historyDataSharingStatus")
    def history_data_sharing_status(self) -> Optional[str]:
        return pulumi.get(self, "history_data_sharing_status")

    @history_data_sharing_status.setter
    def history_data_sharing_status(self, value: Optional[str]):
        pulumi.set(self, "history_data_sharing_status", value)

    @property
    @pulumi.getter
    def partitions(self) -> Optional[Sequence['GetShareObjectPartitionArgs']]:
        return pulumi.get(self, "partitions")

    @partitions.setter
    def partitions(self, value: Optional[Sequence['GetShareObjectPartitionArgs']]):
        pulumi.set(self, "partitions", value)

    @property
    @pulumi.getter(name="sharedAs")
    def shared_as(self) -> Optional[str]:
        return pulumi.get(self, "shared_as")

    @shared_as.setter
    def shared_as(self, value: Optional[str]):
        pulumi.set(self, "shared_as", value)

    @property
    @pulumi.getter(name="startVersion")
    def start_version(self) -> Optional[int]:
        return pulumi.get(self, "start_version")

    @start_version.setter
    def start_version(self, value: Optional[int]):
        pulumi.set(self, "start_version", value)


@pulumi.input_type
class GetShareObjectPartitionArgs:
    def __init__(__self__, *,
                 values: Sequence['GetShareObjectPartitionValueArgs']):
        pulumi.set(__self__, "values", values)

    @property
    @pulumi.getter
    def values(self) -> Sequence['GetShareObjectPartitionValueArgs']:
        return pulumi.get(self, "values")

    @values.setter
    def values(self, value: Sequence['GetShareObjectPartitionValueArgs']):
        pulumi.set(self, "values", value)


@pulumi.input_type
class GetShareObjectPartitionValueArgs:
    def __init__(__self__, *,
                 name: str,
                 op: str,
                 recipient_property_key: Optional[str] = None,
                 value: Optional[str] = None):
        """
        :param str name: The name of the share
        """
        pulumi.set(__self__, "name", name)
        pulumi.set(__self__, "op", op)
        if recipient_property_key is not None:
            pulumi.set(__self__, "recipient_property_key", recipient_property_key)
        if value is not None:
            pulumi.set(__self__, "value", value)

    @property
    @pulumi.getter
    def name(self) -> str:
        """
        The name of the share
        """
        return pulumi.get(self, "name")

    @name.setter
    def name(self, value: str):
        pulumi.set(self, "name", value)

    @property
    @pulumi.getter
    def op(self) -> str:
        return pulumi.get(self, "op")

    @op.setter
    def op(self, value: str):
        pulumi.set(self, "op", value)

    @property
    @pulumi.getter(name="recipientPropertyKey")
    def recipient_property_key(self) -> Optional[str]:
        return pulumi.get(self, "recipient_property_key")

    @recipient_property_key.setter
    def recipient_property_key(self, value: Optional[str]):
        pulumi.set(self, "recipient_property_key", value)

    @property
    @pulumi.getter
    def value(self) -> Optional[str]:
        return pulumi.get(self, "value")

    @value.setter
    def value(self, value: Optional[str]):
        pulumi.set(self, "value", value)


@pulumi.input_type
class GetSqlWarehouseChannelArgs:
    def __init__(__self__, *,
                 name: Optional[str] = None):
        """
        :param str name: Name of the Databricks SQL release channel. Possible values are: `CHANNEL_NAME_PREVIEW` and `CHANNEL_NAME_CURRENT`. Default is `CHANNEL_NAME_CURRENT`.
        """
        if name is not None:
            pulumi.set(__self__, "name", name)

    @property
    @pulumi.getter
    def name(self) -> Optional[str]:
        """
        Name of the Databricks SQL release channel. Possible values are: `CHANNEL_NAME_PREVIEW` and `CHANNEL_NAME_CURRENT`. Default is `CHANNEL_NAME_CURRENT`.
        """
        return pulumi.get(self, "name")

    @name.setter
    def name(self, value: Optional[str]):
        pulumi.set(self, "name", value)


@pulumi.input_type
class GetSqlWarehouseOdbcParamsArgs:
    def __init__(__self__, *,
                 path: str,
                 port: int,
                 protocol: str,
                 host: Optional[str] = None,
                 hostname: Optional[str] = None):
        pulumi.set(__self__, "path", path)
        pulumi.set(__self__, "port", port)
        pulumi.set(__self__, "protocol", protocol)
        if host is not None:
            pulumi.set(__self__, "host", host)
        if hostname is not None:
            pulumi.set(__self__, "hostname", hostname)

    @property
    @pulumi.getter
    def path(self) -> str:
        return pulumi.get(self, "path")

    @path.setter
    def path(self, value: str):
        pulumi.set(self, "path", value)

    @property
    @pulumi.getter
    def port(self) -> int:
        return pulumi.get(self, "port")

    @port.setter
    def port(self, value: int):
        pulumi.set(self, "port", value)

    @property
    @pulumi.getter
    def protocol(self) -> str:
        return pulumi.get(self, "protocol")

    @protocol.setter
    def protocol(self, value: str):
        pulumi.set(self, "protocol", value)

    @property
    @pulumi.getter
    def host(self) -> Optional[str]:
        return pulumi.get(self, "host")

    @host.setter
    def host(self, value: Optional[str]):
        pulumi.set(self, "host", value)

    @property
    @pulumi.getter
    def hostname(self) -> Optional[str]:
        return pulumi.get(self, "hostname")

    @hostname.setter
    def hostname(self, value: Optional[str]):
        pulumi.set(self, "hostname", value)


@pulumi.input_type
class GetSqlWarehouseTagsArgs:
    def __init__(__self__, *,
                 custom_tags: Sequence['GetSqlWarehouseTagsCustomTagArgs']):
        pulumi.set(__self__, "custom_tags", custom_tags)

    @property
    @pulumi.getter(name="customTags")
    def custom_tags(self) -> Sequence['GetSqlWarehouseTagsCustomTagArgs']:
        return pulumi.get(self, "custom_tags")

    @custom_tags.setter
    def custom_tags(self, value: Sequence['GetSqlWarehouseTagsCustomTagArgs']):
        pulumi.set(self, "custom_tags", value)


@pulumi.input_type
class GetSqlWarehouseTagsCustomTagArgs:
    def __init__(__self__, *,
                 key: str,
                 value: str):
        pulumi.set(__self__, "key", key)
        pulumi.set(__self__, "value", value)

    @property
    @pulumi.getter
    def key(self) -> str:
        return pulumi.get(self, "key")

    @key.setter
    def key(self, value: str):
        pulumi.set(self, "key", value)

    @property
    @pulumi.getter
    def value(self) -> str:
        return pulumi.get(self, "value")

    @value.setter
    def value(self, value: str):
        pulumi.set(self, "value", value)


