# coding=utf-8
# --------------------------------------------------------------------------
# Copyright (c) Microsoft Corporation. All rights reserved.
# Licensed under the MIT License. See License.txt in the project root for license information.
# Code generated by Microsoft (R) AutoRest Code Generator.
# Changes may cause incorrect behavior and will be lost if the code is regenerated.
# --------------------------------------------------------------------------

from azure.core.exceptions import HttpResponseError
import msrest.serialization


class WorkspaceConnectionPropertiesV2(msrest.serialization.Model):
    """WorkspaceConnectionPropertiesV2.

    You probably want to use the sub-classes and not this class directly. Known
    sub-classes are: AADAuthTypeWorkspaceConnectionProperties, AccessKeyAuthTypeWorkspaceConnectionProperties, AccountKeyAuthTypeWorkspaceConnectionProperties, ApiKeyAuthWorkspaceConnectionProperties, CustomKeysWorkspaceConnectionProperties, ManagedIdentityAuthTypeWorkspaceConnectionProperties, NoneAuthTypeWorkspaceConnectionProperties, OAuth2AuthTypeWorkspaceConnectionProperties, PATAuthTypeWorkspaceConnectionProperties, SASAuthTypeWorkspaceConnectionProperties, ServicePrincipalAuthTypeWorkspaceConnectionProperties, UsernamePasswordAuthTypeWorkspaceConnectionProperties.

    Variables are only populated by the server, and will be ignored when sending a request.

    All required parameters must be populated in order to send to Azure.

    :ivar auth_type: Required. Authentication type of the connection target.Constant filled by
     server. Possible values include: "PAT", "ManagedIdentity", "UsernamePassword", "None", "SAS",
     "AccountKey", "ServicePrincipal", "AccessKey", "ApiKey", "CustomKeys", "OAuth2", "AAD".
    :vartype auth_type: str or ~azure.mgmt.machinelearningservices.models.ConnectionAuthType
    :ivar category: Category of the connection. Possible values include: "PythonFeed",
     "ContainerRegistry", "Git", "S3", "Snowflake", "AzureSqlDb", "AzureSynapseAnalytics",
     "AzureMySqlDb", "AzurePostgresDb", "ADLSGen2", "Redis", "ApiKey", "AzureOpenAI", "AIServices",
     "CognitiveSearch", "CognitiveService", "CustomKeys", "AzureBlob", "AzureOneLake", "CosmosDb",
     "CosmosDbMongoDbApi", "AzureDataExplorer", "AzureMariaDb", "AzureDatabricksDeltaLake",
     "AzureSqlMi", "AzureTableStorage", "AmazonRdsForOracle", "AmazonRdsForSqlServer",
     "AmazonRedshift", "Db2", "Drill", "GoogleBigQuery", "Greenplum", "Hbase", "Hive", "Impala",
     "Informix", "MariaDb", "MicrosoftAccess", "MySql", "Netezza", "Oracle", "Phoenix",
     "PostgreSql", "Presto", "SapOpenHub", "SapBw", "SapHana", "SapTable", "Spark", "SqlServer",
     "Sybase", "Teradata", "Vertica", "Pinecone", "Cassandra", "Couchbase", "MongoDbV2",
     "MongoDbAtlas", "AmazonS3Compatible", "FileServer", "FtpServer", "GoogleCloudStorage", "Hdfs",
     "OracleCloudStorage", "Sftp", "GenericHttp", "ODataRest", "Odbc", "GenericRest", "AmazonMws",
     "Concur", "Dynamics", "DynamicsAx", "DynamicsCrm", "GoogleAdWords", "Hubspot", "Jira",
     "Magento", "Marketo", "Office365", "Eloqua", "Responsys", "OracleServiceCloud", "PayPal",
     "QuickBooks", "Salesforce", "SalesforceServiceCloud", "SalesforceMarketingCloud",
     "SapCloudForCustomer", "SapEcc", "ServiceNow", "SharePointOnlineList", "Shopify", "Square",
     "WebTable", "Xero", "Zoho", "GenericContainerRegistry", "Elasticsearch", "OpenAI", "Serp",
     "BingLLMSearch", "Serverless", "ManagedOnlineEndpoint".
    :vartype category: str or ~azure.mgmt.machinelearningservices.models.ConnectionCategory
    :ivar created_by_workspace_arm_id:
    :vartype created_by_workspace_arm_id: str
    :ivar error:
    :vartype error: str
    :ivar expiry_time:
    :vartype expiry_time: ~datetime.datetime
    :ivar group: Group based on connection category. Possible values include: "Azure", "AzureAI",
     "Database", "NoSQL", "File", "GenericProtocol", "ServicesAndApps".
    :vartype group: str or ~azure.mgmt.machinelearningservices.models.ConnectionGroup
    :ivar is_shared_to_all:
    :vartype is_shared_to_all: bool
    :ivar metadata: Store user metadata for this connection.
    :vartype metadata: dict[str, str]
    :ivar pe_requirement: Possible values include: "Required", "NotRequired", "NotApplicable".
    :vartype pe_requirement: str or ~azure.mgmt.machinelearningservices.models.ManagedPERequirement
    :ivar pe_status: Possible values include: "Inactive", "Active", "NotApplicable".
    :vartype pe_status: str or ~azure.mgmt.machinelearningservices.models.ManagedPEStatus
    :ivar shared_user_list:
    :vartype shared_user_list: list[str]
    :ivar target:
    :vartype target: str
    :ivar use_workspace_managed_identity:
    :vartype use_workspace_managed_identity: bool
    """

    _validation = {
        'auth_type': {'required': True},
        'created_by_workspace_arm_id': {'readonly': True},
        'group': {'readonly': True},
    }

    _attribute_map = {
        'auth_type': {'key': 'authType', 'type': 'str'},
        'category': {'key': 'category', 'type': 'str'},
        'created_by_workspace_arm_id': {'key': 'createdByWorkspaceArmId', 'type': 'str'},
        'error': {'key': 'error', 'type': 'str'},
        'expiry_time': {'key': 'expiryTime', 'type': 'iso-8601'},
        'group': {'key': 'group', 'type': 'str'},
        'is_shared_to_all': {'key': 'isSharedToAll', 'type': 'bool'},
        'metadata': {'key': 'metadata', 'type': '{str}'},
        'pe_requirement': {'key': 'peRequirement', 'type': 'str'},
        'pe_status': {'key': 'peStatus', 'type': 'str'},
        'shared_user_list': {'key': 'sharedUserList', 'type': '[str]'},
        'target': {'key': 'target', 'type': 'str'},
        'use_workspace_managed_identity': {'key': 'useWorkspaceManagedIdentity', 'type': 'bool'},
    }

    _subtype_map = {
        'auth_type': {'AAD': 'AADAuthTypeWorkspaceConnectionProperties', 'AccessKey': 'AccessKeyAuthTypeWorkspaceConnectionProperties', 'AccountKey': 'AccountKeyAuthTypeWorkspaceConnectionProperties', 'ApiKey': 'ApiKeyAuthWorkspaceConnectionProperties', 'CustomKeys': 'CustomKeysWorkspaceConnectionProperties', 'ManagedIdentity': 'ManagedIdentityAuthTypeWorkspaceConnectionProperties', 'None': 'NoneAuthTypeWorkspaceConnectionProperties', 'OAuth2': 'OAuth2AuthTypeWorkspaceConnectionProperties', 'PAT': 'PATAuthTypeWorkspaceConnectionProperties', 'SAS': 'SASAuthTypeWorkspaceConnectionProperties', 'ServicePrincipal': 'ServicePrincipalAuthTypeWorkspaceConnectionProperties', 'UsernamePassword': 'UsernamePasswordAuthTypeWorkspaceConnectionProperties'}
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword category: Category of the connection. Possible values include: "PythonFeed",
         "ContainerRegistry", "Git", "S3", "Snowflake", "AzureSqlDb", "AzureSynapseAnalytics",
         "AzureMySqlDb", "AzurePostgresDb", "ADLSGen2", "Redis", "ApiKey", "AzureOpenAI", "AIServices",
         "CognitiveSearch", "CognitiveService", "CustomKeys", "AzureBlob", "AzureOneLake", "CosmosDb",
         "CosmosDbMongoDbApi", "AzureDataExplorer", "AzureMariaDb", "AzureDatabricksDeltaLake",
         "AzureSqlMi", "AzureTableStorage", "AmazonRdsForOracle", "AmazonRdsForSqlServer",
         "AmazonRedshift", "Db2", "Drill", "GoogleBigQuery", "Greenplum", "Hbase", "Hive", "Impala",
         "Informix", "MariaDb", "MicrosoftAccess", "MySql", "Netezza", "Oracle", "Phoenix",
         "PostgreSql", "Presto", "SapOpenHub", "SapBw", "SapHana", "SapTable", "Spark", "SqlServer",
         "Sybase", "Teradata", "Vertica", "Pinecone", "Cassandra", "Couchbase", "MongoDbV2",
         "MongoDbAtlas", "AmazonS3Compatible", "FileServer", "FtpServer", "GoogleCloudStorage", "Hdfs",
         "OracleCloudStorage", "Sftp", "GenericHttp", "ODataRest", "Odbc", "GenericRest", "AmazonMws",
         "Concur", "Dynamics", "DynamicsAx", "DynamicsCrm", "GoogleAdWords", "Hubspot", "Jira",
         "Magento", "Marketo", "Office365", "Eloqua", "Responsys", "OracleServiceCloud", "PayPal",
         "QuickBooks", "Salesforce", "SalesforceServiceCloud", "SalesforceMarketingCloud",
         "SapCloudForCustomer", "SapEcc", "ServiceNow", "SharePointOnlineList", "Shopify", "Square",
         "WebTable", "Xero", "Zoho", "GenericContainerRegistry", "Elasticsearch", "OpenAI", "Serp",
         "BingLLMSearch", "Serverless", "ManagedOnlineEndpoint".
        :paramtype category: str or ~azure.mgmt.machinelearningservices.models.ConnectionCategory
        :keyword error:
        :paramtype error: str
        :keyword expiry_time:
        :paramtype expiry_time: ~datetime.datetime
        :keyword is_shared_to_all:
        :paramtype is_shared_to_all: bool
        :keyword metadata: Store user metadata for this connection.
        :paramtype metadata: dict[str, str]
        :keyword pe_requirement: Possible values include: "Required", "NotRequired", "NotApplicable".
        :paramtype pe_requirement: str or
         ~azure.mgmt.machinelearningservices.models.ManagedPERequirement
        :keyword pe_status: Possible values include: "Inactive", "Active", "NotApplicable".
        :paramtype pe_status: str or ~azure.mgmt.machinelearningservices.models.ManagedPEStatus
        :keyword shared_user_list:
        :paramtype shared_user_list: list[str]
        :keyword target:
        :paramtype target: str
        :keyword use_workspace_managed_identity:
        :paramtype use_workspace_managed_identity: bool
        """
        super(WorkspaceConnectionPropertiesV2, self).__init__(**kwargs)
        self.auth_type = None  # type: Optional[str]
        self.category = kwargs.get('category', None)
        self.created_by_workspace_arm_id = None
        self.error = kwargs.get('error', None)
        self.expiry_time = kwargs.get('expiry_time', None)
        self.group = None
        self.is_shared_to_all = kwargs.get('is_shared_to_all', None)
        self.metadata = kwargs.get('metadata', None)
        self.pe_requirement = kwargs.get('pe_requirement', None)
        self.pe_status = kwargs.get('pe_status', None)
        self.shared_user_list = kwargs.get('shared_user_list', None)
        self.target = kwargs.get('target', None)
        self.use_workspace_managed_identity = kwargs.get('use_workspace_managed_identity', None)


class AADAuthTypeWorkspaceConnectionProperties(WorkspaceConnectionPropertiesV2):
    """This connection type covers the AAD auth for any applicable Azure service.

    Variables are only populated by the server, and will be ignored when sending a request.

    All required parameters must be populated in order to send to Azure.

    :ivar auth_type: Required. Authentication type of the connection target.Constant filled by
     server. Possible values include: "PAT", "ManagedIdentity", "UsernamePassword", "None", "SAS",
     "AccountKey", "ServicePrincipal", "AccessKey", "ApiKey", "CustomKeys", "OAuth2", "AAD".
    :vartype auth_type: str or ~azure.mgmt.machinelearningservices.models.ConnectionAuthType
    :ivar category: Category of the connection. Possible values include: "PythonFeed",
     "ContainerRegistry", "Git", "S3", "Snowflake", "AzureSqlDb", "AzureSynapseAnalytics",
     "AzureMySqlDb", "AzurePostgresDb", "ADLSGen2", "Redis", "ApiKey", "AzureOpenAI", "AIServices",
     "CognitiveSearch", "CognitiveService", "CustomKeys", "AzureBlob", "AzureOneLake", "CosmosDb",
     "CosmosDbMongoDbApi", "AzureDataExplorer", "AzureMariaDb", "AzureDatabricksDeltaLake",
     "AzureSqlMi", "AzureTableStorage", "AmazonRdsForOracle", "AmazonRdsForSqlServer",
     "AmazonRedshift", "Db2", "Drill", "GoogleBigQuery", "Greenplum", "Hbase", "Hive", "Impala",
     "Informix", "MariaDb", "MicrosoftAccess", "MySql", "Netezza", "Oracle", "Phoenix",
     "PostgreSql", "Presto", "SapOpenHub", "SapBw", "SapHana", "SapTable", "Spark", "SqlServer",
     "Sybase", "Teradata", "Vertica", "Pinecone", "Cassandra", "Couchbase", "MongoDbV2",
     "MongoDbAtlas", "AmazonS3Compatible", "FileServer", "FtpServer", "GoogleCloudStorage", "Hdfs",
     "OracleCloudStorage", "Sftp", "GenericHttp", "ODataRest", "Odbc", "GenericRest", "AmazonMws",
     "Concur", "Dynamics", "DynamicsAx", "DynamicsCrm", "GoogleAdWords", "Hubspot", "Jira",
     "Magento", "Marketo", "Office365", "Eloqua", "Responsys", "OracleServiceCloud", "PayPal",
     "QuickBooks", "Salesforce", "SalesforceServiceCloud", "SalesforceMarketingCloud",
     "SapCloudForCustomer", "SapEcc", "ServiceNow", "SharePointOnlineList", "Shopify", "Square",
     "WebTable", "Xero", "Zoho", "GenericContainerRegistry", "Elasticsearch", "OpenAI", "Serp",
     "BingLLMSearch", "Serverless", "ManagedOnlineEndpoint".
    :vartype category: str or ~azure.mgmt.machinelearningservices.models.ConnectionCategory
    :ivar created_by_workspace_arm_id:
    :vartype created_by_workspace_arm_id: str
    :ivar error:
    :vartype error: str
    :ivar expiry_time:
    :vartype expiry_time: ~datetime.datetime
    :ivar group: Group based on connection category. Possible values include: "Azure", "AzureAI",
     "Database", "NoSQL", "File", "GenericProtocol", "ServicesAndApps".
    :vartype group: str or ~azure.mgmt.machinelearningservices.models.ConnectionGroup
    :ivar is_shared_to_all:
    :vartype is_shared_to_all: bool
    :ivar metadata: Store user metadata for this connection.
    :vartype metadata: dict[str, str]
    :ivar pe_requirement: Possible values include: "Required", "NotRequired", "NotApplicable".
    :vartype pe_requirement: str or ~azure.mgmt.machinelearningservices.models.ManagedPERequirement
    :ivar pe_status: Possible values include: "Inactive", "Active", "NotApplicable".
    :vartype pe_status: str or ~azure.mgmt.machinelearningservices.models.ManagedPEStatus
    :ivar shared_user_list:
    :vartype shared_user_list: list[str]
    :ivar target:
    :vartype target: str
    :ivar use_workspace_managed_identity:
    :vartype use_workspace_managed_identity: bool
    """

    _validation = {
        'auth_type': {'required': True},
        'created_by_workspace_arm_id': {'readonly': True},
        'group': {'readonly': True},
    }

    _attribute_map = {
        'auth_type': {'key': 'authType', 'type': 'str'},
        'category': {'key': 'category', 'type': 'str'},
        'created_by_workspace_arm_id': {'key': 'createdByWorkspaceArmId', 'type': 'str'},
        'error': {'key': 'error', 'type': 'str'},
        'expiry_time': {'key': 'expiryTime', 'type': 'iso-8601'},
        'group': {'key': 'group', 'type': 'str'},
        'is_shared_to_all': {'key': 'isSharedToAll', 'type': 'bool'},
        'metadata': {'key': 'metadata', 'type': '{str}'},
        'pe_requirement': {'key': 'peRequirement', 'type': 'str'},
        'pe_status': {'key': 'peStatus', 'type': 'str'},
        'shared_user_list': {'key': 'sharedUserList', 'type': '[str]'},
        'target': {'key': 'target', 'type': 'str'},
        'use_workspace_managed_identity': {'key': 'useWorkspaceManagedIdentity', 'type': 'bool'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword category: Category of the connection. Possible values include: "PythonFeed",
         "ContainerRegistry", "Git", "S3", "Snowflake", "AzureSqlDb", "AzureSynapseAnalytics",
         "AzureMySqlDb", "AzurePostgresDb", "ADLSGen2", "Redis", "ApiKey", "AzureOpenAI", "AIServices",
         "CognitiveSearch", "CognitiveService", "CustomKeys", "AzureBlob", "AzureOneLake", "CosmosDb",
         "CosmosDbMongoDbApi", "AzureDataExplorer", "AzureMariaDb", "AzureDatabricksDeltaLake",
         "AzureSqlMi", "AzureTableStorage", "AmazonRdsForOracle", "AmazonRdsForSqlServer",
         "AmazonRedshift", "Db2", "Drill", "GoogleBigQuery", "Greenplum", "Hbase", "Hive", "Impala",
         "Informix", "MariaDb", "MicrosoftAccess", "MySql", "Netezza", "Oracle", "Phoenix",
         "PostgreSql", "Presto", "SapOpenHub", "SapBw", "SapHana", "SapTable", "Spark", "SqlServer",
         "Sybase", "Teradata", "Vertica", "Pinecone", "Cassandra", "Couchbase", "MongoDbV2",
         "MongoDbAtlas", "AmazonS3Compatible", "FileServer", "FtpServer", "GoogleCloudStorage", "Hdfs",
         "OracleCloudStorage", "Sftp", "GenericHttp", "ODataRest", "Odbc", "GenericRest", "AmazonMws",
         "Concur", "Dynamics", "DynamicsAx", "DynamicsCrm", "GoogleAdWords", "Hubspot", "Jira",
         "Magento", "Marketo", "Office365", "Eloqua", "Responsys", "OracleServiceCloud", "PayPal",
         "QuickBooks", "Salesforce", "SalesforceServiceCloud", "SalesforceMarketingCloud",
         "SapCloudForCustomer", "SapEcc", "ServiceNow", "SharePointOnlineList", "Shopify", "Square",
         "WebTable", "Xero", "Zoho", "GenericContainerRegistry", "Elasticsearch", "OpenAI", "Serp",
         "BingLLMSearch", "Serverless", "ManagedOnlineEndpoint".
        :paramtype category: str or ~azure.mgmt.machinelearningservices.models.ConnectionCategory
        :keyword error:
        :paramtype error: str
        :keyword expiry_time:
        :paramtype expiry_time: ~datetime.datetime
        :keyword is_shared_to_all:
        :paramtype is_shared_to_all: bool
        :keyword metadata: Store user metadata for this connection.
        :paramtype metadata: dict[str, str]
        :keyword pe_requirement: Possible values include: "Required", "NotRequired", "NotApplicable".
        :paramtype pe_requirement: str or
         ~azure.mgmt.machinelearningservices.models.ManagedPERequirement
        :keyword pe_status: Possible values include: "Inactive", "Active", "NotApplicable".
        :paramtype pe_status: str or ~azure.mgmt.machinelearningservices.models.ManagedPEStatus
        :keyword shared_user_list:
        :paramtype shared_user_list: list[str]
        :keyword target:
        :paramtype target: str
        :keyword use_workspace_managed_identity:
        :paramtype use_workspace_managed_identity: bool
        """
        super(AADAuthTypeWorkspaceConnectionProperties, self).__init__(**kwargs)
        self.auth_type = 'AAD'  # type: str


class AccessKeyAuthTypeWorkspaceConnectionProperties(WorkspaceConnectionPropertiesV2):
    """AccessKeyAuthTypeWorkspaceConnectionProperties.

    Variables are only populated by the server, and will be ignored when sending a request.

    All required parameters must be populated in order to send to Azure.

    :ivar auth_type: Required. Authentication type of the connection target.Constant filled by
     server. Possible values include: "PAT", "ManagedIdentity", "UsernamePassword", "None", "SAS",
     "AccountKey", "ServicePrincipal", "AccessKey", "ApiKey", "CustomKeys", "OAuth2", "AAD".
    :vartype auth_type: str or ~azure.mgmt.machinelearningservices.models.ConnectionAuthType
    :ivar category: Category of the connection. Possible values include: "PythonFeed",
     "ContainerRegistry", "Git", "S3", "Snowflake", "AzureSqlDb", "AzureSynapseAnalytics",
     "AzureMySqlDb", "AzurePostgresDb", "ADLSGen2", "Redis", "ApiKey", "AzureOpenAI", "AIServices",
     "CognitiveSearch", "CognitiveService", "CustomKeys", "AzureBlob", "AzureOneLake", "CosmosDb",
     "CosmosDbMongoDbApi", "AzureDataExplorer", "AzureMariaDb", "AzureDatabricksDeltaLake",
     "AzureSqlMi", "AzureTableStorage", "AmazonRdsForOracle", "AmazonRdsForSqlServer",
     "AmazonRedshift", "Db2", "Drill", "GoogleBigQuery", "Greenplum", "Hbase", "Hive", "Impala",
     "Informix", "MariaDb", "MicrosoftAccess", "MySql", "Netezza", "Oracle", "Phoenix",
     "PostgreSql", "Presto", "SapOpenHub", "SapBw", "SapHana", "SapTable", "Spark", "SqlServer",
     "Sybase", "Teradata", "Vertica", "Pinecone", "Cassandra", "Couchbase", "MongoDbV2",
     "MongoDbAtlas", "AmazonS3Compatible", "FileServer", "FtpServer", "GoogleCloudStorage", "Hdfs",
     "OracleCloudStorage", "Sftp", "GenericHttp", "ODataRest", "Odbc", "GenericRest", "AmazonMws",
     "Concur", "Dynamics", "DynamicsAx", "DynamicsCrm", "GoogleAdWords", "Hubspot", "Jira",
     "Magento", "Marketo", "Office365", "Eloqua", "Responsys", "OracleServiceCloud", "PayPal",
     "QuickBooks", "Salesforce", "SalesforceServiceCloud", "SalesforceMarketingCloud",
     "SapCloudForCustomer", "SapEcc", "ServiceNow", "SharePointOnlineList", "Shopify", "Square",
     "WebTable", "Xero", "Zoho", "GenericContainerRegistry", "Elasticsearch", "OpenAI", "Serp",
     "BingLLMSearch", "Serverless", "ManagedOnlineEndpoint".
    :vartype category: str or ~azure.mgmt.machinelearningservices.models.ConnectionCategory
    :ivar created_by_workspace_arm_id:
    :vartype created_by_workspace_arm_id: str
    :ivar error:
    :vartype error: str
    :ivar expiry_time:
    :vartype expiry_time: ~datetime.datetime
    :ivar group: Group based on connection category. Possible values include: "Azure", "AzureAI",
     "Database", "NoSQL", "File", "GenericProtocol", "ServicesAndApps".
    :vartype group: str or ~azure.mgmt.machinelearningservices.models.ConnectionGroup
    :ivar is_shared_to_all:
    :vartype is_shared_to_all: bool
    :ivar metadata: Store user metadata for this connection.
    :vartype metadata: dict[str, str]
    :ivar pe_requirement: Possible values include: "Required", "NotRequired", "NotApplicable".
    :vartype pe_requirement: str or ~azure.mgmt.machinelearningservices.models.ManagedPERequirement
    :ivar pe_status: Possible values include: "Inactive", "Active", "NotApplicable".
    :vartype pe_status: str or ~azure.mgmt.machinelearningservices.models.ManagedPEStatus
    :ivar shared_user_list:
    :vartype shared_user_list: list[str]
    :ivar target:
    :vartype target: str
    :ivar use_workspace_managed_identity:
    :vartype use_workspace_managed_identity: bool
    :ivar credentials:
    :vartype credentials: ~azure.mgmt.machinelearningservices.models.WorkspaceConnectionAccessKey
    """

    _validation = {
        'auth_type': {'required': True},
        'created_by_workspace_arm_id': {'readonly': True},
        'group': {'readonly': True},
    }

    _attribute_map = {
        'auth_type': {'key': 'authType', 'type': 'str'},
        'category': {'key': 'category', 'type': 'str'},
        'created_by_workspace_arm_id': {'key': 'createdByWorkspaceArmId', 'type': 'str'},
        'error': {'key': 'error', 'type': 'str'},
        'expiry_time': {'key': 'expiryTime', 'type': 'iso-8601'},
        'group': {'key': 'group', 'type': 'str'},
        'is_shared_to_all': {'key': 'isSharedToAll', 'type': 'bool'},
        'metadata': {'key': 'metadata', 'type': '{str}'},
        'pe_requirement': {'key': 'peRequirement', 'type': 'str'},
        'pe_status': {'key': 'peStatus', 'type': 'str'},
        'shared_user_list': {'key': 'sharedUserList', 'type': '[str]'},
        'target': {'key': 'target', 'type': 'str'},
        'use_workspace_managed_identity': {'key': 'useWorkspaceManagedIdentity', 'type': 'bool'},
        'credentials': {'key': 'credentials', 'type': 'WorkspaceConnectionAccessKey'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword category: Category of the connection. Possible values include: "PythonFeed",
         "ContainerRegistry", "Git", "S3", "Snowflake", "AzureSqlDb", "AzureSynapseAnalytics",
         "AzureMySqlDb", "AzurePostgresDb", "ADLSGen2", "Redis", "ApiKey", "AzureOpenAI", "AIServices",
         "CognitiveSearch", "CognitiveService", "CustomKeys", "AzureBlob", "AzureOneLake", "CosmosDb",
         "CosmosDbMongoDbApi", "AzureDataExplorer", "AzureMariaDb", "AzureDatabricksDeltaLake",
         "AzureSqlMi", "AzureTableStorage", "AmazonRdsForOracle", "AmazonRdsForSqlServer",
         "AmazonRedshift", "Db2", "Drill", "GoogleBigQuery", "Greenplum", "Hbase", "Hive", "Impala",
         "Informix", "MariaDb", "MicrosoftAccess", "MySql", "Netezza", "Oracle", "Phoenix",
         "PostgreSql", "Presto", "SapOpenHub", "SapBw", "SapHana", "SapTable", "Spark", "SqlServer",
         "Sybase", "Teradata", "Vertica", "Pinecone", "Cassandra", "Couchbase", "MongoDbV2",
         "MongoDbAtlas", "AmazonS3Compatible", "FileServer", "FtpServer", "GoogleCloudStorage", "Hdfs",
         "OracleCloudStorage", "Sftp", "GenericHttp", "ODataRest", "Odbc", "GenericRest", "AmazonMws",
         "Concur", "Dynamics", "DynamicsAx", "DynamicsCrm", "GoogleAdWords", "Hubspot", "Jira",
         "Magento", "Marketo", "Office365", "Eloqua", "Responsys", "OracleServiceCloud", "PayPal",
         "QuickBooks", "Salesforce", "SalesforceServiceCloud", "SalesforceMarketingCloud",
         "SapCloudForCustomer", "SapEcc", "ServiceNow", "SharePointOnlineList", "Shopify", "Square",
         "WebTable", "Xero", "Zoho", "GenericContainerRegistry", "Elasticsearch", "OpenAI", "Serp",
         "BingLLMSearch", "Serverless", "ManagedOnlineEndpoint".
        :paramtype category: str or ~azure.mgmt.machinelearningservices.models.ConnectionCategory
        :keyword error:
        :paramtype error: str
        :keyword expiry_time:
        :paramtype expiry_time: ~datetime.datetime
        :keyword is_shared_to_all:
        :paramtype is_shared_to_all: bool
        :keyword metadata: Store user metadata for this connection.
        :paramtype metadata: dict[str, str]
        :keyword pe_requirement: Possible values include: "Required", "NotRequired", "NotApplicable".
        :paramtype pe_requirement: str or
         ~azure.mgmt.machinelearningservices.models.ManagedPERequirement
        :keyword pe_status: Possible values include: "Inactive", "Active", "NotApplicable".
        :paramtype pe_status: str or ~azure.mgmt.machinelearningservices.models.ManagedPEStatus
        :keyword shared_user_list:
        :paramtype shared_user_list: list[str]
        :keyword target:
        :paramtype target: str
        :keyword use_workspace_managed_identity:
        :paramtype use_workspace_managed_identity: bool
        :keyword credentials:
        :paramtype credentials: ~azure.mgmt.machinelearningservices.models.WorkspaceConnectionAccessKey
        """
        super(AccessKeyAuthTypeWorkspaceConnectionProperties, self).__init__(**kwargs)
        self.auth_type = 'AccessKey'  # type: str
        self.credentials = kwargs.get('credentials', None)


class AccountApiKeys(msrest.serialization.Model):
    """AccountApiKeys.

    :ivar key1:
    :vartype key1: str
    :ivar key2:
    :vartype key2: str
    """

    _attribute_map = {
        'key1': {'key': 'key1', 'type': 'str'},
        'key2': {'key': 'key2', 'type': 'str'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword key1:
        :paramtype key1: str
        :keyword key2:
        :paramtype key2: str
        """
        super(AccountApiKeys, self).__init__(**kwargs)
        self.key1 = kwargs.get('key1', None)
        self.key2 = kwargs.get('key2', None)


class AccountKeyAuthTypeWorkspaceConnectionProperties(WorkspaceConnectionPropertiesV2):
    """This connection type covers the account key connection for Azure storage.

    Variables are only populated by the server, and will be ignored when sending a request.

    All required parameters must be populated in order to send to Azure.

    :ivar auth_type: Required. Authentication type of the connection target.Constant filled by
     server. Possible values include: "PAT", "ManagedIdentity", "UsernamePassword", "None", "SAS",
     "AccountKey", "ServicePrincipal", "AccessKey", "ApiKey", "CustomKeys", "OAuth2", "AAD".
    :vartype auth_type: str or ~azure.mgmt.machinelearningservices.models.ConnectionAuthType
    :ivar category: Category of the connection. Possible values include: "PythonFeed",
     "ContainerRegistry", "Git", "S3", "Snowflake", "AzureSqlDb", "AzureSynapseAnalytics",
     "AzureMySqlDb", "AzurePostgresDb", "ADLSGen2", "Redis", "ApiKey", "AzureOpenAI", "AIServices",
     "CognitiveSearch", "CognitiveService", "CustomKeys", "AzureBlob", "AzureOneLake", "CosmosDb",
     "CosmosDbMongoDbApi", "AzureDataExplorer", "AzureMariaDb", "AzureDatabricksDeltaLake",
     "AzureSqlMi", "AzureTableStorage", "AmazonRdsForOracle", "AmazonRdsForSqlServer",
     "AmazonRedshift", "Db2", "Drill", "GoogleBigQuery", "Greenplum", "Hbase", "Hive", "Impala",
     "Informix", "MariaDb", "MicrosoftAccess", "MySql", "Netezza", "Oracle", "Phoenix",
     "PostgreSql", "Presto", "SapOpenHub", "SapBw", "SapHana", "SapTable", "Spark", "SqlServer",
     "Sybase", "Teradata", "Vertica", "Pinecone", "Cassandra", "Couchbase", "MongoDbV2",
     "MongoDbAtlas", "AmazonS3Compatible", "FileServer", "FtpServer", "GoogleCloudStorage", "Hdfs",
     "OracleCloudStorage", "Sftp", "GenericHttp", "ODataRest", "Odbc", "GenericRest", "AmazonMws",
     "Concur", "Dynamics", "DynamicsAx", "DynamicsCrm", "GoogleAdWords", "Hubspot", "Jira",
     "Magento", "Marketo", "Office365", "Eloqua", "Responsys", "OracleServiceCloud", "PayPal",
     "QuickBooks", "Salesforce", "SalesforceServiceCloud", "SalesforceMarketingCloud",
     "SapCloudForCustomer", "SapEcc", "ServiceNow", "SharePointOnlineList", "Shopify", "Square",
     "WebTable", "Xero", "Zoho", "GenericContainerRegistry", "Elasticsearch", "OpenAI", "Serp",
     "BingLLMSearch", "Serverless", "ManagedOnlineEndpoint".
    :vartype category: str or ~azure.mgmt.machinelearningservices.models.ConnectionCategory
    :ivar created_by_workspace_arm_id:
    :vartype created_by_workspace_arm_id: str
    :ivar error:
    :vartype error: str
    :ivar expiry_time:
    :vartype expiry_time: ~datetime.datetime
    :ivar group: Group based on connection category. Possible values include: "Azure", "AzureAI",
     "Database", "NoSQL", "File", "GenericProtocol", "ServicesAndApps".
    :vartype group: str or ~azure.mgmt.machinelearningservices.models.ConnectionGroup
    :ivar is_shared_to_all:
    :vartype is_shared_to_all: bool
    :ivar metadata: Store user metadata for this connection.
    :vartype metadata: dict[str, str]
    :ivar pe_requirement: Possible values include: "Required", "NotRequired", "NotApplicable".
    :vartype pe_requirement: str or ~azure.mgmt.machinelearningservices.models.ManagedPERequirement
    :ivar pe_status: Possible values include: "Inactive", "Active", "NotApplicable".
    :vartype pe_status: str or ~azure.mgmt.machinelearningservices.models.ManagedPEStatus
    :ivar shared_user_list:
    :vartype shared_user_list: list[str]
    :ivar target:
    :vartype target: str
    :ivar use_workspace_managed_identity:
    :vartype use_workspace_managed_identity: bool
    :ivar credentials: Account key object for workspace connection credential.
    :vartype credentials: ~azure.mgmt.machinelearningservices.models.WorkspaceConnectionAccountKey
    """

    _validation = {
        'auth_type': {'required': True},
        'created_by_workspace_arm_id': {'readonly': True},
        'group': {'readonly': True},
    }

    _attribute_map = {
        'auth_type': {'key': 'authType', 'type': 'str'},
        'category': {'key': 'category', 'type': 'str'},
        'created_by_workspace_arm_id': {'key': 'createdByWorkspaceArmId', 'type': 'str'},
        'error': {'key': 'error', 'type': 'str'},
        'expiry_time': {'key': 'expiryTime', 'type': 'iso-8601'},
        'group': {'key': 'group', 'type': 'str'},
        'is_shared_to_all': {'key': 'isSharedToAll', 'type': 'bool'},
        'metadata': {'key': 'metadata', 'type': '{str}'},
        'pe_requirement': {'key': 'peRequirement', 'type': 'str'},
        'pe_status': {'key': 'peStatus', 'type': 'str'},
        'shared_user_list': {'key': 'sharedUserList', 'type': '[str]'},
        'target': {'key': 'target', 'type': 'str'},
        'use_workspace_managed_identity': {'key': 'useWorkspaceManagedIdentity', 'type': 'bool'},
        'credentials': {'key': 'credentials', 'type': 'WorkspaceConnectionAccountKey'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword category: Category of the connection. Possible values include: "PythonFeed",
         "ContainerRegistry", "Git", "S3", "Snowflake", "AzureSqlDb", "AzureSynapseAnalytics",
         "AzureMySqlDb", "AzurePostgresDb", "ADLSGen2", "Redis", "ApiKey", "AzureOpenAI", "AIServices",
         "CognitiveSearch", "CognitiveService", "CustomKeys", "AzureBlob", "AzureOneLake", "CosmosDb",
         "CosmosDbMongoDbApi", "AzureDataExplorer", "AzureMariaDb", "AzureDatabricksDeltaLake",
         "AzureSqlMi", "AzureTableStorage", "AmazonRdsForOracle", "AmazonRdsForSqlServer",
         "AmazonRedshift", "Db2", "Drill", "GoogleBigQuery", "Greenplum", "Hbase", "Hive", "Impala",
         "Informix", "MariaDb", "MicrosoftAccess", "MySql", "Netezza", "Oracle", "Phoenix",
         "PostgreSql", "Presto", "SapOpenHub", "SapBw", "SapHana", "SapTable", "Spark", "SqlServer",
         "Sybase", "Teradata", "Vertica", "Pinecone", "Cassandra", "Couchbase", "MongoDbV2",
         "MongoDbAtlas", "AmazonS3Compatible", "FileServer", "FtpServer", "GoogleCloudStorage", "Hdfs",
         "OracleCloudStorage", "Sftp", "GenericHttp", "ODataRest", "Odbc", "GenericRest", "AmazonMws",
         "Concur", "Dynamics", "DynamicsAx", "DynamicsCrm", "GoogleAdWords", "Hubspot", "Jira",
         "Magento", "Marketo", "Office365", "Eloqua", "Responsys", "OracleServiceCloud", "PayPal",
         "QuickBooks", "Salesforce", "SalesforceServiceCloud", "SalesforceMarketingCloud",
         "SapCloudForCustomer", "SapEcc", "ServiceNow", "SharePointOnlineList", "Shopify", "Square",
         "WebTable", "Xero", "Zoho", "GenericContainerRegistry", "Elasticsearch", "OpenAI", "Serp",
         "BingLLMSearch", "Serverless", "ManagedOnlineEndpoint".
        :paramtype category: str or ~azure.mgmt.machinelearningservices.models.ConnectionCategory
        :keyword error:
        :paramtype error: str
        :keyword expiry_time:
        :paramtype expiry_time: ~datetime.datetime
        :keyword is_shared_to_all:
        :paramtype is_shared_to_all: bool
        :keyword metadata: Store user metadata for this connection.
        :paramtype metadata: dict[str, str]
        :keyword pe_requirement: Possible values include: "Required", "NotRequired", "NotApplicable".
        :paramtype pe_requirement: str or
         ~azure.mgmt.machinelearningservices.models.ManagedPERequirement
        :keyword pe_status: Possible values include: "Inactive", "Active", "NotApplicable".
        :paramtype pe_status: str or ~azure.mgmt.machinelearningservices.models.ManagedPEStatus
        :keyword shared_user_list:
        :paramtype shared_user_list: list[str]
        :keyword target:
        :paramtype target: str
        :keyword use_workspace_managed_identity:
        :paramtype use_workspace_managed_identity: bool
        :keyword credentials: Account key object for workspace connection credential.
        :paramtype credentials:
         ~azure.mgmt.machinelearningservices.models.WorkspaceConnectionAccountKey
        """
        super(AccountKeyAuthTypeWorkspaceConnectionProperties, self).__init__(**kwargs)
        self.auth_type = 'AccountKey'  # type: str
        self.credentials = kwargs.get('credentials', None)


class DatastoreCredentials(msrest.serialization.Model):
    """Base definition for datastore credentials.

    You probably want to use the sub-classes and not this class directly. Known
    sub-classes are: AccountKeyDatastoreCredentials, CertificateDatastoreCredentials, NoneDatastoreCredentials, SasDatastoreCredentials, ServicePrincipalDatastoreCredentials.

    All required parameters must be populated in order to send to Azure.

    :ivar credentials_type: Required. [Required] Credential type used to authentication with
     storage.Constant filled by server. Possible values include: "AccountKey", "Certificate",
     "None", "Sas", "ServicePrincipal".
    :vartype credentials_type: str or ~azure.mgmt.machinelearningservices.models.CredentialsType
    """

    _validation = {
        'credentials_type': {'required': True},
    }

    _attribute_map = {
        'credentials_type': {'key': 'credentialsType', 'type': 'str'},
    }

    _subtype_map = {
        'credentials_type': {'AccountKey': 'AccountKeyDatastoreCredentials', 'Certificate': 'CertificateDatastoreCredentials', 'None': 'NoneDatastoreCredentials', 'Sas': 'SasDatastoreCredentials', 'ServicePrincipal': 'ServicePrincipalDatastoreCredentials'}
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        """
        super(DatastoreCredentials, self).__init__(**kwargs)
        self.credentials_type = None  # type: Optional[str]


class AccountKeyDatastoreCredentials(DatastoreCredentials):
    """Account key datastore credentials configuration.

    All required parameters must be populated in order to send to Azure.

    :ivar credentials_type: Required. [Required] Credential type used to authentication with
     storage.Constant filled by server. Possible values include: "AccountKey", "Certificate",
     "None", "Sas", "ServicePrincipal".
    :vartype credentials_type: str or ~azure.mgmt.machinelearningservices.models.CredentialsType
    :ivar secrets: Required. [Required] Storage account secrets.
    :vartype secrets: ~azure.mgmt.machinelearningservices.models.AccountKeyDatastoreSecrets
    """

    _validation = {
        'credentials_type': {'required': True},
        'secrets': {'required': True},
    }

    _attribute_map = {
        'credentials_type': {'key': 'credentialsType', 'type': 'str'},
        'secrets': {'key': 'secrets', 'type': 'AccountKeyDatastoreSecrets'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword secrets: Required. [Required] Storage account secrets.
        :paramtype secrets: ~azure.mgmt.machinelearningservices.models.AccountKeyDatastoreSecrets
        """
        super(AccountKeyDatastoreCredentials, self).__init__(**kwargs)
        self.credentials_type = 'AccountKey'  # type: str
        self.secrets = kwargs['secrets']


class DatastoreSecrets(msrest.serialization.Model):
    """Base definition for datastore secrets.

    You probably want to use the sub-classes and not this class directly. Known
    sub-classes are: AccountKeyDatastoreSecrets, CertificateDatastoreSecrets, SasDatastoreSecrets, ServicePrincipalDatastoreSecrets.

    All required parameters must be populated in order to send to Azure.

    :ivar secrets_type: Required. [Required] Credential type used to authentication with
     storage.Constant filled by server. Possible values include: "AccountKey", "Certificate", "Sas",
     "ServicePrincipal".
    :vartype secrets_type: str or ~azure.mgmt.machinelearningservices.models.SecretsType
    """

    _validation = {
        'secrets_type': {'required': True},
    }

    _attribute_map = {
        'secrets_type': {'key': 'secretsType', 'type': 'str'},
    }

    _subtype_map = {
        'secrets_type': {'AccountKey': 'AccountKeyDatastoreSecrets', 'Certificate': 'CertificateDatastoreSecrets', 'Sas': 'SasDatastoreSecrets', 'ServicePrincipal': 'ServicePrincipalDatastoreSecrets'}
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        """
        super(DatastoreSecrets, self).__init__(**kwargs)
        self.secrets_type = None  # type: Optional[str]


class AccountKeyDatastoreSecrets(DatastoreSecrets):
    """Datastore account key secrets.

    All required parameters must be populated in order to send to Azure.

    :ivar secrets_type: Required. [Required] Credential type used to authentication with
     storage.Constant filled by server. Possible values include: "AccountKey", "Certificate", "Sas",
     "ServicePrincipal".
    :vartype secrets_type: str or ~azure.mgmt.machinelearningservices.models.SecretsType
    :ivar key: Storage account key.
    :vartype key: str
    """

    _validation = {
        'secrets_type': {'required': True},
    }

    _attribute_map = {
        'secrets_type': {'key': 'secretsType', 'type': 'str'},
        'key': {'key': 'key', 'type': 'str'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword key: Storage account key.
        :paramtype key: str
        """
        super(AccountKeyDatastoreSecrets, self).__init__(**kwargs)
        self.secrets_type = 'AccountKey'  # type: str
        self.key = kwargs.get('key', None)


class AcrDetails(msrest.serialization.Model):
    """Details of ACR account to be used for the Registry.

    :ivar system_created_acr_account: Details of system created ACR account to be used for the
     Registry.
    :vartype system_created_acr_account:
     ~azure.mgmt.machinelearningservices.models.SystemCreatedAcrAccount
    :ivar user_created_acr_account: Details of user created ACR account to be used for the
     Registry.
    :vartype user_created_acr_account:
     ~azure.mgmt.machinelearningservices.models.UserCreatedAcrAccount
    """

    _attribute_map = {
        'system_created_acr_account': {'key': 'systemCreatedAcrAccount', 'type': 'SystemCreatedAcrAccount'},
        'user_created_acr_account': {'key': 'userCreatedAcrAccount', 'type': 'UserCreatedAcrAccount'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword system_created_acr_account: Details of system created ACR account to be used for the
         Registry.
        :paramtype system_created_acr_account:
         ~azure.mgmt.machinelearningservices.models.SystemCreatedAcrAccount
        :keyword user_created_acr_account: Details of user created ACR account to be used for the
         Registry.
        :paramtype user_created_acr_account:
         ~azure.mgmt.machinelearningservices.models.UserCreatedAcrAccount
        """
        super(AcrDetails, self).__init__(**kwargs)
        self.system_created_acr_account = kwargs.get('system_created_acr_account', None)
        self.user_created_acr_account = kwargs.get('user_created_acr_account', None)


class ActualCapacityInfo(msrest.serialization.Model):
    """ActualCapacityInfo.

    :ivar total: Gets or sets the total number of instances (scale units) regardless of
     provisioning state or whether current group payload version matches the target group payload.
    :vartype total: int
    :ivar succeeded: Gets or sets the number of instances (scale units) which have Succeeded
     provisioning state and target group payload.
    :vartype succeeded: int
    :ivar failed: Gets or sets the number of instances (scale units) which have Failed provisioning
     state and have target group payload.
    :vartype failed: int
    :ivar outdated_succeeded: Gets or sets the number of instances (scale units) which have
     Succeeded provisioning state but do not have target group payload.
    :vartype outdated_succeeded: int
    :ivar outdated_failed: Gets or sets the number of instances (scale units) which have Failed
     provisioning state but do not have target group payload.
    :vartype outdated_failed: int
    """

    _attribute_map = {
        'total': {'key': 'total', 'type': 'int'},
        'succeeded': {'key': 'succeeded', 'type': 'int'},
        'failed': {'key': 'failed', 'type': 'int'},
        'outdated_succeeded': {'key': 'outdatedSucceeded', 'type': 'int'},
        'outdated_failed': {'key': 'outdatedFailed', 'type': 'int'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword total: Gets or sets the total number of instances (scale units) regardless of
         provisioning state or whether current group payload version matches the target group payload.
        :paramtype total: int
        :keyword succeeded: Gets or sets the number of instances (scale units) which have Succeeded
         provisioning state and target group payload.
        :paramtype succeeded: int
        :keyword failed: Gets or sets the number of instances (scale units) which have Failed
         provisioning state and have target group payload.
        :paramtype failed: int
        :keyword outdated_succeeded: Gets or sets the number of instances (scale units) which have
         Succeeded provisioning state but do not have target group payload.
        :paramtype outdated_succeeded: int
        :keyword outdated_failed: Gets or sets the number of instances (scale units) which have Failed
         provisioning state but do not have target group payload.
        :paramtype outdated_failed: int
        """
        super(ActualCapacityInfo, self).__init__(**kwargs)
        self.total = kwargs.get('total', 0)
        self.succeeded = kwargs.get('succeeded', 0)
        self.failed = kwargs.get('failed', 0)
        self.outdated_succeeded = kwargs.get('outdated_succeeded', 0)
        self.outdated_failed = kwargs.get('outdated_failed', 0)


class AKSSchema(msrest.serialization.Model):
    """AKSSchema.

    :ivar properties: AKS properties.
    :vartype properties: ~azure.mgmt.machinelearningservices.models.AKSSchemaProperties
    """

    _attribute_map = {
        'properties': {'key': 'properties', 'type': 'AKSSchemaProperties'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword properties: AKS properties.
        :paramtype properties: ~azure.mgmt.machinelearningservices.models.AKSSchemaProperties
        """
        super(AKSSchema, self).__init__(**kwargs)
        self.properties = kwargs.get('properties', None)


class Compute(msrest.serialization.Model):
    """Machine Learning compute object.

    You probably want to use the sub-classes and not this class directly. Known
    sub-classes are: AKS, AmlCompute, ComputeInstance, DataFactory, DataLakeAnalytics, Databricks, HDInsight, Kubernetes, SynapseSpark, VirtualMachine.

    Variables are only populated by the server, and will be ignored when sending a request.

    All required parameters must be populated in order to send to Azure.

    :ivar compute_type: Required. The type of compute.Constant filled by server. Possible values
     include: "AKS", "Kubernetes", "AmlCompute", "ComputeInstance", "DataFactory", "VirtualMachine",
     "HDInsight", "Databricks", "DataLakeAnalytics", "SynapseSpark".
    :vartype compute_type: str or ~azure.mgmt.machinelearningservices.models.ComputeType
    :ivar compute_location: Location for the underlying compute.
    :vartype compute_location: str
    :ivar provisioning_state: The provision state of the cluster. Valid values are Unknown,
     Updating, Provisioning, Succeeded, and Failed. Possible values include: "Unknown", "Updating",
     "Creating", "Deleting", "Succeeded", "Failed", "Canceled".
    :vartype provisioning_state: str or
     ~azure.mgmt.machinelearningservices.models.ProvisioningState
    :ivar description: The description of the Machine Learning compute.
    :vartype description: str
    :ivar created_on: The time at which the compute was created.
    :vartype created_on: ~datetime.datetime
    :ivar modified_on: The time at which the compute was last modified.
    :vartype modified_on: ~datetime.datetime
    :ivar resource_id: ARM resource id of the underlying compute.
    :vartype resource_id: str
    :ivar provisioning_errors: Errors during provisioning.
    :vartype provisioning_errors: list[~azure.mgmt.machinelearningservices.models.ErrorResponse]
    :ivar is_attached_compute: Indicating whether the compute was provisioned by user and brought
     from outside if true, or machine learning service provisioned it if false.
    :vartype is_attached_compute: bool
    :ivar disable_local_auth: Opt-out of local authentication and ensure customers can use only MSI
     and AAD exclusively for authentication.
    :vartype disable_local_auth: bool
    """

    _validation = {
        'compute_type': {'required': True},
        'provisioning_state': {'readonly': True},
        'created_on': {'readonly': True},
        'modified_on': {'readonly': True},
        'provisioning_errors': {'readonly': True},
        'is_attached_compute': {'readonly': True},
    }

    _attribute_map = {
        'compute_type': {'key': 'computeType', 'type': 'str'},
        'compute_location': {'key': 'computeLocation', 'type': 'str'},
        'provisioning_state': {'key': 'provisioningState', 'type': 'str'},
        'description': {'key': 'description', 'type': 'str'},
        'created_on': {'key': 'createdOn', 'type': 'iso-8601'},
        'modified_on': {'key': 'modifiedOn', 'type': 'iso-8601'},
        'resource_id': {'key': 'resourceId', 'type': 'str'},
        'provisioning_errors': {'key': 'provisioningErrors', 'type': '[ErrorResponse]'},
        'is_attached_compute': {'key': 'isAttachedCompute', 'type': 'bool'},
        'disable_local_auth': {'key': 'disableLocalAuth', 'type': 'bool'},
    }

    _subtype_map = {
        'compute_type': {'AKS': 'AKS', 'AmlCompute': 'AmlCompute', 'ComputeInstance': 'ComputeInstance', 'DataFactory': 'DataFactory', 'DataLakeAnalytics': 'DataLakeAnalytics', 'Databricks': 'Databricks', 'HDInsight': 'HDInsight', 'Kubernetes': 'Kubernetes', 'SynapseSpark': 'SynapseSpark', 'VirtualMachine': 'VirtualMachine'}
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword compute_location: Location for the underlying compute.
        :paramtype compute_location: str
        :keyword description: The description of the Machine Learning compute.
        :paramtype description: str
        :keyword resource_id: ARM resource id of the underlying compute.
        :paramtype resource_id: str
        :keyword disable_local_auth: Opt-out of local authentication and ensure customers can use only
         MSI and AAD exclusively for authentication.
        :paramtype disable_local_auth: bool
        """
        super(Compute, self).__init__(**kwargs)
        self.compute_type = None  # type: Optional[str]
        self.compute_location = kwargs.get('compute_location', None)
        self.provisioning_state = None
        self.description = kwargs.get('description', None)
        self.created_on = None
        self.modified_on = None
        self.resource_id = kwargs.get('resource_id', None)
        self.provisioning_errors = None
        self.is_attached_compute = None
        self.disable_local_auth = kwargs.get('disable_local_auth', None)


class AKS(Compute, AKSSchema):
    """A Machine Learning compute based on AKS.

    Variables are only populated by the server, and will be ignored when sending a request.

    All required parameters must be populated in order to send to Azure.

    :ivar properties: AKS properties.
    :vartype properties: ~azure.mgmt.machinelearningservices.models.AKSSchemaProperties
    :ivar compute_type: Required. The type of compute.Constant filled by server. Possible values
     include: "AKS", "Kubernetes", "AmlCompute", "ComputeInstance", "DataFactory", "VirtualMachine",
     "HDInsight", "Databricks", "DataLakeAnalytics", "SynapseSpark".
    :vartype compute_type: str or ~azure.mgmt.machinelearningservices.models.ComputeType
    :ivar compute_location: Location for the underlying compute.
    :vartype compute_location: str
    :ivar provisioning_state: The provision state of the cluster. Valid values are Unknown,
     Updating, Provisioning, Succeeded, and Failed. Possible values include: "Unknown", "Updating",
     "Creating", "Deleting", "Succeeded", "Failed", "Canceled".
    :vartype provisioning_state: str or
     ~azure.mgmt.machinelearningservices.models.ProvisioningState
    :ivar description: The description of the Machine Learning compute.
    :vartype description: str
    :ivar created_on: The time at which the compute was created.
    :vartype created_on: ~datetime.datetime
    :ivar modified_on: The time at which the compute was last modified.
    :vartype modified_on: ~datetime.datetime
    :ivar resource_id: ARM resource id of the underlying compute.
    :vartype resource_id: str
    :ivar provisioning_errors: Errors during provisioning.
    :vartype provisioning_errors: list[~azure.mgmt.machinelearningservices.models.ErrorResponse]
    :ivar is_attached_compute: Indicating whether the compute was provisioned by user and brought
     from outside if true, or machine learning service provisioned it if false.
    :vartype is_attached_compute: bool
    :ivar disable_local_auth: Opt-out of local authentication and ensure customers can use only MSI
     and AAD exclusively for authentication.
    :vartype disable_local_auth: bool
    """

    _validation = {
        'compute_type': {'required': True},
        'provisioning_state': {'readonly': True},
        'created_on': {'readonly': True},
        'modified_on': {'readonly': True},
        'provisioning_errors': {'readonly': True},
        'is_attached_compute': {'readonly': True},
    }

    _attribute_map = {
        'properties': {'key': 'properties', 'type': 'AKSSchemaProperties'},
        'compute_type': {'key': 'computeType', 'type': 'str'},
        'compute_location': {'key': 'computeLocation', 'type': 'str'},
        'provisioning_state': {'key': 'provisioningState', 'type': 'str'},
        'description': {'key': 'description', 'type': 'str'},
        'created_on': {'key': 'createdOn', 'type': 'iso-8601'},
        'modified_on': {'key': 'modifiedOn', 'type': 'iso-8601'},
        'resource_id': {'key': 'resourceId', 'type': 'str'},
        'provisioning_errors': {'key': 'provisioningErrors', 'type': '[ErrorResponse]'},
        'is_attached_compute': {'key': 'isAttachedCompute', 'type': 'bool'},
        'disable_local_auth': {'key': 'disableLocalAuth', 'type': 'bool'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword properties: AKS properties.
        :paramtype properties: ~azure.mgmt.machinelearningservices.models.AKSSchemaProperties
        :keyword compute_location: Location for the underlying compute.
        :paramtype compute_location: str
        :keyword description: The description of the Machine Learning compute.
        :paramtype description: str
        :keyword resource_id: ARM resource id of the underlying compute.
        :paramtype resource_id: str
        :keyword disable_local_auth: Opt-out of local authentication and ensure customers can use only
         MSI and AAD exclusively for authentication.
        :paramtype disable_local_auth: bool
        """
        super(AKS, self).__init__(**kwargs)
        self.properties = kwargs.get('properties', None)
        self.compute_type = 'AKS'  # type: str
        self.compute_location = kwargs.get('compute_location', None)
        self.provisioning_state = None
        self.description = kwargs.get('description', None)
        self.created_on = None
        self.modified_on = None
        self.resource_id = kwargs.get('resource_id', None)
        self.provisioning_errors = None
        self.is_attached_compute = None
        self.disable_local_auth = kwargs.get('disable_local_auth', None)


class AksComputeSecretsProperties(msrest.serialization.Model):
    """Properties of AksComputeSecrets.

    :ivar user_kube_config: Content of kubeconfig file that can be used to connect to the
     Kubernetes cluster.
    :vartype user_kube_config: str
    :ivar admin_kube_config: Content of kubeconfig file that can be used to connect to the
     Kubernetes cluster.
    :vartype admin_kube_config: str
    :ivar image_pull_secret_name: Image registry pull secret.
    :vartype image_pull_secret_name: str
    """

    _attribute_map = {
        'user_kube_config': {'key': 'userKubeConfig', 'type': 'str'},
        'admin_kube_config': {'key': 'adminKubeConfig', 'type': 'str'},
        'image_pull_secret_name': {'key': 'imagePullSecretName', 'type': 'str'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword user_kube_config: Content of kubeconfig file that can be used to connect to the
         Kubernetes cluster.
        :paramtype user_kube_config: str
        :keyword admin_kube_config: Content of kubeconfig file that can be used to connect to the
         Kubernetes cluster.
        :paramtype admin_kube_config: str
        :keyword image_pull_secret_name: Image registry pull secret.
        :paramtype image_pull_secret_name: str
        """
        super(AksComputeSecretsProperties, self).__init__(**kwargs)
        self.user_kube_config = kwargs.get('user_kube_config', None)
        self.admin_kube_config = kwargs.get('admin_kube_config', None)
        self.image_pull_secret_name = kwargs.get('image_pull_secret_name', None)


class ComputeSecrets(msrest.serialization.Model):
    """Secrets related to a Machine Learning compute. Might differ for every type of compute.

    You probably want to use the sub-classes and not this class directly. Known
    sub-classes are: AksComputeSecrets, DatabricksComputeSecrets, VirtualMachineSecrets.

    All required parameters must be populated in order to send to Azure.

    :ivar compute_type: Required. The type of compute.Constant filled by server. Possible values
     include: "AKS", "Kubernetes", "AmlCompute", "ComputeInstance", "DataFactory", "VirtualMachine",
     "HDInsight", "Databricks", "DataLakeAnalytics", "SynapseSpark".
    :vartype compute_type: str or ~azure.mgmt.machinelearningservices.models.ComputeType
    """

    _validation = {
        'compute_type': {'required': True},
    }

    _attribute_map = {
        'compute_type': {'key': 'computeType', 'type': 'str'},
    }

    _subtype_map = {
        'compute_type': {'AKS': 'AksComputeSecrets', 'Databricks': 'DatabricksComputeSecrets', 'VirtualMachine': 'VirtualMachineSecrets'}
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        """
        super(ComputeSecrets, self).__init__(**kwargs)
        self.compute_type = None  # type: Optional[str]


class AksComputeSecrets(ComputeSecrets, AksComputeSecretsProperties):
    """Secrets related to a Machine Learning compute based on AKS.

    All required parameters must be populated in order to send to Azure.

    :ivar user_kube_config: Content of kubeconfig file that can be used to connect to the
     Kubernetes cluster.
    :vartype user_kube_config: str
    :ivar admin_kube_config: Content of kubeconfig file that can be used to connect to the
     Kubernetes cluster.
    :vartype admin_kube_config: str
    :ivar image_pull_secret_name: Image registry pull secret.
    :vartype image_pull_secret_name: str
    :ivar compute_type: Required. The type of compute.Constant filled by server. Possible values
     include: "AKS", "Kubernetes", "AmlCompute", "ComputeInstance", "DataFactory", "VirtualMachine",
     "HDInsight", "Databricks", "DataLakeAnalytics", "SynapseSpark".
    :vartype compute_type: str or ~azure.mgmt.machinelearningservices.models.ComputeType
    """

    _validation = {
        'compute_type': {'required': True},
    }

    _attribute_map = {
        'user_kube_config': {'key': 'userKubeConfig', 'type': 'str'},
        'admin_kube_config': {'key': 'adminKubeConfig', 'type': 'str'},
        'image_pull_secret_name': {'key': 'imagePullSecretName', 'type': 'str'},
        'compute_type': {'key': 'computeType', 'type': 'str'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword user_kube_config: Content of kubeconfig file that can be used to connect to the
         Kubernetes cluster.
        :paramtype user_kube_config: str
        :keyword admin_kube_config: Content of kubeconfig file that can be used to connect to the
         Kubernetes cluster.
        :paramtype admin_kube_config: str
        :keyword image_pull_secret_name: Image registry pull secret.
        :paramtype image_pull_secret_name: str
        """
        super(AksComputeSecrets, self).__init__(**kwargs)
        self.user_kube_config = kwargs.get('user_kube_config', None)
        self.admin_kube_config = kwargs.get('admin_kube_config', None)
        self.image_pull_secret_name = kwargs.get('image_pull_secret_name', None)
        self.compute_type = 'AKS'  # type: str


class AksNetworkingConfiguration(msrest.serialization.Model):
    """Advance configuration for AKS networking.

    :ivar subnet_id: Virtual network subnet resource ID the compute nodes belong to.
    :vartype subnet_id: str
    :ivar service_cidr: A CIDR notation IP range from which to assign service cluster IPs. It must
     not overlap with any Subnet IP ranges.
    :vartype service_cidr: str
    :ivar dns_service_ip: An IP address assigned to the Kubernetes DNS service. It must be within
     the Kubernetes service address range specified in serviceCidr.
    :vartype dns_service_ip: str
    :ivar docker_bridge_cidr: A CIDR notation IP range assigned to the Docker bridge network. It
     must not overlap with any Subnet IP ranges or the Kubernetes service address range.
    :vartype docker_bridge_cidr: str
    """

    _validation = {
        'service_cidr': {'pattern': r'^([0-9]{1,3}\.){3}[0-9]{1,3}(\/([0-9]|[1-2][0-9]|3[0-2]))?$'},
        'dns_service_ip': {'pattern': r'^(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$'},
        'docker_bridge_cidr': {'pattern': r'^([0-9]{1,3}\.){3}[0-9]{1,3}(\/([0-9]|[1-2][0-9]|3[0-2]))?$'},
    }

    _attribute_map = {
        'subnet_id': {'key': 'subnetId', 'type': 'str'},
        'service_cidr': {'key': 'serviceCidr', 'type': 'str'},
        'dns_service_ip': {'key': 'dnsServiceIP', 'type': 'str'},
        'docker_bridge_cidr': {'key': 'dockerBridgeCidr', 'type': 'str'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword subnet_id: Virtual network subnet resource ID the compute nodes belong to.
        :paramtype subnet_id: str
        :keyword service_cidr: A CIDR notation IP range from which to assign service cluster IPs. It
         must not overlap with any Subnet IP ranges.
        :paramtype service_cidr: str
        :keyword dns_service_ip: An IP address assigned to the Kubernetes DNS service. It must be
         within the Kubernetes service address range specified in serviceCidr.
        :paramtype dns_service_ip: str
        :keyword docker_bridge_cidr: A CIDR notation IP range assigned to the Docker bridge network. It
         must not overlap with any Subnet IP ranges or the Kubernetes service address range.
        :paramtype docker_bridge_cidr: str
        """
        super(AksNetworkingConfiguration, self).__init__(**kwargs)
        self.subnet_id = kwargs.get('subnet_id', None)
        self.service_cidr = kwargs.get('service_cidr', None)
        self.dns_service_ip = kwargs.get('dns_service_ip', None)
        self.docker_bridge_cidr = kwargs.get('docker_bridge_cidr', None)


class AKSSchemaProperties(msrest.serialization.Model):
    """AKS properties.

    Variables are only populated by the server, and will be ignored when sending a request.

    :ivar cluster_fqdn: Cluster full qualified domain name.
    :vartype cluster_fqdn: str
    :ivar system_services: System services.
    :vartype system_services: list[~azure.mgmt.machinelearningservices.models.SystemService]
    :ivar agent_count: Number of agents.
    :vartype agent_count: int
    :ivar agent_vm_size: Agent virtual machine size.
    :vartype agent_vm_size: str
    :ivar cluster_purpose: Intended usage of the cluster. Possible values include: "FastProd",
     "DenseProd", "DevTest". Default value: "FastProd".
    :vartype cluster_purpose: str or ~azure.mgmt.machinelearningservices.models.ClusterPurpose
    :ivar ssl_configuration: SSL configuration.
    :vartype ssl_configuration: ~azure.mgmt.machinelearningservices.models.SslConfiguration
    :ivar aks_networking_configuration: AKS networking configuration for vnet.
    :vartype aks_networking_configuration:
     ~azure.mgmt.machinelearningservices.models.AksNetworkingConfiguration
    :ivar load_balancer_type: Load Balancer Type. Possible values include: "PublicIp",
     "InternalLoadBalancer". Default value: "PublicIp".
    :vartype load_balancer_type: str or ~azure.mgmt.machinelearningservices.models.LoadBalancerType
    :ivar load_balancer_subnet: Load Balancer Subnet.
    :vartype load_balancer_subnet: str
    """

    _validation = {
        'system_services': {'readonly': True},
        'agent_count': {'minimum': 0},
    }

    _attribute_map = {
        'cluster_fqdn': {'key': 'clusterFqdn', 'type': 'str'},
        'system_services': {'key': 'systemServices', 'type': '[SystemService]'},
        'agent_count': {'key': 'agentCount', 'type': 'int'},
        'agent_vm_size': {'key': 'agentVmSize', 'type': 'str'},
        'cluster_purpose': {'key': 'clusterPurpose', 'type': 'str'},
        'ssl_configuration': {'key': 'sslConfiguration', 'type': 'SslConfiguration'},
        'aks_networking_configuration': {'key': 'aksNetworkingConfiguration', 'type': 'AksNetworkingConfiguration'},
        'load_balancer_type': {'key': 'loadBalancerType', 'type': 'str'},
        'load_balancer_subnet': {'key': 'loadBalancerSubnet', 'type': 'str'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword cluster_fqdn: Cluster full qualified domain name.
        :paramtype cluster_fqdn: str
        :keyword agent_count: Number of agents.
        :paramtype agent_count: int
        :keyword agent_vm_size: Agent virtual machine size.
        :paramtype agent_vm_size: str
        :keyword cluster_purpose: Intended usage of the cluster. Possible values include: "FastProd",
         "DenseProd", "DevTest". Default value: "FastProd".
        :paramtype cluster_purpose: str or ~azure.mgmt.machinelearningservices.models.ClusterPurpose
        :keyword ssl_configuration: SSL configuration.
        :paramtype ssl_configuration: ~azure.mgmt.machinelearningservices.models.SslConfiguration
        :keyword aks_networking_configuration: AKS networking configuration for vnet.
        :paramtype aks_networking_configuration:
         ~azure.mgmt.machinelearningservices.models.AksNetworkingConfiguration
        :keyword load_balancer_type: Load Balancer Type. Possible values include: "PublicIp",
         "InternalLoadBalancer". Default value: "PublicIp".
        :paramtype load_balancer_type: str or
         ~azure.mgmt.machinelearningservices.models.LoadBalancerType
        :keyword load_balancer_subnet: Load Balancer Subnet.
        :paramtype load_balancer_subnet: str
        """
        super(AKSSchemaProperties, self).__init__(**kwargs)
        self.cluster_fqdn = kwargs.get('cluster_fqdn', None)
        self.system_services = None
        self.agent_count = kwargs.get('agent_count', None)
        self.agent_vm_size = kwargs.get('agent_vm_size', None)
        self.cluster_purpose = kwargs.get('cluster_purpose', "FastProd")
        self.ssl_configuration = kwargs.get('ssl_configuration', None)
        self.aks_networking_configuration = kwargs.get('aks_networking_configuration', None)
        self.load_balancer_type = kwargs.get('load_balancer_type', "PublicIp")
        self.load_balancer_subnet = kwargs.get('load_balancer_subnet', None)


class MonitoringFeatureFilterBase(msrest.serialization.Model):
    """MonitoringFeatureFilterBase.

    You probably want to use the sub-classes and not this class directly. Known
    sub-classes are: AllFeatures, FeatureSubset, TopNFeaturesByAttribution.

    All required parameters must be populated in order to send to Azure.

    :ivar filter_type: Required. [Required] Specifies the feature filter to leverage when selecting
     features to calculate metrics over.Constant filled by server. Possible values include:
     "AllFeatures", "TopNByAttribution", "FeatureSubset".
    :vartype filter_type: str or
     ~azure.mgmt.machinelearningservices.models.MonitoringFeatureFilterType
    """

    _validation = {
        'filter_type': {'required': True},
    }

    _attribute_map = {
        'filter_type': {'key': 'filterType', 'type': 'str'},
    }

    _subtype_map = {
        'filter_type': {'AllFeatures': 'AllFeatures', 'FeatureSubset': 'FeatureSubset', 'TopNByAttribution': 'TopNFeaturesByAttribution'}
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        """
        super(MonitoringFeatureFilterBase, self).__init__(**kwargs)
        self.filter_type = None  # type: Optional[str]


class AllFeatures(MonitoringFeatureFilterBase):
    """AllFeatures.

    All required parameters must be populated in order to send to Azure.

    :ivar filter_type: Required. [Required] Specifies the feature filter to leverage when selecting
     features to calculate metrics over.Constant filled by server. Possible values include:
     "AllFeatures", "TopNByAttribution", "FeatureSubset".
    :vartype filter_type: str or
     ~azure.mgmt.machinelearningservices.models.MonitoringFeatureFilterType
    """

    _validation = {
        'filter_type': {'required': True},
    }

    _attribute_map = {
        'filter_type': {'key': 'filterType', 'type': 'str'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        """
        super(AllFeatures, self).__init__(**kwargs)
        self.filter_type = 'AllFeatures'  # type: str


class Nodes(msrest.serialization.Model):
    """Abstract Nodes definition.

    You probably want to use the sub-classes and not this class directly. Known
    sub-classes are: AllNodes.

    All required parameters must be populated in order to send to Azure.

    :ivar nodes_value_type: Required. [Required] Type of the Nodes value.Constant filled by server.
     Possible values include: "All".
    :vartype nodes_value_type: str or ~azure.mgmt.machinelearningservices.models.NodesValueType
    """

    _validation = {
        'nodes_value_type': {'required': True},
    }

    _attribute_map = {
        'nodes_value_type': {'key': 'nodesValueType', 'type': 'str'},
    }

    _subtype_map = {
        'nodes_value_type': {'All': 'AllNodes'}
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        """
        super(Nodes, self).__init__(**kwargs)
        self.nodes_value_type = None  # type: Optional[str]


class AllNodes(Nodes):
    """All nodes means the service will be running on all of the nodes of the job.

    All required parameters must be populated in order to send to Azure.

    :ivar nodes_value_type: Required. [Required] Type of the Nodes value.Constant filled by server.
     Possible values include: "All".
    :vartype nodes_value_type: str or ~azure.mgmt.machinelearningservices.models.NodesValueType
    """

    _validation = {
        'nodes_value_type': {'required': True},
    }

    _attribute_map = {
        'nodes_value_type': {'key': 'nodesValueType', 'type': 'str'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        """
        super(AllNodes, self).__init__(**kwargs)
        self.nodes_value_type = 'All'  # type: str


class AmlComputeSchema(msrest.serialization.Model):
    """Properties(top level) of AmlCompute.

    :ivar properties: Properties of AmlCompute.
    :vartype properties: ~azure.mgmt.machinelearningservices.models.AmlComputeProperties
    """

    _attribute_map = {
        'properties': {'key': 'properties', 'type': 'AmlComputeProperties'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword properties: Properties of AmlCompute.
        :paramtype properties: ~azure.mgmt.machinelearningservices.models.AmlComputeProperties
        """
        super(AmlComputeSchema, self).__init__(**kwargs)
        self.properties = kwargs.get('properties', None)


class AmlCompute(Compute, AmlComputeSchema):
    """An Azure Machine Learning compute.

    Variables are only populated by the server, and will be ignored when sending a request.

    All required parameters must be populated in order to send to Azure.

    :ivar properties: Properties of AmlCompute.
    :vartype properties: ~azure.mgmt.machinelearningservices.models.AmlComputeProperties
    :ivar compute_type: Required. The type of compute.Constant filled by server. Possible values
     include: "AKS", "Kubernetes", "AmlCompute", "ComputeInstance", "DataFactory", "VirtualMachine",
     "HDInsight", "Databricks", "DataLakeAnalytics", "SynapseSpark".
    :vartype compute_type: str or ~azure.mgmt.machinelearningservices.models.ComputeType
    :ivar compute_location: Location for the underlying compute.
    :vartype compute_location: str
    :ivar provisioning_state: The provision state of the cluster. Valid values are Unknown,
     Updating, Provisioning, Succeeded, and Failed. Possible values include: "Unknown", "Updating",
     "Creating", "Deleting", "Succeeded", "Failed", "Canceled".
    :vartype provisioning_state: str or
     ~azure.mgmt.machinelearningservices.models.ProvisioningState
    :ivar description: The description of the Machine Learning compute.
    :vartype description: str
    :ivar created_on: The time at which the compute was created.
    :vartype created_on: ~datetime.datetime
    :ivar modified_on: The time at which the compute was last modified.
    :vartype modified_on: ~datetime.datetime
    :ivar resource_id: ARM resource id of the underlying compute.
    :vartype resource_id: str
    :ivar provisioning_errors: Errors during provisioning.
    :vartype provisioning_errors: list[~azure.mgmt.machinelearningservices.models.ErrorResponse]
    :ivar is_attached_compute: Indicating whether the compute was provisioned by user and brought
     from outside if true, or machine learning service provisioned it if false.
    :vartype is_attached_compute: bool
    :ivar disable_local_auth: Opt-out of local authentication and ensure customers can use only MSI
     and AAD exclusively for authentication.
    :vartype disable_local_auth: bool
    """

    _validation = {
        'compute_type': {'required': True},
        'provisioning_state': {'readonly': True},
        'created_on': {'readonly': True},
        'modified_on': {'readonly': True},
        'provisioning_errors': {'readonly': True},
        'is_attached_compute': {'readonly': True},
    }

    _attribute_map = {
        'properties': {'key': 'properties', 'type': 'AmlComputeProperties'},
        'compute_type': {'key': 'computeType', 'type': 'str'},
        'compute_location': {'key': 'computeLocation', 'type': 'str'},
        'provisioning_state': {'key': 'provisioningState', 'type': 'str'},
        'description': {'key': 'description', 'type': 'str'},
        'created_on': {'key': 'createdOn', 'type': 'iso-8601'},
        'modified_on': {'key': 'modifiedOn', 'type': 'iso-8601'},
        'resource_id': {'key': 'resourceId', 'type': 'str'},
        'provisioning_errors': {'key': 'provisioningErrors', 'type': '[ErrorResponse]'},
        'is_attached_compute': {'key': 'isAttachedCompute', 'type': 'bool'},
        'disable_local_auth': {'key': 'disableLocalAuth', 'type': 'bool'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword properties: Properties of AmlCompute.
        :paramtype properties: ~azure.mgmt.machinelearningservices.models.AmlComputeProperties
        :keyword compute_location: Location for the underlying compute.
        :paramtype compute_location: str
        :keyword description: The description of the Machine Learning compute.
        :paramtype description: str
        :keyword resource_id: ARM resource id of the underlying compute.
        :paramtype resource_id: str
        :keyword disable_local_auth: Opt-out of local authentication and ensure customers can use only
         MSI and AAD exclusively for authentication.
        :paramtype disable_local_auth: bool
        """
        super(AmlCompute, self).__init__(**kwargs)
        self.properties = kwargs.get('properties', None)
        self.compute_type = 'AmlCompute'  # type: str
        self.compute_location = kwargs.get('compute_location', None)
        self.provisioning_state = None
        self.description = kwargs.get('description', None)
        self.created_on = None
        self.modified_on = None
        self.resource_id = kwargs.get('resource_id', None)
        self.provisioning_errors = None
        self.is_attached_compute = None
        self.disable_local_auth = kwargs.get('disable_local_auth', None)


class AmlComputeNodeInformation(msrest.serialization.Model):
    """Compute node information related to a AmlCompute.

    Variables are only populated by the server, and will be ignored when sending a request.

    :ivar node_id: ID of the compute node.
    :vartype node_id: str
    :ivar private_ip_address: Private IP address of the compute node.
    :vartype private_ip_address: str
    :ivar public_ip_address: Public IP address of the compute node.
    :vartype public_ip_address: str
    :ivar port: SSH port number of the node.
    :vartype port: int
    :ivar node_state: State of the compute node. Values are idle, running, preparing, unusable,
     leaving and preempted. Possible values include: "idle", "running", "preparing", "unusable",
     "leaving", "preempted".
    :vartype node_state: str or ~azure.mgmt.machinelearningservices.models.NodeState
    :ivar run_id: ID of the Experiment running on the node, if any else null.
    :vartype run_id: str
    """

    _validation = {
        'node_id': {'readonly': True},
        'private_ip_address': {'readonly': True},
        'public_ip_address': {'readonly': True},
        'port': {'readonly': True},
        'node_state': {'readonly': True},
        'run_id': {'readonly': True},
    }

    _attribute_map = {
        'node_id': {'key': 'nodeId', 'type': 'str'},
        'private_ip_address': {'key': 'privateIpAddress', 'type': 'str'},
        'public_ip_address': {'key': 'publicIpAddress', 'type': 'str'},
        'port': {'key': 'port', 'type': 'int'},
        'node_state': {'key': 'nodeState', 'type': 'str'},
        'run_id': {'key': 'runId', 'type': 'str'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        """
        super(AmlComputeNodeInformation, self).__init__(**kwargs)
        self.node_id = None
        self.private_ip_address = None
        self.public_ip_address = None
        self.port = None
        self.node_state = None
        self.run_id = None


class AmlComputeNodesInformation(msrest.serialization.Model):
    """Result of AmlCompute Nodes.

    Variables are only populated by the server, and will be ignored when sending a request.

    :ivar nodes: The collection of returned AmlCompute nodes details.
    :vartype nodes: list[~azure.mgmt.machinelearningservices.models.AmlComputeNodeInformation]
    :ivar next_link: The continuation token.
    :vartype next_link: str
    """

    _validation = {
        'nodes': {'readonly': True},
        'next_link': {'readonly': True},
    }

    _attribute_map = {
        'nodes': {'key': 'nodes', 'type': '[AmlComputeNodeInformation]'},
        'next_link': {'key': 'nextLink', 'type': 'str'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        """
        super(AmlComputeNodesInformation, self).__init__(**kwargs)
        self.nodes = None
        self.next_link = None


class AmlComputeProperties(msrest.serialization.Model):
    """AML Compute properties.

    Variables are only populated by the server, and will be ignored when sending a request.

    :ivar os_type: Compute OS Type. Possible values include: "Linux", "Windows". Default value:
     "Linux".
    :vartype os_type: str or ~azure.mgmt.machinelearningservices.models.OsType
    :ivar vm_size: Virtual Machine Size.
    :vartype vm_size: str
    :ivar vm_priority: Virtual Machine priority. Possible values include: "Dedicated",
     "LowPriority".
    :vartype vm_priority: str or ~azure.mgmt.machinelearningservices.models.VmPriority
    :ivar virtual_machine_image: Virtual Machine image for AML Compute - windows only.
    :vartype virtual_machine_image: ~azure.mgmt.machinelearningservices.models.VirtualMachineImage
    :ivar isolated_network: Network is isolated or not.
    :vartype isolated_network: bool
    :ivar scale_settings: Scale settings for AML Compute.
    :vartype scale_settings: ~azure.mgmt.machinelearningservices.models.ScaleSettings
    :ivar user_account_credentials: Credentials for an administrator user account that will be
     created on each compute node.
    :vartype user_account_credentials:
     ~azure.mgmt.machinelearningservices.models.UserAccountCredentials
    :ivar subnet: Virtual network subnet resource ID the compute nodes belong to.
    :vartype subnet: ~azure.mgmt.machinelearningservices.models.ResourceId
    :ivar remote_login_port_public_access: State of the public SSH port. Possible values are:
     Disabled - Indicates that the public ssh port is closed on all nodes of the cluster. Enabled -
     Indicates that the public ssh port is open on all nodes of the cluster. NotSpecified -
     Indicates that the public ssh port is closed on all nodes of the cluster if VNet is defined,
     else is open all public nodes. It can be default only during cluster creation time, after
     creation it will be either enabled or disabled. Possible values include: "Enabled", "Disabled",
     "NotSpecified". Default value: "NotSpecified".
    :vartype remote_login_port_public_access: str or
     ~azure.mgmt.machinelearningservices.models.RemoteLoginPortPublicAccess
    :ivar allocation_state: Allocation state of the compute. Possible values are: steady -
     Indicates that the compute is not resizing. There are no changes to the number of compute nodes
     in the compute in progress. A compute enters this state when it is created and when no
     operations are being performed on the compute to change the number of compute nodes. resizing -
     Indicates that the compute is resizing; that is, compute nodes are being added to or removed
     from the compute. Possible values include: "Steady", "Resizing".
    :vartype allocation_state: str or ~azure.mgmt.machinelearningservices.models.AllocationState
    :ivar allocation_state_transition_time: The time at which the compute entered its current
     allocation state.
    :vartype allocation_state_transition_time: ~datetime.datetime
    :ivar errors: Collection of errors encountered by various compute nodes during node setup.
    :vartype errors: list[~azure.mgmt.machinelearningservices.models.ErrorResponse]
    :ivar current_node_count: The number of compute nodes currently assigned to the compute.
    :vartype current_node_count: int
    :ivar target_node_count: The target number of compute nodes for the compute. If the
     allocationState is resizing, this property denotes the target node count for the ongoing resize
     operation. If the allocationState is steady, this property denotes the target node count for
     the previous resize operation.
    :vartype target_node_count: int
    :ivar node_state_counts: Counts of various node states on the compute.
    :vartype node_state_counts: ~azure.mgmt.machinelearningservices.models.NodeStateCounts
    :ivar enable_node_public_ip: Enable or disable node public IP address provisioning. Possible
     values are: Possible values are: true - Indicates that the compute nodes will have public IPs
     provisioned. false - Indicates that the compute nodes will have a private endpoint and no
     public IPs.
    :vartype enable_node_public_ip: bool
    :ivar property_bag: A property bag containing additional properties.
    :vartype property_bag: any
    """

    _validation = {
        'allocation_state': {'readonly': True},
        'allocation_state_transition_time': {'readonly': True},
        'errors': {'readonly': True},
        'current_node_count': {'readonly': True},
        'target_node_count': {'readonly': True},
        'node_state_counts': {'readonly': True},
    }

    _attribute_map = {
        'os_type': {'key': 'osType', 'type': 'str'},
        'vm_size': {'key': 'vmSize', 'type': 'str'},
        'vm_priority': {'key': 'vmPriority', 'type': 'str'},
        'virtual_machine_image': {'key': 'virtualMachineImage', 'type': 'VirtualMachineImage'},
        'isolated_network': {'key': 'isolatedNetwork', 'type': 'bool'},
        'scale_settings': {'key': 'scaleSettings', 'type': 'ScaleSettings'},
        'user_account_credentials': {'key': 'userAccountCredentials', 'type': 'UserAccountCredentials'},
        'subnet': {'key': 'subnet', 'type': 'ResourceId'},
        'remote_login_port_public_access': {'key': 'remoteLoginPortPublicAccess', 'type': 'str'},
        'allocation_state': {'key': 'allocationState', 'type': 'str'},
        'allocation_state_transition_time': {'key': 'allocationStateTransitionTime', 'type': 'iso-8601'},
        'errors': {'key': 'errors', 'type': '[ErrorResponse]'},
        'current_node_count': {'key': 'currentNodeCount', 'type': 'int'},
        'target_node_count': {'key': 'targetNodeCount', 'type': 'int'},
        'node_state_counts': {'key': 'nodeStateCounts', 'type': 'NodeStateCounts'},
        'enable_node_public_ip': {'key': 'enableNodePublicIp', 'type': 'bool'},
        'property_bag': {'key': 'propertyBag', 'type': 'object'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword os_type: Compute OS Type. Possible values include: "Linux", "Windows". Default value:
         "Linux".
        :paramtype os_type: str or ~azure.mgmt.machinelearningservices.models.OsType
        :keyword vm_size: Virtual Machine Size.
        :paramtype vm_size: str
        :keyword vm_priority: Virtual Machine priority. Possible values include: "Dedicated",
         "LowPriority".
        :paramtype vm_priority: str or ~azure.mgmt.machinelearningservices.models.VmPriority
        :keyword virtual_machine_image: Virtual Machine image for AML Compute - windows only.
        :paramtype virtual_machine_image:
         ~azure.mgmt.machinelearningservices.models.VirtualMachineImage
        :keyword isolated_network: Network is isolated or not.
        :paramtype isolated_network: bool
        :keyword scale_settings: Scale settings for AML Compute.
        :paramtype scale_settings: ~azure.mgmt.machinelearningservices.models.ScaleSettings
        :keyword user_account_credentials: Credentials for an administrator user account that will be
         created on each compute node.
        :paramtype user_account_credentials:
         ~azure.mgmt.machinelearningservices.models.UserAccountCredentials
        :keyword subnet: Virtual network subnet resource ID the compute nodes belong to.
        :paramtype subnet: ~azure.mgmt.machinelearningservices.models.ResourceId
        :keyword remote_login_port_public_access: State of the public SSH port. Possible values are:
         Disabled - Indicates that the public ssh port is closed on all nodes of the cluster. Enabled -
         Indicates that the public ssh port is open on all nodes of the cluster. NotSpecified -
         Indicates that the public ssh port is closed on all nodes of the cluster if VNet is defined,
         else is open all public nodes. It can be default only during cluster creation time, after
         creation it will be either enabled or disabled. Possible values include: "Enabled", "Disabled",
         "NotSpecified". Default value: "NotSpecified".
        :paramtype remote_login_port_public_access: str or
         ~azure.mgmt.machinelearningservices.models.RemoteLoginPortPublicAccess
        :keyword enable_node_public_ip: Enable or disable node public IP address provisioning. Possible
         values are: Possible values are: true - Indicates that the compute nodes will have public IPs
         provisioned. false - Indicates that the compute nodes will have a private endpoint and no
         public IPs.
        :paramtype enable_node_public_ip: bool
        :keyword property_bag: A property bag containing additional properties.
        :paramtype property_bag: any
        """
        super(AmlComputeProperties, self).__init__(**kwargs)
        self.os_type = kwargs.get('os_type', "Linux")
        self.vm_size = kwargs.get('vm_size', None)
        self.vm_priority = kwargs.get('vm_priority', None)
        self.virtual_machine_image = kwargs.get('virtual_machine_image', None)
        self.isolated_network = kwargs.get('isolated_network', None)
        self.scale_settings = kwargs.get('scale_settings', None)
        self.user_account_credentials = kwargs.get('user_account_credentials', None)
        self.subnet = kwargs.get('subnet', None)
        self.remote_login_port_public_access = kwargs.get('remote_login_port_public_access', "NotSpecified")
        self.allocation_state = None
        self.allocation_state_transition_time = None
        self.errors = None
        self.current_node_count = None
        self.target_node_count = None
        self.node_state_counts = None
        self.enable_node_public_ip = kwargs.get('enable_node_public_ip', True)
        self.property_bag = kwargs.get('property_bag', None)


class IdentityConfiguration(msrest.serialization.Model):
    """Base definition for identity configuration.

    You probably want to use the sub-classes and not this class directly. Known
    sub-classes are: AmlToken, ManagedIdentity, UserIdentity.

    All required parameters must be populated in order to send to Azure.

    :ivar identity_type: Required. [Required] Specifies the type of identity framework.Constant
     filled by server. Possible values include: "Managed", "AMLToken", "UserIdentity".
    :vartype identity_type: str or
     ~azure.mgmt.machinelearningservices.models.IdentityConfigurationType
    """

    _validation = {
        'identity_type': {'required': True},
    }

    _attribute_map = {
        'identity_type': {'key': 'identityType', 'type': 'str'},
    }

    _subtype_map = {
        'identity_type': {'AMLToken': 'AmlToken', 'Managed': 'ManagedIdentity', 'UserIdentity': 'UserIdentity'}
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        """
        super(IdentityConfiguration, self).__init__(**kwargs)
        self.identity_type = None  # type: Optional[str]


class AmlToken(IdentityConfiguration):
    """AML Token identity configuration.

    All required parameters must be populated in order to send to Azure.

    :ivar identity_type: Required. [Required] Specifies the type of identity framework.Constant
     filled by server. Possible values include: "Managed", "AMLToken", "UserIdentity".
    :vartype identity_type: str or
     ~azure.mgmt.machinelearningservices.models.IdentityConfigurationType
    """

    _validation = {
        'identity_type': {'required': True},
    }

    _attribute_map = {
        'identity_type': {'key': 'identityType', 'type': 'str'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        """
        super(AmlToken, self).__init__(**kwargs)
        self.identity_type = 'AMLToken'  # type: str


class MonitorComputeIdentityBase(msrest.serialization.Model):
    """Monitor compute identity base definition.

    You probably want to use the sub-classes and not this class directly. Known
    sub-classes are: AmlTokenComputeIdentity, ManagedComputeIdentity.

    All required parameters must be populated in order to send to Azure.

    :ivar compute_identity_type: Required. [Required] Specifies the type of identity to use within
     the monitoring jobs.Constant filled by server. Possible values include: "AmlToken",
     "ManagedIdentity".
    :vartype compute_identity_type: str or
     ~azure.mgmt.machinelearningservices.models.MonitorComputeIdentityType
    """

    _validation = {
        'compute_identity_type': {'required': True},
    }

    _attribute_map = {
        'compute_identity_type': {'key': 'computeIdentityType', 'type': 'str'},
    }

    _subtype_map = {
        'compute_identity_type': {'AmlToken': 'AmlTokenComputeIdentity', 'ManagedIdentity': 'ManagedComputeIdentity'}
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        """
        super(MonitorComputeIdentityBase, self).__init__(**kwargs)
        self.compute_identity_type = None  # type: Optional[str]


class AmlTokenComputeIdentity(MonitorComputeIdentityBase):
    """AML token compute identity definition.

    All required parameters must be populated in order to send to Azure.

    :ivar compute_identity_type: Required. [Required] Specifies the type of identity to use within
     the monitoring jobs.Constant filled by server. Possible values include: "AmlToken",
     "ManagedIdentity".
    :vartype compute_identity_type: str or
     ~azure.mgmt.machinelearningservices.models.MonitorComputeIdentityType
    """

    _validation = {
        'compute_identity_type': {'required': True},
    }

    _attribute_map = {
        'compute_identity_type': {'key': 'computeIdentityType', 'type': 'str'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        """
        super(AmlTokenComputeIdentity, self).__init__(**kwargs)
        self.compute_identity_type = 'AmlToken'  # type: str


class AmlUserFeature(msrest.serialization.Model):
    """Features enabled for a workspace.

    :ivar id: Specifies the feature ID.
    :vartype id: str
    :ivar display_name: Specifies the feature name.
    :vartype display_name: str
    :ivar description: Describes the feature for user experience.
    :vartype description: str
    """

    _attribute_map = {
        'id': {'key': 'id', 'type': 'str'},
        'display_name': {'key': 'displayName', 'type': 'str'},
        'description': {'key': 'description', 'type': 'str'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword id: Specifies the feature ID.
        :paramtype id: str
        :keyword display_name: Specifies the feature name.
        :paramtype display_name: str
        :keyword description: Describes the feature for user experience.
        :paramtype description: str
        """
        super(AmlUserFeature, self).__init__(**kwargs)
        self.id = kwargs.get('id', None)
        self.display_name = kwargs.get('display_name', None)
        self.description = kwargs.get('description', None)


class DataReferenceCredential(msrest.serialization.Model):
    """DataReferenceCredential base class.

    You probably want to use the sub-classes and not this class directly. Known
    sub-classes are: DockerCredential, ManagedIdentityCredential, AnonymousAccessCredential, SASCredential.

    All required parameters must be populated in order to send to Azure.

    :ivar credential_type: Required. [Required] Credential type used to authentication with
     storage.Constant filled by server. Possible values include: "SAS", "DockerCredentials",
     "ManagedIdentity", "NoCredentials".
    :vartype credential_type: str or
     ~azure.mgmt.machinelearningservices.models.DataReferenceCredentialType
    """

    _validation = {
        'credential_type': {'required': True},
    }

    _attribute_map = {
        'credential_type': {'key': 'credentialType', 'type': 'str'},
    }

    _subtype_map = {
        'credential_type': {'DockerCredentials': 'DockerCredential', 'ManagedIdentity': 'ManagedIdentityCredential', 'NoCredentials': 'AnonymousAccessCredential', 'SAS': 'SASCredential'}
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        """
        super(DataReferenceCredential, self).__init__(**kwargs)
        self.credential_type = None  # type: Optional[str]


class AnonymousAccessCredential(DataReferenceCredential):
    """Access credential with no credentials.

    All required parameters must be populated in order to send to Azure.

    :ivar credential_type: Required. [Required] Credential type used to authentication with
     storage.Constant filled by server. Possible values include: "SAS", "DockerCredentials",
     "ManagedIdentity", "NoCredentials".
    :vartype credential_type: str or
     ~azure.mgmt.machinelearningservices.models.DataReferenceCredentialType
    """

    _validation = {
        'credential_type': {'required': True},
    }

    _attribute_map = {
        'credential_type': {'key': 'credentialType', 'type': 'str'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        """
        super(AnonymousAccessCredential, self).__init__(**kwargs)
        self.credential_type = 'NoCredentials'  # type: str


class ApiKeyAuthWorkspaceConnectionProperties(WorkspaceConnectionPropertiesV2):
    """This connection type covers the generic ApiKey auth connection categories, for examples:
AzureOpenAI:
    Category:= AzureOpenAI
    AuthType:= ApiKey (as type discriminator)
    Credentials:= {ApiKey} as Microsoft.MachineLearning.AccountRP.Contracts.WorkspaceConnection.ApiKey
    Target:= {ApiBase}

CognitiveService:
    Category:= CognitiveService
    AuthType:= ApiKey (as type discriminator)
    Credentials:= {SubscriptionKey} as Microsoft.MachineLearning.AccountRP.Contracts.WorkspaceConnection.ApiKey
    Target:= ServiceRegion={serviceRegion}

CognitiveSearch:
    Category:= CognitiveSearch
    AuthType:= ApiKey (as type discriminator)
    Credentials:= {Key} as Microsoft.MachineLearning.AccountRP.Contracts.WorkspaceConnection.ApiKey
    Target:= {Endpoint}

Use Metadata property bag for ApiType, ApiVersion, Kind and other metadata fields.

    Variables are only populated by the server, and will be ignored when sending a request.

    All required parameters must be populated in order to send to Azure.

    :ivar auth_type: Required. Authentication type of the connection target.Constant filled by
     server. Possible values include: "PAT", "ManagedIdentity", "UsernamePassword", "None", "SAS",
     "AccountKey", "ServicePrincipal", "AccessKey", "ApiKey", "CustomKeys", "OAuth2", "AAD".
    :vartype auth_type: str or ~azure.mgmt.machinelearningservices.models.ConnectionAuthType
    :ivar category: Category of the connection. Possible values include: "PythonFeed",
     "ContainerRegistry", "Git", "S3", "Snowflake", "AzureSqlDb", "AzureSynapseAnalytics",
     "AzureMySqlDb", "AzurePostgresDb", "ADLSGen2", "Redis", "ApiKey", "AzureOpenAI", "AIServices",
     "CognitiveSearch", "CognitiveService", "CustomKeys", "AzureBlob", "AzureOneLake", "CosmosDb",
     "CosmosDbMongoDbApi", "AzureDataExplorer", "AzureMariaDb", "AzureDatabricksDeltaLake",
     "AzureSqlMi", "AzureTableStorage", "AmazonRdsForOracle", "AmazonRdsForSqlServer",
     "AmazonRedshift", "Db2", "Drill", "GoogleBigQuery", "Greenplum", "Hbase", "Hive", "Impala",
     "Informix", "MariaDb", "MicrosoftAccess", "MySql", "Netezza", "Oracle", "Phoenix",
     "PostgreSql", "Presto", "SapOpenHub", "SapBw", "SapHana", "SapTable", "Spark", "SqlServer",
     "Sybase", "Teradata", "Vertica", "Pinecone", "Cassandra", "Couchbase", "MongoDbV2",
     "MongoDbAtlas", "AmazonS3Compatible", "FileServer", "FtpServer", "GoogleCloudStorage", "Hdfs",
     "OracleCloudStorage", "Sftp", "GenericHttp", "ODataRest", "Odbc", "GenericRest", "AmazonMws",
     "Concur", "Dynamics", "DynamicsAx", "DynamicsCrm", "GoogleAdWords", "Hubspot", "Jira",
     "Magento", "Marketo", "Office365", "Eloqua", "Responsys", "OracleServiceCloud", "PayPal",
     "QuickBooks", "Salesforce", "SalesforceServiceCloud", "SalesforceMarketingCloud",
     "SapCloudForCustomer", "SapEcc", "ServiceNow", "SharePointOnlineList", "Shopify", "Square",
     "WebTable", "Xero", "Zoho", "GenericContainerRegistry", "Elasticsearch", "OpenAI", "Serp",
     "BingLLMSearch", "Serverless", "ManagedOnlineEndpoint".
    :vartype category: str or ~azure.mgmt.machinelearningservices.models.ConnectionCategory
    :ivar created_by_workspace_arm_id:
    :vartype created_by_workspace_arm_id: str
    :ivar error:
    :vartype error: str
    :ivar expiry_time:
    :vartype expiry_time: ~datetime.datetime
    :ivar group: Group based on connection category. Possible values include: "Azure", "AzureAI",
     "Database", "NoSQL", "File", "GenericProtocol", "ServicesAndApps".
    :vartype group: str or ~azure.mgmt.machinelearningservices.models.ConnectionGroup
    :ivar is_shared_to_all:
    :vartype is_shared_to_all: bool
    :ivar metadata: Store user metadata for this connection.
    :vartype metadata: dict[str, str]
    :ivar pe_requirement: Possible values include: "Required", "NotRequired", "NotApplicable".
    :vartype pe_requirement: str or ~azure.mgmt.machinelearningservices.models.ManagedPERequirement
    :ivar pe_status: Possible values include: "Inactive", "Active", "NotApplicable".
    :vartype pe_status: str or ~azure.mgmt.machinelearningservices.models.ManagedPEStatus
    :ivar shared_user_list:
    :vartype shared_user_list: list[str]
    :ivar target:
    :vartype target: str
    :ivar use_workspace_managed_identity:
    :vartype use_workspace_managed_identity: bool
    :ivar credentials: Api key object for workspace connection credential.
    :vartype credentials: ~azure.mgmt.machinelearningservices.models.WorkspaceConnectionApiKey
    """

    _validation = {
        'auth_type': {'required': True},
        'created_by_workspace_arm_id': {'readonly': True},
        'group': {'readonly': True},
    }

    _attribute_map = {
        'auth_type': {'key': 'authType', 'type': 'str'},
        'category': {'key': 'category', 'type': 'str'},
        'created_by_workspace_arm_id': {'key': 'createdByWorkspaceArmId', 'type': 'str'},
        'error': {'key': 'error', 'type': 'str'},
        'expiry_time': {'key': 'expiryTime', 'type': 'iso-8601'},
        'group': {'key': 'group', 'type': 'str'},
        'is_shared_to_all': {'key': 'isSharedToAll', 'type': 'bool'},
        'metadata': {'key': 'metadata', 'type': '{str}'},
        'pe_requirement': {'key': 'peRequirement', 'type': 'str'},
        'pe_status': {'key': 'peStatus', 'type': 'str'},
        'shared_user_list': {'key': 'sharedUserList', 'type': '[str]'},
        'target': {'key': 'target', 'type': 'str'},
        'use_workspace_managed_identity': {'key': 'useWorkspaceManagedIdentity', 'type': 'bool'},
        'credentials': {'key': 'credentials', 'type': 'WorkspaceConnectionApiKey'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword category: Category of the connection. Possible values include: "PythonFeed",
         "ContainerRegistry", "Git", "S3", "Snowflake", "AzureSqlDb", "AzureSynapseAnalytics",
         "AzureMySqlDb", "AzurePostgresDb", "ADLSGen2", "Redis", "ApiKey", "AzureOpenAI", "AIServices",
         "CognitiveSearch", "CognitiveService", "CustomKeys", "AzureBlob", "AzureOneLake", "CosmosDb",
         "CosmosDbMongoDbApi", "AzureDataExplorer", "AzureMariaDb", "AzureDatabricksDeltaLake",
         "AzureSqlMi", "AzureTableStorage", "AmazonRdsForOracle", "AmazonRdsForSqlServer",
         "AmazonRedshift", "Db2", "Drill", "GoogleBigQuery", "Greenplum", "Hbase", "Hive", "Impala",
         "Informix", "MariaDb", "MicrosoftAccess", "MySql", "Netezza", "Oracle", "Phoenix",
         "PostgreSql", "Presto", "SapOpenHub", "SapBw", "SapHana", "SapTable", "Spark", "SqlServer",
         "Sybase", "Teradata", "Vertica", "Pinecone", "Cassandra", "Couchbase", "MongoDbV2",
         "MongoDbAtlas", "AmazonS3Compatible", "FileServer", "FtpServer", "GoogleCloudStorage", "Hdfs",
         "OracleCloudStorage", "Sftp", "GenericHttp", "ODataRest", "Odbc", "GenericRest", "AmazonMws",
         "Concur", "Dynamics", "DynamicsAx", "DynamicsCrm", "GoogleAdWords", "Hubspot", "Jira",
         "Magento", "Marketo", "Office365", "Eloqua", "Responsys", "OracleServiceCloud", "PayPal",
         "QuickBooks", "Salesforce", "SalesforceServiceCloud", "SalesforceMarketingCloud",
         "SapCloudForCustomer", "SapEcc", "ServiceNow", "SharePointOnlineList", "Shopify", "Square",
         "WebTable", "Xero", "Zoho", "GenericContainerRegistry", "Elasticsearch", "OpenAI", "Serp",
         "BingLLMSearch", "Serverless", "ManagedOnlineEndpoint".
        :paramtype category: str or ~azure.mgmt.machinelearningservices.models.ConnectionCategory
        :keyword error:
        :paramtype error: str
        :keyword expiry_time:
        :paramtype expiry_time: ~datetime.datetime
        :keyword is_shared_to_all:
        :paramtype is_shared_to_all: bool
        :keyword metadata: Store user metadata for this connection.
        :paramtype metadata: dict[str, str]
        :keyword pe_requirement: Possible values include: "Required", "NotRequired", "NotApplicable".
        :paramtype pe_requirement: str or
         ~azure.mgmt.machinelearningservices.models.ManagedPERequirement
        :keyword pe_status: Possible values include: "Inactive", "Active", "NotApplicable".
        :paramtype pe_status: str or ~azure.mgmt.machinelearningservices.models.ManagedPEStatus
        :keyword shared_user_list:
        :paramtype shared_user_list: list[str]
        :keyword target:
        :paramtype target: str
        :keyword use_workspace_managed_identity:
        :paramtype use_workspace_managed_identity: bool
        :keyword credentials: Api key object for workspace connection credential.
        :paramtype credentials: ~azure.mgmt.machinelearningservices.models.WorkspaceConnectionApiKey
        """
        super(ApiKeyAuthWorkspaceConnectionProperties, self).__init__(**kwargs)
        self.auth_type = 'ApiKey'  # type: str
        self.credentials = kwargs.get('credentials', None)


class ArmResourceId(msrest.serialization.Model):
    """ARM ResourceId of a resource.

    :ivar resource_id: Arm ResourceId is in the format
     "/subscriptions/{SubscriptionId}/resourceGroups/{ResourceGroupName}/providers/Microsoft.Storage/storageAccounts/{StorageAccountName}"
     or
     "/subscriptions/{SubscriptionId}/resourceGroups/{ResourceGroupName}/providers/Microsoft.ContainerRegistry/registries/{AcrName}".
    :vartype resource_id: str
    """

    _attribute_map = {
        'resource_id': {'key': 'resourceId', 'type': 'str'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword resource_id: Arm ResourceId is in the format
         "/subscriptions/{SubscriptionId}/resourceGroups/{ResourceGroupName}/providers/Microsoft.Storage/storageAccounts/{StorageAccountName}"
         or
         "/subscriptions/{SubscriptionId}/resourceGroups/{ResourceGroupName}/providers/Microsoft.ContainerRegistry/registries/{AcrName}".
        :paramtype resource_id: str
        """
        super(ArmResourceId, self).__init__(**kwargs)
        self.resource_id = kwargs.get('resource_id', None)


class ResourceBase(msrest.serialization.Model):
    """ResourceBase.

    :ivar description: The asset description text.
    :vartype description: str
    :ivar properties: The asset property dictionary.
    :vartype properties: dict[str, str]
    :ivar tags: A set of tags. Tag dictionary. Tags can be added, removed, and updated.
    :vartype tags: dict[str, str]
    """

    _attribute_map = {
        'description': {'key': 'description', 'type': 'str'},
        'properties': {'key': 'properties', 'type': '{str}'},
        'tags': {'key': 'tags', 'type': '{str}'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword description: The asset description text.
        :paramtype description: str
        :keyword properties: The asset property dictionary.
        :paramtype properties: dict[str, str]
        :keyword tags: A set of tags. Tag dictionary. Tags can be added, removed, and updated.
        :paramtype tags: dict[str, str]
        """
        super(ResourceBase, self).__init__(**kwargs)
        self.description = kwargs.get('description', None)
        self.properties = kwargs.get('properties', None)
        self.tags = kwargs.get('tags', None)


class AssetBase(ResourceBase):
    """AssetBase.

    :ivar description: The asset description text.
    :vartype description: str
    :ivar properties: The asset property dictionary.
    :vartype properties: dict[str, str]
    :ivar tags: A set of tags. Tag dictionary. Tags can be added, removed, and updated.
    :vartype tags: dict[str, str]
    :ivar is_anonymous: If the name version are system generated (anonymous registration).
    :vartype is_anonymous: bool
    :ivar is_archived: Is the asset archived?.
    :vartype is_archived: bool
    """

    _attribute_map = {
        'description': {'key': 'description', 'type': 'str'},
        'properties': {'key': 'properties', 'type': '{str}'},
        'tags': {'key': 'tags', 'type': '{str}'},
        'is_anonymous': {'key': 'isAnonymous', 'type': 'bool'},
        'is_archived': {'key': 'isArchived', 'type': 'bool'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword description: The asset description text.
        :paramtype description: str
        :keyword properties: The asset property dictionary.
        :paramtype properties: dict[str, str]
        :keyword tags: A set of tags. Tag dictionary. Tags can be added, removed, and updated.
        :paramtype tags: dict[str, str]
        :keyword is_anonymous: If the name version are system generated (anonymous registration).
        :paramtype is_anonymous: bool
        :keyword is_archived: Is the asset archived?.
        :paramtype is_archived: bool
        """
        super(AssetBase, self).__init__(**kwargs)
        self.is_anonymous = kwargs.get('is_anonymous', False)
        self.is_archived = kwargs.get('is_archived', False)


class AssetContainer(ResourceBase):
    """AssetContainer.

    Variables are only populated by the server, and will be ignored when sending a request.

    :ivar description: The asset description text.
    :vartype description: str
    :ivar properties: The asset property dictionary.
    :vartype properties: dict[str, str]
    :ivar tags: A set of tags. Tag dictionary. Tags can be added, removed, and updated.
    :vartype tags: dict[str, str]
    :ivar is_archived: Is the asset archived?.
    :vartype is_archived: bool
    :ivar latest_version: The latest version inside this container.
    :vartype latest_version: str
    :ivar next_version: The next auto incremental version.
    :vartype next_version: str
    """

    _validation = {
        'latest_version': {'readonly': True},
        'next_version': {'readonly': True},
    }

    _attribute_map = {
        'description': {'key': 'description', 'type': 'str'},
        'properties': {'key': 'properties', 'type': '{str}'},
        'tags': {'key': 'tags', 'type': '{str}'},
        'is_archived': {'key': 'isArchived', 'type': 'bool'},
        'latest_version': {'key': 'latestVersion', 'type': 'str'},
        'next_version': {'key': 'nextVersion', 'type': 'str'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword description: The asset description text.
        :paramtype description: str
        :keyword properties: The asset property dictionary.
        :paramtype properties: dict[str, str]
        :keyword tags: A set of tags. Tag dictionary. Tags can be added, removed, and updated.
        :paramtype tags: dict[str, str]
        :keyword is_archived: Is the asset archived?.
        :paramtype is_archived: bool
        """
        super(AssetContainer, self).__init__(**kwargs)
        self.is_archived = kwargs.get('is_archived', False)
        self.latest_version = None
        self.next_version = None


class AssetJobInput(msrest.serialization.Model):
    """Asset input type.

    All required parameters must be populated in order to send to Azure.

    :ivar mode: Input Asset Delivery Mode. Possible values include: "ReadOnlyMount",
     "ReadWriteMount", "Download", "Direct", "EvalMount", "EvalDownload".
    :vartype mode: str or ~azure.mgmt.machinelearningservices.models.InputDeliveryMode
    :ivar uri: Required. [Required] Input Asset URI.
    :vartype uri: str
    """

    _validation = {
        'uri': {'required': True, 'min_length': 1, 'pattern': r'[a-zA-Z0-9_]'},
    }

    _attribute_map = {
        'mode': {'key': 'mode', 'type': 'str'},
        'uri': {'key': 'uri', 'type': 'str'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword mode: Input Asset Delivery Mode. Possible values include: "ReadOnlyMount",
         "ReadWriteMount", "Download", "Direct", "EvalMount", "EvalDownload".
        :paramtype mode: str or ~azure.mgmt.machinelearningservices.models.InputDeliveryMode
        :keyword uri: Required. [Required] Input Asset URI.
        :paramtype uri: str
        """
        super(AssetJobInput, self).__init__(**kwargs)
        self.mode = kwargs.get('mode', None)
        self.uri = kwargs['uri']


class AssetJobOutput(msrest.serialization.Model):
    """Asset output type.

    :ivar asset_name: Output Asset Name.
    :vartype asset_name: str
    :ivar mode: Output Asset Delivery Mode. Possible values include: "ReadWriteMount", "Upload",
     "Direct".
    :vartype mode: str or ~azure.mgmt.machinelearningservices.models.OutputDeliveryMode
    :ivar uri: Output Asset URI.
    :vartype uri: str
    """

    _attribute_map = {
        'asset_name': {'key': 'assetName', 'type': 'str'},
        'mode': {'key': 'mode', 'type': 'str'},
        'uri': {'key': 'uri', 'type': 'str'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword asset_name: Output Asset Name.
        :paramtype asset_name: str
        :keyword mode: Output Asset Delivery Mode. Possible values include: "ReadWriteMount", "Upload",
         "Direct".
        :paramtype mode: str or ~azure.mgmt.machinelearningservices.models.OutputDeliveryMode
        :keyword uri: Output Asset URI.
        :paramtype uri: str
        """
        super(AssetJobOutput, self).__init__(**kwargs)
        self.asset_name = kwargs.get('asset_name', None)
        self.mode = kwargs.get('mode', None)
        self.uri = kwargs.get('uri', None)


class AssetReferenceBase(msrest.serialization.Model):
    """Base definition for asset references.

    You probably want to use the sub-classes and not this class directly. Known
    sub-classes are: DataPathAssetReference, IdAssetReference, OutputPathAssetReference.

    All required parameters must be populated in order to send to Azure.

    :ivar reference_type: Required. [Required] Specifies the type of asset reference.Constant
     filled by server. Possible values include: "Id", "DataPath", "OutputPath".
    :vartype reference_type: str or ~azure.mgmt.machinelearningservices.models.ReferenceType
    """

    _validation = {
        'reference_type': {'required': True},
    }

    _attribute_map = {
        'reference_type': {'key': 'referenceType', 'type': 'str'},
    }

    _subtype_map = {
        'reference_type': {'DataPath': 'DataPathAssetReference', 'Id': 'IdAssetReference', 'OutputPath': 'OutputPathAssetReference'}
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        """
        super(AssetReferenceBase, self).__init__(**kwargs)
        self.reference_type = None  # type: Optional[str]


class AssignedUser(msrest.serialization.Model):
    """A user that can be assigned to a compute instance.

    All required parameters must be populated in order to send to Azure.

    :ivar object_id: Required. User’s AAD Object Id.
    :vartype object_id: str
    :ivar tenant_id: Required. User’s AAD Tenant Id.
    :vartype tenant_id: str
    """

    _validation = {
        'object_id': {'required': True},
        'tenant_id': {'required': True},
    }

    _attribute_map = {
        'object_id': {'key': 'objectId', 'type': 'str'},
        'tenant_id': {'key': 'tenantId', 'type': 'str'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword object_id: Required. User’s AAD Object Id.
        :paramtype object_id: str
        :keyword tenant_id: Required. User’s AAD Tenant Id.
        :paramtype tenant_id: str
        """
        super(AssignedUser, self).__init__(**kwargs)
        self.object_id = kwargs['object_id']
        self.tenant_id = kwargs['tenant_id']


class ForecastHorizon(msrest.serialization.Model):
    """The desired maximum forecast horizon in units of time-series frequency.

    You probably want to use the sub-classes and not this class directly. Known
    sub-classes are: AutoForecastHorizon, CustomForecastHorizon.

    All required parameters must be populated in order to send to Azure.

    :ivar mode: Required. [Required] Set forecast horizon value selection mode.Constant filled by
     server. Possible values include: "Auto", "Custom".
    :vartype mode: str or ~azure.mgmt.machinelearningservices.models.ForecastHorizonMode
    """

    _validation = {
        'mode': {'required': True},
    }

    _attribute_map = {
        'mode': {'key': 'mode', 'type': 'str'},
    }

    _subtype_map = {
        'mode': {'Auto': 'AutoForecastHorizon', 'Custom': 'CustomForecastHorizon'}
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        """
        super(ForecastHorizon, self).__init__(**kwargs)
        self.mode = None  # type: Optional[str]


class AutoForecastHorizon(ForecastHorizon):
    """Forecast horizon determined automatically by system.

    All required parameters must be populated in order to send to Azure.

    :ivar mode: Required. [Required] Set forecast horizon value selection mode.Constant filled by
     server. Possible values include: "Auto", "Custom".
    :vartype mode: str or ~azure.mgmt.machinelearningservices.models.ForecastHorizonMode
    """

    _validation = {
        'mode': {'required': True},
    }

    _attribute_map = {
        'mode': {'key': 'mode', 'type': 'str'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        """
        super(AutoForecastHorizon, self).__init__(**kwargs)
        self.mode = 'Auto'  # type: str


class JobBaseProperties(ResourceBase):
    """Base definition for a job.

    You probably want to use the sub-classes and not this class directly. Known
    sub-classes are: AutoMLJob, CommandJob, DistillationJob, FineTuningJob, PipelineJob, SparkJob, SweepJob.

    Variables are only populated by the server, and will be ignored when sending a request.

    All required parameters must be populated in order to send to Azure.

    :ivar description: The asset description text.
    :vartype description: str
    :ivar properties: The asset property dictionary.
    :vartype properties: dict[str, str]
    :ivar tags: A set of tags. Tag dictionary. Tags can be added, removed, and updated.
    :vartype tags: dict[str, str]
    :ivar component_id: ARM resource ID of the component resource.
    :vartype component_id: str
    :ivar compute_id: ARM resource ID of the compute resource.
    :vartype compute_id: str
    :ivar display_name: Display name of job.
    :vartype display_name: str
    :ivar experiment_name: The name of the experiment the job belongs to. If not set, the job is
     placed in the "Default" experiment.
    :vartype experiment_name: str
    :ivar identity: Identity configuration. If set, this should be one of AmlToken,
     ManagedIdentity, UserIdentity or null.
     Defaults to AmlToken if null.
    :vartype identity: ~azure.mgmt.machinelearningservices.models.IdentityConfiguration
    :ivar is_archived: Is the asset archived?.
    :vartype is_archived: bool
    :ivar job_type: Required. [Required] Specifies the type of job.Constant filled by server.
     Possible values include: "AutoML", "Command", "Sweep", "Pipeline", "Spark", "FineTuning",
     "Distillation".
    :vartype job_type: str or ~azure.mgmt.machinelearningservices.models.JobType
    :ivar notification_setting: Notification setting for the job.
    :vartype notification_setting: ~azure.mgmt.machinelearningservices.models.NotificationSetting
    :ivar parent_job_name: Parent job name.
    :vartype parent_job_name: str
    :ivar services: List of JobEndpoints.
     For local jobs, a job endpoint will have an endpoint value of FileStreamObject.
    :vartype services: dict[str, ~azure.mgmt.machinelearningservices.models.JobService]
    :ivar status: Status of the job. Possible values include: "NotStarted", "Starting",
     "Provisioning", "Preparing", "Queued", "Running", "Finalizing", "CancelRequested", "Completed",
     "Failed", "Canceled", "NotResponding", "Paused", "Unknown".
    :vartype status: str or ~azure.mgmt.machinelearningservices.models.JobStatus
    """

    _validation = {
        'job_type': {'required': True},
        'status': {'readonly': True},
    }

    _attribute_map = {
        'description': {'key': 'description', 'type': 'str'},
        'properties': {'key': 'properties', 'type': '{str}'},
        'tags': {'key': 'tags', 'type': '{str}'},
        'component_id': {'key': 'componentId', 'type': 'str'},
        'compute_id': {'key': 'computeId', 'type': 'str'},
        'display_name': {'key': 'displayName', 'type': 'str'},
        'experiment_name': {'key': 'experimentName', 'type': 'str'},
        'identity': {'key': 'identity', 'type': 'IdentityConfiguration'},
        'is_archived': {'key': 'isArchived', 'type': 'bool'},
        'job_type': {'key': 'jobType', 'type': 'str'},
        'notification_setting': {'key': 'notificationSetting', 'type': 'NotificationSetting'},
        'parent_job_name': {'key': 'parentJobName', 'type': 'str'},
        'services': {'key': 'services', 'type': '{JobService}'},
        'status': {'key': 'status', 'type': 'str'},
    }

    _subtype_map = {
        'job_type': {'AutoML': 'AutoMLJob', 'Command': 'CommandJob', 'Distillation': 'DistillationJob', 'FineTuning': 'FineTuningJob', 'Pipeline': 'PipelineJob', 'Spark': 'SparkJob', 'Sweep': 'SweepJob'}
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword description: The asset description text.
        :paramtype description: str
        :keyword properties: The asset property dictionary.
        :paramtype properties: dict[str, str]
        :keyword tags: A set of tags. Tag dictionary. Tags can be added, removed, and updated.
        :paramtype tags: dict[str, str]
        :keyword component_id: ARM resource ID of the component resource.
        :paramtype component_id: str
        :keyword compute_id: ARM resource ID of the compute resource.
        :paramtype compute_id: str
        :keyword display_name: Display name of job.
        :paramtype display_name: str
        :keyword experiment_name: The name of the experiment the job belongs to. If not set, the job is
         placed in the "Default" experiment.
        :paramtype experiment_name: str
        :keyword identity: Identity configuration. If set, this should be one of AmlToken,
         ManagedIdentity, UserIdentity or null.
         Defaults to AmlToken if null.
        :paramtype identity: ~azure.mgmt.machinelearningservices.models.IdentityConfiguration
        :keyword is_archived: Is the asset archived?.
        :paramtype is_archived: bool
        :keyword notification_setting: Notification setting for the job.
        :paramtype notification_setting: ~azure.mgmt.machinelearningservices.models.NotificationSetting
        :keyword parent_job_name: Parent job name.
        :paramtype parent_job_name: str
        :keyword services: List of JobEndpoints.
         For local jobs, a job endpoint will have an endpoint value of FileStreamObject.
        :paramtype services: dict[str, ~azure.mgmt.machinelearningservices.models.JobService]
        """
        super(JobBaseProperties, self).__init__(**kwargs)
        self.component_id = kwargs.get('component_id', None)
        self.compute_id = kwargs.get('compute_id', None)
        self.display_name = kwargs.get('display_name', None)
        self.experiment_name = kwargs.get('experiment_name', "Default")
        self.identity = kwargs.get('identity', None)
        self.is_archived = kwargs.get('is_archived', False)
        self.job_type = 'JobBaseProperties'  # type: str
        self.notification_setting = kwargs.get('notification_setting', None)
        self.parent_job_name = kwargs.get('parent_job_name', None)
        self.services = kwargs.get('services', None)
        self.status = None


class AutoMLJob(JobBaseProperties):
    """AutoMLJob class.
Use this class for executing AutoML tasks like Classification/Regression etc.
See TaskType enum for all the tasks supported.

    Variables are only populated by the server, and will be ignored when sending a request.

    All required parameters must be populated in order to send to Azure.

    :ivar description: The asset description text.
    :vartype description: str
    :ivar properties: The asset property dictionary.
    :vartype properties: dict[str, str]
    :ivar tags: A set of tags. Tag dictionary. Tags can be added, removed, and updated.
    :vartype tags: dict[str, str]
    :ivar component_id: ARM resource ID of the component resource.
    :vartype component_id: str
    :ivar compute_id: ARM resource ID of the compute resource.
    :vartype compute_id: str
    :ivar display_name: Display name of job.
    :vartype display_name: str
    :ivar experiment_name: The name of the experiment the job belongs to. If not set, the job is
     placed in the "Default" experiment.
    :vartype experiment_name: str
    :ivar identity: Identity configuration. If set, this should be one of AmlToken,
     ManagedIdentity, UserIdentity or null.
     Defaults to AmlToken if null.
    :vartype identity: ~azure.mgmt.machinelearningservices.models.IdentityConfiguration
    :ivar is_archived: Is the asset archived?.
    :vartype is_archived: bool
    :ivar job_type: Required. [Required] Specifies the type of job.Constant filled by server.
     Possible values include: "AutoML", "Command", "Sweep", "Pipeline", "Spark", "FineTuning",
     "Distillation".
    :vartype job_type: str or ~azure.mgmt.machinelearningservices.models.JobType
    :ivar notification_setting: Notification setting for the job.
    :vartype notification_setting: ~azure.mgmt.machinelearningservices.models.NotificationSetting
    :ivar parent_job_name: Parent job name.
    :vartype parent_job_name: str
    :ivar services: List of JobEndpoints.
     For local jobs, a job endpoint will have an endpoint value of FileStreamObject.
    :vartype services: dict[str, ~azure.mgmt.machinelearningservices.models.JobService]
    :ivar status: Status of the job. Possible values include: "NotStarted", "Starting",
     "Provisioning", "Preparing", "Queued", "Running", "Finalizing", "CancelRequested", "Completed",
     "Failed", "Canceled", "NotResponding", "Paused", "Unknown".
    :vartype status: str or ~azure.mgmt.machinelearningservices.models.JobStatus
    :ivar environment_id: The ARM resource ID of the Environment specification for the job.
     This is optional value to provide, if not provided, AutoML will default this to Production
     AutoML curated environment version when running the job.
    :vartype environment_id: str
    :ivar environment_variables: Environment variables included in the job.
    :vartype environment_variables: dict[str, str]
    :ivar outputs: Mapping of output data bindings used in the job.
    :vartype outputs: dict[str, ~azure.mgmt.machinelearningservices.models.JobOutput]
    :ivar queue_settings: Queue settings for the job.
    :vartype queue_settings: ~azure.mgmt.machinelearningservices.models.QueueSettings
    :ivar resources: Compute Resource configuration for the job.
    :vartype resources: ~azure.mgmt.machinelearningservices.models.JobResourceConfiguration
    :ivar task_details: Required. [Required] This represents scenario which can be one of
     Tables/NLP/Image.
    :vartype task_details: ~azure.mgmt.machinelearningservices.models.AutoMLVertical
    """

    _validation = {
        'job_type': {'required': True},
        'status': {'readonly': True},
        'task_details': {'required': True},
    }

    _attribute_map = {
        'description': {'key': 'description', 'type': 'str'},
        'properties': {'key': 'properties', 'type': '{str}'},
        'tags': {'key': 'tags', 'type': '{str}'},
        'component_id': {'key': 'componentId', 'type': 'str'},
        'compute_id': {'key': 'computeId', 'type': 'str'},
        'display_name': {'key': 'displayName', 'type': 'str'},
        'experiment_name': {'key': 'experimentName', 'type': 'str'},
        'identity': {'key': 'identity', 'type': 'IdentityConfiguration'},
        'is_archived': {'key': 'isArchived', 'type': 'bool'},
        'job_type': {'key': 'jobType', 'type': 'str'},
        'notification_setting': {'key': 'notificationSetting', 'type': 'NotificationSetting'},
        'parent_job_name': {'key': 'parentJobName', 'type': 'str'},
        'services': {'key': 'services', 'type': '{JobService}'},
        'status': {'key': 'status', 'type': 'str'},
        'environment_id': {'key': 'environmentId', 'type': 'str'},
        'environment_variables': {'key': 'environmentVariables', 'type': '{str}'},
        'outputs': {'key': 'outputs', 'type': '{JobOutput}'},
        'queue_settings': {'key': 'queueSettings', 'type': 'QueueSettings'},
        'resources': {'key': 'resources', 'type': 'JobResourceConfiguration'},
        'task_details': {'key': 'taskDetails', 'type': 'AutoMLVertical'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword description: The asset description text.
        :paramtype description: str
        :keyword properties: The asset property dictionary.
        :paramtype properties: dict[str, str]
        :keyword tags: A set of tags. Tag dictionary. Tags can be added, removed, and updated.
        :paramtype tags: dict[str, str]
        :keyword component_id: ARM resource ID of the component resource.
        :paramtype component_id: str
        :keyword compute_id: ARM resource ID of the compute resource.
        :paramtype compute_id: str
        :keyword display_name: Display name of job.
        :paramtype display_name: str
        :keyword experiment_name: The name of the experiment the job belongs to. If not set, the job is
         placed in the "Default" experiment.
        :paramtype experiment_name: str
        :keyword identity: Identity configuration. If set, this should be one of AmlToken,
         ManagedIdentity, UserIdentity or null.
         Defaults to AmlToken if null.
        :paramtype identity: ~azure.mgmt.machinelearningservices.models.IdentityConfiguration
        :keyword is_archived: Is the asset archived?.
        :paramtype is_archived: bool
        :keyword notification_setting: Notification setting for the job.
        :paramtype notification_setting: ~azure.mgmt.machinelearningservices.models.NotificationSetting
        :keyword parent_job_name: Parent job name.
        :paramtype parent_job_name: str
        :keyword services: List of JobEndpoints.
         For local jobs, a job endpoint will have an endpoint value of FileStreamObject.
        :paramtype services: dict[str, ~azure.mgmt.machinelearningservices.models.JobService]
        :keyword environment_id: The ARM resource ID of the Environment specification for the job.
         This is optional value to provide, if not provided, AutoML will default this to Production
         AutoML curated environment version when running the job.
        :paramtype environment_id: str
        :keyword environment_variables: Environment variables included in the job.
        :paramtype environment_variables: dict[str, str]
        :keyword outputs: Mapping of output data bindings used in the job.
        :paramtype outputs: dict[str, ~azure.mgmt.machinelearningservices.models.JobOutput]
        :keyword queue_settings: Queue settings for the job.
        :paramtype queue_settings: ~azure.mgmt.machinelearningservices.models.QueueSettings
        :keyword resources: Compute Resource configuration for the job.
        :paramtype resources: ~azure.mgmt.machinelearningservices.models.JobResourceConfiguration
        :keyword task_details: Required. [Required] This represents scenario which can be one of
         Tables/NLP/Image.
        :paramtype task_details: ~azure.mgmt.machinelearningservices.models.AutoMLVertical
        """
        super(AutoMLJob, self).__init__(**kwargs)
        self.job_type = 'AutoML'  # type: str
        self.environment_id = kwargs.get('environment_id', None)
        self.environment_variables = kwargs.get('environment_variables', None)
        self.outputs = kwargs.get('outputs', None)
        self.queue_settings = kwargs.get('queue_settings', None)
        self.resources = kwargs.get('resources', None)
        self.task_details = kwargs['task_details']


class AutoMLVertical(msrest.serialization.Model):
    """AutoML vertical class.
Base class for AutoML verticals - TableVertical/ImageVertical/NLPVertical.

    You probably want to use the sub-classes and not this class directly. Known
    sub-classes are: Classification, Forecasting, ImageClassification, ImageClassificationMultilabel, ImageInstanceSegmentation, ImageObjectDetection, Regression, TextClassification, TextClassificationMultilabel, TextNer.

    All required parameters must be populated in order to send to Azure.

    :ivar log_verbosity: Log verbosity for the job. Possible values include: "NotSet", "Debug",
     "Info", "Warning", "Error", "Critical".
    :vartype log_verbosity: str or ~azure.mgmt.machinelearningservices.models.LogVerbosity
    :ivar target_column_name: Target column name: This is prediction values column.
     Also known as label column name in context of classification tasks.
    :vartype target_column_name: str
    :ivar task_type: Required. [Required] Task type for AutoMLJob.Constant filled by server.
     Possible values include: "Classification", "Regression", "Forecasting", "ImageClassification",
     "ImageClassificationMultilabel", "ImageObjectDetection", "ImageInstanceSegmentation",
     "TextClassification", "TextClassificationMultilabel", "TextNER".
    :vartype task_type: str or ~azure.mgmt.machinelearningservices.models.TaskType
    :ivar training_data: Required. [Required] Training data input.
    :vartype training_data: ~azure.mgmt.machinelearningservices.models.MLTableJobInput
    """

    _validation = {
        'task_type': {'required': True},
        'training_data': {'required': True},
    }

    _attribute_map = {
        'log_verbosity': {'key': 'logVerbosity', 'type': 'str'},
        'target_column_name': {'key': 'targetColumnName', 'type': 'str'},
        'task_type': {'key': 'taskType', 'type': 'str'},
        'training_data': {'key': 'trainingData', 'type': 'MLTableJobInput'},
    }

    _subtype_map = {
        'task_type': {'Classification': 'Classification', 'Forecasting': 'Forecasting', 'ImageClassification': 'ImageClassification', 'ImageClassificationMultilabel': 'ImageClassificationMultilabel', 'ImageInstanceSegmentation': 'ImageInstanceSegmentation', 'ImageObjectDetection': 'ImageObjectDetection', 'Regression': 'Regression', 'TextClassification': 'TextClassification', 'TextClassificationMultilabel': 'TextClassificationMultilabel', 'TextNER': 'TextNer'}
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword log_verbosity: Log verbosity for the job. Possible values include: "NotSet", "Debug",
         "Info", "Warning", "Error", "Critical".
        :paramtype log_verbosity: str or ~azure.mgmt.machinelearningservices.models.LogVerbosity
        :keyword target_column_name: Target column name: This is prediction values column.
         Also known as label column name in context of classification tasks.
        :paramtype target_column_name: str
        :keyword training_data: Required. [Required] Training data input.
        :paramtype training_data: ~azure.mgmt.machinelearningservices.models.MLTableJobInput
        """
        super(AutoMLVertical, self).__init__(**kwargs)
        self.log_verbosity = kwargs.get('log_verbosity', None)
        self.target_column_name = kwargs.get('target_column_name', None)
        self.task_type = None  # type: Optional[str]
        self.training_data = kwargs['training_data']


class NCrossValidations(msrest.serialization.Model):
    """N-Cross validations value.

    You probably want to use the sub-classes and not this class directly. Known
    sub-classes are: AutoNCrossValidations, CustomNCrossValidations.

    All required parameters must be populated in order to send to Azure.

    :ivar mode: Required. [Required] Mode for determining N-Cross validations.Constant filled by
     server. Possible values include: "Auto", "Custom".
    :vartype mode: str or ~azure.mgmt.machinelearningservices.models.NCrossValidationsMode
    """

    _validation = {
        'mode': {'required': True},
    }

    _attribute_map = {
        'mode': {'key': 'mode', 'type': 'str'},
    }

    _subtype_map = {
        'mode': {'Auto': 'AutoNCrossValidations', 'Custom': 'CustomNCrossValidations'}
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        """
        super(NCrossValidations, self).__init__(**kwargs)
        self.mode = None  # type: Optional[str]


class AutoNCrossValidations(NCrossValidations):
    """N-Cross validations determined automatically.

    All required parameters must be populated in order to send to Azure.

    :ivar mode: Required. [Required] Mode for determining N-Cross validations.Constant filled by
     server. Possible values include: "Auto", "Custom".
    :vartype mode: str or ~azure.mgmt.machinelearningservices.models.NCrossValidationsMode
    """

    _validation = {
        'mode': {'required': True},
    }

    _attribute_map = {
        'mode': {'key': 'mode', 'type': 'str'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        """
        super(AutoNCrossValidations, self).__init__(**kwargs)
        self.mode = 'Auto'  # type: str


class AutoPauseProperties(msrest.serialization.Model):
    """Auto pause properties.

    :ivar delay_in_minutes:
    :vartype delay_in_minutes: int
    :ivar enabled:
    :vartype enabled: bool
    """

    _attribute_map = {
        'delay_in_minutes': {'key': 'delayInMinutes', 'type': 'int'},
        'enabled': {'key': 'enabled', 'type': 'bool'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword delay_in_minutes:
        :paramtype delay_in_minutes: int
        :keyword enabled:
        :paramtype enabled: bool
        """
        super(AutoPauseProperties, self).__init__(**kwargs)
        self.delay_in_minutes = kwargs.get('delay_in_minutes', None)
        self.enabled = kwargs.get('enabled', None)


class AutoScaleProperties(msrest.serialization.Model):
    """Auto scale properties.

    :ivar min_node_count:
    :vartype min_node_count: int
    :ivar enabled:
    :vartype enabled: bool
    :ivar max_node_count:
    :vartype max_node_count: int
    """

    _attribute_map = {
        'min_node_count': {'key': 'minNodeCount', 'type': 'int'},
        'enabled': {'key': 'enabled', 'type': 'bool'},
        'max_node_count': {'key': 'maxNodeCount', 'type': 'int'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword min_node_count:
        :paramtype min_node_count: int
        :keyword enabled:
        :paramtype enabled: bool
        :keyword max_node_count:
        :paramtype max_node_count: int
        """
        super(AutoScaleProperties, self).__init__(**kwargs)
        self.min_node_count = kwargs.get('min_node_count', None)
        self.enabled = kwargs.get('enabled', None)
        self.max_node_count = kwargs.get('max_node_count', None)


class Seasonality(msrest.serialization.Model):
    """Forecasting seasonality.

    You probably want to use the sub-classes and not this class directly. Known
    sub-classes are: AutoSeasonality, CustomSeasonality.

    All required parameters must be populated in order to send to Azure.

    :ivar mode: Required. [Required] Seasonality mode.Constant filled by server. Possible values
     include: "Auto", "Custom".
    :vartype mode: str or ~azure.mgmt.machinelearningservices.models.SeasonalityMode
    """

    _validation = {
        'mode': {'required': True},
    }

    _attribute_map = {
        'mode': {'key': 'mode', 'type': 'str'},
    }

    _subtype_map = {
        'mode': {'Auto': 'AutoSeasonality', 'Custom': 'CustomSeasonality'}
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        """
        super(Seasonality, self).__init__(**kwargs)
        self.mode = None  # type: Optional[str]


class AutoSeasonality(Seasonality):
    """AutoSeasonality.

    All required parameters must be populated in order to send to Azure.

    :ivar mode: Required. [Required] Seasonality mode.Constant filled by server. Possible values
     include: "Auto", "Custom".
    :vartype mode: str or ~azure.mgmt.machinelearningservices.models.SeasonalityMode
    """

    _validation = {
        'mode': {'required': True},
    }

    _attribute_map = {
        'mode': {'key': 'mode', 'type': 'str'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        """
        super(AutoSeasonality, self).__init__(**kwargs)
        self.mode = 'Auto'  # type: str


class TargetLags(msrest.serialization.Model):
    """The number of past periods to lag from the target column.

    You probably want to use the sub-classes and not this class directly. Known
    sub-classes are: AutoTargetLags, CustomTargetLags.

    All required parameters must be populated in order to send to Azure.

    :ivar mode: Required. [Required] Set target lags mode - Auto/Custom.Constant filled by server.
     Possible values include: "Auto", "Custom".
    :vartype mode: str or ~azure.mgmt.machinelearningservices.models.TargetLagsMode
    """

    _validation = {
        'mode': {'required': True},
    }

    _attribute_map = {
        'mode': {'key': 'mode', 'type': 'str'},
    }

    _subtype_map = {
        'mode': {'Auto': 'AutoTargetLags', 'Custom': 'CustomTargetLags'}
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        """
        super(TargetLags, self).__init__(**kwargs)
        self.mode = None  # type: Optional[str]


class AutoTargetLags(TargetLags):
    """AutoTargetLags.

    All required parameters must be populated in order to send to Azure.

    :ivar mode: Required. [Required] Set target lags mode - Auto/Custom.Constant filled by server.
     Possible values include: "Auto", "Custom".
    :vartype mode: str or ~azure.mgmt.machinelearningservices.models.TargetLagsMode
    """

    _validation = {
        'mode': {'required': True},
    }

    _attribute_map = {
        'mode': {'key': 'mode', 'type': 'str'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        """
        super(AutoTargetLags, self).__init__(**kwargs)
        self.mode = 'Auto'  # type: str


class TargetRollingWindowSize(msrest.serialization.Model):
    """Forecasting target rolling window size.

    You probably want to use the sub-classes and not this class directly. Known
    sub-classes are: AutoTargetRollingWindowSize, CustomTargetRollingWindowSize.

    All required parameters must be populated in order to send to Azure.

    :ivar mode: Required. [Required] TargetRollingWindowSiz detection mode.Constant filled by
     server. Possible values include: "Auto", "Custom".
    :vartype mode: str or ~azure.mgmt.machinelearningservices.models.TargetRollingWindowSizeMode
    """

    _validation = {
        'mode': {'required': True},
    }

    _attribute_map = {
        'mode': {'key': 'mode', 'type': 'str'},
    }

    _subtype_map = {
        'mode': {'Auto': 'AutoTargetRollingWindowSize', 'Custom': 'CustomTargetRollingWindowSize'}
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        """
        super(TargetRollingWindowSize, self).__init__(**kwargs)
        self.mode = None  # type: Optional[str]


class AutoTargetRollingWindowSize(TargetRollingWindowSize):
    """Target lags rolling window determined automatically.

    All required parameters must be populated in order to send to Azure.

    :ivar mode: Required. [Required] TargetRollingWindowSiz detection mode.Constant filled by
     server. Possible values include: "Auto", "Custom".
    :vartype mode: str or ~azure.mgmt.machinelearningservices.models.TargetRollingWindowSizeMode
    """

    _validation = {
        'mode': {'required': True},
    }

    _attribute_map = {
        'mode': {'key': 'mode', 'type': 'str'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        """
        super(AutoTargetRollingWindowSize, self).__init__(**kwargs)
        self.mode = 'Auto'  # type: str


class AvailableQuota(msrest.serialization.Model):
    """AvailableQuota.

    :ivar properties: Available quota properties.
    :vartype properties: ~azure.mgmt.machinelearningservices.models.AvailableQuotaProperties
    """

    _attribute_map = {
        'properties': {'key': 'properties', 'type': 'AvailableQuotaProperties'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword properties: Available quota properties.
        :paramtype properties: ~azure.mgmt.machinelearningservices.models.AvailableQuotaProperties
        """
        super(AvailableQuota, self).__init__(**kwargs)
        self.properties = kwargs.get('properties', None)


class AvailableQuotaArmPaginatedResult(msrest.serialization.Model):
    """A paginated list of AvailableQuota entities.

    :ivar next_link: The link to the next page of AvailableQuota objects. If null, there are no
     additional pages.
    :vartype next_link: str
    :ivar value: An array of objects of type AvailableQuota.
    :vartype value: list[~azure.mgmt.machinelearningservices.models.AvailableQuota]
    """

    _attribute_map = {
        'next_link': {'key': 'nextLink', 'type': 'str'},
        'value': {'key': 'value', 'type': '[AvailableQuota]'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword next_link: The link to the next page of AvailableQuota objects. If null, there are no
         additional pages.
        :paramtype next_link: str
        :keyword value: An array of objects of type AvailableQuota.
        :paramtype value: list[~azure.mgmt.machinelearningservices.models.AvailableQuota]
        """
        super(AvailableQuotaArmPaginatedResult, self).__init__(**kwargs)
        self.next_link = kwargs.get('next_link', None)
        self.value = kwargs.get('value', None)


class AvailableQuotaProperties(msrest.serialization.Model):
    """AvailableQuotaProperties.

    :ivar total: The number of available quota.
    :vartype total: long
    """

    _attribute_map = {
        'total': {'key': 'total', 'type': 'long'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword total: The number of available quota.
        :paramtype total: long
        """
        super(AvailableQuotaProperties, self).__init__(**kwargs)
        self.total = kwargs.get('total', None)


class AzureDatastore(msrest.serialization.Model):
    """Base definition for Azure datastore contents configuration.

    :ivar resource_group: Azure Resource Group name.
    :vartype resource_group: str
    :ivar subscription_id: Azure Subscription Id.
    :vartype subscription_id: str
    """

    _attribute_map = {
        'resource_group': {'key': 'resourceGroup', 'type': 'str'},
        'subscription_id': {'key': 'subscriptionId', 'type': 'str'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword resource_group: Azure Resource Group name.
        :paramtype resource_group: str
        :keyword subscription_id: Azure Subscription Id.
        :paramtype subscription_id: str
        """
        super(AzureDatastore, self).__init__(**kwargs)
        self.resource_group = kwargs.get('resource_group', None)
        self.subscription_id = kwargs.get('subscription_id', None)


class DatastoreProperties(ResourceBase):
    """Base definition for datastore contents configuration.

    You probably want to use the sub-classes and not this class directly. Known
    sub-classes are: AzureBlobDatastore, AzureDataLakeGen1Datastore, AzureDataLakeGen2Datastore, AzureFileDatastore, OneLakeDatastore.

    Variables are only populated by the server, and will be ignored when sending a request.

    All required parameters must be populated in order to send to Azure.

    :ivar description: The asset description text.
    :vartype description: str
    :ivar properties: The asset property dictionary.
    :vartype properties: dict[str, str]
    :ivar tags: A set of tags. Tag dictionary. Tags can be added, removed, and updated.
    :vartype tags: dict[str, str]
    :ivar credentials: Required. [Required] Account credentials.
    :vartype credentials: ~azure.mgmt.machinelearningservices.models.DatastoreCredentials
    :ivar datastore_type: Required. [Required] Storage type backing the datastore.Constant filled
     by server. Possible values include: "AzureBlob", "AzureDataLakeGen1", "AzureDataLakeGen2",
     "AzureFile", "OneLake".
    :vartype datastore_type: str or ~azure.mgmt.machinelearningservices.models.DatastoreType
    :ivar is_default: Readonly property to indicate if datastore is the workspace default
     datastore.
    :vartype is_default: bool
    """

    _validation = {
        'credentials': {'required': True},
        'datastore_type': {'required': True},
        'is_default': {'readonly': True},
    }

    _attribute_map = {
        'description': {'key': 'description', 'type': 'str'},
        'properties': {'key': 'properties', 'type': '{str}'},
        'tags': {'key': 'tags', 'type': '{str}'},
        'credentials': {'key': 'credentials', 'type': 'DatastoreCredentials'},
        'datastore_type': {'key': 'datastoreType', 'type': 'str'},
        'is_default': {'key': 'isDefault', 'type': 'bool'},
    }

    _subtype_map = {
        'datastore_type': {'AzureBlob': 'AzureBlobDatastore', 'AzureDataLakeGen1': 'AzureDataLakeGen1Datastore', 'AzureDataLakeGen2': 'AzureDataLakeGen2Datastore', 'AzureFile': 'AzureFileDatastore', 'OneLake': 'OneLakeDatastore'}
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword description: The asset description text.
        :paramtype description: str
        :keyword properties: The asset property dictionary.
        :paramtype properties: dict[str, str]
        :keyword tags: A set of tags. Tag dictionary. Tags can be added, removed, and updated.
        :paramtype tags: dict[str, str]
        :keyword credentials: Required. [Required] Account credentials.
        :paramtype credentials: ~azure.mgmt.machinelearningservices.models.DatastoreCredentials
        """
        super(DatastoreProperties, self).__init__(**kwargs)
        self.credentials = kwargs['credentials']
        self.datastore_type = 'DatastoreProperties'  # type: str
        self.is_default = None


class AzureBlobDatastore(DatastoreProperties, AzureDatastore):
    """Azure Blob datastore configuration.

    Variables are only populated by the server, and will be ignored when sending a request.

    All required parameters must be populated in order to send to Azure.

    :ivar resource_group: Azure Resource Group name.
    :vartype resource_group: str
    :ivar subscription_id: Azure Subscription Id.
    :vartype subscription_id: str
    :ivar description: The asset description text.
    :vartype description: str
    :ivar properties: The asset property dictionary.
    :vartype properties: dict[str, str]
    :ivar tags: A set of tags. Tag dictionary. Tags can be added, removed, and updated.
    :vartype tags: dict[str, str]
    :ivar credentials: Required. [Required] Account credentials.
    :vartype credentials: ~azure.mgmt.machinelearningservices.models.DatastoreCredentials
    :ivar datastore_type: Required. [Required] Storage type backing the datastore.Constant filled
     by server. Possible values include: "AzureBlob", "AzureDataLakeGen1", "AzureDataLakeGen2",
     "AzureFile", "OneLake".
    :vartype datastore_type: str or ~azure.mgmt.machinelearningservices.models.DatastoreType
    :ivar is_default: Readonly property to indicate if datastore is the workspace default
     datastore.
    :vartype is_default: bool
    :ivar account_name: Storage account name.
    :vartype account_name: str
    :ivar container_name: Storage account container name.
    :vartype container_name: str
    :ivar endpoint: Azure cloud endpoint for the storage account.
    :vartype endpoint: str
    :ivar protocol: Protocol used to communicate with the storage account.
    :vartype protocol: str
    :ivar service_data_access_auth_identity: Indicates which identity to use to authenticate
     service data access to customer's storage. Possible values include: "None",
     "WorkspaceSystemAssignedIdentity", "WorkspaceUserAssignedIdentity".
    :vartype service_data_access_auth_identity: str or
     ~azure.mgmt.machinelearningservices.models.ServiceDataAccessAuthIdentity
    """

    _validation = {
        'credentials': {'required': True},
        'datastore_type': {'required': True},
        'is_default': {'readonly': True},
    }

    _attribute_map = {
        'resource_group': {'key': 'resourceGroup', 'type': 'str'},
        'subscription_id': {'key': 'subscriptionId', 'type': 'str'},
        'description': {'key': 'description', 'type': 'str'},
        'properties': {'key': 'properties', 'type': '{str}'},
        'tags': {'key': 'tags', 'type': '{str}'},
        'credentials': {'key': 'credentials', 'type': 'DatastoreCredentials'},
        'datastore_type': {'key': 'datastoreType', 'type': 'str'},
        'is_default': {'key': 'isDefault', 'type': 'bool'},
        'account_name': {'key': 'accountName', 'type': 'str'},
        'container_name': {'key': 'containerName', 'type': 'str'},
        'endpoint': {'key': 'endpoint', 'type': 'str'},
        'protocol': {'key': 'protocol', 'type': 'str'},
        'service_data_access_auth_identity': {'key': 'serviceDataAccessAuthIdentity', 'type': 'str'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword resource_group: Azure Resource Group name.
        :paramtype resource_group: str
        :keyword subscription_id: Azure Subscription Id.
        :paramtype subscription_id: str
        :keyword description: The asset description text.
        :paramtype description: str
        :keyword properties: The asset property dictionary.
        :paramtype properties: dict[str, str]
        :keyword tags: A set of tags. Tag dictionary. Tags can be added, removed, and updated.
        :paramtype tags: dict[str, str]
        :keyword credentials: Required. [Required] Account credentials.
        :paramtype credentials: ~azure.mgmt.machinelearningservices.models.DatastoreCredentials
        :keyword account_name: Storage account name.
        :paramtype account_name: str
        :keyword container_name: Storage account container name.
        :paramtype container_name: str
        :keyword endpoint: Azure cloud endpoint for the storage account.
        :paramtype endpoint: str
        :keyword protocol: Protocol used to communicate with the storage account.
        :paramtype protocol: str
        :keyword service_data_access_auth_identity: Indicates which identity to use to authenticate
         service data access to customer's storage. Possible values include: "None",
         "WorkspaceSystemAssignedIdentity", "WorkspaceUserAssignedIdentity".
        :paramtype service_data_access_auth_identity: str or
         ~azure.mgmt.machinelearningservices.models.ServiceDataAccessAuthIdentity
        """
        super(AzureBlobDatastore, self).__init__(**kwargs)
        self.resource_group = kwargs.get('resource_group', None)
        self.subscription_id = kwargs.get('subscription_id', None)
        self.datastore_type = 'AzureBlob'  # type: str
        self.account_name = kwargs.get('account_name', None)
        self.container_name = kwargs.get('container_name', None)
        self.endpoint = kwargs.get('endpoint', None)
        self.protocol = kwargs.get('protocol', None)
        self.service_data_access_auth_identity = kwargs.get('service_data_access_auth_identity', None)
        self.description = kwargs.get('description', None)
        self.properties = kwargs.get('properties', None)
        self.tags = kwargs.get('tags', None)
        self.credentials = kwargs['credentials']
        self.is_default = None


class AzureDataLakeGen1Datastore(DatastoreProperties, AzureDatastore):
    """Azure Data Lake Gen1 datastore configuration.

    Variables are only populated by the server, and will be ignored when sending a request.

    All required parameters must be populated in order to send to Azure.

    :ivar resource_group: Azure Resource Group name.
    :vartype resource_group: str
    :ivar subscription_id: Azure Subscription Id.
    :vartype subscription_id: str
    :ivar description: The asset description text.
    :vartype description: str
    :ivar properties: The asset property dictionary.
    :vartype properties: dict[str, str]
    :ivar tags: A set of tags. Tag dictionary. Tags can be added, removed, and updated.
    :vartype tags: dict[str, str]
    :ivar credentials: Required. [Required] Account credentials.
    :vartype credentials: ~azure.mgmt.machinelearningservices.models.DatastoreCredentials
    :ivar datastore_type: Required. [Required] Storage type backing the datastore.Constant filled
     by server. Possible values include: "AzureBlob", "AzureDataLakeGen1", "AzureDataLakeGen2",
     "AzureFile", "OneLake".
    :vartype datastore_type: str or ~azure.mgmt.machinelearningservices.models.DatastoreType
    :ivar is_default: Readonly property to indicate if datastore is the workspace default
     datastore.
    :vartype is_default: bool
    :ivar service_data_access_auth_identity: Indicates which identity to use to authenticate
     service data access to customer's storage. Possible values include: "None",
     "WorkspaceSystemAssignedIdentity", "WorkspaceUserAssignedIdentity".
    :vartype service_data_access_auth_identity: str or
     ~azure.mgmt.machinelearningservices.models.ServiceDataAccessAuthIdentity
    :ivar store_name: Required. [Required] Azure Data Lake store name.
    :vartype store_name: str
    """

    _validation = {
        'credentials': {'required': True},
        'datastore_type': {'required': True},
        'is_default': {'readonly': True},
        'store_name': {'required': True, 'min_length': 1, 'pattern': r'[a-zA-Z0-9_]'},
    }

    _attribute_map = {
        'resource_group': {'key': 'resourceGroup', 'type': 'str'},
        'subscription_id': {'key': 'subscriptionId', 'type': 'str'},
        'description': {'key': 'description', 'type': 'str'},
        'properties': {'key': 'properties', 'type': '{str}'},
        'tags': {'key': 'tags', 'type': '{str}'},
        'credentials': {'key': 'credentials', 'type': 'DatastoreCredentials'},
        'datastore_type': {'key': 'datastoreType', 'type': 'str'},
        'is_default': {'key': 'isDefault', 'type': 'bool'},
        'service_data_access_auth_identity': {'key': 'serviceDataAccessAuthIdentity', 'type': 'str'},
        'store_name': {'key': 'storeName', 'type': 'str'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword resource_group: Azure Resource Group name.
        :paramtype resource_group: str
        :keyword subscription_id: Azure Subscription Id.
        :paramtype subscription_id: str
        :keyword description: The asset description text.
        :paramtype description: str
        :keyword properties: The asset property dictionary.
        :paramtype properties: dict[str, str]
        :keyword tags: A set of tags. Tag dictionary. Tags can be added, removed, and updated.
        :paramtype tags: dict[str, str]
        :keyword credentials: Required. [Required] Account credentials.
        :paramtype credentials: ~azure.mgmt.machinelearningservices.models.DatastoreCredentials
        :keyword service_data_access_auth_identity: Indicates which identity to use to authenticate
         service data access to customer's storage. Possible values include: "None",
         "WorkspaceSystemAssignedIdentity", "WorkspaceUserAssignedIdentity".
        :paramtype service_data_access_auth_identity: str or
         ~azure.mgmt.machinelearningservices.models.ServiceDataAccessAuthIdentity
        :keyword store_name: Required. [Required] Azure Data Lake store name.
        :paramtype store_name: str
        """
        super(AzureDataLakeGen1Datastore, self).__init__(**kwargs)
        self.resource_group = kwargs.get('resource_group', None)
        self.subscription_id = kwargs.get('subscription_id', None)
        self.datastore_type = 'AzureDataLakeGen1'  # type: str
        self.service_data_access_auth_identity = kwargs.get('service_data_access_auth_identity', None)
        self.store_name = kwargs['store_name']
        self.description = kwargs.get('description', None)
        self.properties = kwargs.get('properties', None)
        self.tags = kwargs.get('tags', None)
        self.credentials = kwargs['credentials']
        self.is_default = None


class AzureDataLakeGen2Datastore(DatastoreProperties, AzureDatastore):
    """Azure Data Lake Gen2 datastore configuration.

    Variables are only populated by the server, and will be ignored when sending a request.

    All required parameters must be populated in order to send to Azure.

    :ivar resource_group: Azure Resource Group name.
    :vartype resource_group: str
    :ivar subscription_id: Azure Subscription Id.
    :vartype subscription_id: str
    :ivar description: The asset description text.
    :vartype description: str
    :ivar properties: The asset property dictionary.
    :vartype properties: dict[str, str]
    :ivar tags: A set of tags. Tag dictionary. Tags can be added, removed, and updated.
    :vartype tags: dict[str, str]
    :ivar credentials: Required. [Required] Account credentials.
    :vartype credentials: ~azure.mgmt.machinelearningservices.models.DatastoreCredentials
    :ivar datastore_type: Required. [Required] Storage type backing the datastore.Constant filled
     by server. Possible values include: "AzureBlob", "AzureDataLakeGen1", "AzureDataLakeGen2",
     "AzureFile", "OneLake".
    :vartype datastore_type: str or ~azure.mgmt.machinelearningservices.models.DatastoreType
    :ivar is_default: Readonly property to indicate if datastore is the workspace default
     datastore.
    :vartype is_default: bool
    :ivar account_name: Required. [Required] Storage account name.
    :vartype account_name: str
    :ivar endpoint: Azure cloud endpoint for the storage account.
    :vartype endpoint: str
    :ivar filesystem: Required. [Required] The name of the Data Lake Gen2 filesystem.
    :vartype filesystem: str
    :ivar protocol: Protocol used to communicate with the storage account.
    :vartype protocol: str
    :ivar service_data_access_auth_identity: Indicates which identity to use to authenticate
     service data access to customer's storage. Possible values include: "None",
     "WorkspaceSystemAssignedIdentity", "WorkspaceUserAssignedIdentity".
    :vartype service_data_access_auth_identity: str or
     ~azure.mgmt.machinelearningservices.models.ServiceDataAccessAuthIdentity
    """

    _validation = {
        'credentials': {'required': True},
        'datastore_type': {'required': True},
        'is_default': {'readonly': True},
        'account_name': {'required': True, 'min_length': 1, 'pattern': r'[a-zA-Z0-9_]'},
        'filesystem': {'required': True, 'min_length': 1, 'pattern': r'[a-zA-Z0-9_]'},
    }

    _attribute_map = {
        'resource_group': {'key': 'resourceGroup', 'type': 'str'},
        'subscription_id': {'key': 'subscriptionId', 'type': 'str'},
        'description': {'key': 'description', 'type': 'str'},
        'properties': {'key': 'properties', 'type': '{str}'},
        'tags': {'key': 'tags', 'type': '{str}'},
        'credentials': {'key': 'credentials', 'type': 'DatastoreCredentials'},
        'datastore_type': {'key': 'datastoreType', 'type': 'str'},
        'is_default': {'key': 'isDefault', 'type': 'bool'},
        'account_name': {'key': 'accountName', 'type': 'str'},
        'endpoint': {'key': 'endpoint', 'type': 'str'},
        'filesystem': {'key': 'filesystem', 'type': 'str'},
        'protocol': {'key': 'protocol', 'type': 'str'},
        'service_data_access_auth_identity': {'key': 'serviceDataAccessAuthIdentity', 'type': 'str'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword resource_group: Azure Resource Group name.
        :paramtype resource_group: str
        :keyword subscription_id: Azure Subscription Id.
        :paramtype subscription_id: str
        :keyword description: The asset description text.
        :paramtype description: str
        :keyword properties: The asset property dictionary.
        :paramtype properties: dict[str, str]
        :keyword tags: A set of tags. Tag dictionary. Tags can be added, removed, and updated.
        :paramtype tags: dict[str, str]
        :keyword credentials: Required. [Required] Account credentials.
        :paramtype credentials: ~azure.mgmt.machinelearningservices.models.DatastoreCredentials
        :keyword account_name: Required. [Required] Storage account name.
        :paramtype account_name: str
        :keyword endpoint: Azure cloud endpoint for the storage account.
        :paramtype endpoint: str
        :keyword filesystem: Required. [Required] The name of the Data Lake Gen2 filesystem.
        :paramtype filesystem: str
        :keyword protocol: Protocol used to communicate with the storage account.
        :paramtype protocol: str
        :keyword service_data_access_auth_identity: Indicates which identity to use to authenticate
         service data access to customer's storage. Possible values include: "None",
         "WorkspaceSystemAssignedIdentity", "WorkspaceUserAssignedIdentity".
        :paramtype service_data_access_auth_identity: str or
         ~azure.mgmt.machinelearningservices.models.ServiceDataAccessAuthIdentity
        """
        super(AzureDataLakeGen2Datastore, self).__init__(**kwargs)
        self.resource_group = kwargs.get('resource_group', None)
        self.subscription_id = kwargs.get('subscription_id', None)
        self.datastore_type = 'AzureDataLakeGen2'  # type: str
        self.account_name = kwargs['account_name']
        self.endpoint = kwargs.get('endpoint', None)
        self.filesystem = kwargs['filesystem']
        self.protocol = kwargs.get('protocol', None)
        self.service_data_access_auth_identity = kwargs.get('service_data_access_auth_identity', None)
        self.description = kwargs.get('description', None)
        self.properties = kwargs.get('properties', None)
        self.tags = kwargs.get('tags', None)
        self.credentials = kwargs['credentials']
        self.is_default = None


class Webhook(msrest.serialization.Model):
    """Webhook base.

    You probably want to use the sub-classes and not this class directly. Known
    sub-classes are: AzureDevOpsWebhook.

    All required parameters must be populated in order to send to Azure.

    :ivar event_type: Send callback on a specified notification event.
    :vartype event_type: str
    :ivar webhook_type: Required. [Required] Specifies the type of service to send a
     callback.Constant filled by server. Possible values include: "AzureDevOps".
    :vartype webhook_type: str or ~azure.mgmt.machinelearningservices.models.WebhookType
    """

    _validation = {
        'webhook_type': {'required': True},
    }

    _attribute_map = {
        'event_type': {'key': 'eventType', 'type': 'str'},
        'webhook_type': {'key': 'webhookType', 'type': 'str'},
    }

    _subtype_map = {
        'webhook_type': {'AzureDevOps': 'AzureDevOpsWebhook'}
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword event_type: Send callback on a specified notification event.
        :paramtype event_type: str
        """
        super(Webhook, self).__init__(**kwargs)
        self.event_type = kwargs.get('event_type', None)
        self.webhook_type = None  # type: Optional[str]


class AzureDevOpsWebhook(Webhook):
    """Webhook details specific for Azure DevOps.

    All required parameters must be populated in order to send to Azure.

    :ivar event_type: Send callback on a specified notification event.
    :vartype event_type: str
    :ivar webhook_type: Required. [Required] Specifies the type of service to send a
     callback.Constant filled by server. Possible values include: "AzureDevOps".
    :vartype webhook_type: str or ~azure.mgmt.machinelearningservices.models.WebhookType
    """

    _validation = {
        'webhook_type': {'required': True},
    }

    _attribute_map = {
        'event_type': {'key': 'eventType', 'type': 'str'},
        'webhook_type': {'key': 'webhookType', 'type': 'str'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword event_type: Send callback on a specified notification event.
        :paramtype event_type: str
        """
        super(AzureDevOpsWebhook, self).__init__(**kwargs)
        self.webhook_type = 'AzureDevOps'  # type: str


class AzureFileDatastore(DatastoreProperties, AzureDatastore):
    """Azure File datastore configuration.

    Variables are only populated by the server, and will be ignored when sending a request.

    All required parameters must be populated in order to send to Azure.

    :ivar resource_group: Azure Resource Group name.
    :vartype resource_group: str
    :ivar subscription_id: Azure Subscription Id.
    :vartype subscription_id: str
    :ivar description: The asset description text.
    :vartype description: str
    :ivar properties: The asset property dictionary.
    :vartype properties: dict[str, str]
    :ivar tags: A set of tags. Tag dictionary. Tags can be added, removed, and updated.
    :vartype tags: dict[str, str]
    :ivar credentials: Required. [Required] Account credentials.
    :vartype credentials: ~azure.mgmt.machinelearningservices.models.DatastoreCredentials
    :ivar datastore_type: Required. [Required] Storage type backing the datastore.Constant filled
     by server. Possible values include: "AzureBlob", "AzureDataLakeGen1", "AzureDataLakeGen2",
     "AzureFile", "OneLake".
    :vartype datastore_type: str or ~azure.mgmt.machinelearningservices.models.DatastoreType
    :ivar is_default: Readonly property to indicate if datastore is the workspace default
     datastore.
    :vartype is_default: bool
    :ivar account_name: Required. [Required] Storage account name.
    :vartype account_name: str
    :ivar endpoint: Azure cloud endpoint for the storage account.
    :vartype endpoint: str
    :ivar file_share_name: Required. [Required] The name of the Azure file share that the datastore
     points to.
    :vartype file_share_name: str
    :ivar protocol: Protocol used to communicate with the storage account.
    :vartype protocol: str
    :ivar service_data_access_auth_identity: Indicates which identity to use to authenticate
     service data access to customer's storage. Possible values include: "None",
     "WorkspaceSystemAssignedIdentity", "WorkspaceUserAssignedIdentity".
    :vartype service_data_access_auth_identity: str or
     ~azure.mgmt.machinelearningservices.models.ServiceDataAccessAuthIdentity
    """

    _validation = {
        'credentials': {'required': True},
        'datastore_type': {'required': True},
        'is_default': {'readonly': True},
        'account_name': {'required': True, 'min_length': 1, 'pattern': r'[a-zA-Z0-9_]'},
        'file_share_name': {'required': True, 'min_length': 1, 'pattern': r'[a-zA-Z0-9_]'},
    }

    _attribute_map = {
        'resource_group': {'key': 'resourceGroup', 'type': 'str'},
        'subscription_id': {'key': 'subscriptionId', 'type': 'str'},
        'description': {'key': 'description', 'type': 'str'},
        'properties': {'key': 'properties', 'type': '{str}'},
        'tags': {'key': 'tags', 'type': '{str}'},
        'credentials': {'key': 'credentials', 'type': 'DatastoreCredentials'},
        'datastore_type': {'key': 'datastoreType', 'type': 'str'},
        'is_default': {'key': 'isDefault', 'type': 'bool'},
        'account_name': {'key': 'accountName', 'type': 'str'},
        'endpoint': {'key': 'endpoint', 'type': 'str'},
        'file_share_name': {'key': 'fileShareName', 'type': 'str'},
        'protocol': {'key': 'protocol', 'type': 'str'},
        'service_data_access_auth_identity': {'key': 'serviceDataAccessAuthIdentity', 'type': 'str'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword resource_group: Azure Resource Group name.
        :paramtype resource_group: str
        :keyword subscription_id: Azure Subscription Id.
        :paramtype subscription_id: str
        :keyword description: The asset description text.
        :paramtype description: str
        :keyword properties: The asset property dictionary.
        :paramtype properties: dict[str, str]
        :keyword tags: A set of tags. Tag dictionary. Tags can be added, removed, and updated.
        :paramtype tags: dict[str, str]
        :keyword credentials: Required. [Required] Account credentials.
        :paramtype credentials: ~azure.mgmt.machinelearningservices.models.DatastoreCredentials
        :keyword account_name: Required. [Required] Storage account name.
        :paramtype account_name: str
        :keyword endpoint: Azure cloud endpoint for the storage account.
        :paramtype endpoint: str
        :keyword file_share_name: Required. [Required] The name of the Azure file share that the
         datastore points to.
        :paramtype file_share_name: str
        :keyword protocol: Protocol used to communicate with the storage account.
        :paramtype protocol: str
        :keyword service_data_access_auth_identity: Indicates which identity to use to authenticate
         service data access to customer's storage. Possible values include: "None",
         "WorkspaceSystemAssignedIdentity", "WorkspaceUserAssignedIdentity".
        :paramtype service_data_access_auth_identity: str or
         ~azure.mgmt.machinelearningservices.models.ServiceDataAccessAuthIdentity
        """
        super(AzureFileDatastore, self).__init__(**kwargs)
        self.resource_group = kwargs.get('resource_group', None)
        self.subscription_id = kwargs.get('subscription_id', None)
        self.datastore_type = 'AzureFile'  # type: str
        self.account_name = kwargs['account_name']
        self.endpoint = kwargs.get('endpoint', None)
        self.file_share_name = kwargs['file_share_name']
        self.protocol = kwargs.get('protocol', None)
        self.service_data_access_auth_identity = kwargs.get('service_data_access_auth_identity', None)
        self.description = kwargs.get('description', None)
        self.properties = kwargs.get('properties', None)
        self.tags = kwargs.get('tags', None)
        self.credentials = kwargs['credentials']
        self.is_default = None


class FineTuningVertical(msrest.serialization.Model):
    """FineTuningVertical.

    You probably want to use the sub-classes and not this class directly. Known
    sub-classes are: AzureOpenAiFineTuning, CustomModelFineTuning.

    All required parameters must be populated in order to send to Azure.

    :ivar model: Required. [Required] Input model for fine tuning.
    :vartype model: ~azure.mgmt.machinelearningservices.models.JobInput
    :ivar model_provider: Required. [Required] Enum to determine the type of fine tuning.Constant
     filled by server. Possible values include: "AzureOpenAI", "Custom".
    :vartype model_provider: str or ~azure.mgmt.machinelearningservices.models.ModelProvider
    :ivar task_type: Required. [Required] Fine tuning task type. Possible values include:
     "ChatCompletion", "TextCompletion", "TextClassification", "QuestionAnswering",
     "TextSummarization", "TokenClassification", "TextTranslation", "ImageClassification",
     "ImageInstanceSegmentation", "ImageObjectDetection", "VideoMultiObjectTracking".
    :vartype task_type: str or ~azure.mgmt.machinelearningservices.models.FineTuningTaskType
    :ivar training_data: Required. [Required] Training data for fine tuning.
    :vartype training_data: ~azure.mgmt.machinelearningservices.models.JobInput
    :ivar validation_data: Validation data for fine tuning.
    :vartype validation_data: ~azure.mgmt.machinelearningservices.models.JobInput
    """

    _validation = {
        'model': {'required': True},
        'model_provider': {'required': True},
        'task_type': {'required': True},
        'training_data': {'required': True},
    }

    _attribute_map = {
        'model': {'key': 'model', 'type': 'JobInput'},
        'model_provider': {'key': 'modelProvider', 'type': 'str'},
        'task_type': {'key': 'taskType', 'type': 'str'},
        'training_data': {'key': 'trainingData', 'type': 'JobInput'},
        'validation_data': {'key': 'validationData', 'type': 'JobInput'},
    }

    _subtype_map = {
        'model_provider': {'AzureOpenAI': 'AzureOpenAiFineTuning', 'Custom': 'CustomModelFineTuning'}
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword model: Required. [Required] Input model for fine tuning.
        :paramtype model: ~azure.mgmt.machinelearningservices.models.JobInput
        :keyword task_type: Required. [Required] Fine tuning task type. Possible values include:
         "ChatCompletion", "TextCompletion", "TextClassification", "QuestionAnswering",
         "TextSummarization", "TokenClassification", "TextTranslation", "ImageClassification",
         "ImageInstanceSegmentation", "ImageObjectDetection", "VideoMultiObjectTracking".
        :paramtype task_type: str or ~azure.mgmt.machinelearningservices.models.FineTuningTaskType
        :keyword training_data: Required. [Required] Training data for fine tuning.
        :paramtype training_data: ~azure.mgmt.machinelearningservices.models.JobInput
        :keyword validation_data: Validation data for fine tuning.
        :paramtype validation_data: ~azure.mgmt.machinelearningservices.models.JobInput
        """
        super(FineTuningVertical, self).__init__(**kwargs)
        self.model = kwargs['model']
        self.model_provider = None  # type: Optional[str]
        self.task_type = kwargs['task_type']
        self.training_data = kwargs['training_data']
        self.validation_data = kwargs.get('validation_data', None)


class AzureOpenAiFineTuning(FineTuningVertical):
    """AzureOpenAiFineTuning.

    All required parameters must be populated in order to send to Azure.

    :ivar model: Required. [Required] Input model for fine tuning.
    :vartype model: ~azure.mgmt.machinelearningservices.models.JobInput
    :ivar model_provider: Required. [Required] Enum to determine the type of fine tuning.Constant
     filled by server. Possible values include: "AzureOpenAI", "Custom".
    :vartype model_provider: str or ~azure.mgmt.machinelearningservices.models.ModelProvider
    :ivar task_type: Required. [Required] Fine tuning task type. Possible values include:
     "ChatCompletion", "TextCompletion", "TextClassification", "QuestionAnswering",
     "TextSummarization", "TokenClassification", "TextTranslation", "ImageClassification",
     "ImageInstanceSegmentation", "ImageObjectDetection", "VideoMultiObjectTracking".
    :vartype task_type: str or ~azure.mgmt.machinelearningservices.models.FineTuningTaskType
    :ivar training_data: Required. [Required] Training data for fine tuning.
    :vartype training_data: ~azure.mgmt.machinelearningservices.models.JobInput
    :ivar validation_data: Validation data for fine tuning.
    :vartype validation_data: ~azure.mgmt.machinelearningservices.models.JobInput
    :ivar hyper_parameters: HyperParameters for fine tuning Azure Open AI model.
    :vartype hyper_parameters:
     ~azure.mgmt.machinelearningservices.models.AzureOpenAiHyperParameters
    """

    _validation = {
        'model': {'required': True},
        'model_provider': {'required': True},
        'task_type': {'required': True},
        'training_data': {'required': True},
    }

    _attribute_map = {
        'model': {'key': 'model', 'type': 'JobInput'},
        'model_provider': {'key': 'modelProvider', 'type': 'str'},
        'task_type': {'key': 'taskType', 'type': 'str'},
        'training_data': {'key': 'trainingData', 'type': 'JobInput'},
        'validation_data': {'key': 'validationData', 'type': 'JobInput'},
        'hyper_parameters': {'key': 'hyperParameters', 'type': 'AzureOpenAiHyperParameters'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword model: Required. [Required] Input model for fine tuning.
        :paramtype model: ~azure.mgmt.machinelearningservices.models.JobInput
        :keyword task_type: Required. [Required] Fine tuning task type. Possible values include:
         "ChatCompletion", "TextCompletion", "TextClassification", "QuestionAnswering",
         "TextSummarization", "TokenClassification", "TextTranslation", "ImageClassification",
         "ImageInstanceSegmentation", "ImageObjectDetection", "VideoMultiObjectTracking".
        :paramtype task_type: str or ~azure.mgmt.machinelearningservices.models.FineTuningTaskType
        :keyword training_data: Required. [Required] Training data for fine tuning.
        :paramtype training_data: ~azure.mgmt.machinelearningservices.models.JobInput
        :keyword validation_data: Validation data for fine tuning.
        :paramtype validation_data: ~azure.mgmt.machinelearningservices.models.JobInput
        :keyword hyper_parameters: HyperParameters for fine tuning Azure Open AI model.
        :paramtype hyper_parameters:
         ~azure.mgmt.machinelearningservices.models.AzureOpenAiHyperParameters
        """
        super(AzureOpenAiFineTuning, self).__init__(**kwargs)
        self.model_provider = 'AzureOpenAI'  # type: str
        self.hyper_parameters = kwargs.get('hyper_parameters', None)


class AzureOpenAiHyperParameters(msrest.serialization.Model):
    """Azure Open AI hyperparameters for fine tuning.

    :ivar batch_size: Number of examples in each batch. A larger batch size means that model
     parameters are updated less frequently, but with lower variance.
    :vartype batch_size: int
    :ivar learning_rate_multiplier: Scaling factor for the learning rate. A smaller learning rate
     may be useful to avoid over fitting.
    :vartype learning_rate_multiplier: float
    :ivar n_epochs: The number of epochs to train the model for. An epoch refers to one full cycle
     through the training dataset.
    :vartype n_epochs: int
    """

    _attribute_map = {
        'batch_size': {'key': 'batchSize', 'type': 'int'},
        'learning_rate_multiplier': {'key': 'learningRateMultiplier', 'type': 'float'},
        'n_epochs': {'key': 'nEpochs', 'type': 'int'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword batch_size: Number of examples in each batch. A larger batch size means that model
         parameters are updated less frequently, but with lower variance.
        :paramtype batch_size: int
        :keyword learning_rate_multiplier: Scaling factor for the learning rate. A smaller learning
         rate may be useful to avoid over fitting.
        :paramtype learning_rate_multiplier: float
        :keyword n_epochs: The number of epochs to train the model for. An epoch refers to one full
         cycle through the training dataset.
        :paramtype n_epochs: int
        """
        super(AzureOpenAiHyperParameters, self).__init__(**kwargs)
        self.batch_size = kwargs.get('batch_size', None)
        self.learning_rate_multiplier = kwargs.get('learning_rate_multiplier', None)
        self.n_epochs = kwargs.get('n_epochs', None)


class EarlyTerminationPolicy(msrest.serialization.Model):
    """Early termination policies enable canceling poor-performing runs before they complete.

    You probably want to use the sub-classes and not this class directly. Known
    sub-classes are: BanditPolicy, MedianStoppingPolicy, TruncationSelectionPolicy.

    All required parameters must be populated in order to send to Azure.

    :ivar delay_evaluation: Number of intervals by which to delay the first evaluation.
    :vartype delay_evaluation: int
    :ivar evaluation_interval: Interval (number of runs) between policy evaluations.
    :vartype evaluation_interval: int
    :ivar policy_type: Required. [Required] Name of policy configuration.Constant filled by server.
     Possible values include: "Bandit", "MedianStopping", "TruncationSelection".
    :vartype policy_type: str or
     ~azure.mgmt.machinelearningservices.models.EarlyTerminationPolicyType
    """

    _validation = {
        'policy_type': {'required': True},
    }

    _attribute_map = {
        'delay_evaluation': {'key': 'delayEvaluation', 'type': 'int'},
        'evaluation_interval': {'key': 'evaluationInterval', 'type': 'int'},
        'policy_type': {'key': 'policyType', 'type': 'str'},
    }

    _subtype_map = {
        'policy_type': {'Bandit': 'BanditPolicy', 'MedianStopping': 'MedianStoppingPolicy', 'TruncationSelection': 'TruncationSelectionPolicy'}
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword delay_evaluation: Number of intervals by which to delay the first evaluation.
        :paramtype delay_evaluation: int
        :keyword evaluation_interval: Interval (number of runs) between policy evaluations.
        :paramtype evaluation_interval: int
        """
        super(EarlyTerminationPolicy, self).__init__(**kwargs)
        self.delay_evaluation = kwargs.get('delay_evaluation', 0)
        self.evaluation_interval = kwargs.get('evaluation_interval', 0)
        self.policy_type = None  # type: Optional[str]


class BanditPolicy(EarlyTerminationPolicy):
    """Defines an early termination policy based on slack criteria, and a frequency and delay interval for evaluation.

    All required parameters must be populated in order to send to Azure.

    :ivar delay_evaluation: Number of intervals by which to delay the first evaluation.
    :vartype delay_evaluation: int
    :ivar evaluation_interval: Interval (number of runs) between policy evaluations.
    :vartype evaluation_interval: int
    :ivar policy_type: Required. [Required] Name of policy configuration.Constant filled by server.
     Possible values include: "Bandit", "MedianStopping", "TruncationSelection".
    :vartype policy_type: str or
     ~azure.mgmt.machinelearningservices.models.EarlyTerminationPolicyType
    :ivar slack_amount: Absolute distance allowed from the best performing run.
    :vartype slack_amount: float
    :ivar slack_factor: Ratio of the allowed distance from the best performing run.
    :vartype slack_factor: float
    """

    _validation = {
        'policy_type': {'required': True},
    }

    _attribute_map = {
        'delay_evaluation': {'key': 'delayEvaluation', 'type': 'int'},
        'evaluation_interval': {'key': 'evaluationInterval', 'type': 'int'},
        'policy_type': {'key': 'policyType', 'type': 'str'},
        'slack_amount': {'key': 'slackAmount', 'type': 'float'},
        'slack_factor': {'key': 'slackFactor', 'type': 'float'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword delay_evaluation: Number of intervals by which to delay the first evaluation.
        :paramtype delay_evaluation: int
        :keyword evaluation_interval: Interval (number of runs) between policy evaluations.
        :paramtype evaluation_interval: int
        :keyword slack_amount: Absolute distance allowed from the best performing run.
        :paramtype slack_amount: float
        :keyword slack_factor: Ratio of the allowed distance from the best performing run.
        :paramtype slack_factor: float
        """
        super(BanditPolicy, self).__init__(**kwargs)
        self.policy_type = 'Bandit'  # type: str
        self.slack_amount = kwargs.get('slack_amount', 0)
        self.slack_factor = kwargs.get('slack_factor', 0)


class Resource(msrest.serialization.Model):
    """Common fields that are returned in the response for all Azure Resource Manager resources.

    Variables are only populated by the server, and will be ignored when sending a request.

    :ivar id: Fully qualified resource ID for the resource. Ex -
     /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}.
    :vartype id: str
    :ivar name: The name of the resource.
    :vartype name: str
    :ivar type: The type of the resource. E.g. "Microsoft.Compute/virtualMachines" or
     "Microsoft.Storage/storageAccounts".
    :vartype type: str
    :ivar system_data: Azure Resource Manager metadata containing createdBy and modifiedBy
     information.
    :vartype system_data: ~azure.mgmt.machinelearningservices.models.SystemData
    """

    _validation = {
        'id': {'readonly': True},
        'name': {'readonly': True},
        'type': {'readonly': True},
        'system_data': {'readonly': True},
    }

    _attribute_map = {
        'id': {'key': 'id', 'type': 'str'},
        'name': {'key': 'name', 'type': 'str'},
        'type': {'key': 'type', 'type': 'str'},
        'system_data': {'key': 'systemData', 'type': 'SystemData'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        """
        super(Resource, self).__init__(**kwargs)
        self.id = None
        self.name = None
        self.type = None
        self.system_data = None


class TrackedResource(Resource):
    """The resource model definition for an Azure Resource Manager tracked top level resource which has 'tags' and a 'location'.

    Variables are only populated by the server, and will be ignored when sending a request.

    All required parameters must be populated in order to send to Azure.

    :ivar id: Fully qualified resource ID for the resource. Ex -
     /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}.
    :vartype id: str
    :ivar name: The name of the resource.
    :vartype name: str
    :ivar type: The type of the resource. E.g. "Microsoft.Compute/virtualMachines" or
     "Microsoft.Storage/storageAccounts".
    :vartype type: str
    :ivar system_data: Azure Resource Manager metadata containing createdBy and modifiedBy
     information.
    :vartype system_data: ~azure.mgmt.machinelearningservices.models.SystemData
    :ivar tags: A set of tags. Resource tags.
    :vartype tags: dict[str, str]
    :ivar location: Required. The geo-location where the resource lives.
    :vartype location: str
    """

    _validation = {
        'id': {'readonly': True},
        'name': {'readonly': True},
        'type': {'readonly': True},
        'system_data': {'readonly': True},
        'location': {'required': True},
    }

    _attribute_map = {
        'id': {'key': 'id', 'type': 'str'},
        'name': {'key': 'name', 'type': 'str'},
        'type': {'key': 'type', 'type': 'str'},
        'system_data': {'key': 'systemData', 'type': 'SystemData'},
        'tags': {'key': 'tags', 'type': '{str}'},
        'location': {'key': 'location', 'type': 'str'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword tags: A set of tags. Resource tags.
        :paramtype tags: dict[str, str]
        :keyword location: Required. The geo-location where the resource lives.
        :paramtype location: str
        """
        super(TrackedResource, self).__init__(**kwargs)
        self.tags = kwargs.get('tags', None)
        self.location = kwargs['location']


class BatchDeployment(TrackedResource):
    """BatchDeployment.

    Variables are only populated by the server, and will be ignored when sending a request.

    All required parameters must be populated in order to send to Azure.

    :ivar id: Fully qualified resource ID for the resource. Ex -
     /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}.
    :vartype id: str
    :ivar name: The name of the resource.
    :vartype name: str
    :ivar type: The type of the resource. E.g. "Microsoft.Compute/virtualMachines" or
     "Microsoft.Storage/storageAccounts".
    :vartype type: str
    :ivar system_data: Azure Resource Manager metadata containing createdBy and modifiedBy
     information.
    :vartype system_data: ~azure.mgmt.machinelearningservices.models.SystemData
    :ivar tags: A set of tags. Resource tags.
    :vartype tags: dict[str, str]
    :ivar location: Required. The geo-location where the resource lives.
    :vartype location: str
    :ivar identity: Managed service identity (system assigned and/or user assigned identities).
    :vartype identity: ~azure.mgmt.machinelearningservices.models.ManagedServiceIdentity
    :ivar kind: Metadata used by portal/tooling/etc to render different UX experiences for
     resources of the same type.
    :vartype kind: str
    :ivar properties: Required. [Required] Additional attributes of the entity.
    :vartype properties: ~azure.mgmt.machinelearningservices.models.BatchDeploymentProperties
    :ivar sku: Sku details required for ARM contract for Autoscaling.
    :vartype sku: ~azure.mgmt.machinelearningservices.models.Sku
    """

    _validation = {
        'id': {'readonly': True},
        'name': {'readonly': True},
        'type': {'readonly': True},
        'system_data': {'readonly': True},
        'location': {'required': True},
        'properties': {'required': True},
    }

    _attribute_map = {
        'id': {'key': 'id', 'type': 'str'},
        'name': {'key': 'name', 'type': 'str'},
        'type': {'key': 'type', 'type': 'str'},
        'system_data': {'key': 'systemData', 'type': 'SystemData'},
        'tags': {'key': 'tags', 'type': '{str}'},
        'location': {'key': 'location', 'type': 'str'},
        'identity': {'key': 'identity', 'type': 'ManagedServiceIdentity'},
        'kind': {'key': 'kind', 'type': 'str'},
        'properties': {'key': 'properties', 'type': 'BatchDeploymentProperties'},
        'sku': {'key': 'sku', 'type': 'Sku'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword tags: A set of tags. Resource tags.
        :paramtype tags: dict[str, str]
        :keyword location: Required. The geo-location where the resource lives.
        :paramtype location: str
        :keyword identity: Managed service identity (system assigned and/or user assigned identities).
        :paramtype identity: ~azure.mgmt.machinelearningservices.models.ManagedServiceIdentity
        :keyword kind: Metadata used by portal/tooling/etc to render different UX experiences for
         resources of the same type.
        :paramtype kind: str
        :keyword properties: Required. [Required] Additional attributes of the entity.
        :paramtype properties: ~azure.mgmt.machinelearningservices.models.BatchDeploymentProperties
        :keyword sku: Sku details required for ARM contract for Autoscaling.
        :paramtype sku: ~azure.mgmt.machinelearningservices.models.Sku
        """
        super(BatchDeployment, self).__init__(**kwargs)
        self.identity = kwargs.get('identity', None)
        self.kind = kwargs.get('kind', None)
        self.properties = kwargs['properties']
        self.sku = kwargs.get('sku', None)


class BatchDeploymentConfiguration(msrest.serialization.Model):
    """Properties relevant to different deployment types.

    You probably want to use the sub-classes and not this class directly. Known
    sub-classes are: BatchPipelineComponentDeploymentConfiguration.

    All required parameters must be populated in order to send to Azure.

    :ivar deployment_configuration_type: Required. [Required] The type of the deployment.Constant
     filled by server. Possible values include: "Model", "PipelineComponent".
    :vartype deployment_configuration_type: str or
     ~azure.mgmt.machinelearningservices.models.BatchDeploymentConfigurationType
    """

    _validation = {
        'deployment_configuration_type': {'required': True},
    }

    _attribute_map = {
        'deployment_configuration_type': {'key': 'deploymentConfigurationType', 'type': 'str'},
    }

    _subtype_map = {
        'deployment_configuration_type': {'PipelineComponent': 'BatchPipelineComponentDeploymentConfiguration'}
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        """
        super(BatchDeploymentConfiguration, self).__init__(**kwargs)
        self.deployment_configuration_type = None  # type: Optional[str]


class EndpointDeploymentPropertiesBase(msrest.serialization.Model):
    """Base definition for endpoint deployment.

    :ivar code_configuration: Code configuration for the endpoint deployment.
    :vartype code_configuration: ~azure.mgmt.machinelearningservices.models.CodeConfiguration
    :ivar description: Description of the endpoint deployment.
    :vartype description: str
    :ivar environment_id: ARM resource ID or AssetId of the environment specification for the
     endpoint deployment.
    :vartype environment_id: str
    :ivar environment_variables: Environment variables configuration for the deployment.
    :vartype environment_variables: dict[str, str]
    :ivar properties: Property dictionary. Properties can be added, but not removed or altered.
    :vartype properties: dict[str, str]
    """

    _attribute_map = {
        'code_configuration': {'key': 'codeConfiguration', 'type': 'CodeConfiguration'},
        'description': {'key': 'description', 'type': 'str'},
        'environment_id': {'key': 'environmentId', 'type': 'str'},
        'environment_variables': {'key': 'environmentVariables', 'type': '{str}'},
        'properties': {'key': 'properties', 'type': '{str}'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword code_configuration: Code configuration for the endpoint deployment.
        :paramtype code_configuration: ~azure.mgmt.machinelearningservices.models.CodeConfiguration
        :keyword description: Description of the endpoint deployment.
        :paramtype description: str
        :keyword environment_id: ARM resource ID or AssetId of the environment specification for the
         endpoint deployment.
        :paramtype environment_id: str
        :keyword environment_variables: Environment variables configuration for the deployment.
        :paramtype environment_variables: dict[str, str]
        :keyword properties: Property dictionary. Properties can be added, but not removed or altered.
        :paramtype properties: dict[str, str]
        """
        super(EndpointDeploymentPropertiesBase, self).__init__(**kwargs)
        self.code_configuration = kwargs.get('code_configuration', None)
        self.description = kwargs.get('description', None)
        self.environment_id = kwargs.get('environment_id', None)
        self.environment_variables = kwargs.get('environment_variables', None)
        self.properties = kwargs.get('properties', None)


class BatchDeploymentProperties(EndpointDeploymentPropertiesBase):
    """Batch inference settings per deployment.

    Variables are only populated by the server, and will be ignored when sending a request.

    :ivar code_configuration: Code configuration for the endpoint deployment.
    :vartype code_configuration: ~azure.mgmt.machinelearningservices.models.CodeConfiguration
    :ivar description: Description of the endpoint deployment.
    :vartype description: str
    :ivar environment_id: ARM resource ID or AssetId of the environment specification for the
     endpoint deployment.
    :vartype environment_id: str
    :ivar environment_variables: Environment variables configuration for the deployment.
    :vartype environment_variables: dict[str, str]
    :ivar properties: Property dictionary. Properties can be added, but not removed or altered.
    :vartype properties: dict[str, str]
    :ivar compute: Compute target for batch inference operation.
    :vartype compute: str
    :ivar deployment_configuration: Properties relevant to different deployment types.
    :vartype deployment_configuration:
     ~azure.mgmt.machinelearningservices.models.BatchDeploymentConfiguration
    :ivar error_threshold: Error threshold, if the error count for the entire input goes above this
     value,
     the batch inference will be aborted. Range is [-1, int.MaxValue].
     For FileDataset, this value is the count of file failures.
     For TabularDataset, this value is the count of record failures.
     If set to -1 (the lower bound), all failures during batch inference will be ignored.
    :vartype error_threshold: int
    :ivar logging_level: Logging level for batch inference operation. Possible values include:
     "Info", "Warning", "Debug".
    :vartype logging_level: str or ~azure.mgmt.machinelearningservices.models.BatchLoggingLevel
    :ivar max_concurrency_per_instance: Indicates maximum number of parallelism per instance.
    :vartype max_concurrency_per_instance: int
    :ivar mini_batch_size: Size of the mini-batch passed to each batch invocation.
     For FileDataset, this is the number of files per mini-batch.
     For TabularDataset, this is the size of the records in bytes, per mini-batch.
    :vartype mini_batch_size: long
    :ivar model: Reference to the model asset for the endpoint deployment.
    :vartype model: ~azure.mgmt.machinelearningservices.models.AssetReferenceBase
    :ivar output_action: Indicates how the output will be organized. Possible values include:
     "SummaryOnly", "AppendRow".
    :vartype output_action: str or ~azure.mgmt.machinelearningservices.models.BatchOutputAction
    :ivar output_file_name: Customized output file name for append_row output action.
    :vartype output_file_name: str
    :ivar provisioning_state: Provisioning state for the endpoint deployment. Possible values
     include: "Creating", "Deleting", "Scaling", "Updating", "Succeeded", "Failed", "Canceled".
    :vartype provisioning_state: str or
     ~azure.mgmt.machinelearningservices.models.DeploymentProvisioningState
    :ivar resources: Indicates compute configuration for the job.
     If not provided, will default to the defaults defined in ResourceConfiguration.
    :vartype resources: ~azure.mgmt.machinelearningservices.models.DeploymentResourceConfiguration
    :ivar retry_settings: Retry Settings for the batch inference operation.
     If not provided, will default to the defaults defined in BatchRetrySettings.
    :vartype retry_settings: ~azure.mgmt.machinelearningservices.models.BatchRetrySettings
    """

    _validation = {
        'provisioning_state': {'readonly': True},
    }

    _attribute_map = {
        'code_configuration': {'key': 'codeConfiguration', 'type': 'CodeConfiguration'},
        'description': {'key': 'description', 'type': 'str'},
        'environment_id': {'key': 'environmentId', 'type': 'str'},
        'environment_variables': {'key': 'environmentVariables', 'type': '{str}'},
        'properties': {'key': 'properties', 'type': '{str}'},
        'compute': {'key': 'compute', 'type': 'str'},
        'deployment_configuration': {'key': 'deploymentConfiguration', 'type': 'BatchDeploymentConfiguration'},
        'error_threshold': {'key': 'errorThreshold', 'type': 'int'},
        'logging_level': {'key': 'loggingLevel', 'type': 'str'},
        'max_concurrency_per_instance': {'key': 'maxConcurrencyPerInstance', 'type': 'int'},
        'mini_batch_size': {'key': 'miniBatchSize', 'type': 'long'},
        'model': {'key': 'model', 'type': 'AssetReferenceBase'},
        'output_action': {'key': 'outputAction', 'type': 'str'},
        'output_file_name': {'key': 'outputFileName', 'type': 'str'},
        'provisioning_state': {'key': 'provisioningState', 'type': 'str'},
        'resources': {'key': 'resources', 'type': 'DeploymentResourceConfiguration'},
        'retry_settings': {'key': 'retrySettings', 'type': 'BatchRetrySettings'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword code_configuration: Code configuration for the endpoint deployment.
        :paramtype code_configuration: ~azure.mgmt.machinelearningservices.models.CodeConfiguration
        :keyword description: Description of the endpoint deployment.
        :paramtype description: str
        :keyword environment_id: ARM resource ID or AssetId of the environment specification for the
         endpoint deployment.
        :paramtype environment_id: str
        :keyword environment_variables: Environment variables configuration for the deployment.
        :paramtype environment_variables: dict[str, str]
        :keyword properties: Property dictionary. Properties can be added, but not removed or altered.
        :paramtype properties: dict[str, str]
        :keyword compute: Compute target for batch inference operation.
        :paramtype compute: str
        :keyword deployment_configuration: Properties relevant to different deployment types.
        :paramtype deployment_configuration:
         ~azure.mgmt.machinelearningservices.models.BatchDeploymentConfiguration
        :keyword error_threshold: Error threshold, if the error count for the entire input goes above
         this value,
         the batch inference will be aborted. Range is [-1, int.MaxValue].
         For FileDataset, this value is the count of file failures.
         For TabularDataset, this value is the count of record failures.
         If set to -1 (the lower bound), all failures during batch inference will be ignored.
        :paramtype error_threshold: int
        :keyword logging_level: Logging level for batch inference operation. Possible values include:
         "Info", "Warning", "Debug".
        :paramtype logging_level: str or ~azure.mgmt.machinelearningservices.models.BatchLoggingLevel
        :keyword max_concurrency_per_instance: Indicates maximum number of parallelism per instance.
        :paramtype max_concurrency_per_instance: int
        :keyword mini_batch_size: Size of the mini-batch passed to each batch invocation.
         For FileDataset, this is the number of files per mini-batch.
         For TabularDataset, this is the size of the records in bytes, per mini-batch.
        :paramtype mini_batch_size: long
        :keyword model: Reference to the model asset for the endpoint deployment.
        :paramtype model: ~azure.mgmt.machinelearningservices.models.AssetReferenceBase
        :keyword output_action: Indicates how the output will be organized. Possible values include:
         "SummaryOnly", "AppendRow".
        :paramtype output_action: str or ~azure.mgmt.machinelearningservices.models.BatchOutputAction
        :keyword output_file_name: Customized output file name for append_row output action.
        :paramtype output_file_name: str
        :keyword resources: Indicates compute configuration for the job.
         If not provided, will default to the defaults defined in ResourceConfiguration.
        :paramtype resources:
         ~azure.mgmt.machinelearningservices.models.DeploymentResourceConfiguration
        :keyword retry_settings: Retry Settings for the batch inference operation.
         If not provided, will default to the defaults defined in BatchRetrySettings.
        :paramtype retry_settings: ~azure.mgmt.machinelearningservices.models.BatchRetrySettings
        """
        super(BatchDeploymentProperties, self).__init__(**kwargs)
        self.compute = kwargs.get('compute', None)
        self.deployment_configuration = kwargs.get('deployment_configuration', None)
        self.error_threshold = kwargs.get('error_threshold', -1)
        self.logging_level = kwargs.get('logging_level', None)
        self.max_concurrency_per_instance = kwargs.get('max_concurrency_per_instance', 1)
        self.mini_batch_size = kwargs.get('mini_batch_size', 10)
        self.model = kwargs.get('model', None)
        self.output_action = kwargs.get('output_action', None)
        self.output_file_name = kwargs.get('output_file_name', "predictions.csv")
        self.provisioning_state = None
        self.resources = kwargs.get('resources', None)
        self.retry_settings = kwargs.get('retry_settings', None)


class BatchDeploymentTrackedResourceArmPaginatedResult(msrest.serialization.Model):
    """A paginated list of BatchDeployment entities.

    :ivar next_link: The link to the next page of BatchDeployment objects. If null, there are no
     additional pages.
    :vartype next_link: str
    :ivar value: An array of objects of type BatchDeployment.
    :vartype value: list[~azure.mgmt.machinelearningservices.models.BatchDeployment]
    """

    _attribute_map = {
        'next_link': {'key': 'nextLink', 'type': 'str'},
        'value': {'key': 'value', 'type': '[BatchDeployment]'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword next_link: The link to the next page of BatchDeployment objects. If null, there are no
         additional pages.
        :paramtype next_link: str
        :keyword value: An array of objects of type BatchDeployment.
        :paramtype value: list[~azure.mgmt.machinelearningservices.models.BatchDeployment]
        """
        super(BatchDeploymentTrackedResourceArmPaginatedResult, self).__init__(**kwargs)
        self.next_link = kwargs.get('next_link', None)
        self.value = kwargs.get('value', None)


class BatchEndpoint(TrackedResource):
    """BatchEndpoint.

    Variables are only populated by the server, and will be ignored when sending a request.

    All required parameters must be populated in order to send to Azure.

    :ivar id: Fully qualified resource ID for the resource. Ex -
     /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}.
    :vartype id: str
    :ivar name: The name of the resource.
    :vartype name: str
    :ivar type: The type of the resource. E.g. "Microsoft.Compute/virtualMachines" or
     "Microsoft.Storage/storageAccounts".
    :vartype type: str
    :ivar system_data: Azure Resource Manager metadata containing createdBy and modifiedBy
     information.
    :vartype system_data: ~azure.mgmt.machinelearningservices.models.SystemData
    :ivar tags: A set of tags. Resource tags.
    :vartype tags: dict[str, str]
    :ivar location: Required. The geo-location where the resource lives.
    :vartype location: str
    :ivar identity: Managed service identity (system assigned and/or user assigned identities).
    :vartype identity: ~azure.mgmt.machinelearningservices.models.ManagedServiceIdentity
    :ivar kind: Metadata used by portal/tooling/etc to render different UX experiences for
     resources of the same type.
    :vartype kind: str
    :ivar properties: Required. [Required] Additional attributes of the entity.
    :vartype properties: ~azure.mgmt.machinelearningservices.models.BatchEndpointProperties
    :ivar sku: Sku details required for ARM contract for Autoscaling.
    :vartype sku: ~azure.mgmt.machinelearningservices.models.Sku
    """

    _validation = {
        'id': {'readonly': True},
        'name': {'readonly': True},
        'type': {'readonly': True},
        'system_data': {'readonly': True},
        'location': {'required': True},
        'properties': {'required': True},
    }

    _attribute_map = {
        'id': {'key': 'id', 'type': 'str'},
        'name': {'key': 'name', 'type': 'str'},
        'type': {'key': 'type', 'type': 'str'},
        'system_data': {'key': 'systemData', 'type': 'SystemData'},
        'tags': {'key': 'tags', 'type': '{str}'},
        'location': {'key': 'location', 'type': 'str'},
        'identity': {'key': 'identity', 'type': 'ManagedServiceIdentity'},
        'kind': {'key': 'kind', 'type': 'str'},
        'properties': {'key': 'properties', 'type': 'BatchEndpointProperties'},
        'sku': {'key': 'sku', 'type': 'Sku'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword tags: A set of tags. Resource tags.
        :paramtype tags: dict[str, str]
        :keyword location: Required. The geo-location where the resource lives.
        :paramtype location: str
        :keyword identity: Managed service identity (system assigned and/or user assigned identities).
        :paramtype identity: ~azure.mgmt.machinelearningservices.models.ManagedServiceIdentity
        :keyword kind: Metadata used by portal/tooling/etc to render different UX experiences for
         resources of the same type.
        :paramtype kind: str
        :keyword properties: Required. [Required] Additional attributes of the entity.
        :paramtype properties: ~azure.mgmt.machinelearningservices.models.BatchEndpointProperties
        :keyword sku: Sku details required for ARM contract for Autoscaling.
        :paramtype sku: ~azure.mgmt.machinelearningservices.models.Sku
        """
        super(BatchEndpoint, self).__init__(**kwargs)
        self.identity = kwargs.get('identity', None)
        self.kind = kwargs.get('kind', None)
        self.properties = kwargs['properties']
        self.sku = kwargs.get('sku', None)


class BatchEndpointDefaults(msrest.serialization.Model):
    """Batch endpoint default values.

    :ivar deployment_name: Name of the deployment that will be default for the endpoint.
     This deployment will end up getting 100% traffic when the endpoint scoring URL is invoked.
    :vartype deployment_name: str
    """

    _attribute_map = {
        'deployment_name': {'key': 'deploymentName', 'type': 'str'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword deployment_name: Name of the deployment that will be default for the endpoint.
         This deployment will end up getting 100% traffic when the endpoint scoring URL is invoked.
        :paramtype deployment_name: str
        """
        super(BatchEndpointDefaults, self).__init__(**kwargs)
        self.deployment_name = kwargs.get('deployment_name', None)


class EndpointPropertiesBase(msrest.serialization.Model):
    """Inference Endpoint base definition.

    Variables are only populated by the server, and will be ignored when sending a request.

    All required parameters must be populated in order to send to Azure.

    :ivar auth_mode: Required. [Required] The authentication method for invoking the endpoint (data
     plane operation). Use 'Key' for key-based authentication. Use 'AMLToken' for Azure Machine
     Learning token-based authentication. Use 'AADToken' for Microsoft Entra token-based
     authentication. Possible values include: "AMLToken", "Key", "AADToken".
    :vartype auth_mode: str or ~azure.mgmt.machinelearningservices.models.EndpointAuthMode
    :ivar description: Description of the inference endpoint.
    :vartype description: str
    :ivar keys: EndpointAuthKeys to set initially on an Endpoint.
     This property will always be returned as null. AuthKey values must be retrieved using the
     ListKeys API.
    :vartype keys: ~azure.mgmt.machinelearningservices.models.EndpointAuthKeys
    :ivar properties: Property dictionary. Properties can be added, but not removed or altered.
    :vartype properties: dict[str, str]
    :ivar scoring_uri: Endpoint URI.
    :vartype scoring_uri: str
    :ivar swagger_uri: Endpoint Swagger URI.
    :vartype swagger_uri: str
    """

    _validation = {
        'auth_mode': {'required': True},
        'scoring_uri': {'readonly': True},
        'swagger_uri': {'readonly': True},
    }

    _attribute_map = {
        'auth_mode': {'key': 'authMode', 'type': 'str'},
        'description': {'key': 'description', 'type': 'str'},
        'keys': {'key': 'keys', 'type': 'EndpointAuthKeys'},
        'properties': {'key': 'properties', 'type': '{str}'},
        'scoring_uri': {'key': 'scoringUri', 'type': 'str'},
        'swagger_uri': {'key': 'swaggerUri', 'type': 'str'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword auth_mode: Required. [Required] The authentication method for invoking the endpoint
         (data plane operation). Use 'Key' for key-based authentication. Use 'AMLToken' for Azure
         Machine Learning token-based authentication. Use 'AADToken' for Microsoft Entra token-based
         authentication. Possible values include: "AMLToken", "Key", "AADToken".
        :paramtype auth_mode: str or ~azure.mgmt.machinelearningservices.models.EndpointAuthMode
        :keyword description: Description of the inference endpoint.
        :paramtype description: str
        :keyword keys: EndpointAuthKeys to set initially on an Endpoint.
         This property will always be returned as null. AuthKey values must be retrieved using the
         ListKeys API.
        :paramtype keys: ~azure.mgmt.machinelearningservices.models.EndpointAuthKeys
        :keyword properties: Property dictionary. Properties can be added, but not removed or altered.
        :paramtype properties: dict[str, str]
        """
        super(EndpointPropertiesBase, self).__init__(**kwargs)
        self.auth_mode = kwargs['auth_mode']
        self.description = kwargs.get('description', None)
        self.keys = kwargs.get('keys', None)
        self.properties = kwargs.get('properties', None)
        self.scoring_uri = None
        self.swagger_uri = None


class BatchEndpointProperties(EndpointPropertiesBase):
    """Batch endpoint configuration.

    Variables are only populated by the server, and will be ignored when sending a request.

    All required parameters must be populated in order to send to Azure.

    :ivar auth_mode: Required. [Required] The authentication method for invoking the endpoint (data
     plane operation). Use 'Key' for key-based authentication. Use 'AMLToken' for Azure Machine
     Learning token-based authentication. Use 'AADToken' for Microsoft Entra token-based
     authentication. Possible values include: "AMLToken", "Key", "AADToken".
    :vartype auth_mode: str or ~azure.mgmt.machinelearningservices.models.EndpointAuthMode
    :ivar description: Description of the inference endpoint.
    :vartype description: str
    :ivar keys: EndpointAuthKeys to set initially on an Endpoint.
     This property will always be returned as null. AuthKey values must be retrieved using the
     ListKeys API.
    :vartype keys: ~azure.mgmt.machinelearningservices.models.EndpointAuthKeys
    :ivar properties: Property dictionary. Properties can be added, but not removed or altered.
    :vartype properties: dict[str, str]
    :ivar scoring_uri: Endpoint URI.
    :vartype scoring_uri: str
    :ivar swagger_uri: Endpoint Swagger URI.
    :vartype swagger_uri: str
    :ivar defaults: Default values for Batch Endpoint.
    :vartype defaults: ~azure.mgmt.machinelearningservices.models.BatchEndpointDefaults
    :ivar provisioning_state: Provisioning state for the endpoint. Possible values include:
     "Creating", "Deleting", "Succeeded", "Failed", "Updating", "Canceled".
    :vartype provisioning_state: str or
     ~azure.mgmt.machinelearningservices.models.EndpointProvisioningState
    """

    _validation = {
        'auth_mode': {'required': True},
        'scoring_uri': {'readonly': True},
        'swagger_uri': {'readonly': True},
        'provisioning_state': {'readonly': True},
    }

    _attribute_map = {
        'auth_mode': {'key': 'authMode', 'type': 'str'},
        'description': {'key': 'description', 'type': 'str'},
        'keys': {'key': 'keys', 'type': 'EndpointAuthKeys'},
        'properties': {'key': 'properties', 'type': '{str}'},
        'scoring_uri': {'key': 'scoringUri', 'type': 'str'},
        'swagger_uri': {'key': 'swaggerUri', 'type': 'str'},
        'defaults': {'key': 'defaults', 'type': 'BatchEndpointDefaults'},
        'provisioning_state': {'key': 'provisioningState', 'type': 'str'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword auth_mode: Required. [Required] The authentication method for invoking the endpoint
         (data plane operation). Use 'Key' for key-based authentication. Use 'AMLToken' for Azure
         Machine Learning token-based authentication. Use 'AADToken' for Microsoft Entra token-based
         authentication. Possible values include: "AMLToken", "Key", "AADToken".
        :paramtype auth_mode: str or ~azure.mgmt.machinelearningservices.models.EndpointAuthMode
        :keyword description: Description of the inference endpoint.
        :paramtype description: str
        :keyword keys: EndpointAuthKeys to set initially on an Endpoint.
         This property will always be returned as null. AuthKey values must be retrieved using the
         ListKeys API.
        :paramtype keys: ~azure.mgmt.machinelearningservices.models.EndpointAuthKeys
        :keyword properties: Property dictionary. Properties can be added, but not removed or altered.
        :paramtype properties: dict[str, str]
        :keyword defaults: Default values for Batch Endpoint.
        :paramtype defaults: ~azure.mgmt.machinelearningservices.models.BatchEndpointDefaults
        """
        super(BatchEndpointProperties, self).__init__(**kwargs)
        self.defaults = kwargs.get('defaults', None)
        self.provisioning_state = None


class BatchEndpointTrackedResourceArmPaginatedResult(msrest.serialization.Model):
    """A paginated list of BatchEndpoint entities.

    :ivar next_link: The link to the next page of BatchEndpoint objects. If null, there are no
     additional pages.
    :vartype next_link: str
    :ivar value: An array of objects of type BatchEndpoint.
    :vartype value: list[~azure.mgmt.machinelearningservices.models.BatchEndpoint]
    """

    _attribute_map = {
        'next_link': {'key': 'nextLink', 'type': 'str'},
        'value': {'key': 'value', 'type': '[BatchEndpoint]'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword next_link: The link to the next page of BatchEndpoint objects. If null, there are no
         additional pages.
        :paramtype next_link: str
        :keyword value: An array of objects of type BatchEndpoint.
        :paramtype value: list[~azure.mgmt.machinelearningservices.models.BatchEndpoint]
        """
        super(BatchEndpointTrackedResourceArmPaginatedResult, self).__init__(**kwargs)
        self.next_link = kwargs.get('next_link', None)
        self.value = kwargs.get('value', None)


class BatchPipelineComponentDeploymentConfiguration(BatchDeploymentConfiguration):
    """Properties for a Batch Pipeline Component Deployment.

    All required parameters must be populated in order to send to Azure.

    :ivar deployment_configuration_type: Required. [Required] The type of the deployment.Constant
     filled by server. Possible values include: "Model", "PipelineComponent".
    :vartype deployment_configuration_type: str or
     ~azure.mgmt.machinelearningservices.models.BatchDeploymentConfigurationType
    :ivar component_id: The ARM id of the component to be run.
    :vartype component_id: ~azure.mgmt.machinelearningservices.models.IdAssetReference
    :ivar description: The description which will be applied to the job.
    :vartype description: str
    :ivar settings: Run-time settings for the pipeline job.
    :vartype settings: dict[str, str]
    :ivar tags: A set of tags. The tags which will be applied to the job.
    :vartype tags: dict[str, str]
    """

    _validation = {
        'deployment_configuration_type': {'required': True},
    }

    _attribute_map = {
        'deployment_configuration_type': {'key': 'deploymentConfigurationType', 'type': 'str'},
        'component_id': {'key': 'componentId', 'type': 'IdAssetReference'},
        'description': {'key': 'description', 'type': 'str'},
        'settings': {'key': 'settings', 'type': '{str}'},
        'tags': {'key': 'tags', 'type': '{str}'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword component_id: The ARM id of the component to be run.
        :paramtype component_id: ~azure.mgmt.machinelearningservices.models.IdAssetReference
        :keyword description: The description which will be applied to the job.
        :paramtype description: str
        :keyword settings: Run-time settings for the pipeline job.
        :paramtype settings: dict[str, str]
        :keyword tags: A set of tags. The tags which will be applied to the job.
        :paramtype tags: dict[str, str]
        """
        super(BatchPipelineComponentDeploymentConfiguration, self).__init__(**kwargs)
        self.deployment_configuration_type = 'PipelineComponent'  # type: str
        self.component_id = kwargs.get('component_id', None)
        self.description = kwargs.get('description', None)
        self.settings = kwargs.get('settings', None)
        self.tags = kwargs.get('tags', None)


class BatchRetrySettings(msrest.serialization.Model):
    """Retry settings for a batch inference operation.

    :ivar max_retries: Maximum retry count for a mini-batch.
    :vartype max_retries: int
    :ivar timeout: Invocation timeout for a mini-batch, in ISO 8601 format.
    :vartype timeout: ~datetime.timedelta
    """

    _attribute_map = {
        'max_retries': {'key': 'maxRetries', 'type': 'int'},
        'timeout': {'key': 'timeout', 'type': 'duration'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword max_retries: Maximum retry count for a mini-batch.
        :paramtype max_retries: int
        :keyword timeout: Invocation timeout for a mini-batch, in ISO 8601 format.
        :paramtype timeout: ~datetime.timedelta
        """
        super(BatchRetrySettings, self).__init__(**kwargs)
        self.max_retries = kwargs.get('max_retries', 3)
        self.timeout = kwargs.get('timeout', "PT30S")


class SamplingAlgorithm(msrest.serialization.Model):
    """The Sampling Algorithm used to generate hyperparameter values, along with properties to
configure the algorithm.

    You probably want to use the sub-classes and not this class directly. Known
    sub-classes are: BayesianSamplingAlgorithm, GridSamplingAlgorithm, RandomSamplingAlgorithm.

    All required parameters must be populated in order to send to Azure.

    :ivar sampling_algorithm_type: Required. [Required] The algorithm used for generating
     hyperparameter values, along with configuration properties.Constant filled by server. Possible
     values include: "Grid", "Random", "Bayesian".
    :vartype sampling_algorithm_type: str or
     ~azure.mgmt.machinelearningservices.models.SamplingAlgorithmType
    """

    _validation = {
        'sampling_algorithm_type': {'required': True},
    }

    _attribute_map = {
        'sampling_algorithm_type': {'key': 'samplingAlgorithmType', 'type': 'str'},
    }

    _subtype_map = {
        'sampling_algorithm_type': {'Bayesian': 'BayesianSamplingAlgorithm', 'Grid': 'GridSamplingAlgorithm', 'Random': 'RandomSamplingAlgorithm'}
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        """
        super(SamplingAlgorithm, self).__init__(**kwargs)
        self.sampling_algorithm_type = None  # type: Optional[str]


class BayesianSamplingAlgorithm(SamplingAlgorithm):
    """Defines a Sampling Algorithm that generates values based on previous values.

    All required parameters must be populated in order to send to Azure.

    :ivar sampling_algorithm_type: Required. [Required] The algorithm used for generating
     hyperparameter values, along with configuration properties.Constant filled by server. Possible
     values include: "Grid", "Random", "Bayesian".
    :vartype sampling_algorithm_type: str or
     ~azure.mgmt.machinelearningservices.models.SamplingAlgorithmType
    """

    _validation = {
        'sampling_algorithm_type': {'required': True},
    }

    _attribute_map = {
        'sampling_algorithm_type': {'key': 'samplingAlgorithmType', 'type': 'str'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        """
        super(BayesianSamplingAlgorithm, self).__init__(**kwargs)
        self.sampling_algorithm_type = 'Bayesian'  # type: str


class BindOptions(msrest.serialization.Model):
    """BindOptions.

    :ivar propagation: Type of Bind Option.
    :vartype propagation: str
    :ivar create_host_path: Indicate whether to create host path.
    :vartype create_host_path: bool
    :ivar selinux: Mention the selinux options.
    :vartype selinux: str
    """

    _attribute_map = {
        'propagation': {'key': 'propagation', 'type': 'str'},
        'create_host_path': {'key': 'createHostPath', 'type': 'bool'},
        'selinux': {'key': 'selinux', 'type': 'str'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword propagation: Type of Bind Option.
        :paramtype propagation: str
        :keyword create_host_path: Indicate whether to create host path.
        :paramtype create_host_path: bool
        :keyword selinux: Mention the selinux options.
        :paramtype selinux: str
        """
        super(BindOptions, self).__init__(**kwargs)
        self.propagation = kwargs.get('propagation', None)
        self.create_host_path = kwargs.get('create_host_path', None)
        self.selinux = kwargs.get('selinux', None)


class BlobReferenceForConsumptionDto(msrest.serialization.Model):
    """BlobReferenceForConsumptionDto.

    :ivar blob_uri: Blob URI path for client to upload data.
     Example: https://blob.windows.core.net/Container/Path.
    :vartype blob_uri: str
    :ivar credential: Credential info to access storage account.
    :vartype credential: ~azure.mgmt.machinelearningservices.models.PendingUploadCredentialDto
    :ivar storage_account_arm_id: Arm ID of the storage account to use.
    :vartype storage_account_arm_id: str
    """

    _attribute_map = {
        'blob_uri': {'key': 'blobUri', 'type': 'str'},
        'credential': {'key': 'credential', 'type': 'PendingUploadCredentialDto'},
        'storage_account_arm_id': {'key': 'storageAccountArmId', 'type': 'str'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword blob_uri: Blob URI path for client to upload data.
         Example: https://blob.windows.core.net/Container/Path.
        :paramtype blob_uri: str
        :keyword credential: Credential info to access storage account.
        :paramtype credential: ~azure.mgmt.machinelearningservices.models.PendingUploadCredentialDto
        :keyword storage_account_arm_id: Arm ID of the storage account to use.
        :paramtype storage_account_arm_id: str
        """
        super(BlobReferenceForConsumptionDto, self).__init__(**kwargs)
        self.blob_uri = kwargs.get('blob_uri', None)
        self.credential = kwargs.get('credential', None)
        self.storage_account_arm_id = kwargs.get('storage_account_arm_id', None)


class BuildContext(msrest.serialization.Model):
    """Configuration settings for Docker build context.

    All required parameters must be populated in order to send to Azure.

    :ivar context_uri: Required. [Required] URI of the Docker build context used to build the
     image. Supports blob URIs on environment creation and may return blob or Git URIs.
    
    
     .. raw:: html
    
        <seealso
     href="https://docs.docker.com/engine/reference/commandline/build/#extended-description" />.
    :vartype context_uri: str
    :ivar dockerfile_path: Path to the Dockerfile in the build context.
    
    
     .. raw:: html
    
        <seealso href="https://docs.docker.com/engine/reference/builder/" />.
    :vartype dockerfile_path: str
    """

    _validation = {
        'context_uri': {'required': True, 'min_length': 1, 'pattern': r'[a-zA-Z0-9_]'},
    }

    _attribute_map = {
        'context_uri': {'key': 'contextUri', 'type': 'str'},
        'dockerfile_path': {'key': 'dockerfilePath', 'type': 'str'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword context_uri: Required. [Required] URI of the Docker build context used to build the
         image. Supports blob URIs on environment creation and may return blob or Git URIs.
        
        
         .. raw:: html
        
            <seealso
         href="https://docs.docker.com/engine/reference/commandline/build/#extended-description" />.
        :paramtype context_uri: str
        :keyword dockerfile_path: Path to the Dockerfile in the build context.
        
        
         .. raw:: html
        
            <seealso href="https://docs.docker.com/engine/reference/builder/" />.
        :paramtype dockerfile_path: str
        """
        super(BuildContext, self).__init__(**kwargs)
        self.context_uri = kwargs['context_uri']
        self.dockerfile_path = kwargs.get('dockerfile_path', "Dockerfile")


class ProxyResource(Resource):
    """The resource model definition for a Azure Resource Manager proxy resource. It will not have tags and a location.

    Variables are only populated by the server, and will be ignored when sending a request.

    :ivar id: Fully qualified resource ID for the resource. Ex -
     /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}.
    :vartype id: str
    :ivar name: The name of the resource.
    :vartype name: str
    :ivar type: The type of the resource. E.g. "Microsoft.Compute/virtualMachines" or
     "Microsoft.Storage/storageAccounts".
    :vartype type: str
    :ivar system_data: Azure Resource Manager metadata containing createdBy and modifiedBy
     information.
    :vartype system_data: ~azure.mgmt.machinelearningservices.models.SystemData
    """

    _validation = {
        'id': {'readonly': True},
        'name': {'readonly': True},
        'type': {'readonly': True},
        'system_data': {'readonly': True},
    }

    _attribute_map = {
        'id': {'key': 'id', 'type': 'str'},
        'name': {'key': 'name', 'type': 'str'},
        'type': {'key': 'type', 'type': 'str'},
        'system_data': {'key': 'systemData', 'type': 'SystemData'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        """
        super(ProxyResource, self).__init__(**kwargs)


class CapabilityHost(ProxyResource):
    """Azure Resource Manager resource envelope.

    Variables are only populated by the server, and will be ignored when sending a request.

    All required parameters must be populated in order to send to Azure.

    :ivar id: Fully qualified resource ID for the resource. Ex -
     /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}.
    :vartype id: str
    :ivar name: The name of the resource.
    :vartype name: str
    :ivar type: The type of the resource. E.g. "Microsoft.Compute/virtualMachines" or
     "Microsoft.Storage/storageAccounts".
    :vartype type: str
    :ivar system_data: Azure Resource Manager metadata containing createdBy and modifiedBy
     information.
    :vartype system_data: ~azure.mgmt.machinelearningservices.models.SystemData
    :ivar properties: Required. [Required] Additional attributes of the entity.
    :vartype properties: ~azure.mgmt.machinelearningservices.models.CapabilityHostProperties
    """

    _validation = {
        'id': {'readonly': True},
        'name': {'readonly': True},
        'type': {'readonly': True},
        'system_data': {'readonly': True},
        'properties': {'required': True},
    }

    _attribute_map = {
        'id': {'key': 'id', 'type': 'str'},
        'name': {'key': 'name', 'type': 'str'},
        'type': {'key': 'type', 'type': 'str'},
        'system_data': {'key': 'systemData', 'type': 'SystemData'},
        'properties': {'key': 'properties', 'type': 'CapabilityHostProperties'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword properties: Required. [Required] Additional attributes of the entity.
        :paramtype properties: ~azure.mgmt.machinelearningservices.models.CapabilityHostProperties
        """
        super(CapabilityHost, self).__init__(**kwargs)
        self.properties = kwargs['properties']


class CapabilityHostProperties(ResourceBase):
    """CapabilityHostProperties.

    Variables are only populated by the server, and will be ignored when sending a request.

    :ivar description: The asset description text.
    :vartype description: str
    :ivar properties: The asset property dictionary.
    :vartype properties: dict[str, str]
    :ivar tags: A set of tags. Tag dictionary. Tags can be added, removed, and updated.
    :vartype tags: dict[str, str]
    :ivar ai_services_connections: List of AI services connections.
    :vartype ai_services_connections: list[str]
    :ivar capability_host_kind: Kind of this capability host. Possible values include: "Agents".
    :vartype capability_host_kind: str or
     ~azure.mgmt.machinelearningservices.models.CapabilityHostKind
    :ivar customer_subnet: Customer subnet info to help set up this capability host.
    :vartype customer_subnet: str
    :ivar provisioning_state: Provisioning state for the CapabilityHost. Possible values include:
     "Succeeded", "Failed", "Canceled", "Creating", "Updating", "Deleting".
    :vartype provisioning_state: str or
     ~azure.mgmt.machinelearningservices.models.CapabilityHostProvisioningState
    :ivar storage_connections: List of Storage connections.
    :vartype storage_connections: list[str]
    :ivar thread_storage_connections: List of Thread storage connections.
    :vartype thread_storage_connections: list[str]
    :ivar vector_store_connections: List of VectorStore connections.
    :vartype vector_store_connections: list[str]
    """

    _validation = {
        'provisioning_state': {'readonly': True},
    }

    _attribute_map = {
        'description': {'key': 'description', 'type': 'str'},
        'properties': {'key': 'properties', 'type': '{str}'},
        'tags': {'key': 'tags', 'type': '{str}'},
        'ai_services_connections': {'key': 'aiServicesConnections', 'type': '[str]'},
        'capability_host_kind': {'key': 'capabilityHostKind', 'type': 'str'},
        'customer_subnet': {'key': 'customerSubnet', 'type': 'str'},
        'provisioning_state': {'key': 'provisioningState', 'type': 'str'},
        'storage_connections': {'key': 'storageConnections', 'type': '[str]'},
        'thread_storage_connections': {'key': 'threadStorageConnections', 'type': '[str]'},
        'vector_store_connections': {'key': 'vectorStoreConnections', 'type': '[str]'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword description: The asset description text.
        :paramtype description: str
        :keyword properties: The asset property dictionary.
        :paramtype properties: dict[str, str]
        :keyword tags: A set of tags. Tag dictionary. Tags can be added, removed, and updated.
        :paramtype tags: dict[str, str]
        :keyword ai_services_connections: List of AI services connections.
        :paramtype ai_services_connections: list[str]
        :keyword capability_host_kind: Kind of this capability host. Possible values include: "Agents".
        :paramtype capability_host_kind: str or
         ~azure.mgmt.machinelearningservices.models.CapabilityHostKind
        :keyword customer_subnet: Customer subnet info to help set up this capability host.
        :paramtype customer_subnet: str
        :keyword storage_connections: List of Storage connections.
        :paramtype storage_connections: list[str]
        :keyword thread_storage_connections: List of Thread storage connections.
        :paramtype thread_storage_connections: list[str]
        :keyword vector_store_connections: List of VectorStore connections.
        :paramtype vector_store_connections: list[str]
        """
        super(CapabilityHostProperties, self).__init__(**kwargs)
        self.ai_services_connections = kwargs.get('ai_services_connections', None)
        self.capability_host_kind = kwargs.get('capability_host_kind', None)
        self.customer_subnet = kwargs.get('customer_subnet', None)
        self.provisioning_state = None
        self.storage_connections = kwargs.get('storage_connections', None)
        self.thread_storage_connections = kwargs.get('thread_storage_connections', None)
        self.vector_store_connections = kwargs.get('vector_store_connections', None)


class CapacityConfig(msrest.serialization.Model):
    """The capacity configuration.

    :ivar minimum: The minimum capacity.
    :vartype minimum: int
    :ivar maximum: The maximum capacity.
    :vartype maximum: int
    :ivar step: The minimal incremental between allowed values for capacity.
    :vartype step: int
    :ivar default: The default capacity.
    :vartype default: int
    :ivar allowed_values: The array of allowed values for capacity.
    :vartype allowed_values: list[int]
    """

    _attribute_map = {
        'minimum': {'key': 'minimum', 'type': 'int'},
        'maximum': {'key': 'maximum', 'type': 'int'},
        'step': {'key': 'step', 'type': 'int'},
        'default': {'key': 'default', 'type': 'int'},
        'allowed_values': {'key': 'allowedValues', 'type': '[int]'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword minimum: The minimum capacity.
        :paramtype minimum: int
        :keyword maximum: The maximum capacity.
        :paramtype maximum: int
        :keyword step: The minimal incremental between allowed values for capacity.
        :paramtype step: int
        :keyword default: The default capacity.
        :paramtype default: int
        :keyword allowed_values: The array of allowed values for capacity.
        :paramtype allowed_values: list[int]
        """
        super(CapacityConfig, self).__init__(**kwargs)
        self.minimum = kwargs.get('minimum', None)
        self.maximum = kwargs.get('maximum', None)
        self.step = kwargs.get('step', None)
        self.default = kwargs.get('default', None)
        self.allowed_values = kwargs.get('allowed_values', None)


class DataDriftMetricThresholdBase(msrest.serialization.Model):
    """DataDriftMetricThresholdBase.

    You probably want to use the sub-classes and not this class directly. Known
    sub-classes are: CategoricalDataDriftMetricThreshold, NumericalDataDriftMetricThreshold.

    All required parameters must be populated in order to send to Azure.

    :ivar data_type: Required. [Required] Specifies the data type of the metric threshold.Constant
     filled by server. Possible values include: "Numerical", "Categorical".
    :vartype data_type: str or ~azure.mgmt.machinelearningservices.models.MonitoringFeatureDataType
    :ivar threshold: The threshold value. If null, a default value will be set depending on the
     selected metric.
    :vartype threshold: ~azure.mgmt.machinelearningservices.models.MonitoringThreshold
    """

    _validation = {
        'data_type': {'required': True},
    }

    _attribute_map = {
        'data_type': {'key': 'dataType', 'type': 'str'},
        'threshold': {'key': 'threshold', 'type': 'MonitoringThreshold'},
    }

    _subtype_map = {
        'data_type': {'Categorical': 'CategoricalDataDriftMetricThreshold', 'Numerical': 'NumericalDataDriftMetricThreshold'}
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword threshold: The threshold value. If null, a default value will be set depending on the
         selected metric.
        :paramtype threshold: ~azure.mgmt.machinelearningservices.models.MonitoringThreshold
        """
        super(DataDriftMetricThresholdBase, self).__init__(**kwargs)
        self.data_type = None  # type: Optional[str]
        self.threshold = kwargs.get('threshold', None)


class CategoricalDataDriftMetricThreshold(DataDriftMetricThresholdBase):
    """CategoricalDataDriftMetricThreshold.

    All required parameters must be populated in order to send to Azure.

    :ivar data_type: Required. [Required] Specifies the data type of the metric threshold.Constant
     filled by server. Possible values include: "Numerical", "Categorical".
    :vartype data_type: str or ~azure.mgmt.machinelearningservices.models.MonitoringFeatureDataType
    :ivar threshold: The threshold value. If null, a default value will be set depending on the
     selected metric.
    :vartype threshold: ~azure.mgmt.machinelearningservices.models.MonitoringThreshold
    :ivar metric: Required. [Required] The categorical data drift metric to calculate. Possible
     values include: "JensenShannonDistance", "PopulationStabilityIndex", "PearsonsChiSquaredTest".
    :vartype metric: str or ~azure.mgmt.machinelearningservices.models.CategoricalDataDriftMetric
    """

    _validation = {
        'data_type': {'required': True},
        'metric': {'required': True},
    }

    _attribute_map = {
        'data_type': {'key': 'dataType', 'type': 'str'},
        'threshold': {'key': 'threshold', 'type': 'MonitoringThreshold'},
        'metric': {'key': 'metric', 'type': 'str'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword threshold: The threshold value. If null, a default value will be set depending on the
         selected metric.
        :paramtype threshold: ~azure.mgmt.machinelearningservices.models.MonitoringThreshold
        :keyword metric: Required. [Required] The categorical data drift metric to calculate. Possible
         values include: "JensenShannonDistance", "PopulationStabilityIndex", "PearsonsChiSquaredTest".
        :paramtype metric: str or ~azure.mgmt.machinelearningservices.models.CategoricalDataDriftMetric
        """
        super(CategoricalDataDriftMetricThreshold, self).__init__(**kwargs)
        self.data_type = 'Categorical'  # type: str
        self.metric = kwargs['metric']


class DataQualityMetricThresholdBase(msrest.serialization.Model):
    """DataQualityMetricThresholdBase.

    You probably want to use the sub-classes and not this class directly. Known
    sub-classes are: CategoricalDataQualityMetricThreshold, NumericalDataQualityMetricThreshold.

    All required parameters must be populated in order to send to Azure.

    :ivar data_type: Required. [Required] Specifies the data type of the metric threshold.Constant
     filled by server. Possible values include: "Numerical", "Categorical".
    :vartype data_type: str or ~azure.mgmt.machinelearningservices.models.MonitoringFeatureDataType
    :ivar threshold: The threshold value. If null, a default value will be set depending on the
     selected metric.
    :vartype threshold: ~azure.mgmt.machinelearningservices.models.MonitoringThreshold
    """

    _validation = {
        'data_type': {'required': True},
    }

    _attribute_map = {
        'data_type': {'key': 'dataType', 'type': 'str'},
        'threshold': {'key': 'threshold', 'type': 'MonitoringThreshold'},
    }

    _subtype_map = {
        'data_type': {'Categorical': 'CategoricalDataQualityMetricThreshold', 'Numerical': 'NumericalDataQualityMetricThreshold'}
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword threshold: The threshold value. If null, a default value will be set depending on the
         selected metric.
        :paramtype threshold: ~azure.mgmt.machinelearningservices.models.MonitoringThreshold
        """
        super(DataQualityMetricThresholdBase, self).__init__(**kwargs)
        self.data_type = None  # type: Optional[str]
        self.threshold = kwargs.get('threshold', None)


class CategoricalDataQualityMetricThreshold(DataQualityMetricThresholdBase):
    """CategoricalDataQualityMetricThreshold.

    All required parameters must be populated in order to send to Azure.

    :ivar data_type: Required. [Required] Specifies the data type of the metric threshold.Constant
     filled by server. Possible values include: "Numerical", "Categorical".
    :vartype data_type: str or ~azure.mgmt.machinelearningservices.models.MonitoringFeatureDataType
    :ivar threshold: The threshold value. If null, a default value will be set depending on the
     selected metric.
    :vartype threshold: ~azure.mgmt.machinelearningservices.models.MonitoringThreshold
    :ivar metric: Required. [Required] The categorical data quality metric to calculate. Possible
     values include: "NullValueRate", "DataTypeErrorRate", "OutOfBoundsRate".
    :vartype metric: str or ~azure.mgmt.machinelearningservices.models.CategoricalDataQualityMetric
    """

    _validation = {
        'data_type': {'required': True},
        'metric': {'required': True},
    }

    _attribute_map = {
        'data_type': {'key': 'dataType', 'type': 'str'},
        'threshold': {'key': 'threshold', 'type': 'MonitoringThreshold'},
        'metric': {'key': 'metric', 'type': 'str'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword threshold: The threshold value. If null, a default value will be set depending on the
         selected metric.
        :paramtype threshold: ~azure.mgmt.machinelearningservices.models.MonitoringThreshold
        :keyword metric: Required. [Required] The categorical data quality metric to calculate.
         Possible values include: "NullValueRate", "DataTypeErrorRate", "OutOfBoundsRate".
        :paramtype metric: str or
         ~azure.mgmt.machinelearningservices.models.CategoricalDataQualityMetric
        """
        super(CategoricalDataQualityMetricThreshold, self).__init__(**kwargs)
        self.data_type = 'Categorical'  # type: str
        self.metric = kwargs['metric']


class PredictionDriftMetricThresholdBase(msrest.serialization.Model):
    """PredictionDriftMetricThresholdBase.

    You probably want to use the sub-classes and not this class directly. Known
    sub-classes are: CategoricalPredictionDriftMetricThreshold, NumericalPredictionDriftMetricThreshold.

    All required parameters must be populated in order to send to Azure.

    :ivar data_type: Required. [Required] Specifies the data type of the metric threshold.Constant
     filled by server. Possible values include: "Numerical", "Categorical".
    :vartype data_type: str or ~azure.mgmt.machinelearningservices.models.MonitoringFeatureDataType
    :ivar threshold: The threshold value. If null, a default value will be set depending on the
     selected metric.
    :vartype threshold: ~azure.mgmt.machinelearningservices.models.MonitoringThreshold
    """

    _validation = {
        'data_type': {'required': True},
    }

    _attribute_map = {
        'data_type': {'key': 'dataType', 'type': 'str'},
        'threshold': {'key': 'threshold', 'type': 'MonitoringThreshold'},
    }

    _subtype_map = {
        'data_type': {'Categorical': 'CategoricalPredictionDriftMetricThreshold', 'Numerical': 'NumericalPredictionDriftMetricThreshold'}
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword threshold: The threshold value. If null, a default value will be set depending on the
         selected metric.
        :paramtype threshold: ~azure.mgmt.machinelearningservices.models.MonitoringThreshold
        """
        super(PredictionDriftMetricThresholdBase, self).__init__(**kwargs)
        self.data_type = None  # type: Optional[str]
        self.threshold = kwargs.get('threshold', None)


class CategoricalPredictionDriftMetricThreshold(PredictionDriftMetricThresholdBase):
    """CategoricalPredictionDriftMetricThreshold.

    All required parameters must be populated in order to send to Azure.

    :ivar data_type: Required. [Required] Specifies the data type of the metric threshold.Constant
     filled by server. Possible values include: "Numerical", "Categorical".
    :vartype data_type: str or ~azure.mgmt.machinelearningservices.models.MonitoringFeatureDataType
    :ivar threshold: The threshold value. If null, a default value will be set depending on the
     selected metric.
    :vartype threshold: ~azure.mgmt.machinelearningservices.models.MonitoringThreshold
    :ivar metric: Required. [Required] The categorical prediction drift metric to calculate.
     Possible values include: "JensenShannonDistance", "PopulationStabilityIndex",
     "PearsonsChiSquaredTest".
    :vartype metric: str or
     ~azure.mgmt.machinelearningservices.models.CategoricalPredictionDriftMetric
    """

    _validation = {
        'data_type': {'required': True},
        'metric': {'required': True},
    }

    _attribute_map = {
        'data_type': {'key': 'dataType', 'type': 'str'},
        'threshold': {'key': 'threshold', 'type': 'MonitoringThreshold'},
        'metric': {'key': 'metric', 'type': 'str'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword threshold: The threshold value. If null, a default value will be set depending on the
         selected metric.
        :paramtype threshold: ~azure.mgmt.machinelearningservices.models.MonitoringThreshold
        :keyword metric: Required. [Required] The categorical prediction drift metric to calculate.
         Possible values include: "JensenShannonDistance", "PopulationStabilityIndex",
         "PearsonsChiSquaredTest".
        :paramtype metric: str or
         ~azure.mgmt.machinelearningservices.models.CategoricalPredictionDriftMetric
        """
        super(CategoricalPredictionDriftMetricThreshold, self).__init__(**kwargs)
        self.data_type = 'Categorical'  # type: str
        self.metric = kwargs['metric']


class CertificateDatastoreCredentials(DatastoreCredentials):
    """Certificate datastore credentials configuration.

    All required parameters must be populated in order to send to Azure.

    :ivar credentials_type: Required. [Required] Credential type used to authentication with
     storage.Constant filled by server. Possible values include: "AccountKey", "Certificate",
     "None", "Sas", "ServicePrincipal".
    :vartype credentials_type: str or ~azure.mgmt.machinelearningservices.models.CredentialsType
    :ivar authority_url: Authority URL used for authentication.
    :vartype authority_url: str
    :ivar client_id: Required. [Required] Service principal client ID.
    :vartype client_id: str
    :ivar resource_url: Resource the service principal has access to.
    :vartype resource_url: str
    :ivar secrets: Required. [Required] Service principal secrets.
    :vartype secrets: ~azure.mgmt.machinelearningservices.models.CertificateDatastoreSecrets
    :ivar tenant_id: Required. [Required] ID of the tenant to which the service principal belongs.
    :vartype tenant_id: str
    :ivar thumbprint: Required. [Required] Thumbprint of the certificate used for authentication.
    :vartype thumbprint: str
    """

    _validation = {
        'credentials_type': {'required': True},
        'client_id': {'required': True},
        'secrets': {'required': True},
        'tenant_id': {'required': True},
        'thumbprint': {'required': True, 'min_length': 1, 'pattern': r'[a-zA-Z0-9_]'},
    }

    _attribute_map = {
        'credentials_type': {'key': 'credentialsType', 'type': 'str'},
        'authority_url': {'key': 'authorityUrl', 'type': 'str'},
        'client_id': {'key': 'clientId', 'type': 'str'},
        'resource_url': {'key': 'resourceUrl', 'type': 'str'},
        'secrets': {'key': 'secrets', 'type': 'CertificateDatastoreSecrets'},
        'tenant_id': {'key': 'tenantId', 'type': 'str'},
        'thumbprint': {'key': 'thumbprint', 'type': 'str'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword authority_url: Authority URL used for authentication.
        :paramtype authority_url: str
        :keyword client_id: Required. [Required] Service principal client ID.
        :paramtype client_id: str
        :keyword resource_url: Resource the service principal has access to.
        :paramtype resource_url: str
        :keyword secrets: Required. [Required] Service principal secrets.
        :paramtype secrets: ~azure.mgmt.machinelearningservices.models.CertificateDatastoreSecrets
        :keyword tenant_id: Required. [Required] ID of the tenant to which the service principal
         belongs.
        :paramtype tenant_id: str
        :keyword thumbprint: Required. [Required] Thumbprint of the certificate used for
         authentication.
        :paramtype thumbprint: str
        """
        super(CertificateDatastoreCredentials, self).__init__(**kwargs)
        self.credentials_type = 'Certificate'  # type: str
        self.authority_url = kwargs.get('authority_url', None)
        self.client_id = kwargs['client_id']
        self.resource_url = kwargs.get('resource_url', None)
        self.secrets = kwargs['secrets']
        self.tenant_id = kwargs['tenant_id']
        self.thumbprint = kwargs['thumbprint']


class CertificateDatastoreSecrets(DatastoreSecrets):
    """Datastore certificate secrets.

    All required parameters must be populated in order to send to Azure.

    :ivar secrets_type: Required. [Required] Credential type used to authentication with
     storage.Constant filled by server. Possible values include: "AccountKey", "Certificate", "Sas",
     "ServicePrincipal".
    :vartype secrets_type: str or ~azure.mgmt.machinelearningservices.models.SecretsType
    :ivar certificate: Service principal certificate.
    :vartype certificate: str
    """

    _validation = {
        'secrets_type': {'required': True},
    }

    _attribute_map = {
        'secrets_type': {'key': 'secretsType', 'type': 'str'},
        'certificate': {'key': 'certificate', 'type': 'str'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword certificate: Service principal certificate.
        :paramtype certificate: str
        """
        super(CertificateDatastoreSecrets, self).__init__(**kwargs)
        self.secrets_type = 'Certificate'  # type: str
        self.certificate = kwargs.get('certificate', None)


class TableVertical(msrest.serialization.Model):
    """Abstract class for AutoML tasks that use table dataset as input - such as Classification/Regression/Forecasting.

    :ivar cv_split_column_names: Columns to use for CVSplit data.
    :vartype cv_split_column_names: list[str]
    :ivar featurization_settings: Featurization inputs needed for AutoML job.
    :vartype featurization_settings:
     ~azure.mgmt.machinelearningservices.models.TableVerticalFeaturizationSettings
    :ivar limit_settings: Execution constraints for AutoMLJob.
    :vartype limit_settings: ~azure.mgmt.machinelearningservices.models.TableVerticalLimitSettings
    :ivar n_cross_validations: Number of cross validation folds to be applied on training dataset
     when validation dataset is not provided.
    :vartype n_cross_validations: ~azure.mgmt.machinelearningservices.models.NCrossValidations
    :ivar test_data: Test data input.
    :vartype test_data: ~azure.mgmt.machinelearningservices.models.MLTableJobInput
    :ivar test_data_size: The fraction of test dataset that needs to be set aside for validation
     purpose.
     Values between (0.0 , 1.0)
     Applied when validation dataset is not provided.
    :vartype test_data_size: float
    :ivar validation_data: Validation data inputs.
    :vartype validation_data: ~azure.mgmt.machinelearningservices.models.MLTableJobInput
    :ivar validation_data_size: The fraction of training dataset that needs to be set aside for
     validation purpose.
     Values between (0.0 , 1.0)
     Applied when validation dataset is not provided.
    :vartype validation_data_size: float
    :ivar weight_column_name: The name of the sample weight column. Automated ML supports a
     weighted column as an input, causing rows in the data to be weighted up or down.
    :vartype weight_column_name: str
    """

    _attribute_map = {
        'cv_split_column_names': {'key': 'cvSplitColumnNames', 'type': '[str]'},
        'featurization_settings': {'key': 'featurizationSettings', 'type': 'TableVerticalFeaturizationSettings'},
        'limit_settings': {'key': 'limitSettings', 'type': 'TableVerticalLimitSettings'},
        'n_cross_validations': {'key': 'nCrossValidations', 'type': 'NCrossValidations'},
        'test_data': {'key': 'testData', 'type': 'MLTableJobInput'},
        'test_data_size': {'key': 'testDataSize', 'type': 'float'},
        'validation_data': {'key': 'validationData', 'type': 'MLTableJobInput'},
        'validation_data_size': {'key': 'validationDataSize', 'type': 'float'},
        'weight_column_name': {'key': 'weightColumnName', 'type': 'str'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword cv_split_column_names: Columns to use for CVSplit data.
        :paramtype cv_split_column_names: list[str]
        :keyword featurization_settings: Featurization inputs needed for AutoML job.
        :paramtype featurization_settings:
         ~azure.mgmt.machinelearningservices.models.TableVerticalFeaturizationSettings
        :keyword limit_settings: Execution constraints for AutoMLJob.
        :paramtype limit_settings:
         ~azure.mgmt.machinelearningservices.models.TableVerticalLimitSettings
        :keyword n_cross_validations: Number of cross validation folds to be applied on training
         dataset
         when validation dataset is not provided.
        :paramtype n_cross_validations: ~azure.mgmt.machinelearningservices.models.NCrossValidations
        :keyword test_data: Test data input.
        :paramtype test_data: ~azure.mgmt.machinelearningservices.models.MLTableJobInput
        :keyword test_data_size: The fraction of test dataset that needs to be set aside for validation
         purpose.
         Values between (0.0 , 1.0)
         Applied when validation dataset is not provided.
        :paramtype test_data_size: float
        :keyword validation_data: Validation data inputs.
        :paramtype validation_data: ~azure.mgmt.machinelearningservices.models.MLTableJobInput
        :keyword validation_data_size: The fraction of training dataset that needs to be set aside for
         validation purpose.
         Values between (0.0 , 1.0)
         Applied when validation dataset is not provided.
        :paramtype validation_data_size: float
        :keyword weight_column_name: The name of the sample weight column. Automated ML supports a
         weighted column as an input, causing rows in the data to be weighted up or down.
        :paramtype weight_column_name: str
        """
        super(TableVertical, self).__init__(**kwargs)
        self.cv_split_column_names = kwargs.get('cv_split_column_names', None)
        self.featurization_settings = kwargs.get('featurization_settings', None)
        self.limit_settings = kwargs.get('limit_settings', None)
        self.n_cross_validations = kwargs.get('n_cross_validations', None)
        self.test_data = kwargs.get('test_data', None)
        self.test_data_size = kwargs.get('test_data_size', None)
        self.validation_data = kwargs.get('validation_data', None)
        self.validation_data_size = kwargs.get('validation_data_size', None)
        self.weight_column_name = kwargs.get('weight_column_name', None)


class Classification(AutoMLVertical, TableVertical):
    """Classification task in AutoML Table vertical.

    All required parameters must be populated in order to send to Azure.

    :ivar cv_split_column_names: Columns to use for CVSplit data.
    :vartype cv_split_column_names: list[str]
    :ivar featurization_settings: Featurization inputs needed for AutoML job.
    :vartype featurization_settings:
     ~azure.mgmt.machinelearningservices.models.TableVerticalFeaturizationSettings
    :ivar limit_settings: Execution constraints for AutoMLJob.
    :vartype limit_settings: ~azure.mgmt.machinelearningservices.models.TableVerticalLimitSettings
    :ivar n_cross_validations: Number of cross validation folds to be applied on training dataset
     when validation dataset is not provided.
    :vartype n_cross_validations: ~azure.mgmt.machinelearningservices.models.NCrossValidations
    :ivar test_data: Test data input.
    :vartype test_data: ~azure.mgmt.machinelearningservices.models.MLTableJobInput
    :ivar test_data_size: The fraction of test dataset that needs to be set aside for validation
     purpose.
     Values between (0.0 , 1.0)
     Applied when validation dataset is not provided.
    :vartype test_data_size: float
    :ivar validation_data: Validation data inputs.
    :vartype validation_data: ~azure.mgmt.machinelearningservices.models.MLTableJobInput
    :ivar validation_data_size: The fraction of training dataset that needs to be set aside for
     validation purpose.
     Values between (0.0 , 1.0)
     Applied when validation dataset is not provided.
    :vartype validation_data_size: float
    :ivar weight_column_name: The name of the sample weight column. Automated ML supports a
     weighted column as an input, causing rows in the data to be weighted up or down.
    :vartype weight_column_name: str
    :ivar log_verbosity: Log verbosity for the job. Possible values include: "NotSet", "Debug",
     "Info", "Warning", "Error", "Critical".
    :vartype log_verbosity: str or ~azure.mgmt.machinelearningservices.models.LogVerbosity
    :ivar target_column_name: Target column name: This is prediction values column.
     Also known as label column name in context of classification tasks.
    :vartype target_column_name: str
    :ivar task_type: Required. [Required] Task type for AutoMLJob.Constant filled by server.
     Possible values include: "Classification", "Regression", "Forecasting", "ImageClassification",
     "ImageClassificationMultilabel", "ImageObjectDetection", "ImageInstanceSegmentation",
     "TextClassification", "TextClassificationMultilabel", "TextNER".
    :vartype task_type: str or ~azure.mgmt.machinelearningservices.models.TaskType
    :ivar training_data: Required. [Required] Training data input.
    :vartype training_data: ~azure.mgmt.machinelearningservices.models.MLTableJobInput
    :ivar positive_label: Positive label for binary metrics calculation.
    :vartype positive_label: str
    :ivar primary_metric: Primary metric for the task. Possible values include: "AUCWeighted",
     "Accuracy", "NormMacroRecall", "AveragePrecisionScoreWeighted", "PrecisionScoreWeighted".
    :vartype primary_metric: str or
     ~azure.mgmt.machinelearningservices.models.ClassificationPrimaryMetrics
    :ivar training_settings: Inputs for training phase for an AutoML Job.
    :vartype training_settings:
     ~azure.mgmt.machinelearningservices.models.ClassificationTrainingSettings
    """

    _validation = {
        'task_type': {'required': True},
        'training_data': {'required': True},
    }

    _attribute_map = {
        'cv_split_column_names': {'key': 'cvSplitColumnNames', 'type': '[str]'},
        'featurization_settings': {'key': 'featurizationSettings', 'type': 'TableVerticalFeaturizationSettings'},
        'limit_settings': {'key': 'limitSettings', 'type': 'TableVerticalLimitSettings'},
        'n_cross_validations': {'key': 'nCrossValidations', 'type': 'NCrossValidations'},
        'test_data': {'key': 'testData', 'type': 'MLTableJobInput'},
        'test_data_size': {'key': 'testDataSize', 'type': 'float'},
        'validation_data': {'key': 'validationData', 'type': 'MLTableJobInput'},
        'validation_data_size': {'key': 'validationDataSize', 'type': 'float'},
        'weight_column_name': {'key': 'weightColumnName', 'type': 'str'},
        'log_verbosity': {'key': 'logVerbosity', 'type': 'str'},
        'target_column_name': {'key': 'targetColumnName', 'type': 'str'},
        'task_type': {'key': 'taskType', 'type': 'str'},
        'training_data': {'key': 'trainingData', 'type': 'MLTableJobInput'},
        'positive_label': {'key': 'positiveLabel', 'type': 'str'},
        'primary_metric': {'key': 'primaryMetric', 'type': 'str'},
        'training_settings': {'key': 'trainingSettings', 'type': 'ClassificationTrainingSettings'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword cv_split_column_names: Columns to use for CVSplit data.
        :paramtype cv_split_column_names: list[str]
        :keyword featurization_settings: Featurization inputs needed for AutoML job.
        :paramtype featurization_settings:
         ~azure.mgmt.machinelearningservices.models.TableVerticalFeaturizationSettings
        :keyword limit_settings: Execution constraints for AutoMLJob.
        :paramtype limit_settings:
         ~azure.mgmt.machinelearningservices.models.TableVerticalLimitSettings
        :keyword n_cross_validations: Number of cross validation folds to be applied on training
         dataset
         when validation dataset is not provided.
        :paramtype n_cross_validations: ~azure.mgmt.machinelearningservices.models.NCrossValidations
        :keyword test_data: Test data input.
        :paramtype test_data: ~azure.mgmt.machinelearningservices.models.MLTableJobInput
        :keyword test_data_size: The fraction of test dataset that needs to be set aside for validation
         purpose.
         Values between (0.0 , 1.0)
         Applied when validation dataset is not provided.
        :paramtype test_data_size: float
        :keyword validation_data: Validation data inputs.
        :paramtype validation_data: ~azure.mgmt.machinelearningservices.models.MLTableJobInput
        :keyword validation_data_size: The fraction of training dataset that needs to be set aside for
         validation purpose.
         Values between (0.0 , 1.0)
         Applied when validation dataset is not provided.
        :paramtype validation_data_size: float
        :keyword weight_column_name: The name of the sample weight column. Automated ML supports a
         weighted column as an input, causing rows in the data to be weighted up or down.
        :paramtype weight_column_name: str
        :keyword log_verbosity: Log verbosity for the job. Possible values include: "NotSet", "Debug",
         "Info", "Warning", "Error", "Critical".
        :paramtype log_verbosity: str or ~azure.mgmt.machinelearningservices.models.LogVerbosity
        :keyword target_column_name: Target column name: This is prediction values column.
         Also known as label column name in context of classification tasks.
        :paramtype target_column_name: str
        :keyword training_data: Required. [Required] Training data input.
        :paramtype training_data: ~azure.mgmt.machinelearningservices.models.MLTableJobInput
        :keyword positive_label: Positive label for binary metrics calculation.
        :paramtype positive_label: str
        :keyword primary_metric: Primary metric for the task. Possible values include: "AUCWeighted",
         "Accuracy", "NormMacroRecall", "AveragePrecisionScoreWeighted", "PrecisionScoreWeighted".
        :paramtype primary_metric: str or
         ~azure.mgmt.machinelearningservices.models.ClassificationPrimaryMetrics
        :keyword training_settings: Inputs for training phase for an AutoML Job.
        :paramtype training_settings:
         ~azure.mgmt.machinelearningservices.models.ClassificationTrainingSettings
        """
        super(Classification, self).__init__(**kwargs)
        self.cv_split_column_names = kwargs.get('cv_split_column_names', None)
        self.featurization_settings = kwargs.get('featurization_settings', None)
        self.limit_settings = kwargs.get('limit_settings', None)
        self.n_cross_validations = kwargs.get('n_cross_validations', None)
        self.test_data = kwargs.get('test_data', None)
        self.test_data_size = kwargs.get('test_data_size', None)
        self.validation_data = kwargs.get('validation_data', None)
        self.validation_data_size = kwargs.get('validation_data_size', None)
        self.weight_column_name = kwargs.get('weight_column_name', None)
        self.task_type = 'Classification'  # type: str
        self.positive_label = kwargs.get('positive_label', None)
        self.primary_metric = kwargs.get('primary_metric', None)
        self.training_settings = kwargs.get('training_settings', None)
        self.log_verbosity = kwargs.get('log_verbosity', None)
        self.target_column_name = kwargs.get('target_column_name', None)
        self.training_data = kwargs['training_data']


class TrainingSettings(msrest.serialization.Model):
    """Training related configuration.

    :ivar enable_dnn_training: Enable recommendation of DNN models.
    :vartype enable_dnn_training: bool
    :ivar enable_model_explainability: Flag to turn on explainability on best model.
    :vartype enable_model_explainability: bool
    :ivar enable_onnx_compatible_models: Flag for enabling onnx compatible models.
    :vartype enable_onnx_compatible_models: bool
    :ivar enable_stack_ensemble: Enable stack ensemble run.
    :vartype enable_stack_ensemble: bool
    :ivar enable_vote_ensemble: Enable voting ensemble run.
    :vartype enable_vote_ensemble: bool
    :ivar ensemble_model_download_timeout: During VotingEnsemble and StackEnsemble model
     generation, multiple fitted models from the previous child runs are downloaded.
     Configure this parameter with a higher value than 300 secs, if more time is needed.
    :vartype ensemble_model_download_timeout: ~datetime.timedelta
    :ivar stack_ensemble_settings: Stack ensemble settings for stack ensemble run.
    :vartype stack_ensemble_settings:
     ~azure.mgmt.machinelearningservices.models.StackEnsembleSettings
    """

    _attribute_map = {
        'enable_dnn_training': {'key': 'enableDnnTraining', 'type': 'bool'},
        'enable_model_explainability': {'key': 'enableModelExplainability', 'type': 'bool'},
        'enable_onnx_compatible_models': {'key': 'enableOnnxCompatibleModels', 'type': 'bool'},
        'enable_stack_ensemble': {'key': 'enableStackEnsemble', 'type': 'bool'},
        'enable_vote_ensemble': {'key': 'enableVoteEnsemble', 'type': 'bool'},
        'ensemble_model_download_timeout': {'key': 'ensembleModelDownloadTimeout', 'type': 'duration'},
        'stack_ensemble_settings': {'key': 'stackEnsembleSettings', 'type': 'StackEnsembleSettings'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword enable_dnn_training: Enable recommendation of DNN models.
        :paramtype enable_dnn_training: bool
        :keyword enable_model_explainability: Flag to turn on explainability on best model.
        :paramtype enable_model_explainability: bool
        :keyword enable_onnx_compatible_models: Flag for enabling onnx compatible models.
        :paramtype enable_onnx_compatible_models: bool
        :keyword enable_stack_ensemble: Enable stack ensemble run.
        :paramtype enable_stack_ensemble: bool
        :keyword enable_vote_ensemble: Enable voting ensemble run.
        :paramtype enable_vote_ensemble: bool
        :keyword ensemble_model_download_timeout: During VotingEnsemble and StackEnsemble model
         generation, multiple fitted models from the previous child runs are downloaded.
         Configure this parameter with a higher value than 300 secs, if more time is needed.
        :paramtype ensemble_model_download_timeout: ~datetime.timedelta
        :keyword stack_ensemble_settings: Stack ensemble settings for stack ensemble run.
        :paramtype stack_ensemble_settings:
         ~azure.mgmt.machinelearningservices.models.StackEnsembleSettings
        """
        super(TrainingSettings, self).__init__(**kwargs)
        self.enable_dnn_training = kwargs.get('enable_dnn_training', False)
        self.enable_model_explainability = kwargs.get('enable_model_explainability', True)
        self.enable_onnx_compatible_models = kwargs.get('enable_onnx_compatible_models', False)
        self.enable_stack_ensemble = kwargs.get('enable_stack_ensemble', True)
        self.enable_vote_ensemble = kwargs.get('enable_vote_ensemble', True)
        self.ensemble_model_download_timeout = kwargs.get('ensemble_model_download_timeout', "PT5M")
        self.stack_ensemble_settings = kwargs.get('stack_ensemble_settings', None)


class ClassificationTrainingSettings(TrainingSettings):
    """Classification Training related configuration.

    :ivar enable_dnn_training: Enable recommendation of DNN models.
    :vartype enable_dnn_training: bool
    :ivar enable_model_explainability: Flag to turn on explainability on best model.
    :vartype enable_model_explainability: bool
    :ivar enable_onnx_compatible_models: Flag for enabling onnx compatible models.
    :vartype enable_onnx_compatible_models: bool
    :ivar enable_stack_ensemble: Enable stack ensemble run.
    :vartype enable_stack_ensemble: bool
    :ivar enable_vote_ensemble: Enable voting ensemble run.
    :vartype enable_vote_ensemble: bool
    :ivar ensemble_model_download_timeout: During VotingEnsemble and StackEnsemble model
     generation, multiple fitted models from the previous child runs are downloaded.
     Configure this parameter with a higher value than 300 secs, if more time is needed.
    :vartype ensemble_model_download_timeout: ~datetime.timedelta
    :ivar stack_ensemble_settings: Stack ensemble settings for stack ensemble run.
    :vartype stack_ensemble_settings:
     ~azure.mgmt.machinelearningservices.models.StackEnsembleSettings
    :ivar allowed_training_algorithms: Allowed models for classification task.
    :vartype allowed_training_algorithms: list[str or
     ~azure.mgmt.machinelearningservices.models.ClassificationModels]
    :ivar blocked_training_algorithms: Blocked models for classification task.
    :vartype blocked_training_algorithms: list[str or
     ~azure.mgmt.machinelearningservices.models.ClassificationModels]
    """

    _attribute_map = {
        'enable_dnn_training': {'key': 'enableDnnTraining', 'type': 'bool'},
        'enable_model_explainability': {'key': 'enableModelExplainability', 'type': 'bool'},
        'enable_onnx_compatible_models': {'key': 'enableOnnxCompatibleModels', 'type': 'bool'},
        'enable_stack_ensemble': {'key': 'enableStackEnsemble', 'type': 'bool'},
        'enable_vote_ensemble': {'key': 'enableVoteEnsemble', 'type': 'bool'},
        'ensemble_model_download_timeout': {'key': 'ensembleModelDownloadTimeout', 'type': 'duration'},
        'stack_ensemble_settings': {'key': 'stackEnsembleSettings', 'type': 'StackEnsembleSettings'},
        'allowed_training_algorithms': {'key': 'allowedTrainingAlgorithms', 'type': '[str]'},
        'blocked_training_algorithms': {'key': 'blockedTrainingAlgorithms', 'type': '[str]'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword enable_dnn_training: Enable recommendation of DNN models.
        :paramtype enable_dnn_training: bool
        :keyword enable_model_explainability: Flag to turn on explainability on best model.
        :paramtype enable_model_explainability: bool
        :keyword enable_onnx_compatible_models: Flag for enabling onnx compatible models.
        :paramtype enable_onnx_compatible_models: bool
        :keyword enable_stack_ensemble: Enable stack ensemble run.
        :paramtype enable_stack_ensemble: bool
        :keyword enable_vote_ensemble: Enable voting ensemble run.
        :paramtype enable_vote_ensemble: bool
        :keyword ensemble_model_download_timeout: During VotingEnsemble and StackEnsemble model
         generation, multiple fitted models from the previous child runs are downloaded.
         Configure this parameter with a higher value than 300 secs, if more time is needed.
        :paramtype ensemble_model_download_timeout: ~datetime.timedelta
        :keyword stack_ensemble_settings: Stack ensemble settings for stack ensemble run.
        :paramtype stack_ensemble_settings:
         ~azure.mgmt.machinelearningservices.models.StackEnsembleSettings
        :keyword allowed_training_algorithms: Allowed models for classification task.
        :paramtype allowed_training_algorithms: list[str or
         ~azure.mgmt.machinelearningservices.models.ClassificationModels]
        :keyword blocked_training_algorithms: Blocked models for classification task.
        :paramtype blocked_training_algorithms: list[str or
         ~azure.mgmt.machinelearningservices.models.ClassificationModels]
        """
        super(ClassificationTrainingSettings, self).__init__(**kwargs)
        self.allowed_training_algorithms = kwargs.get('allowed_training_algorithms', None)
        self.blocked_training_algorithms = kwargs.get('blocked_training_algorithms', None)


class ClusterUpdateParameters(msrest.serialization.Model):
    """AmlCompute update parameters.

    :ivar properties: Properties of ClusterUpdate.
    :vartype properties: ~azure.mgmt.machinelearningservices.models.ScaleSettingsInformation
    """

    _attribute_map = {
        'properties': {'key': 'properties.properties', 'type': 'ScaleSettingsInformation'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword properties: Properties of ClusterUpdate.
        :paramtype properties: ~azure.mgmt.machinelearningservices.models.ScaleSettingsInformation
        """
        super(ClusterUpdateParameters, self).__init__(**kwargs)
        self.properties = kwargs.get('properties', None)


class CodeConfiguration(msrest.serialization.Model):
    """Configuration for a scoring code asset.

    All required parameters must be populated in order to send to Azure.

    :ivar code_id: ARM resource ID of the code asset.
    :vartype code_id: str
    :ivar scoring_script: Required. [Required] The script to execute on startup. eg. "score.py".
    :vartype scoring_script: str
    """

    _validation = {
        'scoring_script': {'required': True, 'min_length': 1, 'pattern': r'[a-zA-Z0-9_]'},
    }

    _attribute_map = {
        'code_id': {'key': 'codeId', 'type': 'str'},
        'scoring_script': {'key': 'scoringScript', 'type': 'str'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword code_id: ARM resource ID of the code asset.
        :paramtype code_id: str
        :keyword scoring_script: Required. [Required] The script to execute on startup. eg. "score.py".
        :paramtype scoring_script: str
        """
        super(CodeConfiguration, self).__init__(**kwargs)
        self.code_id = kwargs.get('code_id', None)
        self.scoring_script = kwargs['scoring_script']


class CodeContainer(ProxyResource):
    """Azure Resource Manager resource envelope.

    Variables are only populated by the server, and will be ignored when sending a request.

    All required parameters must be populated in order to send to Azure.

    :ivar id: Fully qualified resource ID for the resource. Ex -
     /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}.
    :vartype id: str
    :ivar name: The name of the resource.
    :vartype name: str
    :ivar type: The type of the resource. E.g. "Microsoft.Compute/virtualMachines" or
     "Microsoft.Storage/storageAccounts".
    :vartype type: str
    :ivar system_data: Azure Resource Manager metadata containing createdBy and modifiedBy
     information.
    :vartype system_data: ~azure.mgmt.machinelearningservices.models.SystemData
    :ivar properties: Required. [Required] Additional attributes of the entity.
    :vartype properties: ~azure.mgmt.machinelearningservices.models.CodeContainerProperties
    """

    _validation = {
        'id': {'readonly': True},
        'name': {'readonly': True},
        'type': {'readonly': True},
        'system_data': {'readonly': True},
        'properties': {'required': True},
    }

    _attribute_map = {
        'id': {'key': 'id', 'type': 'str'},
        'name': {'key': 'name', 'type': 'str'},
        'type': {'key': 'type', 'type': 'str'},
        'system_data': {'key': 'systemData', 'type': 'SystemData'},
        'properties': {'key': 'properties', 'type': 'CodeContainerProperties'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword properties: Required. [Required] Additional attributes of the entity.
        :paramtype properties: ~azure.mgmt.machinelearningservices.models.CodeContainerProperties
        """
        super(CodeContainer, self).__init__(**kwargs)
        self.properties = kwargs['properties']


class CodeContainerProperties(AssetContainer):
    """Container for code asset versions.

    Variables are only populated by the server, and will be ignored when sending a request.

    :ivar description: The asset description text.
    :vartype description: str
    :ivar properties: The asset property dictionary.
    :vartype properties: dict[str, str]
    :ivar tags: A set of tags. Tag dictionary. Tags can be added, removed, and updated.
    :vartype tags: dict[str, str]
    :ivar is_archived: Is the asset archived?.
    :vartype is_archived: bool
    :ivar latest_version: The latest version inside this container.
    :vartype latest_version: str
    :ivar next_version: The next auto incremental version.
    :vartype next_version: str
    :ivar provisioning_state: Provisioning state for the code container. Possible values include:
     "Succeeded", "Failed", "Canceled", "Creating", "Updating", "Deleting".
    :vartype provisioning_state: str or
     ~azure.mgmt.machinelearningservices.models.AssetProvisioningState
    """

    _validation = {
        'latest_version': {'readonly': True},
        'next_version': {'readonly': True},
        'provisioning_state': {'readonly': True},
    }

    _attribute_map = {
        'description': {'key': 'description', 'type': 'str'},
        'properties': {'key': 'properties', 'type': '{str}'},
        'tags': {'key': 'tags', 'type': '{str}'},
        'is_archived': {'key': 'isArchived', 'type': 'bool'},
        'latest_version': {'key': 'latestVersion', 'type': 'str'},
        'next_version': {'key': 'nextVersion', 'type': 'str'},
        'provisioning_state': {'key': 'provisioningState', 'type': 'str'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword description: The asset description text.
        :paramtype description: str
        :keyword properties: The asset property dictionary.
        :paramtype properties: dict[str, str]
        :keyword tags: A set of tags. Tag dictionary. Tags can be added, removed, and updated.
        :paramtype tags: dict[str, str]
        :keyword is_archived: Is the asset archived?.
        :paramtype is_archived: bool
        """
        super(CodeContainerProperties, self).__init__(**kwargs)
        self.provisioning_state = None


class CodeContainerResourceArmPaginatedResult(msrest.serialization.Model):
    """A paginated list of CodeContainer entities.

    :ivar next_link: The link to the next page of CodeContainer objects. If null, there are no
     additional pages.
    :vartype next_link: str
    :ivar value: An array of objects of type CodeContainer.
    :vartype value: list[~azure.mgmt.machinelearningservices.models.CodeContainer]
    """

    _attribute_map = {
        'next_link': {'key': 'nextLink', 'type': 'str'},
        'value': {'key': 'value', 'type': '[CodeContainer]'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword next_link: The link to the next page of CodeContainer objects. If null, there are no
         additional pages.
        :paramtype next_link: str
        :keyword value: An array of objects of type CodeContainer.
        :paramtype value: list[~azure.mgmt.machinelearningservices.models.CodeContainer]
        """
        super(CodeContainerResourceArmPaginatedResult, self).__init__(**kwargs)
        self.next_link = kwargs.get('next_link', None)
        self.value = kwargs.get('value', None)


class CodeVersion(ProxyResource):
    """Azure Resource Manager resource envelope.

    Variables are only populated by the server, and will be ignored when sending a request.

    All required parameters must be populated in order to send to Azure.

    :ivar id: Fully qualified resource ID for the resource. Ex -
     /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}.
    :vartype id: str
    :ivar name: The name of the resource.
    :vartype name: str
    :ivar type: The type of the resource. E.g. "Microsoft.Compute/virtualMachines" or
     "Microsoft.Storage/storageAccounts".
    :vartype type: str
    :ivar system_data: Azure Resource Manager metadata containing createdBy and modifiedBy
     information.
    :vartype system_data: ~azure.mgmt.machinelearningservices.models.SystemData
    :ivar properties: Required. [Required] Additional attributes of the entity.
    :vartype properties: ~azure.mgmt.machinelearningservices.models.CodeVersionProperties
    """

    _validation = {
        'id': {'readonly': True},
        'name': {'readonly': True},
        'type': {'readonly': True},
        'system_data': {'readonly': True},
        'properties': {'required': True},
    }

    _attribute_map = {
        'id': {'key': 'id', 'type': 'str'},
        'name': {'key': 'name', 'type': 'str'},
        'type': {'key': 'type', 'type': 'str'},
        'system_data': {'key': 'systemData', 'type': 'SystemData'},
        'properties': {'key': 'properties', 'type': 'CodeVersionProperties'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword properties: Required. [Required] Additional attributes of the entity.
        :paramtype properties: ~azure.mgmt.machinelearningservices.models.CodeVersionProperties
        """
        super(CodeVersion, self).__init__(**kwargs)
        self.properties = kwargs['properties']


class CodeVersionProperties(AssetBase):
    """Code asset version details.

    Variables are only populated by the server, and will be ignored when sending a request.

    :ivar description: The asset description text.
    :vartype description: str
    :ivar properties: The asset property dictionary.
    :vartype properties: dict[str, str]
    :ivar tags: A set of tags. Tag dictionary. Tags can be added, removed, and updated.
    :vartype tags: dict[str, str]
    :ivar is_anonymous: If the name version are system generated (anonymous registration).
    :vartype is_anonymous: bool
    :ivar is_archived: Is the asset archived?.
    :vartype is_archived: bool
    :ivar code_uri: Uri where code is located.
    :vartype code_uri: str
    :ivar provisioning_state: Provisioning state for the code version. Possible values include:
     "Succeeded", "Failed", "Canceled", "Creating", "Updating", "Deleting".
    :vartype provisioning_state: str or
     ~azure.mgmt.machinelearningservices.models.AssetProvisioningState
    """

    _validation = {
        'provisioning_state': {'readonly': True},
    }

    _attribute_map = {
        'description': {'key': 'description', 'type': 'str'},
        'properties': {'key': 'properties', 'type': '{str}'},
        'tags': {'key': 'tags', 'type': '{str}'},
        'is_anonymous': {'key': 'isAnonymous', 'type': 'bool'},
        'is_archived': {'key': 'isArchived', 'type': 'bool'},
        'code_uri': {'key': 'codeUri', 'type': 'str'},
        'provisioning_state': {'key': 'provisioningState', 'type': 'str'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword description: The asset description text.
        :paramtype description: str
        :keyword properties: The asset property dictionary.
        :paramtype properties: dict[str, str]
        :keyword tags: A set of tags. Tag dictionary. Tags can be added, removed, and updated.
        :paramtype tags: dict[str, str]
        :keyword is_anonymous: If the name version are system generated (anonymous registration).
        :paramtype is_anonymous: bool
        :keyword is_archived: Is the asset archived?.
        :paramtype is_archived: bool
        :keyword code_uri: Uri where code is located.
        :paramtype code_uri: str
        """
        super(CodeVersionProperties, self).__init__(**kwargs)
        self.code_uri = kwargs.get('code_uri', None)
        self.provisioning_state = None


class CodeVersionResourceArmPaginatedResult(msrest.serialization.Model):
    """A paginated list of CodeVersion entities.

    :ivar next_link: The link to the next page of CodeVersion objects. If null, there are no
     additional pages.
    :vartype next_link: str
    :ivar value: An array of objects of type CodeVersion.
    :vartype value: list[~azure.mgmt.machinelearningservices.models.CodeVersion]
    """

    _attribute_map = {
        'next_link': {'key': 'nextLink', 'type': 'str'},
        'value': {'key': 'value', 'type': '[CodeVersion]'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword next_link: The link to the next page of CodeVersion objects. If null, there are no
         additional pages.
        :paramtype next_link: str
        :keyword value: An array of objects of type CodeVersion.
        :paramtype value: list[~azure.mgmt.machinelearningservices.models.CodeVersion]
        """
        super(CodeVersionResourceArmPaginatedResult, self).__init__(**kwargs)
        self.next_link = kwargs.get('next_link', None)
        self.value = kwargs.get('value', None)


class CognitiveServiceEndpointDeploymentResourceProperties(msrest.serialization.Model):
    """CognitiveServiceEndpointDeploymentResourceProperties.

    All required parameters must be populated in order to send to Azure.

    :ivar model: Required. Model used for the endpoint deployment.
    :vartype model: ~azure.mgmt.machinelearningservices.models.EndpointDeploymentModel
    :ivar rai_policy_name: The name of RAI policy.
    :vartype rai_policy_name: str
    :ivar sku:
    :vartype sku: ~azure.mgmt.machinelearningservices.models.CognitiveServicesSku
    :ivar version_upgrade_option: Deployment model version upgrade option. Possible values include:
     "OnceNewDefaultVersionAvailable", "OnceCurrentVersionExpired", "NoAutoUpgrade".
    :vartype version_upgrade_option: str or
     ~azure.mgmt.machinelearningservices.models.DeploymentModelVersionUpgradeOption
    """

    _validation = {
        'model': {'required': True},
    }

    _attribute_map = {
        'model': {'key': 'model', 'type': 'EndpointDeploymentModel'},
        'rai_policy_name': {'key': 'raiPolicyName', 'type': 'str'},
        'sku': {'key': 'sku', 'type': 'CognitiveServicesSku'},
        'version_upgrade_option': {'key': 'versionUpgradeOption', 'type': 'str'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword model: Required. Model used for the endpoint deployment.
        :paramtype model: ~azure.mgmt.machinelearningservices.models.EndpointDeploymentModel
        :keyword rai_policy_name: The name of RAI policy.
        :paramtype rai_policy_name: str
        :keyword sku:
        :paramtype sku: ~azure.mgmt.machinelearningservices.models.CognitiveServicesSku
        :keyword version_upgrade_option: Deployment model version upgrade option. Possible values
         include: "OnceNewDefaultVersionAvailable", "OnceCurrentVersionExpired", "NoAutoUpgrade".
        :paramtype version_upgrade_option: str or
         ~azure.mgmt.machinelearningservices.models.DeploymentModelVersionUpgradeOption
        """
        super(CognitiveServiceEndpointDeploymentResourceProperties, self).__init__(**kwargs)
        self.model = kwargs['model']
        self.rai_policy_name = kwargs.get('rai_policy_name', None)
        self.sku = kwargs.get('sku', None)
        self.version_upgrade_option = kwargs.get('version_upgrade_option', None)


class CognitiveServicesSku(msrest.serialization.Model):
    """CognitiveServicesSku.

    :ivar capacity:
    :vartype capacity: int
    :ivar family:
    :vartype family: str
    :ivar name:
    :vartype name: str
    :ivar size:
    :vartype size: str
    :ivar tier:
    :vartype tier: str
    """

    _attribute_map = {
        'capacity': {'key': 'capacity', 'type': 'int'},
        'family': {'key': 'family', 'type': 'str'},
        'name': {'key': 'name', 'type': 'str'},
        'size': {'key': 'size', 'type': 'str'},
        'tier': {'key': 'tier', 'type': 'str'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword capacity:
        :paramtype capacity: int
        :keyword family:
        :paramtype family: str
        :keyword name:
        :paramtype name: str
        :keyword size:
        :paramtype size: str
        :keyword tier:
        :paramtype tier: str
        """
        super(CognitiveServicesSku, self).__init__(**kwargs)
        self.capacity = kwargs.get('capacity', None)
        self.family = kwargs.get('family', None)
        self.name = kwargs.get('name', None)
        self.size = kwargs.get('size', None)
        self.tier = kwargs.get('tier', None)


class Collection(msrest.serialization.Model):
    """Collection.

    :ivar client_id: The msi client id used to collect logging to blob storage. If it's
     null,backend will pick a registered endpoint identity to auth.
    :vartype client_id: str
    :ivar data_collection_mode: Enable or disable data collection. Possible values include:
     "Enabled", "Disabled".
    :vartype data_collection_mode: str or
     ~azure.mgmt.machinelearningservices.models.DataCollectionMode
    :ivar data_id: The data asset arm resource id. Client side will ensure data asset is pointing
     to the blob storage, and backend will collect data to the blob storage.
    :vartype data_id: str
    :ivar sampling_rate: The sampling rate for collection. Sampling rate 1.0 means we collect 100%
     of data by default.
    :vartype sampling_rate: float
    """

    _attribute_map = {
        'client_id': {'key': 'clientId', 'type': 'str'},
        'data_collection_mode': {'key': 'dataCollectionMode', 'type': 'str'},
        'data_id': {'key': 'dataId', 'type': 'str'},
        'sampling_rate': {'key': 'samplingRate', 'type': 'float'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword client_id: The msi client id used to collect logging to blob storage. If it's
         null,backend will pick a registered endpoint identity to auth.
        :paramtype client_id: str
        :keyword data_collection_mode: Enable or disable data collection. Possible values include:
         "Enabled", "Disabled".
        :paramtype data_collection_mode: str or
         ~azure.mgmt.machinelearningservices.models.DataCollectionMode
        :keyword data_id: The data asset arm resource id. Client side will ensure data asset is
         pointing to the blob storage, and backend will collect data to the blob storage.
        :paramtype data_id: str
        :keyword sampling_rate: The sampling rate for collection. Sampling rate 1.0 means we collect
         100% of data by default.
        :paramtype sampling_rate: float
        """
        super(Collection, self).__init__(**kwargs)
        self.client_id = kwargs.get('client_id', None)
        self.data_collection_mode = kwargs.get('data_collection_mode', None)
        self.data_id = kwargs.get('data_id', None)
        self.sampling_rate = kwargs.get('sampling_rate', 1)


class ColumnTransformer(msrest.serialization.Model):
    """Column transformer parameters.

    :ivar fields: Fields to apply transformer logic on.
    :vartype fields: list[str]
    :ivar parameters: Different properties to be passed to transformer.
     Input expected is dictionary of key,value pairs in JSON format.
    :vartype parameters: any
    """

    _attribute_map = {
        'fields': {'key': 'fields', 'type': '[str]'},
        'parameters': {'key': 'parameters', 'type': 'object'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword fields: Fields to apply transformer logic on.
        :paramtype fields: list[str]
        :keyword parameters: Different properties to be passed to transformer.
         Input expected is dictionary of key,value pairs in JSON format.
        :paramtype parameters: any
        """
        super(ColumnTransformer, self).__init__(**kwargs)
        self.fields = kwargs.get('fields', None)
        self.parameters = kwargs.get('parameters', None)


class CommandJob(JobBaseProperties):
    """Command job definition.

    Variables are only populated by the server, and will be ignored when sending a request.

    All required parameters must be populated in order to send to Azure.

    :ivar description: The asset description text.
    :vartype description: str
    :ivar properties: The asset property dictionary.
    :vartype properties: dict[str, str]
    :ivar tags: A set of tags. Tag dictionary. Tags can be added, removed, and updated.
    :vartype tags: dict[str, str]
    :ivar component_id: ARM resource ID of the component resource.
    :vartype component_id: str
    :ivar compute_id: ARM resource ID of the compute resource.
    :vartype compute_id: str
    :ivar display_name: Display name of job.
    :vartype display_name: str
    :ivar experiment_name: The name of the experiment the job belongs to. If not set, the job is
     placed in the "Default" experiment.
    :vartype experiment_name: str
    :ivar identity: Identity configuration. If set, this should be one of AmlToken,
     ManagedIdentity, UserIdentity or null.
     Defaults to AmlToken if null.
    :vartype identity: ~azure.mgmt.machinelearningservices.models.IdentityConfiguration
    :ivar is_archived: Is the asset archived?.
    :vartype is_archived: bool
    :ivar job_type: Required. [Required] Specifies the type of job.Constant filled by server.
     Possible values include: "AutoML", "Command", "Sweep", "Pipeline", "Spark", "FineTuning",
     "Distillation".
    :vartype job_type: str or ~azure.mgmt.machinelearningservices.models.JobType
    :ivar notification_setting: Notification setting for the job.
    :vartype notification_setting: ~azure.mgmt.machinelearningservices.models.NotificationSetting
    :ivar parent_job_name: Parent job name.
    :vartype parent_job_name: str
    :ivar services: List of JobEndpoints.
     For local jobs, a job endpoint will have an endpoint value of FileStreamObject.
    :vartype services: dict[str, ~azure.mgmt.machinelearningservices.models.JobService]
    :ivar status: Status of the job. Possible values include: "NotStarted", "Starting",
     "Provisioning", "Preparing", "Queued", "Running", "Finalizing", "CancelRequested", "Completed",
     "Failed", "Canceled", "NotResponding", "Paused", "Unknown".
    :vartype status: str or ~azure.mgmt.machinelearningservices.models.JobStatus
    :ivar code_id: ARM resource ID of the code asset.
    :vartype code_id: str
    :ivar command: Required. [Required] The command to execute on startup of the job. eg. "python
     train.py".
    :vartype command: str
    :ivar distribution: Distribution configuration of the job. If set, this should be one of Mpi,
     Tensorflow, PyTorch, or null.
    :vartype distribution: ~azure.mgmt.machinelearningservices.models.DistributionConfiguration
    :ivar environment_id: Required. [Required] The ARM resource ID of the Environment specification
     for the job.
    :vartype environment_id: str
    :ivar environment_variables: Environment variables included in the job.
    :vartype environment_variables: dict[str, str]
    :ivar inputs: Mapping of input data bindings used in the job.
    :vartype inputs: dict[str, ~azure.mgmt.machinelearningservices.models.JobInput]
    :ivar limits: Command Job limit.
    :vartype limits: ~azure.mgmt.machinelearningservices.models.CommandJobLimits
    :ivar outputs: Mapping of output data bindings used in the job.
    :vartype outputs: dict[str, ~azure.mgmt.machinelearningservices.models.JobOutput]
    :ivar parameters: Input parameters.
    :vartype parameters: any
    :ivar queue_settings: Queue settings for the job.
    :vartype queue_settings: ~azure.mgmt.machinelearningservices.models.QueueSettings
    :ivar resources: Compute Resource configuration for the job.
    :vartype resources: ~azure.mgmt.machinelearningservices.models.JobResourceConfiguration
    """

    _validation = {
        'job_type': {'required': True},
        'status': {'readonly': True},
        'command': {'required': True, 'min_length': 1, 'pattern': r'[a-zA-Z0-9_]'},
        'environment_id': {'required': True, 'min_length': 1, 'pattern': r'[a-zA-Z0-9_]'},
        'parameters': {'readonly': True},
    }

    _attribute_map = {
        'description': {'key': 'description', 'type': 'str'},
        'properties': {'key': 'properties', 'type': '{str}'},
        'tags': {'key': 'tags', 'type': '{str}'},
        'component_id': {'key': 'componentId', 'type': 'str'},
        'compute_id': {'key': 'computeId', 'type': 'str'},
        'display_name': {'key': 'displayName', 'type': 'str'},
        'experiment_name': {'key': 'experimentName', 'type': 'str'},
        'identity': {'key': 'identity', 'type': 'IdentityConfiguration'},
        'is_archived': {'key': 'isArchived', 'type': 'bool'},
        'job_type': {'key': 'jobType', 'type': 'str'},
        'notification_setting': {'key': 'notificationSetting', 'type': 'NotificationSetting'},
        'parent_job_name': {'key': 'parentJobName', 'type': 'str'},
        'services': {'key': 'services', 'type': '{JobService}'},
        'status': {'key': 'status', 'type': 'str'},
        'code_id': {'key': 'codeId', 'type': 'str'},
        'command': {'key': 'command', 'type': 'str'},
        'distribution': {'key': 'distribution', 'type': 'DistributionConfiguration'},
        'environment_id': {'key': 'environmentId', 'type': 'str'},
        'environment_variables': {'key': 'environmentVariables', 'type': '{str}'},
        'inputs': {'key': 'inputs', 'type': '{JobInput}'},
        'limits': {'key': 'limits', 'type': 'CommandJobLimits'},
        'outputs': {'key': 'outputs', 'type': '{JobOutput}'},
        'parameters': {'key': 'parameters', 'type': 'object'},
        'queue_settings': {'key': 'queueSettings', 'type': 'QueueSettings'},
        'resources': {'key': 'resources', 'type': 'JobResourceConfiguration'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword description: The asset description text.
        :paramtype description: str
        :keyword properties: The asset property dictionary.
        :paramtype properties: dict[str, str]
        :keyword tags: A set of tags. Tag dictionary. Tags can be added, removed, and updated.
        :paramtype tags: dict[str, str]
        :keyword component_id: ARM resource ID of the component resource.
        :paramtype component_id: str
        :keyword compute_id: ARM resource ID of the compute resource.
        :paramtype compute_id: str
        :keyword display_name: Display name of job.
        :paramtype display_name: str
        :keyword experiment_name: The name of the experiment the job belongs to. If not set, the job is
         placed in the "Default" experiment.
        :paramtype experiment_name: str
        :keyword identity: Identity configuration. If set, this should be one of AmlToken,
         ManagedIdentity, UserIdentity or null.
         Defaults to AmlToken if null.
        :paramtype identity: ~azure.mgmt.machinelearningservices.models.IdentityConfiguration
        :keyword is_archived: Is the asset archived?.
        :paramtype is_archived: bool
        :keyword notification_setting: Notification setting for the job.
        :paramtype notification_setting: ~azure.mgmt.machinelearningservices.models.NotificationSetting
        :keyword parent_job_name: Parent job name.
        :paramtype parent_job_name: str
        :keyword services: List of JobEndpoints.
         For local jobs, a job endpoint will have an endpoint value of FileStreamObject.
        :paramtype services: dict[str, ~azure.mgmt.machinelearningservices.models.JobService]
        :keyword code_id: ARM resource ID of the code asset.
        :paramtype code_id: str
        :keyword command: Required. [Required] The command to execute on startup of the job. eg.
         "python train.py".
        :paramtype command: str
        :keyword distribution: Distribution configuration of the job. If set, this should be one of
         Mpi, Tensorflow, PyTorch, or null.
        :paramtype distribution: ~azure.mgmt.machinelearningservices.models.DistributionConfiguration
        :keyword environment_id: Required. [Required] The ARM resource ID of the Environment
         specification for the job.
        :paramtype environment_id: str
        :keyword environment_variables: Environment variables included in the job.
        :paramtype environment_variables: dict[str, str]
        :keyword inputs: Mapping of input data bindings used in the job.
        :paramtype inputs: dict[str, ~azure.mgmt.machinelearningservices.models.JobInput]
        :keyword limits: Command Job limit.
        :paramtype limits: ~azure.mgmt.machinelearningservices.models.CommandJobLimits
        :keyword outputs: Mapping of output data bindings used in the job.
        :paramtype outputs: dict[str, ~azure.mgmt.machinelearningservices.models.JobOutput]
        :keyword queue_settings: Queue settings for the job.
        :paramtype queue_settings: ~azure.mgmt.machinelearningservices.models.QueueSettings
        :keyword resources: Compute Resource configuration for the job.
        :paramtype resources: ~azure.mgmt.machinelearningservices.models.JobResourceConfiguration
        """
        super(CommandJob, self).__init__(**kwargs)
        self.job_type = 'Command'  # type: str
        self.code_id = kwargs.get('code_id', None)
        self.command = kwargs['command']
        self.distribution = kwargs.get('distribution', None)
        self.environment_id = kwargs['environment_id']
        self.environment_variables = kwargs.get('environment_variables', None)
        self.inputs = kwargs.get('inputs', None)
        self.limits = kwargs.get('limits', None)
        self.outputs = kwargs.get('outputs', None)
        self.parameters = None
        self.queue_settings = kwargs.get('queue_settings', None)
        self.resources = kwargs.get('resources', None)


class JobLimits(msrest.serialization.Model):
    """JobLimits.

    You probably want to use the sub-classes and not this class directly. Known
    sub-classes are: CommandJobLimits, SweepJobLimits.

    All required parameters must be populated in order to send to Azure.

    :ivar job_limits_type: Required. [Required] JobLimit type.Constant filled by server. Possible
     values include: "Command", "Sweep".
    :vartype job_limits_type: str or ~azure.mgmt.machinelearningservices.models.JobLimitsType
    :ivar timeout: The max run duration in ISO 8601 format, after which the job will be cancelled.
     Only supports duration with precision as low as Seconds.
    :vartype timeout: ~datetime.timedelta
    """

    _validation = {
        'job_limits_type': {'required': True},
    }

    _attribute_map = {
        'job_limits_type': {'key': 'jobLimitsType', 'type': 'str'},
        'timeout': {'key': 'timeout', 'type': 'duration'},
    }

    _subtype_map = {
        'job_limits_type': {'Command': 'CommandJobLimits', 'Sweep': 'SweepJobLimits'}
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword timeout: The max run duration in ISO 8601 format, after which the job will be
         cancelled. Only supports duration with precision as low as Seconds.
        :paramtype timeout: ~datetime.timedelta
        """
        super(JobLimits, self).__init__(**kwargs)
        self.job_limits_type = None  # type: Optional[str]
        self.timeout = kwargs.get('timeout', None)


class CommandJobLimits(JobLimits):
    """Command Job limit class.

    All required parameters must be populated in order to send to Azure.

    :ivar job_limits_type: Required. [Required] JobLimit type.Constant filled by server. Possible
     values include: "Command", "Sweep".
    :vartype job_limits_type: str or ~azure.mgmt.machinelearningservices.models.JobLimitsType
    :ivar timeout: The max run duration in ISO 8601 format, after which the job will be cancelled.
     Only supports duration with precision as low as Seconds.
    :vartype timeout: ~datetime.timedelta
    """

    _validation = {
        'job_limits_type': {'required': True},
    }

    _attribute_map = {
        'job_limits_type': {'key': 'jobLimitsType', 'type': 'str'},
        'timeout': {'key': 'timeout', 'type': 'duration'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword timeout: The max run duration in ISO 8601 format, after which the job will be
         cancelled. Only supports duration with precision as low as Seconds.
        :paramtype timeout: ~datetime.timedelta
        """
        super(CommandJobLimits, self).__init__(**kwargs)
        self.job_limits_type = 'Command'  # type: str


class ComponentContainer(ProxyResource):
    """Azure Resource Manager resource envelope.

    Variables are only populated by the server, and will be ignored when sending a request.

    All required parameters must be populated in order to send to Azure.

    :ivar id: Fully qualified resource ID for the resource. Ex -
     /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}.
    :vartype id: str
    :ivar name: The name of the resource.
    :vartype name: str
    :ivar type: The type of the resource. E.g. "Microsoft.Compute/virtualMachines" or
     "Microsoft.Storage/storageAccounts".
    :vartype type: str
    :ivar system_data: Azure Resource Manager metadata containing createdBy and modifiedBy
     information.
    :vartype system_data: ~azure.mgmt.machinelearningservices.models.SystemData
    :ivar properties: Required. [Required] Additional attributes of the entity.
    :vartype properties: ~azure.mgmt.machinelearningservices.models.ComponentContainerProperties
    """

    _validation = {
        'id': {'readonly': True},
        'name': {'readonly': True},
        'type': {'readonly': True},
        'system_data': {'readonly': True},
        'properties': {'required': True},
    }

    _attribute_map = {
        'id': {'key': 'id', 'type': 'str'},
        'name': {'key': 'name', 'type': 'str'},
        'type': {'key': 'type', 'type': 'str'},
        'system_data': {'key': 'systemData', 'type': 'SystemData'},
        'properties': {'key': 'properties', 'type': 'ComponentContainerProperties'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword properties: Required. [Required] Additional attributes of the entity.
        :paramtype properties: ~azure.mgmt.machinelearningservices.models.ComponentContainerProperties
        """
        super(ComponentContainer, self).__init__(**kwargs)
        self.properties = kwargs['properties']


class ComponentContainerProperties(AssetContainer):
    """Component container definition.


.. raw:: html

   <see href="https://docs.microsoft.com/en-us/azure/machine-learning/reference-yaml-component-command" />.

    Variables are only populated by the server, and will be ignored when sending a request.

    :ivar description: The asset description text.
    :vartype description: str
    :ivar properties: The asset property dictionary.
    :vartype properties: dict[str, str]
    :ivar tags: A set of tags. Tag dictionary. Tags can be added, removed, and updated.
    :vartype tags: dict[str, str]
    :ivar is_archived: Is the asset archived?.
    :vartype is_archived: bool
    :ivar latest_version: The latest version inside this container.
    :vartype latest_version: str
    :ivar next_version: The next auto incremental version.
    :vartype next_version: str
    :ivar provisioning_state: Provisioning state for the component container. Possible values
     include: "Succeeded", "Failed", "Canceled", "Creating", "Updating", "Deleting".
    :vartype provisioning_state: str or
     ~azure.mgmt.machinelearningservices.models.AssetProvisioningState
    """

    _validation = {
        'latest_version': {'readonly': True},
        'next_version': {'readonly': True},
        'provisioning_state': {'readonly': True},
    }

    _attribute_map = {
        'description': {'key': 'description', 'type': 'str'},
        'properties': {'key': 'properties', 'type': '{str}'},
        'tags': {'key': 'tags', 'type': '{str}'},
        'is_archived': {'key': 'isArchived', 'type': 'bool'},
        'latest_version': {'key': 'latestVersion', 'type': 'str'},
        'next_version': {'key': 'nextVersion', 'type': 'str'},
        'provisioning_state': {'key': 'provisioningState', 'type': 'str'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword description: The asset description text.
        :paramtype description: str
        :keyword properties: The asset property dictionary.
        :paramtype properties: dict[str, str]
        :keyword tags: A set of tags. Tag dictionary. Tags can be added, removed, and updated.
        :paramtype tags: dict[str, str]
        :keyword is_archived: Is the asset archived?.
        :paramtype is_archived: bool
        """
        super(ComponentContainerProperties, self).__init__(**kwargs)
        self.provisioning_state = None


class ComponentContainerResourceArmPaginatedResult(msrest.serialization.Model):
    """A paginated list of ComponentContainer entities.

    :ivar next_link: The link to the next page of ComponentContainer objects. If null, there are no
     additional pages.
    :vartype next_link: str
    :ivar value: An array of objects of type ComponentContainer.
    :vartype value: list[~azure.mgmt.machinelearningservices.models.ComponentContainer]
    """

    _attribute_map = {
        'next_link': {'key': 'nextLink', 'type': 'str'},
        'value': {'key': 'value', 'type': '[ComponentContainer]'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword next_link: The link to the next page of ComponentContainer objects. If null, there are
         no additional pages.
        :paramtype next_link: str
        :keyword value: An array of objects of type ComponentContainer.
        :paramtype value: list[~azure.mgmt.machinelearningservices.models.ComponentContainer]
        """
        super(ComponentContainerResourceArmPaginatedResult, self).__init__(**kwargs)
        self.next_link = kwargs.get('next_link', None)
        self.value = kwargs.get('value', None)


class ComponentVersion(ProxyResource):
    """Azure Resource Manager resource envelope.

    Variables are only populated by the server, and will be ignored when sending a request.

    All required parameters must be populated in order to send to Azure.

    :ivar id: Fully qualified resource ID for the resource. Ex -
     /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}.
    :vartype id: str
    :ivar name: The name of the resource.
    :vartype name: str
    :ivar type: The type of the resource. E.g. "Microsoft.Compute/virtualMachines" or
     "Microsoft.Storage/storageAccounts".
    :vartype type: str
    :ivar system_data: Azure Resource Manager metadata containing createdBy and modifiedBy
     information.
    :vartype system_data: ~azure.mgmt.machinelearningservices.models.SystemData
    :ivar properties: Required. [Required] Additional attributes of the entity.
    :vartype properties: ~azure.mgmt.machinelearningservices.models.ComponentVersionProperties
    """

    _validation = {
        'id': {'readonly': True},
        'name': {'readonly': True},
        'type': {'readonly': True},
        'system_data': {'readonly': True},
        'properties': {'required': True},
    }

    _attribute_map = {
        'id': {'key': 'id', 'type': 'str'},
        'name': {'key': 'name', 'type': 'str'},
        'type': {'key': 'type', 'type': 'str'},
        'system_data': {'key': 'systemData', 'type': 'SystemData'},
        'properties': {'key': 'properties', 'type': 'ComponentVersionProperties'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword properties: Required. [Required] Additional attributes of the entity.
        :paramtype properties: ~azure.mgmt.machinelearningservices.models.ComponentVersionProperties
        """
        super(ComponentVersion, self).__init__(**kwargs)
        self.properties = kwargs['properties']


class ComponentVersionProperties(AssetBase):
    """Definition of a component version: defines resources that span component types.

    Variables are only populated by the server, and will be ignored when sending a request.

    :ivar description: The asset description text.
    :vartype description: str
    :ivar properties: The asset property dictionary.
    :vartype properties: dict[str, str]
    :ivar tags: A set of tags. Tag dictionary. Tags can be added, removed, and updated.
    :vartype tags: dict[str, str]
    :ivar is_anonymous: If the name version are system generated (anonymous registration).
    :vartype is_anonymous: bool
    :ivar is_archived: Is the asset archived?.
    :vartype is_archived: bool
    :ivar component_spec: Defines Component definition details.
    
    
     .. raw:: html
    
        <see
     href="https://docs.microsoft.com/en-us/azure/machine-learning/reference-yaml-component-command"
     />.
    :vartype component_spec: any
    :ivar provisioning_state: Provisioning state for the component version. Possible values
     include: "Succeeded", "Failed", "Canceled", "Creating", "Updating", "Deleting".
    :vartype provisioning_state: str or
     ~azure.mgmt.machinelearningservices.models.AssetProvisioningState
    """

    _validation = {
        'provisioning_state': {'readonly': True},
    }

    _attribute_map = {
        'description': {'key': 'description', 'type': 'str'},
        'properties': {'key': 'properties', 'type': '{str}'},
        'tags': {'key': 'tags', 'type': '{str}'},
        'is_anonymous': {'key': 'isAnonymous', 'type': 'bool'},
        'is_archived': {'key': 'isArchived', 'type': 'bool'},
        'component_spec': {'key': 'componentSpec', 'type': 'object'},
        'provisioning_state': {'key': 'provisioningState', 'type': 'str'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword description: The asset description text.
        :paramtype description: str
        :keyword properties: The asset property dictionary.
        :paramtype properties: dict[str, str]
        :keyword tags: A set of tags. Tag dictionary. Tags can be added, removed, and updated.
        :paramtype tags: dict[str, str]
        :keyword is_anonymous: If the name version are system generated (anonymous registration).
        :paramtype is_anonymous: bool
        :keyword is_archived: Is the asset archived?.
        :paramtype is_archived: bool
        :keyword component_spec: Defines Component definition details.
        
        
         .. raw:: html
        
            <see
         href="https://docs.microsoft.com/en-us/azure/machine-learning/reference-yaml-component-command"
         />.
        :paramtype component_spec: any
        """
        super(ComponentVersionProperties, self).__init__(**kwargs)
        self.component_spec = kwargs.get('component_spec', None)
        self.provisioning_state = None


class ComponentVersionResourceArmPaginatedResult(msrest.serialization.Model):
    """A paginated list of ComponentVersion entities.

    :ivar next_link: The link to the next page of ComponentVersion objects. If null, there are no
     additional pages.
    :vartype next_link: str
    :ivar value: An array of objects of type ComponentVersion.
    :vartype value: list[~azure.mgmt.machinelearningservices.models.ComponentVersion]
    """

    _attribute_map = {
        'next_link': {'key': 'nextLink', 'type': 'str'},
        'value': {'key': 'value', 'type': '[ComponentVersion]'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword next_link: The link to the next page of ComponentVersion objects. If null, there are
         no additional pages.
        :paramtype next_link: str
        :keyword value: An array of objects of type ComponentVersion.
        :paramtype value: list[~azure.mgmt.machinelearningservices.models.ComponentVersion]
        """
        super(ComponentVersionResourceArmPaginatedResult, self).__init__(**kwargs)
        self.next_link = kwargs.get('next_link', None)
        self.value = kwargs.get('value', None)


class ComputeInstanceSchema(msrest.serialization.Model):
    """Properties(top level) of ComputeInstance.

    :ivar properties: Properties of ComputeInstance.
    :vartype properties: ~azure.mgmt.machinelearningservices.models.ComputeInstanceProperties
    """

    _attribute_map = {
        'properties': {'key': 'properties', 'type': 'ComputeInstanceProperties'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword properties: Properties of ComputeInstance.
        :paramtype properties: ~azure.mgmt.machinelearningservices.models.ComputeInstanceProperties
        """
        super(ComputeInstanceSchema, self).__init__(**kwargs)
        self.properties = kwargs.get('properties', None)


class ComputeInstance(Compute, ComputeInstanceSchema):
    """An Azure Machine Learning compute instance.

    Variables are only populated by the server, and will be ignored when sending a request.

    All required parameters must be populated in order to send to Azure.

    :ivar properties: Properties of ComputeInstance.
    :vartype properties: ~azure.mgmt.machinelearningservices.models.ComputeInstanceProperties
    :ivar compute_type: Required. The type of compute.Constant filled by server. Possible values
     include: "AKS", "Kubernetes", "AmlCompute", "ComputeInstance", "DataFactory", "VirtualMachine",
     "HDInsight", "Databricks", "DataLakeAnalytics", "SynapseSpark".
    :vartype compute_type: str or ~azure.mgmt.machinelearningservices.models.ComputeType
    :ivar compute_location: Location for the underlying compute.
    :vartype compute_location: str
    :ivar provisioning_state: The provision state of the cluster. Valid values are Unknown,
     Updating, Provisioning, Succeeded, and Failed. Possible values include: "Unknown", "Updating",
     "Creating", "Deleting", "Succeeded", "Failed", "Canceled".
    :vartype provisioning_state: str or
     ~azure.mgmt.machinelearningservices.models.ProvisioningState
    :ivar description: The description of the Machine Learning compute.
    :vartype description: str
    :ivar created_on: The time at which the compute was created.
    :vartype created_on: ~datetime.datetime
    :ivar modified_on: The time at which the compute was last modified.
    :vartype modified_on: ~datetime.datetime
    :ivar resource_id: ARM resource id of the underlying compute.
    :vartype resource_id: str
    :ivar provisioning_errors: Errors during provisioning.
    :vartype provisioning_errors: list[~azure.mgmt.machinelearningservices.models.ErrorResponse]
    :ivar is_attached_compute: Indicating whether the compute was provisioned by user and brought
     from outside if true, or machine learning service provisioned it if false.
    :vartype is_attached_compute: bool
    :ivar disable_local_auth: Opt-out of local authentication and ensure customers can use only MSI
     and AAD exclusively for authentication.
    :vartype disable_local_auth: bool
    """

    _validation = {
        'compute_type': {'required': True},
        'provisioning_state': {'readonly': True},
        'created_on': {'readonly': True},
        'modified_on': {'readonly': True},
        'provisioning_errors': {'readonly': True},
        'is_attached_compute': {'readonly': True},
    }

    _attribute_map = {
        'properties': {'key': 'properties', 'type': 'ComputeInstanceProperties'},
        'compute_type': {'key': 'computeType', 'type': 'str'},
        'compute_location': {'key': 'computeLocation', 'type': 'str'},
        'provisioning_state': {'key': 'provisioningState', 'type': 'str'},
        'description': {'key': 'description', 'type': 'str'},
        'created_on': {'key': 'createdOn', 'type': 'iso-8601'},
        'modified_on': {'key': 'modifiedOn', 'type': 'iso-8601'},
        'resource_id': {'key': 'resourceId', 'type': 'str'},
        'provisioning_errors': {'key': 'provisioningErrors', 'type': '[ErrorResponse]'},
        'is_attached_compute': {'key': 'isAttachedCompute', 'type': 'bool'},
        'disable_local_auth': {'key': 'disableLocalAuth', 'type': 'bool'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword properties: Properties of ComputeInstance.
        :paramtype properties: ~azure.mgmt.machinelearningservices.models.ComputeInstanceProperties
        :keyword compute_location: Location for the underlying compute.
        :paramtype compute_location: str
        :keyword description: The description of the Machine Learning compute.
        :paramtype description: str
        :keyword resource_id: ARM resource id of the underlying compute.
        :paramtype resource_id: str
        :keyword disable_local_auth: Opt-out of local authentication and ensure customers can use only
         MSI and AAD exclusively for authentication.
        :paramtype disable_local_auth: bool
        """
        super(ComputeInstance, self).__init__(**kwargs)
        self.properties = kwargs.get('properties', None)
        self.compute_type = 'ComputeInstance'  # type: str
        self.compute_location = kwargs.get('compute_location', None)
        self.provisioning_state = None
        self.description = kwargs.get('description', None)
        self.created_on = None
        self.modified_on = None
        self.resource_id = kwargs.get('resource_id', None)
        self.provisioning_errors = None
        self.is_attached_compute = None
        self.disable_local_auth = kwargs.get('disable_local_auth', None)


class ComputeInstanceApplication(msrest.serialization.Model):
    """Defines an Aml Instance application and its connectivity endpoint URI.

    :ivar display_name: Name of the ComputeInstance application.
    :vartype display_name: str
    :ivar endpoint_uri: Application' endpoint URI.
    :vartype endpoint_uri: str
    """

    _attribute_map = {
        'display_name': {'key': 'displayName', 'type': 'str'},
        'endpoint_uri': {'key': 'endpointUri', 'type': 'str'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword display_name: Name of the ComputeInstance application.
        :paramtype display_name: str
        :keyword endpoint_uri: Application' endpoint URI.
        :paramtype endpoint_uri: str
        """
        super(ComputeInstanceApplication, self).__init__(**kwargs)
        self.display_name = kwargs.get('display_name', None)
        self.endpoint_uri = kwargs.get('endpoint_uri', None)


class ComputeInstanceAutologgerSettings(msrest.serialization.Model):
    """Specifies settings for autologger.

    :ivar mlflow_autologger: Indicates whether mlflow autologger is enabled for notebooks. Possible
     values include: "Enabled", "Disabled".
    :vartype mlflow_autologger: str or ~azure.mgmt.machinelearningservices.models.MlflowAutologger
    """

    _attribute_map = {
        'mlflow_autologger': {'key': 'mlflowAutologger', 'type': 'str'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword mlflow_autologger: Indicates whether mlflow autologger is enabled for notebooks.
         Possible values include: "Enabled", "Disabled".
        :paramtype mlflow_autologger: str or
         ~azure.mgmt.machinelearningservices.models.MlflowAutologger
        """
        super(ComputeInstanceAutologgerSettings, self).__init__(**kwargs)
        self.mlflow_autologger = kwargs.get('mlflow_autologger', None)


class ComputeInstanceConnectivityEndpoints(msrest.serialization.Model):
    """Defines all connectivity endpoints and properties for an ComputeInstance.

    Variables are only populated by the server, and will be ignored when sending a request.

    :ivar public_ip_address: Public IP Address of this ComputeInstance.
    :vartype public_ip_address: str
    :ivar private_ip_address: Private IP Address of this ComputeInstance (local to the VNET in
     which the compute instance is deployed).
    :vartype private_ip_address: str
    """

    _validation = {
        'public_ip_address': {'readonly': True},
        'private_ip_address': {'readonly': True},
    }

    _attribute_map = {
        'public_ip_address': {'key': 'publicIpAddress', 'type': 'str'},
        'private_ip_address': {'key': 'privateIpAddress', 'type': 'str'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        """
        super(ComputeInstanceConnectivityEndpoints, self).__init__(**kwargs)
        self.public_ip_address = None
        self.private_ip_address = None


class ComputeInstanceContainer(msrest.serialization.Model):
    """Defines an Aml Instance container.

    Variables are only populated by the server, and will be ignored when sending a request.

    :ivar name: Name of the ComputeInstance container.
    :vartype name: str
    :ivar autosave: Auto save settings. Possible values include: "None", "Local", "Remote".
    :vartype autosave: str or ~azure.mgmt.machinelearningservices.models.Autosave
    :ivar gpu: Information of GPU.
    :vartype gpu: str
    :ivar network: network of this container. Possible values include: "Bridge", "Host".
    :vartype network: str or ~azure.mgmt.machinelearningservices.models.Network
    :ivar environment: Environment information of this container.
    :vartype environment: ~azure.mgmt.machinelearningservices.models.ComputeInstanceEnvironmentInfo
    :ivar services: services of this containers.
    :vartype services: list[any]
    """

    _validation = {
        'services': {'readonly': True},
    }

    _attribute_map = {
        'name': {'key': 'name', 'type': 'str'},
        'autosave': {'key': 'autosave', 'type': 'str'},
        'gpu': {'key': 'gpu', 'type': 'str'},
        'network': {'key': 'network', 'type': 'str'},
        'environment': {'key': 'environment', 'type': 'ComputeInstanceEnvironmentInfo'},
        'services': {'key': 'services', 'type': '[object]'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword name: Name of the ComputeInstance container.
        :paramtype name: str
        :keyword autosave: Auto save settings. Possible values include: "None", "Local", "Remote".
        :paramtype autosave: str or ~azure.mgmt.machinelearningservices.models.Autosave
        :keyword gpu: Information of GPU.
        :paramtype gpu: str
        :keyword network: network of this container. Possible values include: "Bridge", "Host".
        :paramtype network: str or ~azure.mgmt.machinelearningservices.models.Network
        :keyword environment: Environment information of this container.
        :paramtype environment:
         ~azure.mgmt.machinelearningservices.models.ComputeInstanceEnvironmentInfo
        """
        super(ComputeInstanceContainer, self).__init__(**kwargs)
        self.name = kwargs.get('name', None)
        self.autosave = kwargs.get('autosave', None)
        self.gpu = kwargs.get('gpu', None)
        self.network = kwargs.get('network', None)
        self.environment = kwargs.get('environment', None)
        self.services = None


class ComputeInstanceCreatedBy(msrest.serialization.Model):
    """Describes information on user who created this ComputeInstance.

    Variables are only populated by the server, and will be ignored when sending a request.

    :ivar user_name: Name of the user.
    :vartype user_name: str
    :ivar user_org_id: Uniquely identifies user' Azure Active Directory organization.
    :vartype user_org_id: str
    :ivar user_id: Uniquely identifies the user within his/her organization.
    :vartype user_id: str
    """

    _validation = {
        'user_name': {'readonly': True},
        'user_org_id': {'readonly': True},
        'user_id': {'readonly': True},
    }

    _attribute_map = {
        'user_name': {'key': 'userName', 'type': 'str'},
        'user_org_id': {'key': 'userOrgId', 'type': 'str'},
        'user_id': {'key': 'userId', 'type': 'str'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        """
        super(ComputeInstanceCreatedBy, self).__init__(**kwargs)
        self.user_name = None
        self.user_org_id = None
        self.user_id = None


class ComputeInstanceDataDisk(msrest.serialization.Model):
    """Defines an Aml Instance DataDisk.

    :ivar caching: Caching type of Data Disk. Possible values include: "None", "ReadOnly",
     "ReadWrite".
    :vartype caching: str or ~azure.mgmt.machinelearningservices.models.Caching
    :ivar disk_size_gb: The initial disk size in gigabytes.
    :vartype disk_size_gb: int
    :ivar lun: The lun is used to uniquely identify each data disk. If attaching multiple disks,
     each should have a distinct lun.
    :vartype lun: int
    :ivar storage_account_type: type of this storage account. Possible values include:
     "Standard_LRS", "Premium_LRS". Default value: "Standard_LRS".
    :vartype storage_account_type: str or
     ~azure.mgmt.machinelearningservices.models.StorageAccountType
    """

    _attribute_map = {
        'caching': {'key': 'caching', 'type': 'str'},
        'disk_size_gb': {'key': 'diskSizeGB', 'type': 'int'},
        'lun': {'key': 'lun', 'type': 'int'},
        'storage_account_type': {'key': 'storageAccountType', 'type': 'str'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword caching: Caching type of Data Disk. Possible values include: "None", "ReadOnly",
         "ReadWrite".
        :paramtype caching: str or ~azure.mgmt.machinelearningservices.models.Caching
        :keyword disk_size_gb: The initial disk size in gigabytes.
        :paramtype disk_size_gb: int
        :keyword lun: The lun is used to uniquely identify each data disk. If attaching multiple disks,
         each should have a distinct lun.
        :paramtype lun: int
        :keyword storage_account_type: type of this storage account. Possible values include:
         "Standard_LRS", "Premium_LRS". Default value: "Standard_LRS".
        :paramtype storage_account_type: str or
         ~azure.mgmt.machinelearningservices.models.StorageAccountType
        """
        super(ComputeInstanceDataDisk, self).__init__(**kwargs)
        self.caching = kwargs.get('caching', None)
        self.disk_size_gb = kwargs.get('disk_size_gb', None)
        self.lun = kwargs.get('lun', None)
        self.storage_account_type = kwargs.get('storage_account_type', "Standard_LRS")


class ComputeInstanceDataMount(msrest.serialization.Model):
    """Defines an Aml Instance DataMount.

    :ivar source: Source of the ComputeInstance data mount.
    :vartype source: str
    :ivar source_type: Data source type. Possible values include: "Dataset", "Datastore", "URI".
    :vartype source_type: str or ~azure.mgmt.machinelearningservices.models.SourceType
    :ivar mount_name: name of the ComputeInstance data mount.
    :vartype mount_name: str
    :ivar mount_action: Mount Action. Possible values include: "Mount", "Unmount".
    :vartype mount_action: str or ~azure.mgmt.machinelearningservices.models.MountAction
    :ivar mount_mode: Mount Mode. Possible values include: "ReadOnly", "ReadWrite".
    :vartype mount_mode: str or ~azure.mgmt.machinelearningservices.models.MountMode
    :ivar created_by: who this data mount created by.
    :vartype created_by: str
    :ivar mount_path: Path of this data mount.
    :vartype mount_path: str
    :ivar mount_state: Mount state. Possible values include: "MountRequested", "Mounted",
     "MountFailed", "UnmountRequested", "UnmountFailed", "Unmounted".
    :vartype mount_state: str or ~azure.mgmt.machinelearningservices.models.MountState
    :ivar mounted_on: The time when the disk mounted.
    :vartype mounted_on: ~datetime.datetime
    :ivar error: Error of this data mount.
    :vartype error: str
    """

    _attribute_map = {
        'source': {'key': 'source', 'type': 'str'},
        'source_type': {'key': 'sourceType', 'type': 'str'},
        'mount_name': {'key': 'mountName', 'type': 'str'},
        'mount_action': {'key': 'mountAction', 'type': 'str'},
        'mount_mode': {'key': 'mountMode', 'type': 'str'},
        'created_by': {'key': 'createdBy', 'type': 'str'},
        'mount_path': {'key': 'mountPath', 'type': 'str'},
        'mount_state': {'key': 'mountState', 'type': 'str'},
        'mounted_on': {'key': 'mountedOn', 'type': 'iso-8601'},
        'error': {'key': 'error', 'type': 'str'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword source: Source of the ComputeInstance data mount.
        :paramtype source: str
        :keyword source_type: Data source type. Possible values include: "Dataset", "Datastore", "URI".
        :paramtype source_type: str or ~azure.mgmt.machinelearningservices.models.SourceType
        :keyword mount_name: name of the ComputeInstance data mount.
        :paramtype mount_name: str
        :keyword mount_action: Mount Action. Possible values include: "Mount", "Unmount".
        :paramtype mount_action: str or ~azure.mgmt.machinelearningservices.models.MountAction
        :keyword mount_mode: Mount Mode. Possible values include: "ReadOnly", "ReadWrite".
        :paramtype mount_mode: str or ~azure.mgmt.machinelearningservices.models.MountMode
        :keyword created_by: who this data mount created by.
        :paramtype created_by: str
        :keyword mount_path: Path of this data mount.
        :paramtype mount_path: str
        :keyword mount_state: Mount state. Possible values include: "MountRequested", "Mounted",
         "MountFailed", "UnmountRequested", "UnmountFailed", "Unmounted".
        :paramtype mount_state: str or ~azure.mgmt.machinelearningservices.models.MountState
        :keyword mounted_on: The time when the disk mounted.
        :paramtype mounted_on: ~datetime.datetime
        :keyword error: Error of this data mount.
        :paramtype error: str
        """
        super(ComputeInstanceDataMount, self).__init__(**kwargs)
        self.source = kwargs.get('source', None)
        self.source_type = kwargs.get('source_type', None)
        self.mount_name = kwargs.get('mount_name', None)
        self.mount_action = kwargs.get('mount_action', None)
        self.mount_mode = kwargs.get('mount_mode', None)
        self.created_by = kwargs.get('created_by', None)
        self.mount_path = kwargs.get('mount_path', None)
        self.mount_state = kwargs.get('mount_state', None)
        self.mounted_on = kwargs.get('mounted_on', None)
        self.error = kwargs.get('error', None)


class ComputeInstanceEnvironmentInfo(msrest.serialization.Model):
    """Environment information.

    :ivar name: name of environment.
    :vartype name: str
    :ivar version: version of environment.
    :vartype version: str
    """

    _attribute_map = {
        'name': {'key': 'name', 'type': 'str'},
        'version': {'key': 'version', 'type': 'str'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword name: name of environment.
        :paramtype name: str
        :keyword version: version of environment.
        :paramtype version: str
        """
        super(ComputeInstanceEnvironmentInfo, self).__init__(**kwargs)
        self.name = kwargs.get('name', None)
        self.version = kwargs.get('version', None)


class ComputeInstanceLastOperation(msrest.serialization.Model):
    """The last operation on ComputeInstance.

    :ivar operation_name: Name of the last operation. Possible values include: "Create", "Start",
     "Stop", "Restart", "Resize", "Reimage", "Delete".
    :vartype operation_name: str or ~azure.mgmt.machinelearningservices.models.OperationName
    :ivar operation_time: Time of the last operation.
    :vartype operation_time: ~datetime.datetime
    :ivar operation_status: Operation status. Possible values include: "InProgress", "Succeeded",
     "CreateFailed", "StartFailed", "StopFailed", "RestartFailed", "ResizeFailed", "ReimageFailed",
     "DeleteFailed".
    :vartype operation_status: str or ~azure.mgmt.machinelearningservices.models.OperationStatus
    :ivar operation_trigger: Trigger of operation. Possible values include: "User", "Schedule",
     "IdleShutdown".
    :vartype operation_trigger: str or ~azure.mgmt.machinelearningservices.models.OperationTrigger
    """

    _attribute_map = {
        'operation_name': {'key': 'operationName', 'type': 'str'},
        'operation_time': {'key': 'operationTime', 'type': 'iso-8601'},
        'operation_status': {'key': 'operationStatus', 'type': 'str'},
        'operation_trigger': {'key': 'operationTrigger', 'type': 'str'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword operation_name: Name of the last operation. Possible values include: "Create",
         "Start", "Stop", "Restart", "Resize", "Reimage", "Delete".
        :paramtype operation_name: str or ~azure.mgmt.machinelearningservices.models.OperationName
        :keyword operation_time: Time of the last operation.
        :paramtype operation_time: ~datetime.datetime
        :keyword operation_status: Operation status. Possible values include: "InProgress",
         "Succeeded", "CreateFailed", "StartFailed", "StopFailed", "RestartFailed", "ResizeFailed",
         "ReimageFailed", "DeleteFailed".
        :paramtype operation_status: str or ~azure.mgmt.machinelearningservices.models.OperationStatus
        :keyword operation_trigger: Trigger of operation. Possible values include: "User", "Schedule",
         "IdleShutdown".
        :paramtype operation_trigger: str or
         ~azure.mgmt.machinelearningservices.models.OperationTrigger
        """
        super(ComputeInstanceLastOperation, self).__init__(**kwargs)
        self.operation_name = kwargs.get('operation_name', None)
        self.operation_time = kwargs.get('operation_time', None)
        self.operation_status = kwargs.get('operation_status', None)
        self.operation_trigger = kwargs.get('operation_trigger', None)


class ComputeInstanceProperties(msrest.serialization.Model):
    """Compute Instance properties.

    Variables are only populated by the server, and will be ignored when sending a request.

    :ivar vm_size: Virtual Machine Size.
    :vartype vm_size: str
    :ivar subnet: Virtual network subnet resource ID the compute nodes belong to.
    :vartype subnet: ~azure.mgmt.machinelearningservices.models.ResourceId
    :ivar application_sharing_policy: Policy for sharing applications on this compute instance
     among users of parent workspace. If Personal, only the creator can access applications on this
     compute instance. When Shared, any workspace user can access applications on this instance
     depending on his/her assigned role. Possible values include: "Personal", "Shared". Default
     value: "Shared".
    :vartype application_sharing_policy: str or
     ~azure.mgmt.machinelearningservices.models.ApplicationSharingPolicy
    :ivar autologger_settings: Specifies settings for autologger.
    :vartype autologger_settings:
     ~azure.mgmt.machinelearningservices.models.ComputeInstanceAutologgerSettings
    :ivar ssh_settings: Specifies policy and settings for SSH access.
    :vartype ssh_settings: ~azure.mgmt.machinelearningservices.models.ComputeInstanceSshSettings
    :ivar custom_services: List of Custom Services added to the compute.
    :vartype custom_services: list[~azure.mgmt.machinelearningservices.models.CustomService]
    :ivar os_image_metadata: Returns metadata about the operating system image for this compute
     instance.
    :vartype os_image_metadata: ~azure.mgmt.machinelearningservices.models.ImageMetadata
    :ivar connectivity_endpoints: Describes all connectivity endpoints available for this
     ComputeInstance.
    :vartype connectivity_endpoints:
     ~azure.mgmt.machinelearningservices.models.ComputeInstanceConnectivityEndpoints
    :ivar applications: Describes available applications and their endpoints on this
     ComputeInstance.
    :vartype applications:
     list[~azure.mgmt.machinelearningservices.models.ComputeInstanceApplication]
    :ivar created_by: Describes information on user who created this ComputeInstance.
    :vartype created_by: ~azure.mgmt.machinelearningservices.models.ComputeInstanceCreatedBy
    :ivar errors: Collection of errors encountered on this ComputeInstance.
    :vartype errors: list[~azure.mgmt.machinelearningservices.models.ErrorResponse]
    :ivar state: The current state of this ComputeInstance. Possible values include: "Creating",
     "CreateFailed", "Deleting", "Running", "Restarting", "Resizing", "JobRunning", "SettingUp",
     "SetupFailed", "Starting", "Stopped", "Stopping", "UserSettingUp", "UserSetupFailed",
     "Unknown", "Unusable".
    :vartype state: str or ~azure.mgmt.machinelearningservices.models.ComputeInstanceState
    :ivar compute_instance_authorization_type: The Compute Instance Authorization type. Available
     values are personal (default). Possible values include: "personal". Default value: "personal".
    :vartype compute_instance_authorization_type: str or
     ~azure.mgmt.machinelearningservices.models.ComputeInstanceAuthorizationType
    :ivar enable_os_patching: Enable Auto OS Patching. Possible values are: true, false.
    :vartype enable_os_patching: bool
    :ivar enable_root_access: Enable root access. Possible values are: true, false.
    :vartype enable_root_access: bool
    :ivar enable_sso: Enable SSO (single sign on). Possible values are: true, false.
    :vartype enable_sso: bool
    :ivar release_quota_on_stop: Release quota if compute instance stopped. Possible values are:
     true - release quota if compute instance stopped. false - don't release quota when compute
     instance stopped.
    :vartype release_quota_on_stop: bool
    :ivar personal_compute_instance_settings: Settings for a personal compute instance.
    :vartype personal_compute_instance_settings:
     ~azure.mgmt.machinelearningservices.models.PersonalComputeInstanceSettings
    :ivar setup_scripts: Details of customized scripts to execute for setting up the cluster.
    :vartype setup_scripts: ~azure.mgmt.machinelearningservices.models.SetupScripts
    :ivar last_operation: The last operation on ComputeInstance.
    :vartype last_operation:
     ~azure.mgmt.machinelearningservices.models.ComputeInstanceLastOperation
    :ivar schedules: The list of schedules to be applied on the computes.
    :vartype schedules: ~azure.mgmt.machinelearningservices.models.ComputeSchedules
    :ivar idle_time_before_shutdown: Stops compute instance after user defined period of
     inactivity. Time is defined in ISO8601 format. Minimum is 15 min, maximum is 3 days.
    :vartype idle_time_before_shutdown: str
    :ivar enable_node_public_ip: Enable or disable node public IP address provisioning. Possible
     values are: Possible values are: true - Indicates that the compute nodes will have public IPs
     provisioned. false - Indicates that the compute nodes will have a private endpoint and no
     public IPs.
    :vartype enable_node_public_ip: bool
    :ivar containers: Describes informations of containers on this ComputeInstance.
    :vartype containers: list[~azure.mgmt.machinelearningservices.models.ComputeInstanceContainer]
    :ivar data_disks: Describes informations of dataDisks on this ComputeInstance.
    :vartype data_disks: list[~azure.mgmt.machinelearningservices.models.ComputeInstanceDataDisk]
    :ivar data_mounts: Describes informations of dataMounts on this ComputeInstance.
    :vartype data_mounts: list[~azure.mgmt.machinelearningservices.models.ComputeInstanceDataMount]
    :ivar versions: ComputeInstance version.
    :vartype versions: ~azure.mgmt.machinelearningservices.models.ComputeInstanceVersion
    """

    _validation = {
        'os_image_metadata': {'readonly': True},
        'connectivity_endpoints': {'readonly': True},
        'applications': {'readonly': True},
        'created_by': {'readonly': True},
        'errors': {'readonly': True},
        'state': {'readonly': True},
        'last_operation': {'readonly': True},
        'containers': {'readonly': True},
        'data_disks': {'readonly': True},
        'data_mounts': {'readonly': True},
        'versions': {'readonly': True},
    }

    _attribute_map = {
        'vm_size': {'key': 'vmSize', 'type': 'str'},
        'subnet': {'key': 'subnet', 'type': 'ResourceId'},
        'application_sharing_policy': {'key': 'applicationSharingPolicy', 'type': 'str'},
        'autologger_settings': {'key': 'autologgerSettings', 'type': 'ComputeInstanceAutologgerSettings'},
        'ssh_settings': {'key': 'sshSettings', 'type': 'ComputeInstanceSshSettings'},
        'custom_services': {'key': 'customServices', 'type': '[CustomService]'},
        'os_image_metadata': {'key': 'osImageMetadata', 'type': 'ImageMetadata'},
        'connectivity_endpoints': {'key': 'connectivityEndpoints', 'type': 'ComputeInstanceConnectivityEndpoints'},
        'applications': {'key': 'applications', 'type': '[ComputeInstanceApplication]'},
        'created_by': {'key': 'createdBy', 'type': 'ComputeInstanceCreatedBy'},
        'errors': {'key': 'errors', 'type': '[ErrorResponse]'},
        'state': {'key': 'state', 'type': 'str'},
        'compute_instance_authorization_type': {'key': 'computeInstanceAuthorizationType', 'type': 'str'},
        'enable_os_patching': {'key': 'enableOSPatching', 'type': 'bool'},
        'enable_root_access': {'key': 'enableRootAccess', 'type': 'bool'},
        'enable_sso': {'key': 'enableSSO', 'type': 'bool'},
        'release_quota_on_stop': {'key': 'releaseQuotaOnStop', 'type': 'bool'},
        'personal_compute_instance_settings': {'key': 'personalComputeInstanceSettings', 'type': 'PersonalComputeInstanceSettings'},
        'setup_scripts': {'key': 'setupScripts', 'type': 'SetupScripts'},
        'last_operation': {'key': 'lastOperation', 'type': 'ComputeInstanceLastOperation'},
        'schedules': {'key': 'schedules', 'type': 'ComputeSchedules'},
        'idle_time_before_shutdown': {'key': 'idleTimeBeforeShutdown', 'type': 'str'},
        'enable_node_public_ip': {'key': 'enableNodePublicIp', 'type': 'bool'},
        'containers': {'key': 'containers', 'type': '[ComputeInstanceContainer]'},
        'data_disks': {'key': 'dataDisks', 'type': '[ComputeInstanceDataDisk]'},
        'data_mounts': {'key': 'dataMounts', 'type': '[ComputeInstanceDataMount]'},
        'versions': {'key': 'versions', 'type': 'ComputeInstanceVersion'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword vm_size: Virtual Machine Size.
        :paramtype vm_size: str
        :keyword subnet: Virtual network subnet resource ID the compute nodes belong to.
        :paramtype subnet: ~azure.mgmt.machinelearningservices.models.ResourceId
        :keyword application_sharing_policy: Policy for sharing applications on this compute instance
         among users of parent workspace. If Personal, only the creator can access applications on this
         compute instance. When Shared, any workspace user can access applications on this instance
         depending on his/her assigned role. Possible values include: "Personal", "Shared". Default
         value: "Shared".
        :paramtype application_sharing_policy: str or
         ~azure.mgmt.machinelearningservices.models.ApplicationSharingPolicy
        :keyword autologger_settings: Specifies settings for autologger.
        :paramtype autologger_settings:
         ~azure.mgmt.machinelearningservices.models.ComputeInstanceAutologgerSettings
        :keyword ssh_settings: Specifies policy and settings for SSH access.
        :paramtype ssh_settings: ~azure.mgmt.machinelearningservices.models.ComputeInstanceSshSettings
        :keyword custom_services: List of Custom Services added to the compute.
        :paramtype custom_services: list[~azure.mgmt.machinelearningservices.models.CustomService]
        :keyword compute_instance_authorization_type: The Compute Instance Authorization type.
         Available values are personal (default). Possible values include: "personal". Default value:
         "personal".
        :paramtype compute_instance_authorization_type: str or
         ~azure.mgmt.machinelearningservices.models.ComputeInstanceAuthorizationType
        :keyword enable_os_patching: Enable Auto OS Patching. Possible values are: true, false.
        :paramtype enable_os_patching: bool
        :keyword enable_root_access: Enable root access. Possible values are: true, false.
        :paramtype enable_root_access: bool
        :keyword enable_sso: Enable SSO (single sign on). Possible values are: true, false.
        :paramtype enable_sso: bool
        :keyword release_quota_on_stop: Release quota if compute instance stopped. Possible values are:
         true - release quota if compute instance stopped. false - don't release quota when compute
         instance stopped.
        :paramtype release_quota_on_stop: bool
        :keyword personal_compute_instance_settings: Settings for a personal compute instance.
        :paramtype personal_compute_instance_settings:
         ~azure.mgmt.machinelearningservices.models.PersonalComputeInstanceSettings
        :keyword setup_scripts: Details of customized scripts to execute for setting up the cluster.
        :paramtype setup_scripts: ~azure.mgmt.machinelearningservices.models.SetupScripts
        :keyword schedules: The list of schedules to be applied on the computes.
        :paramtype schedules: ~azure.mgmt.machinelearningservices.models.ComputeSchedules
        :keyword idle_time_before_shutdown: Stops compute instance after user defined period of
         inactivity. Time is defined in ISO8601 format. Minimum is 15 min, maximum is 3 days.
        :paramtype idle_time_before_shutdown: str
        :keyword enable_node_public_ip: Enable or disable node public IP address provisioning. Possible
         values are: Possible values are: true - Indicates that the compute nodes will have public IPs
         provisioned. false - Indicates that the compute nodes will have a private endpoint and no
         public IPs.
        :paramtype enable_node_public_ip: bool
        """
        super(ComputeInstanceProperties, self).__init__(**kwargs)
        self.vm_size = kwargs.get('vm_size', None)
        self.subnet = kwargs.get('subnet', None)
        self.application_sharing_policy = kwargs.get('application_sharing_policy', "Shared")
        self.autologger_settings = kwargs.get('autologger_settings', None)
        self.ssh_settings = kwargs.get('ssh_settings', None)
        self.custom_services = kwargs.get('custom_services', None)
        self.os_image_metadata = None
        self.connectivity_endpoints = None
        self.applications = None
        self.created_by = None
        self.errors = None
        self.state = None
        self.compute_instance_authorization_type = kwargs.get('compute_instance_authorization_type', "personal")
        self.enable_os_patching = kwargs.get('enable_os_patching', False)
        self.enable_root_access = kwargs.get('enable_root_access', True)
        self.enable_sso = kwargs.get('enable_sso', True)
        self.release_quota_on_stop = kwargs.get('release_quota_on_stop', False)
        self.personal_compute_instance_settings = kwargs.get('personal_compute_instance_settings', None)
        self.setup_scripts = kwargs.get('setup_scripts', None)
        self.last_operation = None
        self.schedules = kwargs.get('schedules', None)
        self.idle_time_before_shutdown = kwargs.get('idle_time_before_shutdown', None)
        self.enable_node_public_ip = kwargs.get('enable_node_public_ip', None)
        self.containers = None
        self.data_disks = None
        self.data_mounts = None
        self.versions = None


class ComputeInstanceSshSettings(msrest.serialization.Model):
    """Specifies policy and settings for SSH access.

    Variables are only populated by the server, and will be ignored when sending a request.

    :ivar ssh_public_access: State of the public SSH port. Possible values are: Disabled -
     Indicates that the public ssh port is closed on this instance. Enabled - Indicates that the
     public ssh port is open and accessible according to the VNet/subnet policy if applicable.
     Possible values include: "Enabled", "Disabled". Default value: "Disabled".
    :vartype ssh_public_access: str or ~azure.mgmt.machinelearningservices.models.SshPublicAccess
    :ivar admin_user_name: Describes the admin user name.
    :vartype admin_user_name: str
    :ivar ssh_port: Describes the port for connecting through SSH.
    :vartype ssh_port: int
    :ivar admin_public_key: Specifies the SSH rsa public key file as a string. Use "ssh-keygen -t
     rsa -b 2048" to generate your SSH key pairs.
    :vartype admin_public_key: str
    """

    _validation = {
        'admin_user_name': {'readonly': True},
        'ssh_port': {'readonly': True},
    }

    _attribute_map = {
        'ssh_public_access': {'key': 'sshPublicAccess', 'type': 'str'},
        'admin_user_name': {'key': 'adminUserName', 'type': 'str'},
        'ssh_port': {'key': 'sshPort', 'type': 'int'},
        'admin_public_key': {'key': 'adminPublicKey', 'type': 'str'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword ssh_public_access: State of the public SSH port. Possible values are: Disabled -
         Indicates that the public ssh port is closed on this instance. Enabled - Indicates that the
         public ssh port is open and accessible according to the VNet/subnet policy if applicable.
         Possible values include: "Enabled", "Disabled". Default value: "Disabled".
        :paramtype ssh_public_access: str or ~azure.mgmt.machinelearningservices.models.SshPublicAccess
        :keyword admin_public_key: Specifies the SSH rsa public key file as a string. Use "ssh-keygen
         -t rsa -b 2048" to generate your SSH key pairs.
        :paramtype admin_public_key: str
        """
        super(ComputeInstanceSshSettings, self).__init__(**kwargs)
        self.ssh_public_access = kwargs.get('ssh_public_access', "Disabled")
        self.admin_user_name = None
        self.ssh_port = None
        self.admin_public_key = kwargs.get('admin_public_key', None)


class ComputeInstanceVersion(msrest.serialization.Model):
    """Version of computeInstance.

    :ivar runtime: Runtime of compute instance.
    :vartype runtime: str
    """

    _attribute_map = {
        'runtime': {'key': 'runtime', 'type': 'str'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword runtime: Runtime of compute instance.
        :paramtype runtime: str
        """
        super(ComputeInstanceVersion, self).__init__(**kwargs)
        self.runtime = kwargs.get('runtime', None)


class ComputeRecurrenceSchedule(msrest.serialization.Model):
    """ComputeRecurrenceSchedule.

    All required parameters must be populated in order to send to Azure.

    :ivar hours: Required. [Required] List of hours for the schedule.
    :vartype hours: list[int]
    :ivar minutes: Required. [Required] List of minutes for the schedule.
    :vartype minutes: list[int]
    :ivar month_days: List of month days for the schedule.
    :vartype month_days: list[int]
    :ivar week_days: List of days for the schedule.
    :vartype week_days: list[str or ~azure.mgmt.machinelearningservices.models.ComputeWeekDay]
    """

    _validation = {
        'hours': {'required': True},
        'minutes': {'required': True},
    }

    _attribute_map = {
        'hours': {'key': 'hours', 'type': '[int]'},
        'minutes': {'key': 'minutes', 'type': '[int]'},
        'month_days': {'key': 'monthDays', 'type': '[int]'},
        'week_days': {'key': 'weekDays', 'type': '[str]'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword hours: Required. [Required] List of hours for the schedule.
        :paramtype hours: list[int]
        :keyword minutes: Required. [Required] List of minutes for the schedule.
        :paramtype minutes: list[int]
        :keyword month_days: List of month days for the schedule.
        :paramtype month_days: list[int]
        :keyword week_days: List of days for the schedule.
        :paramtype week_days: list[str or ~azure.mgmt.machinelearningservices.models.ComputeWeekDay]
        """
        super(ComputeRecurrenceSchedule, self).__init__(**kwargs)
        self.hours = kwargs['hours']
        self.minutes = kwargs['minutes']
        self.month_days = kwargs.get('month_days', None)
        self.week_days = kwargs.get('week_days', None)


class ComputeResourceSchema(msrest.serialization.Model):
    """ComputeResourceSchema.

    :ivar properties: Compute properties.
    :vartype properties: ~azure.mgmt.machinelearningservices.models.Compute
    """

    _attribute_map = {
        'properties': {'key': 'properties', 'type': 'Compute'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword properties: Compute properties.
        :paramtype properties: ~azure.mgmt.machinelearningservices.models.Compute
        """
        super(ComputeResourceSchema, self).__init__(**kwargs)
        self.properties = kwargs.get('properties', None)


class ComputeResource(Resource, ComputeResourceSchema):
    """Machine Learning compute object wrapped into ARM resource envelope.

    Variables are only populated by the server, and will be ignored when sending a request.

    :ivar properties: Compute properties.
    :vartype properties: ~azure.mgmt.machinelearningservices.models.Compute
    :ivar id: Fully qualified resource ID for the resource. Ex -
     /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}.
    :vartype id: str
    :ivar name: The name of the resource.
    :vartype name: str
    :ivar type: The type of the resource. E.g. "Microsoft.Compute/virtualMachines" or
     "Microsoft.Storage/storageAccounts".
    :vartype type: str
    :ivar system_data: Azure Resource Manager metadata containing createdBy and modifiedBy
     information.
    :vartype system_data: ~azure.mgmt.machinelearningservices.models.SystemData
    :ivar identity: The identity of the resource.
    :vartype identity: ~azure.mgmt.machinelearningservices.models.ManagedServiceIdentity
    :ivar location: Specifies the location of the resource.
    :vartype location: str
    :ivar tags: A set of tags. Contains resource tags defined as key/value pairs.
    :vartype tags: dict[str, str]
    :ivar sku: The sku of the workspace.
    :vartype sku: ~azure.mgmt.machinelearningservices.models.Sku
    """

    _validation = {
        'id': {'readonly': True},
        'name': {'readonly': True},
        'type': {'readonly': True},
        'system_data': {'readonly': True},
    }

    _attribute_map = {
        'properties': {'key': 'properties', 'type': 'Compute'},
        'id': {'key': 'id', 'type': 'str'},
        'name': {'key': 'name', 'type': 'str'},
        'type': {'key': 'type', 'type': 'str'},
        'system_data': {'key': 'systemData', 'type': 'SystemData'},
        'identity': {'key': 'identity', 'type': 'ManagedServiceIdentity'},
        'location': {'key': 'location', 'type': 'str'},
        'tags': {'key': 'tags', 'type': '{str}'},
        'sku': {'key': 'sku', 'type': 'Sku'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword properties: Compute properties.
        :paramtype properties: ~azure.mgmt.machinelearningservices.models.Compute
        :keyword identity: The identity of the resource.
        :paramtype identity: ~azure.mgmt.machinelearningservices.models.ManagedServiceIdentity
        :keyword location: Specifies the location of the resource.
        :paramtype location: str
        :keyword tags: A set of tags. Contains resource tags defined as key/value pairs.
        :paramtype tags: dict[str, str]
        :keyword sku: The sku of the workspace.
        :paramtype sku: ~azure.mgmt.machinelearningservices.models.Sku
        """
        super(ComputeResource, self).__init__(**kwargs)
        self.properties = kwargs.get('properties', None)
        self.identity = kwargs.get('identity', None)
        self.location = kwargs.get('location', None)
        self.tags = kwargs.get('tags', None)
        self.sku = kwargs.get('sku', None)
        self.id = None
        self.name = None
        self.type = None
        self.system_data = None


class ComputeRuntimeDto(msrest.serialization.Model):
    """ComputeRuntimeDto.

    :ivar spark_runtime_version:
    :vartype spark_runtime_version: str
    """

    _attribute_map = {
        'spark_runtime_version': {'key': 'sparkRuntimeVersion', 'type': 'str'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword spark_runtime_version:
        :paramtype spark_runtime_version: str
        """
        super(ComputeRuntimeDto, self).__init__(**kwargs)
        self.spark_runtime_version = kwargs.get('spark_runtime_version', None)


class ComputeSchedules(msrest.serialization.Model):
    """The list of schedules to be applied on the computes.

    :ivar compute_start_stop: The list of compute start stop schedules to be applied.
    :vartype compute_start_stop:
     list[~azure.mgmt.machinelearningservices.models.ComputeStartStopSchedule]
    """

    _attribute_map = {
        'compute_start_stop': {'key': 'computeStartStop', 'type': '[ComputeStartStopSchedule]'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword compute_start_stop: The list of compute start stop schedules to be applied.
        :paramtype compute_start_stop:
         list[~azure.mgmt.machinelearningservices.models.ComputeStartStopSchedule]
        """
        super(ComputeSchedules, self).__init__(**kwargs)
        self.compute_start_stop = kwargs.get('compute_start_stop', None)


class ComputeStartStopSchedule(msrest.serialization.Model):
    """Compute start stop schedule properties.

    Variables are only populated by the server, and will be ignored when sending a request.

    :ivar id: A system assigned id for the schedule.
    :vartype id: str
    :ivar provisioning_status: The current deployment state of schedule. Possible values include:
     "Completed", "Provisioning", "Failed".
    :vartype provisioning_status: str or
     ~azure.mgmt.machinelearningservices.models.ProvisioningStatus
    :ivar status: Is the schedule enabled or disabled?. Possible values include: "Enabled",
     "Disabled".
    :vartype status: str or ~azure.mgmt.machinelearningservices.models.ScheduleStatus
    :ivar action: [Required] The compute power action. Possible values include: "Start", "Stop".
    :vartype action: str or ~azure.mgmt.machinelearningservices.models.ComputePowerAction
    :ivar trigger_type: [Required] The schedule trigger type. Possible values include:
     "Recurrence", "Cron".
    :vartype trigger_type: str or ~azure.mgmt.machinelearningservices.models.ComputeTriggerType
    :ivar recurrence: Required if triggerType is Recurrence.
    :vartype recurrence: ~azure.mgmt.machinelearningservices.models.Recurrence
    :ivar cron: Required if triggerType is Cron.
    :vartype cron: ~azure.mgmt.machinelearningservices.models.Cron
    :ivar schedule: [Deprecated] Not used any more.
    :vartype schedule: ~azure.mgmt.machinelearningservices.models.ScheduleBase
    """

    _validation = {
        'id': {'readonly': True},
        'provisioning_status': {'readonly': True},
    }

    _attribute_map = {
        'id': {'key': 'id', 'type': 'str'},
        'provisioning_status': {'key': 'provisioningStatus', 'type': 'str'},
        'status': {'key': 'status', 'type': 'str'},
        'action': {'key': 'action', 'type': 'str'},
        'trigger_type': {'key': 'triggerType', 'type': 'str'},
        'recurrence': {'key': 'recurrence', 'type': 'Recurrence'},
        'cron': {'key': 'cron', 'type': 'Cron'},
        'schedule': {'key': 'schedule', 'type': 'ScheduleBase'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword status: Is the schedule enabled or disabled?. Possible values include: "Enabled",
         "Disabled".
        :paramtype status: str or ~azure.mgmt.machinelearningservices.models.ScheduleStatus
        :keyword action: [Required] The compute power action. Possible values include: "Start", "Stop".
        :paramtype action: str or ~azure.mgmt.machinelearningservices.models.ComputePowerAction
        :keyword trigger_type: [Required] The schedule trigger type. Possible values include:
         "Recurrence", "Cron".
        :paramtype trigger_type: str or ~azure.mgmt.machinelearningservices.models.ComputeTriggerType
        :keyword recurrence: Required if triggerType is Recurrence.
        :paramtype recurrence: ~azure.mgmt.machinelearningservices.models.Recurrence
        :keyword cron: Required if triggerType is Cron.
        :paramtype cron: ~azure.mgmt.machinelearningservices.models.Cron
        :keyword schedule: [Deprecated] Not used any more.
        :paramtype schedule: ~azure.mgmt.machinelearningservices.models.ScheduleBase
        """
        super(ComputeStartStopSchedule, self).__init__(**kwargs)
        self.id = None
        self.provisioning_status = None
        self.status = kwargs.get('status', None)
        self.action = kwargs.get('action', None)
        self.trigger_type = kwargs.get('trigger_type', None)
        self.recurrence = kwargs.get('recurrence', None)
        self.cron = kwargs.get('cron', None)
        self.schedule = kwargs.get('schedule', None)


class ContainerResourceRequirements(msrest.serialization.Model):
    """Resource requirements for each container instance within an online deployment.

    :ivar container_resource_limits: Container resource limit info:.
    :vartype container_resource_limits:
     ~azure.mgmt.machinelearningservices.models.ContainerResourceSettings
    :ivar container_resource_requests: Container resource request info:.
    :vartype container_resource_requests:
     ~azure.mgmt.machinelearningservices.models.ContainerResourceSettings
    """

    _attribute_map = {
        'container_resource_limits': {'key': 'containerResourceLimits', 'type': 'ContainerResourceSettings'},
        'container_resource_requests': {'key': 'containerResourceRequests', 'type': 'ContainerResourceSettings'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword container_resource_limits: Container resource limit info:.
        :paramtype container_resource_limits:
         ~azure.mgmt.machinelearningservices.models.ContainerResourceSettings
        :keyword container_resource_requests: Container resource request info:.
        :paramtype container_resource_requests:
         ~azure.mgmt.machinelearningservices.models.ContainerResourceSettings
        """
        super(ContainerResourceRequirements, self).__init__(**kwargs)
        self.container_resource_limits = kwargs.get('container_resource_limits', None)
        self.container_resource_requests = kwargs.get('container_resource_requests', None)


class ContainerResourceSettings(msrest.serialization.Model):
    """ContainerResourceSettings.

    :ivar cpu: Number of vCPUs request/limit for container. More info:
     https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/.
    :vartype cpu: str
    :ivar gpu: Number of Nvidia GPU cards request/limit for container. More info:
     https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/.
    :vartype gpu: str
    :ivar memory: Memory size request/limit for container. More info:
     https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/.
    :vartype memory: str
    """

    _attribute_map = {
        'cpu': {'key': 'cpu', 'type': 'str'},
        'gpu': {'key': 'gpu', 'type': 'str'},
        'memory': {'key': 'memory', 'type': 'str'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword cpu: Number of vCPUs request/limit for container. More info:
         https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/.
        :paramtype cpu: str
        :keyword gpu: Number of Nvidia GPU cards request/limit for container. More info:
         https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/.
        :paramtype gpu: str
        :keyword memory: Memory size request/limit for container. More info:
         https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/.
        :paramtype memory: str
        """
        super(ContainerResourceSettings, self).__init__(**kwargs)
        self.cpu = kwargs.get('cpu', None)
        self.gpu = kwargs.get('gpu', None)
        self.memory = kwargs.get('memory', None)


class ContentSafety(msrest.serialization.Model):
    """ContentSafety.

    All required parameters must be populated in order to send to Azure.

    :ivar content_safety_level: [Required] Specifies the current safety level for content safety.
     Possible values include: "Blocking", "Deferred".
    :vartype content_safety_level: str or
     ~azure.mgmt.machinelearningservices.models.ContentSafetyLevel
    :ivar content_safety_status: Required. [Required] Specifies the status of content safety.
     Possible values include: "Enabled", "Disabled".
    :vartype content_safety_status: str or
     ~azure.mgmt.machinelearningservices.models.ContentSafetyStatus
    """

    _validation = {
        'content_safety_status': {'required': True},
    }

    _attribute_map = {
        'content_safety_level': {'key': 'contentSafetyLevel', 'type': 'str'},
        'content_safety_status': {'key': 'contentSafetyStatus', 'type': 'str'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword content_safety_level: [Required] Specifies the current safety level for content
         safety. Possible values include: "Blocking", "Deferred".
        :paramtype content_safety_level: str or
         ~azure.mgmt.machinelearningservices.models.ContentSafetyLevel
        :keyword content_safety_status: Required. [Required] Specifies the status of content safety.
         Possible values include: "Enabled", "Disabled".
        :paramtype content_safety_status: str or
         ~azure.mgmt.machinelearningservices.models.ContentSafetyStatus
        """
        super(ContentSafety, self).__init__(**kwargs)
        self.content_safety_level = kwargs.get('content_safety_level', None)
        self.content_safety_status = kwargs['content_safety_status']


class EndpointDeploymentResourceProperties(msrest.serialization.Model):
    """EndpointDeploymentResourceProperties.

    You probably want to use the sub-classes and not this class directly. Known
    sub-classes are: ContentSafetyEndpointDeploymentResourceProperties, OpenAIEndpointDeploymentResourceProperties, SpeechEndpointDeploymentResourceProperties, ManagedOnlineEndpointDeploymentResourceProperties.

    Variables are only populated by the server, and will be ignored when sending a request.

    All required parameters must be populated in order to send to Azure.

    :ivar failure_reason: The failure reason if the creation failed.
    :vartype failure_reason: str
    :ivar provisioning_state: Read-only provision state status property. Possible values include:
     "NotStarted", "Failed", "Creating", "Updating", "Succeeded", "Deleting", "Accepted",
     "Canceled", "Scaling", "Disabled".
    :vartype provisioning_state: str or
     ~azure.mgmt.machinelearningservices.models.DefaultResourceProvisioningState
    :ivar type: Required. Kind of the deployment.Constant filled by server.
    :vartype type: str
    """

    _validation = {
        'provisioning_state': {'readonly': True},
        'type': {'required': True, 'min_length': 1, 'pattern': r'[a-zA-Z0-9_]'},
    }

    _attribute_map = {
        'failure_reason': {'key': 'failureReason', 'type': 'str'},
        'provisioning_state': {'key': 'provisioningState', 'type': 'str'},
        'type': {'key': 'type', 'type': 'str'},
    }

    _subtype_map = {
        'type': {'Azure.ContentSafety': 'ContentSafetyEndpointDeploymentResourceProperties', 'Azure.OpenAI': 'OpenAIEndpointDeploymentResourceProperties', 'Azure.Speech': 'SpeechEndpointDeploymentResourceProperties', 'managedOnlineEndpoint': 'ManagedOnlineEndpointDeploymentResourceProperties'}
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword failure_reason: The failure reason if the creation failed.
        :paramtype failure_reason: str
        """
        super(EndpointDeploymentResourceProperties, self).__init__(**kwargs)
        self.failure_reason = kwargs.get('failure_reason', None)
        self.provisioning_state = None
        self.type = None  # type: Optional[str]


class ContentSafetyEndpointDeploymentResourceProperties(EndpointDeploymentResourceProperties, CognitiveServiceEndpointDeploymentResourceProperties):
    """ContentSafetyEndpointDeploymentResourceProperties.

    Variables are only populated by the server, and will be ignored when sending a request.

    All required parameters must be populated in order to send to Azure.

    :ivar model: Required. Model used for the endpoint deployment.
    :vartype model: ~azure.mgmt.machinelearningservices.models.EndpointDeploymentModel
    :ivar rai_policy_name: The name of RAI policy.
    :vartype rai_policy_name: str
    :ivar sku:
    :vartype sku: ~azure.mgmt.machinelearningservices.models.CognitiveServicesSku
    :ivar version_upgrade_option: Deployment model version upgrade option. Possible values include:
     "OnceNewDefaultVersionAvailable", "OnceCurrentVersionExpired", "NoAutoUpgrade".
    :vartype version_upgrade_option: str or
     ~azure.mgmt.machinelearningservices.models.DeploymentModelVersionUpgradeOption
    :ivar failure_reason: The failure reason if the creation failed.
    :vartype failure_reason: str
    :ivar provisioning_state: Read-only provision state status property. Possible values include:
     "NotStarted", "Failed", "Creating", "Updating", "Succeeded", "Deleting", "Accepted",
     "Canceled", "Scaling", "Disabled".
    :vartype provisioning_state: str or
     ~azure.mgmt.machinelearningservices.models.DefaultResourceProvisioningState
    :ivar type: Required. Kind of the deployment.Constant filled by server.
    :vartype type: str
    """

    _validation = {
        'model': {'required': True},
        'provisioning_state': {'readonly': True},
        'type': {'required': True, 'min_length': 1, 'pattern': r'[a-zA-Z0-9_]'},
    }

    _attribute_map = {
        'model': {'key': 'model', 'type': 'EndpointDeploymentModel'},
        'rai_policy_name': {'key': 'raiPolicyName', 'type': 'str'},
        'sku': {'key': 'sku', 'type': 'CognitiveServicesSku'},
        'version_upgrade_option': {'key': 'versionUpgradeOption', 'type': 'str'},
        'failure_reason': {'key': 'failureReason', 'type': 'str'},
        'provisioning_state': {'key': 'provisioningState', 'type': 'str'},
        'type': {'key': 'type', 'type': 'str'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword model: Required. Model used for the endpoint deployment.
        :paramtype model: ~azure.mgmt.machinelearningservices.models.EndpointDeploymentModel
        :keyword rai_policy_name: The name of RAI policy.
        :paramtype rai_policy_name: str
        :keyword sku:
        :paramtype sku: ~azure.mgmt.machinelearningservices.models.CognitiveServicesSku
        :keyword version_upgrade_option: Deployment model version upgrade option. Possible values
         include: "OnceNewDefaultVersionAvailable", "OnceCurrentVersionExpired", "NoAutoUpgrade".
        :paramtype version_upgrade_option: str or
         ~azure.mgmt.machinelearningservices.models.DeploymentModelVersionUpgradeOption
        :keyword failure_reason: The failure reason if the creation failed.
        :paramtype failure_reason: str
        """
        super(ContentSafetyEndpointDeploymentResourceProperties, self).__init__(**kwargs)
        self.model = kwargs['model']
        self.rai_policy_name = kwargs.get('rai_policy_name', None)
        self.sku = kwargs.get('sku', None)
        self.version_upgrade_option = kwargs.get('version_upgrade_option', None)
        self.type = 'Azure.ContentSafety'  # type: str
        self.failure_reason = kwargs.get('failure_reason', None)
        self.provisioning_state = None


class EndpointResourceProperties(msrest.serialization.Model):
    """EndpointResourceProperties.

    You probably want to use the sub-classes and not this class directly. Known
    sub-classes are: ContentSafetyEndpointResourceProperties, OpenAIEndpointResourceProperties, SpeechEndpointResourceProperties, ManagedOnlineEndpointResourceProperties, ServerlessEndpointResourceProperties.

    Variables are only populated by the server, and will be ignored when sending a request.

    All required parameters must be populated in order to send to Azure.

    :ivar associated_resource_id: Byo resource id for creating the built-in model service
     endpoints.
    :vartype associated_resource_id: str
    :ivar deployments: Deployments info.
    :vartype deployments:
     list[~azure.mgmt.machinelearningservices.models.EndpointDeploymentResourcePropertiesBasicResource]
    :ivar endpoint_type: Required. Type of the endpoint.Constant filled by server. Possible values
     include: "Azure.OpenAI", "Azure.Speech", "Azure.ContentSafety", "Azure.Llama",
     "managedOnlineEndpoint", "serverlessEndpoint".
    :vartype endpoint_type: str or ~azure.mgmt.machinelearningservices.models.EndpointType
    :ivar endpoint_uri: Uri of the endpoint.
    :vartype endpoint_uri: str
    :ivar failure_reason: The failure reason if the creation failed.
    :vartype failure_reason: str
    :ivar location: Location of the endpoint.
     Since input dto and when parse endpoint resource share the same contract
     this Location field is just for parse the endpoint resource info
     we won't let customer specify the endpoint resource location since we will create it the same
     location as workspace.
    :vartype location: str
    :ivar name: Name of the endpoint.
    :vartype name: str
    :ivar provisioning_state: Read-only provision state status property. Possible values include:
     "NotStarted", "Failed", "Creating", "Updating", "Succeeded", "Deleting", "Accepted",
     "Canceled", "Scaling", "Disabled".
    :vartype provisioning_state: str or
     ~azure.mgmt.machinelearningservices.models.DefaultResourceProvisioningState
    :ivar should_create_ai_services_endpoint: Whether the proxy (non-byo) endpoint is a regular
     endpoint or a OneKeyV2 AI services account endpoint.
    :vartype should_create_ai_services_endpoint: bool
    """

    _validation = {
        'endpoint_type': {'required': True},
        'provisioning_state': {'readonly': True},
    }

    _attribute_map = {
        'associated_resource_id': {'key': 'associatedResourceId', 'type': 'str'},
        'deployments': {'key': 'deployments', 'type': '[EndpointDeploymentResourcePropertiesBasicResource]'},
        'endpoint_type': {'key': 'endpointType', 'type': 'str'},
        'endpoint_uri': {'key': 'endpointUri', 'type': 'str'},
        'failure_reason': {'key': 'failureReason', 'type': 'str'},
        'location': {'key': 'location', 'type': 'str'},
        'name': {'key': 'name', 'type': 'str'},
        'provisioning_state': {'key': 'provisioningState', 'type': 'str'},
        'should_create_ai_services_endpoint': {'key': 'shouldCreateAiServicesEndpoint', 'type': 'bool'},
    }

    _subtype_map = {
        'endpoint_type': {'Azure.ContentSafety': 'ContentSafetyEndpointResourceProperties', 'Azure.OpenAI': 'OpenAIEndpointResourceProperties', 'Azure.Speech': 'SpeechEndpointResourceProperties', 'managedOnlineEndpoint': 'ManagedOnlineEndpointResourceProperties', 'serverlessEndpoint': 'ServerlessEndpointResourceProperties'}
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword associated_resource_id: Byo resource id for creating the built-in model service
         endpoints.
        :paramtype associated_resource_id: str
        :keyword deployments: Deployments info.
        :paramtype deployments:
         list[~azure.mgmt.machinelearningservices.models.EndpointDeploymentResourcePropertiesBasicResource]
        :keyword endpoint_uri: Uri of the endpoint.
        :paramtype endpoint_uri: str
        :keyword failure_reason: The failure reason if the creation failed.
        :paramtype failure_reason: str
        :keyword location: Location of the endpoint.
         Since input dto and when parse endpoint resource share the same contract
         this Location field is just for parse the endpoint resource info
         we won't let customer specify the endpoint resource location since we will create it the same
         location as workspace.
        :paramtype location: str
        :keyword name: Name of the endpoint.
        :paramtype name: str
        :keyword should_create_ai_services_endpoint: Whether the proxy (non-byo) endpoint is a regular
         endpoint or a OneKeyV2 AI services account endpoint.
        :paramtype should_create_ai_services_endpoint: bool
        """
        super(EndpointResourceProperties, self).__init__(**kwargs)
        self.associated_resource_id = kwargs.get('associated_resource_id', None)
        self.deployments = kwargs.get('deployments', None)
        self.endpoint_type = None  # type: Optional[str]
        self.endpoint_uri = kwargs.get('endpoint_uri', None)
        self.failure_reason = kwargs.get('failure_reason', None)
        self.location = kwargs.get('location', None)
        self.name = kwargs.get('name', None)
        self.provisioning_state = None
        self.should_create_ai_services_endpoint = kwargs.get('should_create_ai_services_endpoint', None)


class ContentSafetyEndpointResourceProperties(EndpointResourceProperties):
    """ContentSafetyEndpointResourceProperties.

    Variables are only populated by the server, and will be ignored when sending a request.

    All required parameters must be populated in order to send to Azure.

    :ivar associated_resource_id: Byo resource id for creating the built-in model service
     endpoints.
    :vartype associated_resource_id: str
    :ivar deployments: Deployments info.
    :vartype deployments:
     list[~azure.mgmt.machinelearningservices.models.EndpointDeploymentResourcePropertiesBasicResource]
    :ivar endpoint_type: Required. Type of the endpoint.Constant filled by server. Possible values
     include: "Azure.OpenAI", "Azure.Speech", "Azure.ContentSafety", "Azure.Llama",
     "managedOnlineEndpoint", "serverlessEndpoint".
    :vartype endpoint_type: str or ~azure.mgmt.machinelearningservices.models.EndpointType
    :ivar endpoint_uri: Uri of the endpoint.
    :vartype endpoint_uri: str
    :ivar failure_reason: The failure reason if the creation failed.
    :vartype failure_reason: str
    :ivar location: Location of the endpoint.
     Since input dto and when parse endpoint resource share the same contract
     this Location field is just for parse the endpoint resource info
     we won't let customer specify the endpoint resource location since we will create it the same
     location as workspace.
    :vartype location: str
    :ivar name: Name of the endpoint.
    :vartype name: str
    :ivar provisioning_state: Read-only provision state status property. Possible values include:
     "NotStarted", "Failed", "Creating", "Updating", "Succeeded", "Deleting", "Accepted",
     "Canceled", "Scaling", "Disabled".
    :vartype provisioning_state: str or
     ~azure.mgmt.machinelearningservices.models.DefaultResourceProvisioningState
    :ivar should_create_ai_services_endpoint: Whether the proxy (non-byo) endpoint is a regular
     endpoint or a OneKeyV2 AI services account endpoint.
    :vartype should_create_ai_services_endpoint: bool
    """

    _validation = {
        'endpoint_type': {'required': True},
        'provisioning_state': {'readonly': True},
    }

    _attribute_map = {
        'associated_resource_id': {'key': 'associatedResourceId', 'type': 'str'},
        'deployments': {'key': 'deployments', 'type': '[EndpointDeploymentResourcePropertiesBasicResource]'},
        'endpoint_type': {'key': 'endpointType', 'type': 'str'},
        'endpoint_uri': {'key': 'endpointUri', 'type': 'str'},
        'failure_reason': {'key': 'failureReason', 'type': 'str'},
        'location': {'key': 'location', 'type': 'str'},
        'name': {'key': 'name', 'type': 'str'},
        'provisioning_state': {'key': 'provisioningState', 'type': 'str'},
        'should_create_ai_services_endpoint': {'key': 'shouldCreateAiServicesEndpoint', 'type': 'bool'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword associated_resource_id: Byo resource id for creating the built-in model service
         endpoints.
        :paramtype associated_resource_id: str
        :keyword deployments: Deployments info.
        :paramtype deployments:
         list[~azure.mgmt.machinelearningservices.models.EndpointDeploymentResourcePropertiesBasicResource]
        :keyword endpoint_uri: Uri of the endpoint.
        :paramtype endpoint_uri: str
        :keyword failure_reason: The failure reason if the creation failed.
        :paramtype failure_reason: str
        :keyword location: Location of the endpoint.
         Since input dto and when parse endpoint resource share the same contract
         this Location field is just for parse the endpoint resource info
         we won't let customer specify the endpoint resource location since we will create it the same
         location as workspace.
        :paramtype location: str
        :keyword name: Name of the endpoint.
        :paramtype name: str
        :keyword should_create_ai_services_endpoint: Whether the proxy (non-byo) endpoint is a regular
         endpoint or a OneKeyV2 AI services account endpoint.
        :paramtype should_create_ai_services_endpoint: bool
        """
        super(ContentSafetyEndpointResourceProperties, self).__init__(**kwargs)
        self.endpoint_type = 'Azure.ContentSafety'  # type: str


class CosmosDbSettings(msrest.serialization.Model):
    """CosmosDbSettings.

    :ivar collections_throughput:
    :vartype collections_throughput: int
    """

    _attribute_map = {
        'collections_throughput': {'key': 'collectionsThroughput', 'type': 'int'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword collections_throughput:
        :paramtype collections_throughput: int
        """
        super(CosmosDbSettings, self).__init__(**kwargs)
        self.collections_throughput = kwargs.get('collections_throughput', None)


class ScheduleActionBase(msrest.serialization.Model):
    """ScheduleActionBase.

    You probably want to use the sub-classes and not this class directly. Known
    sub-classes are: JobScheduleAction, CreateMonitorAction, EndpointScheduleAction.

    All required parameters must be populated in order to send to Azure.

    :ivar action_type: Required. [Required] Specifies the action type of the schedule.Constant
     filled by server. Possible values include: "CreateJob", "InvokeBatchEndpoint", "CreateMonitor".
    :vartype action_type: str or ~azure.mgmt.machinelearningservices.models.ScheduleActionType
    """

    _validation = {
        'action_type': {'required': True},
    }

    _attribute_map = {
        'action_type': {'key': 'actionType', 'type': 'str'},
    }

    _subtype_map = {
        'action_type': {'CreateJob': 'JobScheduleAction', 'CreateMonitor': 'CreateMonitorAction', 'InvokeBatchEndpoint': 'EndpointScheduleAction'}
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        """
        super(ScheduleActionBase, self).__init__(**kwargs)
        self.action_type = None  # type: Optional[str]


class CreateMonitorAction(ScheduleActionBase):
    """CreateMonitorAction.

    All required parameters must be populated in order to send to Azure.

    :ivar action_type: Required. [Required] Specifies the action type of the schedule.Constant
     filled by server. Possible values include: "CreateJob", "InvokeBatchEndpoint", "CreateMonitor".
    :vartype action_type: str or ~azure.mgmt.machinelearningservices.models.ScheduleActionType
    :ivar monitor_definition: Required. [Required] Defines the monitor.
    :vartype monitor_definition: ~azure.mgmt.machinelearningservices.models.MonitorDefinition
    """

    _validation = {
        'action_type': {'required': True},
        'monitor_definition': {'required': True},
    }

    _attribute_map = {
        'action_type': {'key': 'actionType', 'type': 'str'},
        'monitor_definition': {'key': 'monitorDefinition', 'type': 'MonitorDefinition'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword monitor_definition: Required. [Required] Defines the monitor.
        :paramtype monitor_definition: ~azure.mgmt.machinelearningservices.models.MonitorDefinition
        """
        super(CreateMonitorAction, self).__init__(**kwargs)
        self.action_type = 'CreateMonitor'  # type: str
        self.monitor_definition = kwargs['monitor_definition']


class Cron(msrest.serialization.Model):
    """The workflow trigger cron for ComputeStartStop schedule type.

    :ivar start_time: The start time in yyyy-MM-ddTHH:mm:ss format.
    :vartype start_time: str
    :ivar time_zone: Specifies time zone in which the schedule runs.
     TimeZone should follow Windows time zone format. Refer:
     https://docs.microsoft.com/en-us/windows-hardware/manufacture/desktop/default-time-zones?view=windows-11.
    :vartype time_zone: str
    :ivar expression: [Required] Specifies cron expression of schedule.
     The expression should follow NCronTab format.
    :vartype expression: str
    """

    _attribute_map = {
        'start_time': {'key': 'startTime', 'type': 'str'},
        'time_zone': {'key': 'timeZone', 'type': 'str'},
        'expression': {'key': 'expression', 'type': 'str'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword start_time: The start time in yyyy-MM-ddTHH:mm:ss format.
        :paramtype start_time: str
        :keyword time_zone: Specifies time zone in which the schedule runs.
         TimeZone should follow Windows time zone format. Refer:
         https://docs.microsoft.com/en-us/windows-hardware/manufacture/desktop/default-time-zones?view=windows-11.
        :paramtype time_zone: str
        :keyword expression: [Required] Specifies cron expression of schedule.
         The expression should follow NCronTab format.
        :paramtype expression: str
        """
        super(Cron, self).__init__(**kwargs)
        self.start_time = kwargs.get('start_time', None)
        self.time_zone = kwargs.get('time_zone', "UTC")
        self.expression = kwargs.get('expression', None)


class TriggerBase(msrest.serialization.Model):
    """TriggerBase.

    You probably want to use the sub-classes and not this class directly. Known
    sub-classes are: CronTrigger, RecurrenceTrigger.

    All required parameters must be populated in order to send to Azure.

    :ivar end_time: Specifies end time of schedule in ISO 8601, but without a UTC offset. Refer
     https://en.wikipedia.org/wiki/ISO_8601.
     Recommented format would be "2022-06-01T00:00:01"
     If not present, the schedule will run indefinitely.
    :vartype end_time: str
    :ivar start_time: Specifies start time of schedule in ISO 8601 format, but without a UTC
     offset.
    :vartype start_time: str
    :ivar time_zone: Specifies time zone in which the schedule runs.
     TimeZone should follow Windows time zone format. Refer:
     https://docs.microsoft.com/en-us/windows-hardware/manufacture/desktop/default-time-zones?view=windows-11.
    :vartype time_zone: str
    :ivar trigger_type: Required. [Required].Constant filled by server. Possible values include:
     "Recurrence", "Cron".
    :vartype trigger_type: str or ~azure.mgmt.machinelearningservices.models.TriggerType
    """

    _validation = {
        'trigger_type': {'required': True},
    }

    _attribute_map = {
        'end_time': {'key': 'endTime', 'type': 'str'},
        'start_time': {'key': 'startTime', 'type': 'str'},
        'time_zone': {'key': 'timeZone', 'type': 'str'},
        'trigger_type': {'key': 'triggerType', 'type': 'str'},
    }

    _subtype_map = {
        'trigger_type': {'Cron': 'CronTrigger', 'Recurrence': 'RecurrenceTrigger'}
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword end_time: Specifies end time of schedule in ISO 8601, but without a UTC offset. Refer
         https://en.wikipedia.org/wiki/ISO_8601.
         Recommented format would be "2022-06-01T00:00:01"
         If not present, the schedule will run indefinitely.
        :paramtype end_time: str
        :keyword start_time: Specifies start time of schedule in ISO 8601 format, but without a UTC
         offset.
        :paramtype start_time: str
        :keyword time_zone: Specifies time zone in which the schedule runs.
         TimeZone should follow Windows time zone format. Refer:
         https://docs.microsoft.com/en-us/windows-hardware/manufacture/desktop/default-time-zones?view=windows-11.
        :paramtype time_zone: str
        """
        super(TriggerBase, self).__init__(**kwargs)
        self.end_time = kwargs.get('end_time', None)
        self.start_time = kwargs.get('start_time', None)
        self.time_zone = kwargs.get('time_zone', "UTC")
        self.trigger_type = None  # type: Optional[str]


class CronTrigger(TriggerBase):
    """CronTrigger.

    All required parameters must be populated in order to send to Azure.

    :ivar end_time: Specifies end time of schedule in ISO 8601, but without a UTC offset. Refer
     https://en.wikipedia.org/wiki/ISO_8601.
     Recommented format would be "2022-06-01T00:00:01"
     If not present, the schedule will run indefinitely.
    :vartype end_time: str
    :ivar start_time: Specifies start time of schedule in ISO 8601 format, but without a UTC
     offset.
    :vartype start_time: str
    :ivar time_zone: Specifies time zone in which the schedule runs.
     TimeZone should follow Windows time zone format. Refer:
     https://docs.microsoft.com/en-us/windows-hardware/manufacture/desktop/default-time-zones?view=windows-11.
    :vartype time_zone: str
    :ivar trigger_type: Required. [Required].Constant filled by server. Possible values include:
     "Recurrence", "Cron".
    :vartype trigger_type: str or ~azure.mgmt.machinelearningservices.models.TriggerType
    :ivar expression: Required. [Required] Specifies cron expression of schedule.
     The expression should follow NCronTab format.
    :vartype expression: str
    """

    _validation = {
        'trigger_type': {'required': True},
        'expression': {'required': True, 'min_length': 1, 'pattern': r'[a-zA-Z0-9_]'},
    }

    _attribute_map = {
        'end_time': {'key': 'endTime', 'type': 'str'},
        'start_time': {'key': 'startTime', 'type': 'str'},
        'time_zone': {'key': 'timeZone', 'type': 'str'},
        'trigger_type': {'key': 'triggerType', 'type': 'str'},
        'expression': {'key': 'expression', 'type': 'str'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword end_time: Specifies end time of schedule in ISO 8601, but without a UTC offset. Refer
         https://en.wikipedia.org/wiki/ISO_8601.
         Recommented format would be "2022-06-01T00:00:01"
         If not present, the schedule will run indefinitely.
        :paramtype end_time: str
        :keyword start_time: Specifies start time of schedule in ISO 8601 format, but without a UTC
         offset.
        :paramtype start_time: str
        :keyword time_zone: Specifies time zone in which the schedule runs.
         TimeZone should follow Windows time zone format. Refer:
         https://docs.microsoft.com/en-us/windows-hardware/manufacture/desktop/default-time-zones?view=windows-11.
        :paramtype time_zone: str
        :keyword expression: Required. [Required] Specifies cron expression of schedule.
         The expression should follow NCronTab format.
        :paramtype expression: str
        """
        super(CronTrigger, self).__init__(**kwargs)
        self.trigger_type = 'Cron'  # type: str
        self.expression = kwargs['expression']


class CustomForecastHorizon(ForecastHorizon):
    """The desired maximum forecast horizon in units of time-series frequency.

    All required parameters must be populated in order to send to Azure.

    :ivar mode: Required. [Required] Set forecast horizon value selection mode.Constant filled by
     server. Possible values include: "Auto", "Custom".
    :vartype mode: str or ~azure.mgmt.machinelearningservices.models.ForecastHorizonMode
    :ivar value: Required. [Required] Forecast horizon value.
    :vartype value: int
    """

    _validation = {
        'mode': {'required': True},
        'value': {'required': True},
    }

    _attribute_map = {
        'mode': {'key': 'mode', 'type': 'str'},
        'value': {'key': 'value', 'type': 'int'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword value: Required. [Required] Forecast horizon value.
        :paramtype value: int
        """
        super(CustomForecastHorizon, self).__init__(**kwargs)
        self.mode = 'Custom'  # type: str
        self.value = kwargs['value']


class CustomKeys(msrest.serialization.Model):
    """Custom Keys credential object.

    :ivar keys: Dictionary of :code:`<string>`.
    :vartype keys: dict[str, str]
    """

    _attribute_map = {
        'keys': {'key': 'keys', 'type': '{str}'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword keys: Dictionary of :code:`<string>`.
        :paramtype keys: dict[str, str]
        """
        super(CustomKeys, self).__init__(**kwargs)
        self.keys = kwargs.get('keys', None)


class CustomKeysWorkspaceConnectionProperties(WorkspaceConnectionPropertiesV2):
    """Category:= CustomKeys
AuthType:= CustomKeys (as type discriminator)
Credentials:= {CustomKeys} as Microsoft.MachineLearning.AccountRP.Contracts.WorkspaceConnection.CustomKeys
Target:= {any value}
Use Metadata property bag for ApiVersion and other metadata fields.

    Variables are only populated by the server, and will be ignored when sending a request.

    All required parameters must be populated in order to send to Azure.

    :ivar auth_type: Required. Authentication type of the connection target.Constant filled by
     server. Possible values include: "PAT", "ManagedIdentity", "UsernamePassword", "None", "SAS",
     "AccountKey", "ServicePrincipal", "AccessKey", "ApiKey", "CustomKeys", "OAuth2", "AAD".
    :vartype auth_type: str or ~azure.mgmt.machinelearningservices.models.ConnectionAuthType
    :ivar category: Category of the connection. Possible values include: "PythonFeed",
     "ContainerRegistry", "Git", "S3", "Snowflake", "AzureSqlDb", "AzureSynapseAnalytics",
     "AzureMySqlDb", "AzurePostgresDb", "ADLSGen2", "Redis", "ApiKey", "AzureOpenAI", "AIServices",
     "CognitiveSearch", "CognitiveService", "CustomKeys", "AzureBlob", "AzureOneLake", "CosmosDb",
     "CosmosDbMongoDbApi", "AzureDataExplorer", "AzureMariaDb", "AzureDatabricksDeltaLake",
     "AzureSqlMi", "AzureTableStorage", "AmazonRdsForOracle", "AmazonRdsForSqlServer",
     "AmazonRedshift", "Db2", "Drill", "GoogleBigQuery", "Greenplum", "Hbase", "Hive", "Impala",
     "Informix", "MariaDb", "MicrosoftAccess", "MySql", "Netezza", "Oracle", "Phoenix",
     "PostgreSql", "Presto", "SapOpenHub", "SapBw", "SapHana", "SapTable", "Spark", "SqlServer",
     "Sybase", "Teradata", "Vertica", "Pinecone", "Cassandra", "Couchbase", "MongoDbV2",
     "MongoDbAtlas", "AmazonS3Compatible", "FileServer", "FtpServer", "GoogleCloudStorage", "Hdfs",
     "OracleCloudStorage", "Sftp", "GenericHttp", "ODataRest", "Odbc", "GenericRest", "AmazonMws",
     "Concur", "Dynamics", "DynamicsAx", "DynamicsCrm", "GoogleAdWords", "Hubspot", "Jira",
     "Magento", "Marketo", "Office365", "Eloqua", "Responsys", "OracleServiceCloud", "PayPal",
     "QuickBooks", "Salesforce", "SalesforceServiceCloud", "SalesforceMarketingCloud",
     "SapCloudForCustomer", "SapEcc", "ServiceNow", "SharePointOnlineList", "Shopify", "Square",
     "WebTable", "Xero", "Zoho", "GenericContainerRegistry", "Elasticsearch", "OpenAI", "Serp",
     "BingLLMSearch", "Serverless", "ManagedOnlineEndpoint".
    :vartype category: str or ~azure.mgmt.machinelearningservices.models.ConnectionCategory
    :ivar created_by_workspace_arm_id:
    :vartype created_by_workspace_arm_id: str
    :ivar error:
    :vartype error: str
    :ivar expiry_time:
    :vartype expiry_time: ~datetime.datetime
    :ivar group: Group based on connection category. Possible values include: "Azure", "AzureAI",
     "Database", "NoSQL", "File", "GenericProtocol", "ServicesAndApps".
    :vartype group: str or ~azure.mgmt.machinelearningservices.models.ConnectionGroup
    :ivar is_shared_to_all:
    :vartype is_shared_to_all: bool
    :ivar metadata: Store user metadata for this connection.
    :vartype metadata: dict[str, str]
    :ivar pe_requirement: Possible values include: "Required", "NotRequired", "NotApplicable".
    :vartype pe_requirement: str or ~azure.mgmt.machinelearningservices.models.ManagedPERequirement
    :ivar pe_status: Possible values include: "Inactive", "Active", "NotApplicable".
    :vartype pe_status: str or ~azure.mgmt.machinelearningservices.models.ManagedPEStatus
    :ivar shared_user_list:
    :vartype shared_user_list: list[str]
    :ivar target:
    :vartype target: str
    :ivar use_workspace_managed_identity:
    :vartype use_workspace_managed_identity: bool
    :ivar credentials: Custom Keys credential object.
    :vartype credentials: ~azure.mgmt.machinelearningservices.models.CustomKeys
    """

    _validation = {
        'auth_type': {'required': True},
        'created_by_workspace_arm_id': {'readonly': True},
        'group': {'readonly': True},
    }

    _attribute_map = {
        'auth_type': {'key': 'authType', 'type': 'str'},
        'category': {'key': 'category', 'type': 'str'},
        'created_by_workspace_arm_id': {'key': 'createdByWorkspaceArmId', 'type': 'str'},
        'error': {'key': 'error', 'type': 'str'},
        'expiry_time': {'key': 'expiryTime', 'type': 'iso-8601'},
        'group': {'key': 'group', 'type': 'str'},
        'is_shared_to_all': {'key': 'isSharedToAll', 'type': 'bool'},
        'metadata': {'key': 'metadata', 'type': '{str}'},
        'pe_requirement': {'key': 'peRequirement', 'type': 'str'},
        'pe_status': {'key': 'peStatus', 'type': 'str'},
        'shared_user_list': {'key': 'sharedUserList', 'type': '[str]'},
        'target': {'key': 'target', 'type': 'str'},
        'use_workspace_managed_identity': {'key': 'useWorkspaceManagedIdentity', 'type': 'bool'},
        'credentials': {'key': 'credentials', 'type': 'CustomKeys'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword category: Category of the connection. Possible values include: "PythonFeed",
         "ContainerRegistry", "Git", "S3", "Snowflake", "AzureSqlDb", "AzureSynapseAnalytics",
         "AzureMySqlDb", "AzurePostgresDb", "ADLSGen2", "Redis", "ApiKey", "AzureOpenAI", "AIServices",
         "CognitiveSearch", "CognitiveService", "CustomKeys", "AzureBlob", "AzureOneLake", "CosmosDb",
         "CosmosDbMongoDbApi", "AzureDataExplorer", "AzureMariaDb", "AzureDatabricksDeltaLake",
         "AzureSqlMi", "AzureTableStorage", "AmazonRdsForOracle", "AmazonRdsForSqlServer",
         "AmazonRedshift", "Db2", "Drill", "GoogleBigQuery", "Greenplum", "Hbase", "Hive", "Impala",
         "Informix", "MariaDb", "MicrosoftAccess", "MySql", "Netezza", "Oracle", "Phoenix",
         "PostgreSql", "Presto", "SapOpenHub", "SapBw", "SapHana", "SapTable", "Spark", "SqlServer",
         "Sybase", "Teradata", "Vertica", "Pinecone", "Cassandra", "Couchbase", "MongoDbV2",
         "MongoDbAtlas", "AmazonS3Compatible", "FileServer", "FtpServer", "GoogleCloudStorage", "Hdfs",
         "OracleCloudStorage", "Sftp", "GenericHttp", "ODataRest", "Odbc", "GenericRest", "AmazonMws",
         "Concur", "Dynamics", "DynamicsAx", "DynamicsCrm", "GoogleAdWords", "Hubspot", "Jira",
         "Magento", "Marketo", "Office365", "Eloqua", "Responsys", "OracleServiceCloud", "PayPal",
         "QuickBooks", "Salesforce", "SalesforceServiceCloud", "SalesforceMarketingCloud",
         "SapCloudForCustomer", "SapEcc", "ServiceNow", "SharePointOnlineList", "Shopify", "Square",
         "WebTable", "Xero", "Zoho", "GenericContainerRegistry", "Elasticsearch", "OpenAI", "Serp",
         "BingLLMSearch", "Serverless", "ManagedOnlineEndpoint".
        :paramtype category: str or ~azure.mgmt.machinelearningservices.models.ConnectionCategory
        :keyword error:
        :paramtype error: str
        :keyword expiry_time:
        :paramtype expiry_time: ~datetime.datetime
        :keyword is_shared_to_all:
        :paramtype is_shared_to_all: bool
        :keyword metadata: Store user metadata for this connection.
        :paramtype metadata: dict[str, str]
        :keyword pe_requirement: Possible values include: "Required", "NotRequired", "NotApplicable".
        :paramtype pe_requirement: str or
         ~azure.mgmt.machinelearningservices.models.ManagedPERequirement
        :keyword pe_status: Possible values include: "Inactive", "Active", "NotApplicable".
        :paramtype pe_status: str or ~azure.mgmt.machinelearningservices.models.ManagedPEStatus
        :keyword shared_user_list:
        :paramtype shared_user_list: list[str]
        :keyword target:
        :paramtype target: str
        :keyword use_workspace_managed_identity:
        :paramtype use_workspace_managed_identity: bool
        :keyword credentials: Custom Keys credential object.
        :paramtype credentials: ~azure.mgmt.machinelearningservices.models.CustomKeys
        """
        super(CustomKeysWorkspaceConnectionProperties, self).__init__(**kwargs)
        self.auth_type = 'CustomKeys'  # type: str
        self.credentials = kwargs.get('credentials', None)


class CustomMetricThreshold(msrest.serialization.Model):
    """CustomMetricThreshold.

    All required parameters must be populated in order to send to Azure.

    :ivar metric: Required. [Required] The user-defined metric to calculate.
    :vartype metric: str
    :ivar threshold: The threshold value. If null, a default value will be set depending on the
     selected metric.
    :vartype threshold: ~azure.mgmt.machinelearningservices.models.MonitoringThreshold
    """

    _validation = {
        'metric': {'required': True, 'min_length': 1, 'pattern': r'[a-zA-Z0-9_]'},
    }

    _attribute_map = {
        'metric': {'key': 'metric', 'type': 'str'},
        'threshold': {'key': 'threshold', 'type': 'MonitoringThreshold'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword metric: Required. [Required] The user-defined metric to calculate.
        :paramtype metric: str
        :keyword threshold: The threshold value. If null, a default value will be set depending on the
         selected metric.
        :paramtype threshold: ~azure.mgmt.machinelearningservices.models.MonitoringThreshold
        """
        super(CustomMetricThreshold, self).__init__(**kwargs)
        self.metric = kwargs['metric']
        self.threshold = kwargs.get('threshold', None)


class CustomModelFineTuning(FineTuningVertical):
    """CustomModelFineTuning.

    All required parameters must be populated in order to send to Azure.

    :ivar model: Required. [Required] Input model for fine tuning.
    :vartype model: ~azure.mgmt.machinelearningservices.models.JobInput
    :ivar model_provider: Required. [Required] Enum to determine the type of fine tuning.Constant
     filled by server. Possible values include: "AzureOpenAI", "Custom".
    :vartype model_provider: str or ~azure.mgmt.machinelearningservices.models.ModelProvider
    :ivar task_type: Required. [Required] Fine tuning task type. Possible values include:
     "ChatCompletion", "TextCompletion", "TextClassification", "QuestionAnswering",
     "TextSummarization", "TokenClassification", "TextTranslation", "ImageClassification",
     "ImageInstanceSegmentation", "ImageObjectDetection", "VideoMultiObjectTracking".
    :vartype task_type: str or ~azure.mgmt.machinelearningservices.models.FineTuningTaskType
    :ivar training_data: Required. [Required] Training data for fine tuning.
    :vartype training_data: ~azure.mgmt.machinelearningservices.models.JobInput
    :ivar validation_data: Validation data for fine tuning.
    :vartype validation_data: ~azure.mgmt.machinelearningservices.models.JobInput
    :ivar hyper_parameters: HyperParameters for fine tuning custom model.
    :vartype hyper_parameters: dict[str, str]
    """

    _validation = {
        'model': {'required': True},
        'model_provider': {'required': True},
        'task_type': {'required': True},
        'training_data': {'required': True},
    }

    _attribute_map = {
        'model': {'key': 'model', 'type': 'JobInput'},
        'model_provider': {'key': 'modelProvider', 'type': 'str'},
        'task_type': {'key': 'taskType', 'type': 'str'},
        'training_data': {'key': 'trainingData', 'type': 'JobInput'},
        'validation_data': {'key': 'validationData', 'type': 'JobInput'},
        'hyper_parameters': {'key': 'hyperParameters', 'type': '{str}'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword model: Required. [Required] Input model for fine tuning.
        :paramtype model: ~azure.mgmt.machinelearningservices.models.JobInput
        :keyword task_type: Required. [Required] Fine tuning task type. Possible values include:
         "ChatCompletion", "TextCompletion", "TextClassification", "QuestionAnswering",
         "TextSummarization", "TokenClassification", "TextTranslation", "ImageClassification",
         "ImageInstanceSegmentation", "ImageObjectDetection", "VideoMultiObjectTracking".
        :paramtype task_type: str or ~azure.mgmt.machinelearningservices.models.FineTuningTaskType
        :keyword training_data: Required. [Required] Training data for fine tuning.
        :paramtype training_data: ~azure.mgmt.machinelearningservices.models.JobInput
        :keyword validation_data: Validation data for fine tuning.
        :paramtype validation_data: ~azure.mgmt.machinelearningservices.models.JobInput
        :keyword hyper_parameters: HyperParameters for fine tuning custom model.
        :paramtype hyper_parameters: dict[str, str]
        """
        super(CustomModelFineTuning, self).__init__(**kwargs)
        self.model_provider = 'Custom'  # type: str
        self.hyper_parameters = kwargs.get('hyper_parameters', None)


class JobInput(msrest.serialization.Model):
    """Command job definition.

    You probably want to use the sub-classes and not this class directly. Known
    sub-classes are: CustomModelJobInput, LiteralJobInput, MLFlowModelJobInput, MLTableJobInput, TritonModelJobInput, UriFileJobInput, UriFolderJobInput.

    All required parameters must be populated in order to send to Azure.

    :ivar description: Description for the input.
    :vartype description: str
    :ivar job_input_type: Required. [Required] Specifies the type of job.Constant filled by server.
     Possible values include: "literal", "uri_file", "uri_folder", "mltable", "custom_model",
     "mlflow_model", "triton_model".
    :vartype job_input_type: str or ~azure.mgmt.machinelearningservices.models.JobInputType
    """

    _validation = {
        'job_input_type': {'required': True},
    }

    _attribute_map = {
        'description': {'key': 'description', 'type': 'str'},
        'job_input_type': {'key': 'jobInputType', 'type': 'str'},
    }

    _subtype_map = {
        'job_input_type': {'custom_model': 'CustomModelJobInput', 'literal': 'LiteralJobInput', 'mlflow_model': 'MLFlowModelJobInput', 'mltable': 'MLTableJobInput', 'triton_model': 'TritonModelJobInput', 'uri_file': 'UriFileJobInput', 'uri_folder': 'UriFolderJobInput'}
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword description: Description for the input.
        :paramtype description: str
        """
        super(JobInput, self).__init__(**kwargs)
        self.description = kwargs.get('description', None)
        self.job_input_type = None  # type: Optional[str]


class CustomModelJobInput(JobInput, AssetJobInput):
    """CustomModelJobInput.

    All required parameters must be populated in order to send to Azure.

    :ivar mode: Input Asset Delivery Mode. Possible values include: "ReadOnlyMount",
     "ReadWriteMount", "Download", "Direct", "EvalMount", "EvalDownload".
    :vartype mode: str or ~azure.mgmt.machinelearningservices.models.InputDeliveryMode
    :ivar uri: Required. [Required] Input Asset URI.
    :vartype uri: str
    :ivar description: Description for the input.
    :vartype description: str
    :ivar job_input_type: Required. [Required] Specifies the type of job.Constant filled by server.
     Possible values include: "literal", "uri_file", "uri_folder", "mltable", "custom_model",
     "mlflow_model", "triton_model".
    :vartype job_input_type: str or ~azure.mgmt.machinelearningservices.models.JobInputType
    """

    _validation = {
        'uri': {'required': True, 'min_length': 1, 'pattern': r'[a-zA-Z0-9_]'},
        'job_input_type': {'required': True},
    }

    _attribute_map = {
        'mode': {'key': 'mode', 'type': 'str'},
        'uri': {'key': 'uri', 'type': 'str'},
        'description': {'key': 'description', 'type': 'str'},
        'job_input_type': {'key': 'jobInputType', 'type': 'str'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword mode: Input Asset Delivery Mode. Possible values include: "ReadOnlyMount",
         "ReadWriteMount", "Download", "Direct", "EvalMount", "EvalDownload".
        :paramtype mode: str or ~azure.mgmt.machinelearningservices.models.InputDeliveryMode
        :keyword uri: Required. [Required] Input Asset URI.
        :paramtype uri: str
        :keyword description: Description for the input.
        :paramtype description: str
        """
        super(CustomModelJobInput, self).__init__(**kwargs)
        self.mode = kwargs.get('mode', None)
        self.uri = kwargs['uri']
        self.job_input_type = 'custom_model'  # type: str
        self.description = kwargs.get('description', None)


class JobOutput(msrest.serialization.Model):
    """Job output definition container information on where to find job output/logs.

    You probably want to use the sub-classes and not this class directly. Known
    sub-classes are: CustomModelJobOutput, MLFlowModelJobOutput, MLTableJobOutput, TritonModelJobOutput, UriFileJobOutput, UriFolderJobOutput.

    All required parameters must be populated in order to send to Azure.

    :ivar description: Description for the output.
    :vartype description: str
    :ivar job_output_type: Required. [Required] Specifies the type of job.Constant filled by
     server. Possible values include: "uri_file", "uri_folder", "mltable", "custom_model",
     "mlflow_model", "triton_model".
    :vartype job_output_type: str or ~azure.mgmt.machinelearningservices.models.JobOutputType
    """

    _validation = {
        'job_output_type': {'required': True},
    }

    _attribute_map = {
        'description': {'key': 'description', 'type': 'str'},
        'job_output_type': {'key': 'jobOutputType', 'type': 'str'},
    }

    _subtype_map = {
        'job_output_type': {'custom_model': 'CustomModelJobOutput', 'mlflow_model': 'MLFlowModelJobOutput', 'mltable': 'MLTableJobOutput', 'triton_model': 'TritonModelJobOutput', 'uri_file': 'UriFileJobOutput', 'uri_folder': 'UriFolderJobOutput'}
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword description: Description for the output.
        :paramtype description: str
        """
        super(JobOutput, self).__init__(**kwargs)
        self.description = kwargs.get('description', None)
        self.job_output_type = None  # type: Optional[str]


class CustomModelJobOutput(JobOutput, AssetJobOutput):
    """CustomModelJobOutput.

    All required parameters must be populated in order to send to Azure.

    :ivar asset_name: Output Asset Name.
    :vartype asset_name: str
    :ivar mode: Output Asset Delivery Mode. Possible values include: "ReadWriteMount", "Upload",
     "Direct".
    :vartype mode: str or ~azure.mgmt.machinelearningservices.models.OutputDeliveryMode
    :ivar uri: Output Asset URI.
    :vartype uri: str
    :ivar description: Description for the output.
    :vartype description: str
    :ivar job_output_type: Required. [Required] Specifies the type of job.Constant filled by
     server. Possible values include: "uri_file", "uri_folder", "mltable", "custom_model",
     "mlflow_model", "triton_model".
    :vartype job_output_type: str or ~azure.mgmt.machinelearningservices.models.JobOutputType
    """

    _validation = {
        'job_output_type': {'required': True},
    }

    _attribute_map = {
        'asset_name': {'key': 'assetName', 'type': 'str'},
        'mode': {'key': 'mode', 'type': 'str'},
        'uri': {'key': 'uri', 'type': 'str'},
        'description': {'key': 'description', 'type': 'str'},
        'job_output_type': {'key': 'jobOutputType', 'type': 'str'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword asset_name: Output Asset Name.
        :paramtype asset_name: str
        :keyword mode: Output Asset Delivery Mode. Possible values include: "ReadWriteMount", "Upload",
         "Direct".
        :paramtype mode: str or ~azure.mgmt.machinelearningservices.models.OutputDeliveryMode
        :keyword uri: Output Asset URI.
        :paramtype uri: str
        :keyword description: Description for the output.
        :paramtype description: str
        """
        super(CustomModelJobOutput, self).__init__(**kwargs)
        self.asset_name = kwargs.get('asset_name', None)
        self.mode = kwargs.get('mode', None)
        self.uri = kwargs.get('uri', None)
        self.job_output_type = 'custom_model'  # type: str
        self.description = kwargs.get('description', None)


class MonitoringSignalBase(msrest.serialization.Model):
    """MonitoringSignalBase.

    You probably want to use the sub-classes and not this class directly. Known
    sub-classes are: CustomMonitoringSignal, DataDriftMonitoringSignal, DataQualityMonitoringSignal, FeatureAttributionDriftMonitoringSignal, PredictionDriftMonitoringSignal.

    All required parameters must be populated in order to send to Azure.

    :ivar notification_types: The current notification mode for this signal.
    :vartype notification_types: list[str or
     ~azure.mgmt.machinelearningservices.models.MonitoringNotificationType]
    :ivar properties: Property dictionary. Properties can be added, but not removed or altered.
    :vartype properties: dict[str, str]
    :ivar signal_type: Required. [Required] Specifies the type of signal to monitor.Constant filled
     by server. Possible values include: "DataDrift", "PredictionDrift", "DataQuality",
     "FeatureAttributionDrift", "Custom".
    :vartype signal_type: str or ~azure.mgmt.machinelearningservices.models.MonitoringSignalType
    """

    _validation = {
        'signal_type': {'required': True},
    }

    _attribute_map = {
        'notification_types': {'key': 'notificationTypes', 'type': '[str]'},
        'properties': {'key': 'properties', 'type': '{str}'},
        'signal_type': {'key': 'signalType', 'type': 'str'},
    }

    _subtype_map = {
        'signal_type': {'Custom': 'CustomMonitoringSignal', 'DataDrift': 'DataDriftMonitoringSignal', 'DataQuality': 'DataQualityMonitoringSignal', 'FeatureAttributionDrift': 'FeatureAttributionDriftMonitoringSignal', 'PredictionDrift': 'PredictionDriftMonitoringSignal'}
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword notification_types: The current notification mode for this signal.
        :paramtype notification_types: list[str or
         ~azure.mgmt.machinelearningservices.models.MonitoringNotificationType]
        :keyword properties: Property dictionary. Properties can be added, but not removed or altered.
        :paramtype properties: dict[str, str]
        """
        super(MonitoringSignalBase, self).__init__(**kwargs)
        self.notification_types = kwargs.get('notification_types', None)
        self.properties = kwargs.get('properties', None)
        self.signal_type = None  # type: Optional[str]


class CustomMonitoringSignal(MonitoringSignalBase):
    """CustomMonitoringSignal.

    All required parameters must be populated in order to send to Azure.

    :ivar notification_types: The current notification mode for this signal.
    :vartype notification_types: list[str or
     ~azure.mgmt.machinelearningservices.models.MonitoringNotificationType]
    :ivar properties: Property dictionary. Properties can be added, but not removed or altered.
    :vartype properties: dict[str, str]
    :ivar signal_type: Required. [Required] Specifies the type of signal to monitor.Constant filled
     by server. Possible values include: "DataDrift", "PredictionDrift", "DataQuality",
     "FeatureAttributionDrift", "Custom".
    :vartype signal_type: str or ~azure.mgmt.machinelearningservices.models.MonitoringSignalType
    :ivar component_id: Required. [Required] Reference to the component asset used to calculate the
     custom metrics.
    :vartype component_id: str
    :ivar input_assets: Monitoring assets to take as input. Key is the component input port name,
     value is the data asset.
    :vartype input_assets: dict[str,
     ~azure.mgmt.machinelearningservices.models.MonitoringInputDataBase]
    :ivar inputs: Extra component parameters to take as input. Key is the component literal input
     port name, value is the parameter value.
    :vartype inputs: dict[str, ~azure.mgmt.machinelearningservices.models.JobInput]
    :ivar metric_thresholds: Required. [Required] A list of metrics to calculate and their
     associated thresholds.
    :vartype metric_thresholds:
     list[~azure.mgmt.machinelearningservices.models.CustomMetricThreshold]
    """

    _validation = {
        'signal_type': {'required': True},
        'component_id': {'required': True, 'min_length': 1, 'pattern': r'[a-zA-Z0-9_]'},
        'metric_thresholds': {'required': True},
    }

    _attribute_map = {
        'notification_types': {'key': 'notificationTypes', 'type': '[str]'},
        'properties': {'key': 'properties', 'type': '{str}'},
        'signal_type': {'key': 'signalType', 'type': 'str'},
        'component_id': {'key': 'componentId', 'type': 'str'},
        'input_assets': {'key': 'inputAssets', 'type': '{MonitoringInputDataBase}'},
        'inputs': {'key': 'inputs', 'type': '{JobInput}'},
        'metric_thresholds': {'key': 'metricThresholds', 'type': '[CustomMetricThreshold]'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword notification_types: The current notification mode for this signal.
        :paramtype notification_types: list[str or
         ~azure.mgmt.machinelearningservices.models.MonitoringNotificationType]
        :keyword properties: Property dictionary. Properties can be added, but not removed or altered.
        :paramtype properties: dict[str, str]
        :keyword component_id: Required. [Required] Reference to the component asset used to calculate
         the custom metrics.
        :paramtype component_id: str
        :keyword input_assets: Monitoring assets to take as input. Key is the component input port
         name, value is the data asset.
        :paramtype input_assets: dict[str,
         ~azure.mgmt.machinelearningservices.models.MonitoringInputDataBase]
        :keyword inputs: Extra component parameters to take as input. Key is the component literal
         input port name, value is the parameter value.
        :paramtype inputs: dict[str, ~azure.mgmt.machinelearningservices.models.JobInput]
        :keyword metric_thresholds: Required. [Required] A list of metrics to calculate and their
         associated thresholds.
        :paramtype metric_thresholds:
         list[~azure.mgmt.machinelearningservices.models.CustomMetricThreshold]
        """
        super(CustomMonitoringSignal, self).__init__(**kwargs)
        self.signal_type = 'Custom'  # type: str
        self.component_id = kwargs['component_id']
        self.input_assets = kwargs.get('input_assets', None)
        self.inputs = kwargs.get('inputs', None)
        self.metric_thresholds = kwargs['metric_thresholds']


class CustomNCrossValidations(NCrossValidations):
    """N-Cross validations are specified by user.

    All required parameters must be populated in order to send to Azure.

    :ivar mode: Required. [Required] Mode for determining N-Cross validations.Constant filled by
     server. Possible values include: "Auto", "Custom".
    :vartype mode: str or ~azure.mgmt.machinelearningservices.models.NCrossValidationsMode
    :ivar value: Required. [Required] N-Cross validations value.
    :vartype value: int
    """

    _validation = {
        'mode': {'required': True},
        'value': {'required': True},
    }

    _attribute_map = {
        'mode': {'key': 'mode', 'type': 'str'},
        'value': {'key': 'value', 'type': 'int'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword value: Required. [Required] N-Cross validations value.
        :paramtype value: int
        """
        super(CustomNCrossValidations, self).__init__(**kwargs)
        self.mode = 'Custom'  # type: str
        self.value = kwargs['value']


class CustomSeasonality(Seasonality):
    """CustomSeasonality.

    All required parameters must be populated in order to send to Azure.

    :ivar mode: Required. [Required] Seasonality mode.Constant filled by server. Possible values
     include: "Auto", "Custom".
    :vartype mode: str or ~azure.mgmt.machinelearningservices.models.SeasonalityMode
    :ivar value: Required. [Required] Seasonality value.
    :vartype value: int
    """

    _validation = {
        'mode': {'required': True},
        'value': {'required': True},
    }

    _attribute_map = {
        'mode': {'key': 'mode', 'type': 'str'},
        'value': {'key': 'value', 'type': 'int'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword value: Required. [Required] Seasonality value.
        :paramtype value: int
        """
        super(CustomSeasonality, self).__init__(**kwargs)
        self.mode = 'Custom'  # type: str
        self.value = kwargs['value']


class CustomService(msrest.serialization.Model):
    """Specifies the custom service configuration.

    :ivar additional_properties: Unmatched properties from the message are deserialized to this
     collection.
    :vartype additional_properties: dict[str, any]
    :ivar name: Name of the Custom Service.
    :vartype name: str
    :ivar image: Describes the Image Specifications.
    :vartype image: ~azure.mgmt.machinelearningservices.models.Image
    :ivar environment_variables: Environment Variable for the container.
    :vartype environment_variables: dict[str,
     ~azure.mgmt.machinelearningservices.models.EnvironmentVariable]
    :ivar docker: Describes the docker settings for the image.
    :vartype docker: ~azure.mgmt.machinelearningservices.models.Docker
    :ivar endpoints: Configuring the endpoints for the container.
    :vartype endpoints: list[~azure.mgmt.machinelearningservices.models.Endpoint]
    :ivar volumes: Configuring the volumes for the container.
    :vartype volumes: list[~azure.mgmt.machinelearningservices.models.VolumeDefinition]
    :ivar kernel: Describes the jupyter kernel settings for the image if its a custom environment.
    :vartype kernel: ~azure.mgmt.machinelearningservices.models.JupyterKernelConfig
    """

    _attribute_map = {
        'additional_properties': {'key': '', 'type': '{object}'},
        'name': {'key': 'name', 'type': 'str'},
        'image': {'key': 'image', 'type': 'Image'},
        'environment_variables': {'key': 'environmentVariables', 'type': '{EnvironmentVariable}'},
        'docker': {'key': 'docker', 'type': 'Docker'},
        'endpoints': {'key': 'endpoints', 'type': '[Endpoint]'},
        'volumes': {'key': 'volumes', 'type': '[VolumeDefinition]'},
        'kernel': {'key': 'kernel', 'type': 'JupyterKernelConfig'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword additional_properties: Unmatched properties from the message are deserialized to this
         collection.
        :paramtype additional_properties: dict[str, any]
        :keyword name: Name of the Custom Service.
        :paramtype name: str
        :keyword image: Describes the Image Specifications.
        :paramtype image: ~azure.mgmt.machinelearningservices.models.Image
        :keyword environment_variables: Environment Variable for the container.
        :paramtype environment_variables: dict[str,
         ~azure.mgmt.machinelearningservices.models.EnvironmentVariable]
        :keyword docker: Describes the docker settings for the image.
        :paramtype docker: ~azure.mgmt.machinelearningservices.models.Docker
        :keyword endpoints: Configuring the endpoints for the container.
        :paramtype endpoints: list[~azure.mgmt.machinelearningservices.models.Endpoint]
        :keyword volumes: Configuring the volumes for the container.
        :paramtype volumes: list[~azure.mgmt.machinelearningservices.models.VolumeDefinition]
        :keyword kernel: Describes the jupyter kernel settings for the image if its a custom
         environment.
        :paramtype kernel: ~azure.mgmt.machinelearningservices.models.JupyterKernelConfig
        """
        super(CustomService, self).__init__(**kwargs)
        self.additional_properties = kwargs.get('additional_properties', None)
        self.name = kwargs.get('name', None)
        self.image = kwargs.get('image', None)
        self.environment_variables = kwargs.get('environment_variables', None)
        self.docker = kwargs.get('docker', None)
        self.endpoints = kwargs.get('endpoints', None)
        self.volumes = kwargs.get('volumes', None)
        self.kernel = kwargs.get('kernel', None)


class CustomTargetLags(TargetLags):
    """CustomTargetLags.

    All required parameters must be populated in order to send to Azure.

    :ivar mode: Required. [Required] Set target lags mode - Auto/Custom.Constant filled by server.
     Possible values include: "Auto", "Custom".
    :vartype mode: str or ~azure.mgmt.machinelearningservices.models.TargetLagsMode
    :ivar values: Required. [Required] Set target lags values.
    :vartype values: list[int]
    """

    _validation = {
        'mode': {'required': True},
        'values': {'required': True},
    }

    _attribute_map = {
        'mode': {'key': 'mode', 'type': 'str'},
        'values': {'key': 'values', 'type': '[int]'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword values: Required. [Required] Set target lags values.
        :paramtype values: list[int]
        """
        super(CustomTargetLags, self).__init__(**kwargs)
        self.mode = 'Custom'  # type: str
        self.values = kwargs['values']


class CustomTargetRollingWindowSize(TargetRollingWindowSize):
    """CustomTargetRollingWindowSize.

    All required parameters must be populated in order to send to Azure.

    :ivar mode: Required. [Required] TargetRollingWindowSiz detection mode.Constant filled by
     server. Possible values include: "Auto", "Custom".
    :vartype mode: str or ~azure.mgmt.machinelearningservices.models.TargetRollingWindowSizeMode
    :ivar value: Required. [Required] TargetRollingWindowSize value.
    :vartype value: int
    """

    _validation = {
        'mode': {'required': True},
        'value': {'required': True},
    }

    _attribute_map = {
        'mode': {'key': 'mode', 'type': 'str'},
        'value': {'key': 'value', 'type': 'int'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword value: Required. [Required] TargetRollingWindowSize value.
        :paramtype value: int
        """
        super(CustomTargetRollingWindowSize, self).__init__(**kwargs)
        self.mode = 'Custom'  # type: str
        self.value = kwargs['value']


class DatabricksSchema(msrest.serialization.Model):
    """DatabricksSchema.

    :ivar properties: Properties of Databricks.
    :vartype properties: ~azure.mgmt.machinelearningservices.models.DatabricksProperties
    """

    _attribute_map = {
        'properties': {'key': 'properties', 'type': 'DatabricksProperties'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword properties: Properties of Databricks.
        :paramtype properties: ~azure.mgmt.machinelearningservices.models.DatabricksProperties
        """
        super(DatabricksSchema, self).__init__(**kwargs)
        self.properties = kwargs.get('properties', None)


class Databricks(Compute, DatabricksSchema):
    """A DataFactory compute.

    Variables are only populated by the server, and will be ignored when sending a request.

    All required parameters must be populated in order to send to Azure.

    :ivar properties: Properties of Databricks.
    :vartype properties: ~azure.mgmt.machinelearningservices.models.DatabricksProperties
    :ivar compute_type: Required. The type of compute.Constant filled by server. Possible values
     include: "AKS", "Kubernetes", "AmlCompute", "ComputeInstance", "DataFactory", "VirtualMachine",
     "HDInsight", "Databricks", "DataLakeAnalytics", "SynapseSpark".
    :vartype compute_type: str or ~azure.mgmt.machinelearningservices.models.ComputeType
    :ivar compute_location: Location for the underlying compute.
    :vartype compute_location: str
    :ivar provisioning_state: The provision state of the cluster. Valid values are Unknown,
     Updating, Provisioning, Succeeded, and Failed. Possible values include: "Unknown", "Updating",
     "Creating", "Deleting", "Succeeded", "Failed", "Canceled".
    :vartype provisioning_state: str or
     ~azure.mgmt.machinelearningservices.models.ProvisioningState
    :ivar description: The description of the Machine Learning compute.
    :vartype description: str
    :ivar created_on: The time at which the compute was created.
    :vartype created_on: ~datetime.datetime
    :ivar modified_on: The time at which the compute was last modified.
    :vartype modified_on: ~datetime.datetime
    :ivar resource_id: ARM resource id of the underlying compute.
    :vartype resource_id: str
    :ivar provisioning_errors: Errors during provisioning.
    :vartype provisioning_errors: list[~azure.mgmt.machinelearningservices.models.ErrorResponse]
    :ivar is_attached_compute: Indicating whether the compute was provisioned by user and brought
     from outside if true, or machine learning service provisioned it if false.
    :vartype is_attached_compute: bool
    :ivar disable_local_auth: Opt-out of local authentication and ensure customers can use only MSI
     and AAD exclusively for authentication.
    :vartype disable_local_auth: bool
    """

    _validation = {
        'compute_type': {'required': True},
        'provisioning_state': {'readonly': True},
        'created_on': {'readonly': True},
        'modified_on': {'readonly': True},
        'provisioning_errors': {'readonly': True},
        'is_attached_compute': {'readonly': True},
    }

    _attribute_map = {
        'properties': {'key': 'properties', 'type': 'DatabricksProperties'},
        'compute_type': {'key': 'computeType', 'type': 'str'},
        'compute_location': {'key': 'computeLocation', 'type': 'str'},
        'provisioning_state': {'key': 'provisioningState', 'type': 'str'},
        'description': {'key': 'description', 'type': 'str'},
        'created_on': {'key': 'createdOn', 'type': 'iso-8601'},
        'modified_on': {'key': 'modifiedOn', 'type': 'iso-8601'},
        'resource_id': {'key': 'resourceId', 'type': 'str'},
        'provisioning_errors': {'key': 'provisioningErrors', 'type': '[ErrorResponse]'},
        'is_attached_compute': {'key': 'isAttachedCompute', 'type': 'bool'},
        'disable_local_auth': {'key': 'disableLocalAuth', 'type': 'bool'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword properties: Properties of Databricks.
        :paramtype properties: ~azure.mgmt.machinelearningservices.models.DatabricksProperties
        :keyword compute_location: Location for the underlying compute.
        :paramtype compute_location: str
        :keyword description: The description of the Machine Learning compute.
        :paramtype description: str
        :keyword resource_id: ARM resource id of the underlying compute.
        :paramtype resource_id: str
        :keyword disable_local_auth: Opt-out of local authentication and ensure customers can use only
         MSI and AAD exclusively for authentication.
        :paramtype disable_local_auth: bool
        """
        super(Databricks, self).__init__(**kwargs)
        self.properties = kwargs.get('properties', None)
        self.compute_type = 'Databricks'  # type: str
        self.compute_location = kwargs.get('compute_location', None)
        self.provisioning_state = None
        self.description = kwargs.get('description', None)
        self.created_on = None
        self.modified_on = None
        self.resource_id = kwargs.get('resource_id', None)
        self.provisioning_errors = None
        self.is_attached_compute = None
        self.disable_local_auth = kwargs.get('disable_local_auth', None)


class DatabricksComputeSecretsProperties(msrest.serialization.Model):
    """Properties of Databricks Compute Secrets.

    :ivar databricks_access_token: access token for databricks account.
    :vartype databricks_access_token: str
    """

    _attribute_map = {
        'databricks_access_token': {'key': 'databricksAccessToken', 'type': 'str'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword databricks_access_token: access token for databricks account.
        :paramtype databricks_access_token: str
        """
        super(DatabricksComputeSecretsProperties, self).__init__(**kwargs)
        self.databricks_access_token = kwargs.get('databricks_access_token', None)


class DatabricksComputeSecrets(ComputeSecrets, DatabricksComputeSecretsProperties):
    """Secrets related to a Machine Learning compute based on Databricks.

    All required parameters must be populated in order to send to Azure.

    :ivar databricks_access_token: access token for databricks account.
    :vartype databricks_access_token: str
    :ivar compute_type: Required. The type of compute.Constant filled by server. Possible values
     include: "AKS", "Kubernetes", "AmlCompute", "ComputeInstance", "DataFactory", "VirtualMachine",
     "HDInsight", "Databricks", "DataLakeAnalytics", "SynapseSpark".
    :vartype compute_type: str or ~azure.mgmt.machinelearningservices.models.ComputeType
    """

    _validation = {
        'compute_type': {'required': True},
    }

    _attribute_map = {
        'databricks_access_token': {'key': 'databricksAccessToken', 'type': 'str'},
        'compute_type': {'key': 'computeType', 'type': 'str'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword databricks_access_token: access token for databricks account.
        :paramtype databricks_access_token: str
        """
        super(DatabricksComputeSecrets, self).__init__(**kwargs)
        self.databricks_access_token = kwargs.get('databricks_access_token', None)
        self.compute_type = 'Databricks'  # type: str


class DatabricksProperties(msrest.serialization.Model):
    """Properties of Databricks.

    :ivar databricks_access_token: Databricks access token.
    :vartype databricks_access_token: str
    :ivar workspace_url: Workspace Url.
    :vartype workspace_url: str
    """

    _attribute_map = {
        'databricks_access_token': {'key': 'databricksAccessToken', 'type': 'str'},
        'workspace_url': {'key': 'workspaceUrl', 'type': 'str'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword databricks_access_token: Databricks access token.
        :paramtype databricks_access_token: str
        :keyword workspace_url: Workspace Url.
        :paramtype workspace_url: str
        """
        super(DatabricksProperties, self).__init__(**kwargs)
        self.databricks_access_token = kwargs.get('databricks_access_token', None)
        self.workspace_url = kwargs.get('workspace_url', None)


class DataCollector(msrest.serialization.Model):
    """DataCollector.

    All required parameters must be populated in order to send to Azure.

    :ivar collections: Required. [Required] The collection configuration. Each collection has it
     own configuration to collect model data and the name of collection can be arbitrary string.
     Model data collector can be used for either payload logging or custom logging or both of them.
     Collection request and response are reserved for payload logging, others are for custom
     logging.
    :vartype collections: dict[str, ~azure.mgmt.machinelearningservices.models.Collection]
    :ivar request_logging: The request logging configuration for mdc, it includes advanced logging
     settings for all collections. It's optional.
    :vartype request_logging: ~azure.mgmt.machinelearningservices.models.RequestLogging
    :ivar rolling_rate: When model data is collected to blob storage, we need to roll the data to
     different path to avoid logging all of them in a single blob file.
     If the rolling rate is hour, all data will be collected in the blob path /yyyy/MM/dd/HH/.
     If it's day, all data will be collected in blob path /yyyy/MM/dd/.
     The other benefit of rolling path is that model monitoring ui is able to select a time range
     of data very quickly. Possible values include: "Year", "Month", "Day", "Hour", "Minute".
    :vartype rolling_rate: str or ~azure.mgmt.machinelearningservices.models.RollingRateType
    """

    _validation = {
        'collections': {'required': True},
    }

    _attribute_map = {
        'collections': {'key': 'collections', 'type': '{Collection}'},
        'request_logging': {'key': 'requestLogging', 'type': 'RequestLogging'},
        'rolling_rate': {'key': 'rollingRate', 'type': 'str'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword collections: Required. [Required] The collection configuration. Each collection has it
         own configuration to collect model data and the name of collection can be arbitrary string.
         Model data collector can be used for either payload logging or custom logging or both of them.
         Collection request and response are reserved for payload logging, others are for custom
         logging.
        :paramtype collections: dict[str, ~azure.mgmt.machinelearningservices.models.Collection]
        :keyword request_logging: The request logging configuration for mdc, it includes advanced
         logging settings for all collections. It's optional.
        :paramtype request_logging: ~azure.mgmt.machinelearningservices.models.RequestLogging
        :keyword rolling_rate: When model data is collected to blob storage, we need to roll the data
         to different path to avoid logging all of them in a single blob file.
         If the rolling rate is hour, all data will be collected in the blob path /yyyy/MM/dd/HH/.
         If it's day, all data will be collected in blob path /yyyy/MM/dd/.
         The other benefit of rolling path is that model monitoring ui is able to select a time range
         of data very quickly. Possible values include: "Year", "Month", "Day", "Hour", "Minute".
        :paramtype rolling_rate: str or ~azure.mgmt.machinelearningservices.models.RollingRateType
        """
        super(DataCollector, self).__init__(**kwargs)
        self.collections = kwargs['collections']
        self.request_logging = kwargs.get('request_logging', None)
        self.rolling_rate = kwargs.get('rolling_rate', None)


class DataContainer(ProxyResource):
    """Azure Resource Manager resource envelope.

    Variables are only populated by the server, and will be ignored when sending a request.

    All required parameters must be populated in order to send to Azure.

    :ivar id: Fully qualified resource ID for the resource. Ex -
     /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}.
    :vartype id: str
    :ivar name: The name of the resource.
    :vartype name: str
    :ivar type: The type of the resource. E.g. "Microsoft.Compute/virtualMachines" or
     "Microsoft.Storage/storageAccounts".
    :vartype type: str
    :ivar system_data: Azure Resource Manager metadata containing createdBy and modifiedBy
     information.
    :vartype system_data: ~azure.mgmt.machinelearningservices.models.SystemData
    :ivar properties: Required. [Required] Additional attributes of the entity.
    :vartype properties: ~azure.mgmt.machinelearningservices.models.DataContainerProperties
    """

    _validation = {
        'id': {'readonly': True},
        'name': {'readonly': True},
        'type': {'readonly': True},
        'system_data': {'readonly': True},
        'properties': {'required': True},
    }

    _attribute_map = {
        'id': {'key': 'id', 'type': 'str'},
        'name': {'key': 'name', 'type': 'str'},
        'type': {'key': 'type', 'type': 'str'},
        'system_data': {'key': 'systemData', 'type': 'SystemData'},
        'properties': {'key': 'properties', 'type': 'DataContainerProperties'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword properties: Required. [Required] Additional attributes of the entity.
        :paramtype properties: ~azure.mgmt.machinelearningservices.models.DataContainerProperties
        """
        super(DataContainer, self).__init__(**kwargs)
        self.properties = kwargs['properties']


class DataContainerProperties(AssetContainer):
    """Container for data asset versions.

    Variables are only populated by the server, and will be ignored when sending a request.

    All required parameters must be populated in order to send to Azure.

    :ivar description: The asset description text.
    :vartype description: str
    :ivar properties: The asset property dictionary.
    :vartype properties: dict[str, str]
    :ivar tags: A set of tags. Tag dictionary. Tags can be added, removed, and updated.
    :vartype tags: dict[str, str]
    :ivar is_archived: Is the asset archived?.
    :vartype is_archived: bool
    :ivar latest_version: The latest version inside this container.
    :vartype latest_version: str
    :ivar next_version: The next auto incremental version.
    :vartype next_version: str
    :ivar data_type: Required. [Required] Specifies the type of data. Possible values include:
     "uri_file", "uri_folder", "mltable".
    :vartype data_type: str or ~azure.mgmt.machinelearningservices.models.DataType
    """

    _validation = {
        'latest_version': {'readonly': True},
        'next_version': {'readonly': True},
        'data_type': {'required': True},
    }

    _attribute_map = {
        'description': {'key': 'description', 'type': 'str'},
        'properties': {'key': 'properties', 'type': '{str}'},
        'tags': {'key': 'tags', 'type': '{str}'},
        'is_archived': {'key': 'isArchived', 'type': 'bool'},
        'latest_version': {'key': 'latestVersion', 'type': 'str'},
        'next_version': {'key': 'nextVersion', 'type': 'str'},
        'data_type': {'key': 'dataType', 'type': 'str'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword description: The asset description text.
        :paramtype description: str
        :keyword properties: The asset property dictionary.
        :paramtype properties: dict[str, str]
        :keyword tags: A set of tags. Tag dictionary. Tags can be added, removed, and updated.
        :paramtype tags: dict[str, str]
        :keyword is_archived: Is the asset archived?.
        :paramtype is_archived: bool
        :keyword data_type: Required. [Required] Specifies the type of data. Possible values include:
         "uri_file", "uri_folder", "mltable".
        :paramtype data_type: str or ~azure.mgmt.machinelearningservices.models.DataType
        """
        super(DataContainerProperties, self).__init__(**kwargs)
        self.data_type = kwargs['data_type']


class DataContainerResourceArmPaginatedResult(msrest.serialization.Model):
    """A paginated list of DataContainer entities.

    :ivar next_link: The link to the next page of DataContainer objects. If null, there are no
     additional pages.
    :vartype next_link: str
    :ivar value: An array of objects of type DataContainer.
    :vartype value: list[~azure.mgmt.machinelearningservices.models.DataContainer]
    """

    _attribute_map = {
        'next_link': {'key': 'nextLink', 'type': 'str'},
        'value': {'key': 'value', 'type': '[DataContainer]'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword next_link: The link to the next page of DataContainer objects. If null, there are no
         additional pages.
        :paramtype next_link: str
        :keyword value: An array of objects of type DataContainer.
        :paramtype value: list[~azure.mgmt.machinelearningservices.models.DataContainer]
        """
        super(DataContainerResourceArmPaginatedResult, self).__init__(**kwargs)
        self.next_link = kwargs.get('next_link', None)
        self.value = kwargs.get('value', None)


class DataDriftMonitoringSignal(MonitoringSignalBase):
    """DataDriftMonitoringSignal.

    All required parameters must be populated in order to send to Azure.

    :ivar notification_types: The current notification mode for this signal.
    :vartype notification_types: list[str or
     ~azure.mgmt.machinelearningservices.models.MonitoringNotificationType]
    :ivar properties: Property dictionary. Properties can be added, but not removed or altered.
    :vartype properties: dict[str, str]
    :ivar signal_type: Required. [Required] Specifies the type of signal to monitor.Constant filled
     by server. Possible values include: "DataDrift", "PredictionDrift", "DataQuality",
     "FeatureAttributionDrift", "Custom".
    :vartype signal_type: str or ~azure.mgmt.machinelearningservices.models.MonitoringSignalType
    :ivar feature_data_type_override: A dictionary that maps feature names to their respective data
     types.
    :vartype feature_data_type_override: dict[str, str or
     ~azure.mgmt.machinelearningservices.models.MonitoringFeatureDataType]
    :ivar feature_importance_settings: The settings for computing feature importance.
    :vartype feature_importance_settings:
     ~azure.mgmt.machinelearningservices.models.FeatureImportanceSettings
    :ivar features: The feature filter which identifies which feature to calculate drift over.
    :vartype features: ~azure.mgmt.machinelearningservices.models.MonitoringFeatureFilterBase
    :ivar metric_thresholds: Required. [Required] A list of metrics to calculate and their
     associated thresholds.
    :vartype metric_thresholds:
     list[~azure.mgmt.machinelearningservices.models.DataDriftMetricThresholdBase]
    :ivar production_data: Required. [Required] The data which drift will be calculated for.
    :vartype production_data: ~azure.mgmt.machinelearningservices.models.MonitoringInputDataBase
    :ivar reference_data: Required. [Required] The data to calculate drift against.
    :vartype reference_data: ~azure.mgmt.machinelearningservices.models.MonitoringInputDataBase
    """

    _validation = {
        'signal_type': {'required': True},
        'metric_thresholds': {'required': True},
        'production_data': {'required': True},
        'reference_data': {'required': True},
    }

    _attribute_map = {
        'notification_types': {'key': 'notificationTypes', 'type': '[str]'},
        'properties': {'key': 'properties', 'type': '{str}'},
        'signal_type': {'key': 'signalType', 'type': 'str'},
        'feature_data_type_override': {'key': 'featureDataTypeOverride', 'type': '{str}'},
        'feature_importance_settings': {'key': 'featureImportanceSettings', 'type': 'FeatureImportanceSettings'},
        'features': {'key': 'features', 'type': 'MonitoringFeatureFilterBase'},
        'metric_thresholds': {'key': 'metricThresholds', 'type': '[DataDriftMetricThresholdBase]'},
        'production_data': {'key': 'productionData', 'type': 'MonitoringInputDataBase'},
        'reference_data': {'key': 'referenceData', 'type': 'MonitoringInputDataBase'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword notification_types: The current notification mode for this signal.
        :paramtype notification_types: list[str or
         ~azure.mgmt.machinelearningservices.models.MonitoringNotificationType]
        :keyword properties: Property dictionary. Properties can be added, but not removed or altered.
        :paramtype properties: dict[str, str]
        :keyword feature_data_type_override: A dictionary that maps feature names to their respective
         data types.
        :paramtype feature_data_type_override: dict[str, str or
         ~azure.mgmt.machinelearningservices.models.MonitoringFeatureDataType]
        :keyword feature_importance_settings: The settings for computing feature importance.
        :paramtype feature_importance_settings:
         ~azure.mgmt.machinelearningservices.models.FeatureImportanceSettings
        :keyword features: The feature filter which identifies which feature to calculate drift over.
        :paramtype features: ~azure.mgmt.machinelearningservices.models.MonitoringFeatureFilterBase
        :keyword metric_thresholds: Required. [Required] A list of metrics to calculate and their
         associated thresholds.
        :paramtype metric_thresholds:
         list[~azure.mgmt.machinelearningservices.models.DataDriftMetricThresholdBase]
        :keyword production_data: Required. [Required] The data which drift will be calculated for.
        :paramtype production_data: ~azure.mgmt.machinelearningservices.models.MonitoringInputDataBase
        :keyword reference_data: Required. [Required] The data to calculate drift against.
        :paramtype reference_data: ~azure.mgmt.machinelearningservices.models.MonitoringInputDataBase
        """
        super(DataDriftMonitoringSignal, self).__init__(**kwargs)
        self.signal_type = 'DataDrift'  # type: str
        self.feature_data_type_override = kwargs.get('feature_data_type_override', None)
        self.feature_importance_settings = kwargs.get('feature_importance_settings', None)
        self.features = kwargs.get('features', None)
        self.metric_thresholds = kwargs['metric_thresholds']
        self.production_data = kwargs['production_data']
        self.reference_data = kwargs['reference_data']


class DataFactory(Compute):
    """A DataFactory compute.

    Variables are only populated by the server, and will be ignored when sending a request.

    All required parameters must be populated in order to send to Azure.

    :ivar compute_type: Required. The type of compute.Constant filled by server. Possible values
     include: "AKS", "Kubernetes", "AmlCompute", "ComputeInstance", "DataFactory", "VirtualMachine",
     "HDInsight", "Databricks", "DataLakeAnalytics", "SynapseSpark".
    :vartype compute_type: str or ~azure.mgmt.machinelearningservices.models.ComputeType
    :ivar compute_location: Location for the underlying compute.
    :vartype compute_location: str
    :ivar provisioning_state: The provision state of the cluster. Valid values are Unknown,
     Updating, Provisioning, Succeeded, and Failed. Possible values include: "Unknown", "Updating",
     "Creating", "Deleting", "Succeeded", "Failed", "Canceled".
    :vartype provisioning_state: str or
     ~azure.mgmt.machinelearningservices.models.ProvisioningState
    :ivar description: The description of the Machine Learning compute.
    :vartype description: str
    :ivar created_on: The time at which the compute was created.
    :vartype created_on: ~datetime.datetime
    :ivar modified_on: The time at which the compute was last modified.
    :vartype modified_on: ~datetime.datetime
    :ivar resource_id: ARM resource id of the underlying compute.
    :vartype resource_id: str
    :ivar provisioning_errors: Errors during provisioning.
    :vartype provisioning_errors: list[~azure.mgmt.machinelearningservices.models.ErrorResponse]
    :ivar is_attached_compute: Indicating whether the compute was provisioned by user and brought
     from outside if true, or machine learning service provisioned it if false.
    :vartype is_attached_compute: bool
    :ivar disable_local_auth: Opt-out of local authentication and ensure customers can use only MSI
     and AAD exclusively for authentication.
    :vartype disable_local_auth: bool
    """

    _validation = {
        'compute_type': {'required': True},
        'provisioning_state': {'readonly': True},
        'created_on': {'readonly': True},
        'modified_on': {'readonly': True},
        'provisioning_errors': {'readonly': True},
        'is_attached_compute': {'readonly': True},
    }

    _attribute_map = {
        'compute_type': {'key': 'computeType', 'type': 'str'},
        'compute_location': {'key': 'computeLocation', 'type': 'str'},
        'provisioning_state': {'key': 'provisioningState', 'type': 'str'},
        'description': {'key': 'description', 'type': 'str'},
        'created_on': {'key': 'createdOn', 'type': 'iso-8601'},
        'modified_on': {'key': 'modifiedOn', 'type': 'iso-8601'},
        'resource_id': {'key': 'resourceId', 'type': 'str'},
        'provisioning_errors': {'key': 'provisioningErrors', 'type': '[ErrorResponse]'},
        'is_attached_compute': {'key': 'isAttachedCompute', 'type': 'bool'},
        'disable_local_auth': {'key': 'disableLocalAuth', 'type': 'bool'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword compute_location: Location for the underlying compute.
        :paramtype compute_location: str
        :keyword description: The description of the Machine Learning compute.
        :paramtype description: str
        :keyword resource_id: ARM resource id of the underlying compute.
        :paramtype resource_id: str
        :keyword disable_local_auth: Opt-out of local authentication and ensure customers can use only
         MSI and AAD exclusively for authentication.
        :paramtype disable_local_auth: bool
        """
        super(DataFactory, self).__init__(**kwargs)
        self.compute_type = 'DataFactory'  # type: str


class DataGenerationVertical(msrest.serialization.Model):
    """DataGenerationVertical.

    You probably want to use the sub-classes and not this class directly. Known
    sub-classes are: LabelGeneration.

    All required parameters must be populated in order to send to Azure.

    :ivar data_generation_task_type: Required. [Required] DataGeneration Task type. Possible values
     include: "Conversation", "Math", "Nli", "NluQa", "Summarization".
    :vartype data_generation_task_type: str or
     ~azure.mgmt.machinelearningservices.models.DataGenerationTaskType
    :ivar data_generation_type: Required. [Required] Enum to determine the type of Data
     Generation.Constant filled by server. Possible values include: "LabelGeneration",
     "DataGeneration".
    :vartype data_generation_type: str or
     ~azure.mgmt.machinelearningservices.models.DataGenerationType
    :ivar prompt_settings: Prompt Settings.
    :vartype prompt_settings: ~azure.mgmt.machinelearningservices.models.PromptSettings
    :ivar teacher_model_endpoint: Required. [Required] Teacher Model Endpoint Details.
    :vartype teacher_model_endpoint:
     ~azure.mgmt.machinelearningservices.models.TeacherModelEndpoint
    :ivar teacher_model_settings:
    :vartype teacher_model_settings:
     ~azure.mgmt.machinelearningservices.models.TeacherModelSettings
    """

    _validation = {
        'data_generation_task_type': {'required': True},
        'data_generation_type': {'required': True},
        'teacher_model_endpoint': {'required': True},
    }

    _attribute_map = {
        'data_generation_task_type': {'key': 'dataGenerationTaskType', 'type': 'str'},
        'data_generation_type': {'key': 'dataGenerationType', 'type': 'str'},
        'prompt_settings': {'key': 'promptSettings', 'type': 'PromptSettings'},
        'teacher_model_endpoint': {'key': 'teacherModelEndpoint', 'type': 'TeacherModelEndpoint'},
        'teacher_model_settings': {'key': 'teacherModelSettings', 'type': 'TeacherModelSettings'},
    }

    _subtype_map = {
        'data_generation_type': {'LabelGeneration': 'LabelGeneration'}
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword data_generation_task_type: Required. [Required] DataGeneration Task type. Possible
         values include: "Conversation", "Math", "Nli", "NluQa", "Summarization".
        :paramtype data_generation_task_type: str or
         ~azure.mgmt.machinelearningservices.models.DataGenerationTaskType
        :keyword prompt_settings: Prompt Settings.
        :paramtype prompt_settings: ~azure.mgmt.machinelearningservices.models.PromptSettings
        :keyword teacher_model_endpoint: Required. [Required] Teacher Model Endpoint Details.
        :paramtype teacher_model_endpoint:
         ~azure.mgmt.machinelearningservices.models.TeacherModelEndpoint
        :keyword teacher_model_settings:
        :paramtype teacher_model_settings:
         ~azure.mgmt.machinelearningservices.models.TeacherModelSettings
        """
        super(DataGenerationVertical, self).__init__(**kwargs)
        self.data_generation_task_type = kwargs['data_generation_task_type']
        self.data_generation_type = None  # type: Optional[str]
        self.prompt_settings = kwargs.get('prompt_settings', None)
        self.teacher_model_endpoint = kwargs['teacher_model_endpoint']
        self.teacher_model_settings = kwargs.get('teacher_model_settings', None)


class DataLakeAnalyticsSchema(msrest.serialization.Model):
    """DataLakeAnalyticsSchema.

    :ivar properties:
    :vartype properties:
     ~azure.mgmt.machinelearningservices.models.DataLakeAnalyticsSchemaProperties
    """

    _attribute_map = {
        'properties': {'key': 'properties', 'type': 'DataLakeAnalyticsSchemaProperties'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword properties:
        :paramtype properties:
         ~azure.mgmt.machinelearningservices.models.DataLakeAnalyticsSchemaProperties
        """
        super(DataLakeAnalyticsSchema, self).__init__(**kwargs)
        self.properties = kwargs.get('properties', None)


class DataLakeAnalytics(Compute, DataLakeAnalyticsSchema):
    """A DataLakeAnalytics compute.

    Variables are only populated by the server, and will be ignored when sending a request.

    All required parameters must be populated in order to send to Azure.

    :ivar properties:
    :vartype properties:
     ~azure.mgmt.machinelearningservices.models.DataLakeAnalyticsSchemaProperties
    :ivar compute_type: Required. The type of compute.Constant filled by server. Possible values
     include: "AKS", "Kubernetes", "AmlCompute", "ComputeInstance", "DataFactory", "VirtualMachine",
     "HDInsight", "Databricks", "DataLakeAnalytics", "SynapseSpark".
    :vartype compute_type: str or ~azure.mgmt.machinelearningservices.models.ComputeType
    :ivar compute_location: Location for the underlying compute.
    :vartype compute_location: str
    :ivar provisioning_state: The provision state of the cluster. Valid values are Unknown,
     Updating, Provisioning, Succeeded, and Failed. Possible values include: "Unknown", "Updating",
     "Creating", "Deleting", "Succeeded", "Failed", "Canceled".
    :vartype provisioning_state: str or
     ~azure.mgmt.machinelearningservices.models.ProvisioningState
    :ivar description: The description of the Machine Learning compute.
    :vartype description: str
    :ivar created_on: The time at which the compute was created.
    :vartype created_on: ~datetime.datetime
    :ivar modified_on: The time at which the compute was last modified.
    :vartype modified_on: ~datetime.datetime
    :ivar resource_id: ARM resource id of the underlying compute.
    :vartype resource_id: str
    :ivar provisioning_errors: Errors during provisioning.
    :vartype provisioning_errors: list[~azure.mgmt.machinelearningservices.models.ErrorResponse]
    :ivar is_attached_compute: Indicating whether the compute was provisioned by user and brought
     from outside if true, or machine learning service provisioned it if false.
    :vartype is_attached_compute: bool
    :ivar disable_local_auth: Opt-out of local authentication and ensure customers can use only MSI
     and AAD exclusively for authentication.
    :vartype disable_local_auth: bool
    """

    _validation = {
        'compute_type': {'required': True},
        'provisioning_state': {'readonly': True},
        'created_on': {'readonly': True},
        'modified_on': {'readonly': True},
        'provisioning_errors': {'readonly': True},
        'is_attached_compute': {'readonly': True},
    }

    _attribute_map = {
        'properties': {'key': 'properties', 'type': 'DataLakeAnalyticsSchemaProperties'},
        'compute_type': {'key': 'computeType', 'type': 'str'},
        'compute_location': {'key': 'computeLocation', 'type': 'str'},
        'provisioning_state': {'key': 'provisioningState', 'type': 'str'},
        'description': {'key': 'description', 'type': 'str'},
        'created_on': {'key': 'createdOn', 'type': 'iso-8601'},
        'modified_on': {'key': 'modifiedOn', 'type': 'iso-8601'},
        'resource_id': {'key': 'resourceId', 'type': 'str'},
        'provisioning_errors': {'key': 'provisioningErrors', 'type': '[ErrorResponse]'},
        'is_attached_compute': {'key': 'isAttachedCompute', 'type': 'bool'},
        'disable_local_auth': {'key': 'disableLocalAuth', 'type': 'bool'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword properties:
        :paramtype properties:
         ~azure.mgmt.machinelearningservices.models.DataLakeAnalyticsSchemaProperties
        :keyword compute_location: Location for the underlying compute.
        :paramtype compute_location: str
        :keyword description: The description of the Machine Learning compute.
        :paramtype description: str
        :keyword resource_id: ARM resource id of the underlying compute.
        :paramtype resource_id: str
        :keyword disable_local_auth: Opt-out of local authentication and ensure customers can use only
         MSI and AAD exclusively for authentication.
        :paramtype disable_local_auth: bool
        """
        super(DataLakeAnalytics, self).__init__(**kwargs)
        self.properties = kwargs.get('properties', None)
        self.compute_type = 'DataLakeAnalytics'  # type: str
        self.compute_location = kwargs.get('compute_location', None)
        self.provisioning_state = None
        self.description = kwargs.get('description', None)
        self.created_on = None
        self.modified_on = None
        self.resource_id = kwargs.get('resource_id', None)
        self.provisioning_errors = None
        self.is_attached_compute = None
        self.disable_local_auth = kwargs.get('disable_local_auth', None)


class DataLakeAnalyticsSchemaProperties(msrest.serialization.Model):
    """DataLakeAnalyticsSchemaProperties.

    :ivar data_lake_store_account_name: DataLake Store Account Name.
    :vartype data_lake_store_account_name: str
    """

    _attribute_map = {
        'data_lake_store_account_name': {'key': 'dataLakeStoreAccountName', 'type': 'str'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword data_lake_store_account_name: DataLake Store Account Name.
        :paramtype data_lake_store_account_name: str
        """
        super(DataLakeAnalyticsSchemaProperties, self).__init__(**kwargs)
        self.data_lake_store_account_name = kwargs.get('data_lake_store_account_name', None)


class DataPathAssetReference(AssetReferenceBase):
    """Reference to an asset via its path in a datastore.

    All required parameters must be populated in order to send to Azure.

    :ivar reference_type: Required. [Required] Specifies the type of asset reference.Constant
     filled by server. Possible values include: "Id", "DataPath", "OutputPath".
    :vartype reference_type: str or ~azure.mgmt.machinelearningservices.models.ReferenceType
    :ivar datastore_id: ARM resource ID of the datastore where the asset is located.
    :vartype datastore_id: str
    :ivar path: The path of the file/directory in the datastore.
    :vartype path: str
    """

    _validation = {
        'reference_type': {'required': True},
    }

    _attribute_map = {
        'reference_type': {'key': 'referenceType', 'type': 'str'},
        'datastore_id': {'key': 'datastoreId', 'type': 'str'},
        'path': {'key': 'path', 'type': 'str'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword datastore_id: ARM resource ID of the datastore where the asset is located.
        :paramtype datastore_id: str
        :keyword path: The path of the file/directory in the datastore.
        :paramtype path: str
        """
        super(DataPathAssetReference, self).__init__(**kwargs)
        self.reference_type = 'DataPath'  # type: str
        self.datastore_id = kwargs.get('datastore_id', None)
        self.path = kwargs.get('path', None)


class DataQualityMonitoringSignal(MonitoringSignalBase):
    """DataQualityMonitoringSignal.

    All required parameters must be populated in order to send to Azure.

    :ivar notification_types: The current notification mode for this signal.
    :vartype notification_types: list[str or
     ~azure.mgmt.machinelearningservices.models.MonitoringNotificationType]
    :ivar properties: Property dictionary. Properties can be added, but not removed or altered.
    :vartype properties: dict[str, str]
    :ivar signal_type: Required. [Required] Specifies the type of signal to monitor.Constant filled
     by server. Possible values include: "DataDrift", "PredictionDrift", "DataQuality",
     "FeatureAttributionDrift", "Custom".
    :vartype signal_type: str or ~azure.mgmt.machinelearningservices.models.MonitoringSignalType
    :ivar feature_data_type_override: A dictionary that maps feature names to their respective data
     types.
    :vartype feature_data_type_override: dict[str, str or
     ~azure.mgmt.machinelearningservices.models.MonitoringFeatureDataType]
    :ivar feature_importance_settings: The settings for computing feature importance.
    :vartype feature_importance_settings:
     ~azure.mgmt.machinelearningservices.models.FeatureImportanceSettings
    :ivar features: The features to calculate drift over.
    :vartype features: ~azure.mgmt.machinelearningservices.models.MonitoringFeatureFilterBase
    :ivar metric_thresholds: Required. [Required] A list of metrics to calculate and their
     associated thresholds.
    :vartype metric_thresholds:
     list[~azure.mgmt.machinelearningservices.models.DataQualityMetricThresholdBase]
    :ivar production_data: Required. [Required] The data produced by the production service which
     drift will be calculated for.
    :vartype production_data: ~azure.mgmt.machinelearningservices.models.MonitoringInputDataBase
    :ivar reference_data: Required. [Required] The data to calculate drift against.
    :vartype reference_data: ~azure.mgmt.machinelearningservices.models.MonitoringInputDataBase
    """

    _validation = {
        'signal_type': {'required': True},
        'metric_thresholds': {'required': True},
        'production_data': {'required': True},
        'reference_data': {'required': True},
    }

    _attribute_map = {
        'notification_types': {'key': 'notificationTypes', 'type': '[str]'},
        'properties': {'key': 'properties', 'type': '{str}'},
        'signal_type': {'key': 'signalType', 'type': 'str'},
        'feature_data_type_override': {'key': 'featureDataTypeOverride', 'type': '{str}'},
        'feature_importance_settings': {'key': 'featureImportanceSettings', 'type': 'FeatureImportanceSettings'},
        'features': {'key': 'features', 'type': 'MonitoringFeatureFilterBase'},
        'metric_thresholds': {'key': 'metricThresholds', 'type': '[DataQualityMetricThresholdBase]'},
        'production_data': {'key': 'productionData', 'type': 'MonitoringInputDataBase'},
        'reference_data': {'key': 'referenceData', 'type': 'MonitoringInputDataBase'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword notification_types: The current notification mode for this signal.
        :paramtype notification_types: list[str or
         ~azure.mgmt.machinelearningservices.models.MonitoringNotificationType]
        :keyword properties: Property dictionary. Properties can be added, but not removed or altered.
        :paramtype properties: dict[str, str]
        :keyword feature_data_type_override: A dictionary that maps feature names to their respective
         data types.
        :paramtype feature_data_type_override: dict[str, str or
         ~azure.mgmt.machinelearningservices.models.MonitoringFeatureDataType]
        :keyword feature_importance_settings: The settings for computing feature importance.
        :paramtype feature_importance_settings:
         ~azure.mgmt.machinelearningservices.models.FeatureImportanceSettings
        :keyword features: The features to calculate drift over.
        :paramtype features: ~azure.mgmt.machinelearningservices.models.MonitoringFeatureFilterBase
        :keyword metric_thresholds: Required. [Required] A list of metrics to calculate and their
         associated thresholds.
        :paramtype metric_thresholds:
         list[~azure.mgmt.machinelearningservices.models.DataQualityMetricThresholdBase]
        :keyword production_data: Required. [Required] The data produced by the production service
         which drift will be calculated for.
        :paramtype production_data: ~azure.mgmt.machinelearningservices.models.MonitoringInputDataBase
        :keyword reference_data: Required. [Required] The data to calculate drift against.
        :paramtype reference_data: ~azure.mgmt.machinelearningservices.models.MonitoringInputDataBase
        """
        super(DataQualityMonitoringSignal, self).__init__(**kwargs)
        self.signal_type = 'DataQuality'  # type: str
        self.feature_data_type_override = kwargs.get('feature_data_type_override', None)
        self.feature_importance_settings = kwargs.get('feature_importance_settings', None)
        self.features = kwargs.get('features', None)
        self.metric_thresholds = kwargs['metric_thresholds']
        self.production_data = kwargs['production_data']
        self.reference_data = kwargs['reference_data']


class Datastore(ProxyResource):
    """Azure Resource Manager resource envelope.

    Variables are only populated by the server, and will be ignored when sending a request.

    All required parameters must be populated in order to send to Azure.

    :ivar id: Fully qualified resource ID for the resource. Ex -
     /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}.
    :vartype id: str
    :ivar name: The name of the resource.
    :vartype name: str
    :ivar type: The type of the resource. E.g. "Microsoft.Compute/virtualMachines" or
     "Microsoft.Storage/storageAccounts".
    :vartype type: str
    :ivar system_data: Azure Resource Manager metadata containing createdBy and modifiedBy
     information.
    :vartype system_data: ~azure.mgmt.machinelearningservices.models.SystemData
    :ivar properties: Required. [Required] Additional attributes of the entity.
    :vartype properties: ~azure.mgmt.machinelearningservices.models.DatastoreProperties
    """

    _validation = {
        'id': {'readonly': True},
        'name': {'readonly': True},
        'type': {'readonly': True},
        'system_data': {'readonly': True},
        'properties': {'required': True},
    }

    _attribute_map = {
        'id': {'key': 'id', 'type': 'str'},
        'name': {'key': 'name', 'type': 'str'},
        'type': {'key': 'type', 'type': 'str'},
        'system_data': {'key': 'systemData', 'type': 'SystemData'},
        'properties': {'key': 'properties', 'type': 'DatastoreProperties'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword properties: Required. [Required] Additional attributes of the entity.
        :paramtype properties: ~azure.mgmt.machinelearningservices.models.DatastoreProperties
        """
        super(Datastore, self).__init__(**kwargs)
        self.properties = kwargs['properties']


class DatastoreResourceArmPaginatedResult(msrest.serialization.Model):
    """A paginated list of Datastore entities.

    :ivar next_link: The link to the next page of Datastore objects. If null, there are no
     additional pages.
    :vartype next_link: str
    :ivar value: An array of objects of type Datastore.
    :vartype value: list[~azure.mgmt.machinelearningservices.models.Datastore]
    """

    _attribute_map = {
        'next_link': {'key': 'nextLink', 'type': 'str'},
        'value': {'key': 'value', 'type': '[Datastore]'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword next_link: The link to the next page of Datastore objects. If null, there are no
         additional pages.
        :paramtype next_link: str
        :keyword value: An array of objects of type Datastore.
        :paramtype value: list[~azure.mgmt.machinelearningservices.models.Datastore]
        """
        super(DatastoreResourceArmPaginatedResult, self).__init__(**kwargs)
        self.next_link = kwargs.get('next_link', None)
        self.value = kwargs.get('value', None)


class DataVersionBase(ProxyResource):
    """Azure Resource Manager resource envelope.

    Variables are only populated by the server, and will be ignored when sending a request.

    All required parameters must be populated in order to send to Azure.

    :ivar id: Fully qualified resource ID for the resource. Ex -
     /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}.
    :vartype id: str
    :ivar name: The name of the resource.
    :vartype name: str
    :ivar type: The type of the resource. E.g. "Microsoft.Compute/virtualMachines" or
     "Microsoft.Storage/storageAccounts".
    :vartype type: str
    :ivar system_data: Azure Resource Manager metadata containing createdBy and modifiedBy
     information.
    :vartype system_data: ~azure.mgmt.machinelearningservices.models.SystemData
    :ivar properties: Required. [Required] Additional attributes of the entity.
    :vartype properties: ~azure.mgmt.machinelearningservices.models.DataVersionBaseProperties
    """

    _validation = {
        'id': {'readonly': True},
        'name': {'readonly': True},
        'type': {'readonly': True},
        'system_data': {'readonly': True},
        'properties': {'required': True},
    }

    _attribute_map = {
        'id': {'key': 'id', 'type': 'str'},
        'name': {'key': 'name', 'type': 'str'},
        'type': {'key': 'type', 'type': 'str'},
        'system_data': {'key': 'systemData', 'type': 'SystemData'},
        'properties': {'key': 'properties', 'type': 'DataVersionBaseProperties'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword properties: Required. [Required] Additional attributes of the entity.
        :paramtype properties: ~azure.mgmt.machinelearningservices.models.DataVersionBaseProperties
        """
        super(DataVersionBase, self).__init__(**kwargs)
        self.properties = kwargs['properties']


class DataVersionBaseProperties(AssetBase):
    """Data version base definition.

    You probably want to use the sub-classes and not this class directly. Known
    sub-classes are: MLTableData, UriFileDataVersion, UriFolderDataVersion.

    All required parameters must be populated in order to send to Azure.

    :ivar description: The asset description text.
    :vartype description: str
    :ivar properties: The asset property dictionary.
    :vartype properties: dict[str, str]
    :ivar tags: A set of tags. Tag dictionary. Tags can be added, removed, and updated.
    :vartype tags: dict[str, str]
    :ivar is_anonymous: If the name version are system generated (anonymous registration).
    :vartype is_anonymous: bool
    :ivar is_archived: Is the asset archived?.
    :vartype is_archived: bool
    :ivar data_type: Required. [Required] Specifies the type of data.Constant filled by server.
     Possible values include: "uri_file", "uri_folder", "mltable".
    :vartype data_type: str or ~azure.mgmt.machinelearningservices.models.DataType
    :ivar data_uri: Required. [Required] Uri of the data. Example:
     https://go.microsoft.com/fwlink/?linkid=2202330.
    :vartype data_uri: str
    """

    _validation = {
        'data_type': {'required': True},
        'data_uri': {'required': True, 'min_length': 1, 'pattern': r'[a-zA-Z0-9_]'},
    }

    _attribute_map = {
        'description': {'key': 'description', 'type': 'str'},
        'properties': {'key': 'properties', 'type': '{str}'},
        'tags': {'key': 'tags', 'type': '{str}'},
        'is_anonymous': {'key': 'isAnonymous', 'type': 'bool'},
        'is_archived': {'key': 'isArchived', 'type': 'bool'},
        'data_type': {'key': 'dataType', 'type': 'str'},
        'data_uri': {'key': 'dataUri', 'type': 'str'},
    }

    _subtype_map = {
        'data_type': {'mltable': 'MLTableData', 'uri_file': 'UriFileDataVersion', 'uri_folder': 'UriFolderDataVersion'}
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword description: The asset description text.
        :paramtype description: str
        :keyword properties: The asset property dictionary.
        :paramtype properties: dict[str, str]
        :keyword tags: A set of tags. Tag dictionary. Tags can be added, removed, and updated.
        :paramtype tags: dict[str, str]
        :keyword is_anonymous: If the name version are system generated (anonymous registration).
        :paramtype is_anonymous: bool
        :keyword is_archived: Is the asset archived?.
        :paramtype is_archived: bool
        :keyword data_uri: Required. [Required] Uri of the data. Example:
         https://go.microsoft.com/fwlink/?linkid=2202330.
        :paramtype data_uri: str
        """
        super(DataVersionBaseProperties, self).__init__(**kwargs)
        self.data_type = 'DataVersionBaseProperties'  # type: str
        self.data_uri = kwargs['data_uri']


class DataVersionBaseResourceArmPaginatedResult(msrest.serialization.Model):
    """A paginated list of DataVersionBase entities.

    :ivar next_link: The link to the next page of DataVersionBase objects. If null, there are no
     additional pages.
    :vartype next_link: str
    :ivar value: An array of objects of type DataVersionBase.
    :vartype value: list[~azure.mgmt.machinelearningservices.models.DataVersionBase]
    """

    _attribute_map = {
        'next_link': {'key': 'nextLink', 'type': 'str'},
        'value': {'key': 'value', 'type': '[DataVersionBase]'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword next_link: The link to the next page of DataVersionBase objects. If null, there are no
         additional pages.
        :paramtype next_link: str
        :keyword value: An array of objects of type DataVersionBase.
        :paramtype value: list[~azure.mgmt.machinelearningservices.models.DataVersionBase]
        """
        super(DataVersionBaseResourceArmPaginatedResult, self).__init__(**kwargs)
        self.next_link = kwargs.get('next_link', None)
        self.value = kwargs.get('value', None)


class OnlineScaleSettings(msrest.serialization.Model):
    """Online deployment scaling configuration.

    You probably want to use the sub-classes and not this class directly. Known
    sub-classes are: DefaultScaleSettings, TargetUtilizationScaleSettings.

    All required parameters must be populated in order to send to Azure.

    :ivar scale_type: Required. [Required] Type of deployment scaling algorithm.Constant filled by
     server. Possible values include: "Default", "TargetUtilization".
    :vartype scale_type: str or ~azure.mgmt.machinelearningservices.models.ScaleType
    """

    _validation = {
        'scale_type': {'required': True},
    }

    _attribute_map = {
        'scale_type': {'key': 'scaleType', 'type': 'str'},
    }

    _subtype_map = {
        'scale_type': {'Default': 'DefaultScaleSettings', 'TargetUtilization': 'TargetUtilizationScaleSettings'}
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        """
        super(OnlineScaleSettings, self).__init__(**kwargs)
        self.scale_type = None  # type: Optional[str]


class DefaultScaleSettings(OnlineScaleSettings):
    """DefaultScaleSettings.

    All required parameters must be populated in order to send to Azure.

    :ivar scale_type: Required. [Required] Type of deployment scaling algorithm.Constant filled by
     server. Possible values include: "Default", "TargetUtilization".
    :vartype scale_type: str or ~azure.mgmt.machinelearningservices.models.ScaleType
    """

    _validation = {
        'scale_type': {'required': True},
    }

    _attribute_map = {
        'scale_type': {'key': 'scaleType', 'type': 'str'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        """
        super(DefaultScaleSettings, self).__init__(**kwargs)
        self.scale_type = 'Default'  # type: str


class DeltaModelCurrentState(msrest.serialization.Model):
    """Contract for DeltaModelCurrentState.

    :ivar count: Gets or sets Count of instances with model.
    :vartype count: int
    :ivar sample_instance_id: Gets or sets sample of instances with model.
    :vartype sample_instance_id: str
    :ivar status: Gets or sets status.
    :vartype status: str
    """

    _attribute_map = {
        'count': {'key': 'count', 'type': 'int'},
        'sample_instance_id': {'key': 'sampleInstanceID', 'type': 'str'},
        'status': {'key': 'status', 'type': 'str'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword count: Gets or sets Count of instances with model.
        :paramtype count: int
        :keyword sample_instance_id: Gets or sets sample of instances with model.
        :paramtype sample_instance_id: str
        :keyword status: Gets or sets status.
        :paramtype status: str
        """
        super(DeltaModelCurrentState, self).__init__(**kwargs)
        self.count = kwargs.get('count', 0)
        self.sample_instance_id = kwargs.get('sample_instance_id', None)
        self.status = kwargs.get('status', None)


class DeltaModelListRequest(msrest.serialization.Model):
    """DeltaModelListRequest.

    :ivar count: Gets or sets number of delta models to return. Default: -1, means that all will be
     returned.
    :vartype count: int
    :ivar skip_token: Gets or sets skip token for paginated response.
    :vartype skip_token: str
    :ivar target_base_model: Gets or sets target base model.
    :vartype target_base_model: str
    """

    _attribute_map = {
        'count': {'key': 'count', 'type': 'int'},
        'skip_token': {'key': 'skipToken', 'type': 'str'},
        'target_base_model': {'key': 'targetBaseModel', 'type': 'str'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword count: Gets or sets number of delta models to return. Default: -1, means that all will
         be returned.
        :paramtype count: int
        :keyword skip_token: Gets or sets skip token for paginated response.
        :paramtype skip_token: str
        :keyword target_base_model: Gets or sets target base model.
        :paramtype target_base_model: str
        """
        super(DeltaModelListRequest, self).__init__(**kwargs)
        self.count = kwargs.get('count', -1)
        self.skip_token = kwargs.get('skip_token', None)
        self.target_base_model = kwargs.get('target_base_model', None)


class DeltaModelModifyRequest(msrest.serialization.Model):
    """Contract base for DeltaModelChangeRequest. Used for adding or removing.

    :ivar add_delta_models: Gets or sets delta models to remove.
    :vartype add_delta_models: list[str]
    :ivar remove_delta_models: Gets or sets delta models to remove.
    :vartype remove_delta_models: list[str]
    :ivar target_base_model: Gets or sets target base model.
    :vartype target_base_model: str
    """

    _validation = {
        'add_delta_models': {'unique': True},
        'remove_delta_models': {'unique': True},
    }

    _attribute_map = {
        'add_delta_models': {'key': 'addDeltaModels', 'type': '[str]'},
        'remove_delta_models': {'key': 'removeDeltaModels', 'type': '[str]'},
        'target_base_model': {'key': 'targetBaseModel', 'type': 'str'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword add_delta_models: Gets or sets delta models to remove.
        :paramtype add_delta_models: list[str]
        :keyword remove_delta_models: Gets or sets delta models to remove.
        :paramtype remove_delta_models: list[str]
        :keyword target_base_model: Gets or sets target base model.
        :paramtype target_base_model: str
        """
        super(DeltaModelModifyRequest, self).__init__(**kwargs)
        self.add_delta_models = kwargs.get('add_delta_models', None)
        self.remove_delta_models = kwargs.get('remove_delta_models', None)
        self.target_base_model = kwargs.get('target_base_model', None)


class DeltaModelStatusRequest(msrest.serialization.Model):
    """DeltaModelStatusRequest.

    :ivar delta_models: Gets or sets collection of delta models to retrieve status for.
    :vartype delta_models: list[str]
    :ivar target_base_model: Gets or sets target base model.
    :vartype target_base_model: str
    """

    _attribute_map = {
        'delta_models': {'key': 'deltaModels', 'type': '[str]'},
        'target_base_model': {'key': 'targetBaseModel', 'type': 'str'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword delta_models: Gets or sets collection of delta models to retrieve status for.
        :paramtype delta_models: list[str]
        :keyword target_base_model: Gets or sets target base model.
        :paramtype target_base_model: str
        """
        super(DeltaModelStatusRequest, self).__init__(**kwargs)
        self.delta_models = kwargs.get('delta_models', None)
        self.target_base_model = kwargs.get('target_base_model', None)


class DeltaModelStatusResponse(msrest.serialization.Model):
    """Contract returning to user the delta models.

    :ivar actual_instance_count: Gets or sets actual instance count.
    :vartype actual_instance_count: int
    :ivar delta_models: Gets or sets dictionary representing modelID and its current state.
    :vartype delta_models: dict[str,
     list[~azure.mgmt.machinelearningservices.models.DeltaModelCurrentState]]
    :ivar expected_instance_count: Gets or sets expected instance count.
    :vartype expected_instance_count: int
    :ivar revision_id: Gets or sets revision ID.
    :vartype revision_id: str
    :ivar target_base_model: Gets or sets target base model.
    :vartype target_base_model: str
    """

    _attribute_map = {
        'actual_instance_count': {'key': 'actualInstanceCount', 'type': 'int'},
        'delta_models': {'key': 'deltaModels', 'type': '{[DeltaModelCurrentState]}'},
        'expected_instance_count': {'key': 'expectedInstanceCount', 'type': 'int'},
        'revision_id': {'key': 'revisionId', 'type': 'str'},
        'target_base_model': {'key': 'targetBaseModel', 'type': 'str'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword actual_instance_count: Gets or sets actual instance count.
        :paramtype actual_instance_count: int
        :keyword delta_models: Gets or sets dictionary representing modelID and its current state.
        :paramtype delta_models: dict[str,
         list[~azure.mgmt.machinelearningservices.models.DeltaModelCurrentState]]
        :keyword expected_instance_count: Gets or sets expected instance count.
        :paramtype expected_instance_count: int
        :keyword revision_id: Gets or sets revision ID.
        :paramtype revision_id: str
        :keyword target_base_model: Gets or sets target base model.
        :paramtype target_base_model: str
        """
        super(DeltaModelStatusResponse, self).__init__(**kwargs)
        self.actual_instance_count = kwargs.get('actual_instance_count', 0)
        self.delta_models = kwargs.get('delta_models', None)
        self.expected_instance_count = kwargs.get('expected_instance_count', 0)
        self.revision_id = kwargs.get('revision_id', None)
        self.target_base_model = kwargs.get('target_base_model', None)


class DeploymentLogs(msrest.serialization.Model):
    """DeploymentLogs.

    :ivar content: The retrieved online deployment logs.
    :vartype content: str
    """

    _attribute_map = {
        'content': {'key': 'content', 'type': 'str'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword content: The retrieved online deployment logs.
        :paramtype content: str
        """
        super(DeploymentLogs, self).__init__(**kwargs)
        self.content = kwargs.get('content', None)


class DeploymentLogsRequest(msrest.serialization.Model):
    """DeploymentLogsRequest.

    :ivar container_type: The type of container to retrieve logs from. Possible values include:
     "StorageInitializer", "InferenceServer".
    :vartype container_type: str or ~azure.mgmt.machinelearningservices.models.ContainerType
    :ivar tail: The maximum number of lines to tail.
    :vartype tail: int
    """

    _attribute_map = {
        'container_type': {'key': 'containerType', 'type': 'str'},
        'tail': {'key': 'tail', 'type': 'int'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword container_type: The type of container to retrieve logs from. Possible values include:
         "StorageInitializer", "InferenceServer".
        :paramtype container_type: str or ~azure.mgmt.machinelearningservices.models.ContainerType
        :keyword tail: The maximum number of lines to tail.
        :paramtype tail: int
        """
        super(DeploymentLogsRequest, self).__init__(**kwargs)
        self.container_type = kwargs.get('container_type', None)
        self.tail = kwargs.get('tail', None)


class ResourceConfiguration(msrest.serialization.Model):
    """ResourceConfiguration.

    :ivar instance_count: Optional number of instances or nodes used by the compute target.
    :vartype instance_count: int
    :ivar instance_type: Optional type of VM used as supported by the compute target.
    :vartype instance_type: str
    :ivar properties: Additional properties bag.
    :vartype properties: dict[str, any]
    """

    _attribute_map = {
        'instance_count': {'key': 'instanceCount', 'type': 'int'},
        'instance_type': {'key': 'instanceType', 'type': 'str'},
        'properties': {'key': 'properties', 'type': '{object}'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword instance_count: Optional number of instances or nodes used by the compute target.
        :paramtype instance_count: int
        :keyword instance_type: Optional type of VM used as supported by the compute target.
        :paramtype instance_type: str
        :keyword properties: Additional properties bag.
        :paramtype properties: dict[str, any]
        """
        super(ResourceConfiguration, self).__init__(**kwargs)
        self.instance_count = kwargs.get('instance_count', 1)
        self.instance_type = kwargs.get('instance_type', None)
        self.properties = kwargs.get('properties', None)


class DeploymentResourceConfiguration(ResourceConfiguration):
    """DeploymentResourceConfiguration.

    :ivar instance_count: Optional number of instances or nodes used by the compute target.
    :vartype instance_count: int
    :ivar instance_type: Optional type of VM used as supported by the compute target.
    :vartype instance_type: str
    :ivar properties: Additional properties bag.
    :vartype properties: dict[str, any]
    """

    _attribute_map = {
        'instance_count': {'key': 'instanceCount', 'type': 'int'},
        'instance_type': {'key': 'instanceType', 'type': 'str'},
        'properties': {'key': 'properties', 'type': '{object}'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword instance_count: Optional number of instances or nodes used by the compute target.
        :paramtype instance_count: int
        :keyword instance_type: Optional type of VM used as supported by the compute target.
        :paramtype instance_type: str
        :keyword properties: Additional properties bag.
        :paramtype properties: dict[str, any]
        """
        super(DeploymentResourceConfiguration, self).__init__(**kwargs)


class DestinationAsset(msrest.serialization.Model):
    """Publishing destination registry asset information.

    :ivar destination_name: Destination asset name.
    :vartype destination_name: str
    :ivar destination_version: Destination asset version.
    :vartype destination_version: str
    :ivar registry_name: Destination registry name.
    :vartype registry_name: str
    """

    _attribute_map = {
        'destination_name': {'key': 'destinationName', 'type': 'str'},
        'destination_version': {'key': 'destinationVersion', 'type': 'str'},
        'registry_name': {'key': 'registryName', 'type': 'str'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword destination_name: Destination asset name.
        :paramtype destination_name: str
        :keyword destination_version: Destination asset version.
        :paramtype destination_version: str
        :keyword registry_name: Destination registry name.
        :paramtype registry_name: str
        """
        super(DestinationAsset, self).__init__(**kwargs)
        self.destination_name = kwargs.get('destination_name', None)
        self.destination_version = kwargs.get('destination_version', None)
        self.registry_name = kwargs.get('registry_name', None)


class DiagnoseRequestProperties(msrest.serialization.Model):
    """DiagnoseRequestProperties.

    :ivar application_insights: Setting for diagnosing dependent application insights.
    :vartype application_insights: dict[str, any]
    :ivar container_registry: Setting for diagnosing dependent container registry.
    :vartype container_registry: dict[str, any]
    :ivar dns_resolution: Setting for diagnosing dns resolution.
    :vartype dns_resolution: dict[str, any]
    :ivar key_vault: Setting for diagnosing dependent key vault.
    :vartype key_vault: dict[str, any]
    :ivar nsg: Setting for diagnosing network security group.
    :vartype nsg: dict[str, any]
    :ivar others: Setting for diagnosing unclassified category of problems.
    :vartype others: dict[str, any]
    :ivar required_resource_providers: Setting for diagnosing the presence of required resource
     providers in the workspace.
    :vartype required_resource_providers: dict[str, any]
    :ivar resource_lock: Setting for diagnosing resource lock.
    :vartype resource_lock: dict[str, any]
    :ivar storage_account: Setting for diagnosing dependent storage account.
    :vartype storage_account: dict[str, any]
    :ivar udr: Setting for diagnosing user defined routing.
    :vartype udr: dict[str, any]
    """

    _attribute_map = {
        'application_insights': {'key': 'applicationInsights', 'type': '{object}'},
        'container_registry': {'key': 'containerRegistry', 'type': '{object}'},
        'dns_resolution': {'key': 'dnsResolution', 'type': '{object}'},
        'key_vault': {'key': 'keyVault', 'type': '{object}'},
        'nsg': {'key': 'nsg', 'type': '{object}'},
        'others': {'key': 'others', 'type': '{object}'},
        'required_resource_providers': {'key': 'requiredResourceProviders', 'type': '{object}'},
        'resource_lock': {'key': 'resourceLock', 'type': '{object}'},
        'storage_account': {'key': 'storageAccount', 'type': '{object}'},
        'udr': {'key': 'udr', 'type': '{object}'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword application_insights: Setting for diagnosing dependent application insights.
        :paramtype application_insights: dict[str, any]
        :keyword container_registry: Setting for diagnosing dependent container registry.
        :paramtype container_registry: dict[str, any]
        :keyword dns_resolution: Setting for diagnosing dns resolution.
        :paramtype dns_resolution: dict[str, any]
        :keyword key_vault: Setting for diagnosing dependent key vault.
        :paramtype key_vault: dict[str, any]
        :keyword nsg: Setting for diagnosing network security group.
        :paramtype nsg: dict[str, any]
        :keyword others: Setting for diagnosing unclassified category of problems.
        :paramtype others: dict[str, any]
        :keyword required_resource_providers: Setting for diagnosing the presence of required resource
         providers in the workspace.
        :paramtype required_resource_providers: dict[str, any]
        :keyword resource_lock: Setting for diagnosing resource lock.
        :paramtype resource_lock: dict[str, any]
        :keyword storage_account: Setting for diagnosing dependent storage account.
        :paramtype storage_account: dict[str, any]
        :keyword udr: Setting for diagnosing user defined routing.
        :paramtype udr: dict[str, any]
        """
        super(DiagnoseRequestProperties, self).__init__(**kwargs)
        self.application_insights = kwargs.get('application_insights', None)
        self.container_registry = kwargs.get('container_registry', None)
        self.dns_resolution = kwargs.get('dns_resolution', None)
        self.key_vault = kwargs.get('key_vault', None)
        self.nsg = kwargs.get('nsg', None)
        self.others = kwargs.get('others', None)
        self.required_resource_providers = kwargs.get('required_resource_providers', None)
        self.resource_lock = kwargs.get('resource_lock', None)
        self.storage_account = kwargs.get('storage_account', None)
        self.udr = kwargs.get('udr', None)


class DiagnoseResponseResult(msrest.serialization.Model):
    """DiagnoseResponseResult.

    :ivar value:
    :vartype value: ~azure.mgmt.machinelearningservices.models.DiagnoseResponseResultValue
    """

    _attribute_map = {
        'value': {'key': 'value', 'type': 'DiagnoseResponseResultValue'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword value:
        :paramtype value: ~azure.mgmt.machinelearningservices.models.DiagnoseResponseResultValue
        """
        super(DiagnoseResponseResult, self).__init__(**kwargs)
        self.value = kwargs.get('value', None)


class DiagnoseResponseResultValue(msrest.serialization.Model):
    """DiagnoseResponseResultValue.

    :ivar user_defined_route_results:
    :vartype user_defined_route_results:
     list[~azure.mgmt.machinelearningservices.models.DiagnoseResult]
    :ivar network_security_rule_results:
    :vartype network_security_rule_results:
     list[~azure.mgmt.machinelearningservices.models.DiagnoseResult]
    :ivar resource_lock_results:
    :vartype resource_lock_results: list[~azure.mgmt.machinelearningservices.models.DiagnoseResult]
    :ivar dns_resolution_results:
    :vartype dns_resolution_results:
     list[~azure.mgmt.machinelearningservices.models.DiagnoseResult]
    :ivar storage_account_results:
    :vartype storage_account_results:
     list[~azure.mgmt.machinelearningservices.models.DiagnoseResult]
    :ivar key_vault_results:
    :vartype key_vault_results: list[~azure.mgmt.machinelearningservices.models.DiagnoseResult]
    :ivar container_registry_results:
    :vartype container_registry_results:
     list[~azure.mgmt.machinelearningservices.models.DiagnoseResult]
    :ivar application_insights_results:
    :vartype application_insights_results:
     list[~azure.mgmt.machinelearningservices.models.DiagnoseResult]
    :ivar other_results:
    :vartype other_results: list[~azure.mgmt.machinelearningservices.models.DiagnoseResult]
    """

    _attribute_map = {
        'user_defined_route_results': {'key': 'userDefinedRouteResults', 'type': '[DiagnoseResult]'},
        'network_security_rule_results': {'key': 'networkSecurityRuleResults', 'type': '[DiagnoseResult]'},
        'resource_lock_results': {'key': 'resourceLockResults', 'type': '[DiagnoseResult]'},
        'dns_resolution_results': {'key': 'dnsResolutionResults', 'type': '[DiagnoseResult]'},
        'storage_account_results': {'key': 'storageAccountResults', 'type': '[DiagnoseResult]'},
        'key_vault_results': {'key': 'keyVaultResults', 'type': '[DiagnoseResult]'},
        'container_registry_results': {'key': 'containerRegistryResults', 'type': '[DiagnoseResult]'},
        'application_insights_results': {'key': 'applicationInsightsResults', 'type': '[DiagnoseResult]'},
        'other_results': {'key': 'otherResults', 'type': '[DiagnoseResult]'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword user_defined_route_results:
        :paramtype user_defined_route_results:
         list[~azure.mgmt.machinelearningservices.models.DiagnoseResult]
        :keyword network_security_rule_results:
        :paramtype network_security_rule_results:
         list[~azure.mgmt.machinelearningservices.models.DiagnoseResult]
        :keyword resource_lock_results:
        :paramtype resource_lock_results:
         list[~azure.mgmt.machinelearningservices.models.DiagnoseResult]
        :keyword dns_resolution_results:
        :paramtype dns_resolution_results:
         list[~azure.mgmt.machinelearningservices.models.DiagnoseResult]
        :keyword storage_account_results:
        :paramtype storage_account_results:
         list[~azure.mgmt.machinelearningservices.models.DiagnoseResult]
        :keyword key_vault_results:
        :paramtype key_vault_results: list[~azure.mgmt.machinelearningservices.models.DiagnoseResult]
        :keyword container_registry_results:
        :paramtype container_registry_results:
         list[~azure.mgmt.machinelearningservices.models.DiagnoseResult]
        :keyword application_insights_results:
        :paramtype application_insights_results:
         list[~azure.mgmt.machinelearningservices.models.DiagnoseResult]
        :keyword other_results:
        :paramtype other_results: list[~azure.mgmt.machinelearningservices.models.DiagnoseResult]
        """
        super(DiagnoseResponseResultValue, self).__init__(**kwargs)
        self.user_defined_route_results = kwargs.get('user_defined_route_results', None)
        self.network_security_rule_results = kwargs.get('network_security_rule_results', None)
        self.resource_lock_results = kwargs.get('resource_lock_results', None)
        self.dns_resolution_results = kwargs.get('dns_resolution_results', None)
        self.storage_account_results = kwargs.get('storage_account_results', None)
        self.key_vault_results = kwargs.get('key_vault_results', None)
        self.container_registry_results = kwargs.get('container_registry_results', None)
        self.application_insights_results = kwargs.get('application_insights_results', None)
        self.other_results = kwargs.get('other_results', None)


class DiagnoseResult(msrest.serialization.Model):
    """Result of Diagnose.

    Variables are only populated by the server, and will be ignored when sending a request.

    :ivar code: Code for workspace setup error.
    :vartype code: str
    :ivar level: Level of workspace setup error. Possible values include: "Warning", "Error",
     "Information".
    :vartype level: str or ~azure.mgmt.machinelearningservices.models.DiagnoseResultLevel
    :ivar message: Message of workspace setup error.
    :vartype message: str
    """

    _validation = {
        'code': {'readonly': True},
        'level': {'readonly': True},
        'message': {'readonly': True},
    }

    _attribute_map = {
        'code': {'key': 'code', 'type': 'str'},
        'level': {'key': 'level', 'type': 'str'},
        'message': {'key': 'message', 'type': 'str'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        """
        super(DiagnoseResult, self).__init__(**kwargs)
        self.code = None
        self.level = None
        self.message = None


class DiagnoseWorkspaceParameters(msrest.serialization.Model):
    """Parameters to diagnose a workspace.

    :ivar value:
    :vartype value: ~azure.mgmt.machinelearningservices.models.DiagnoseRequestProperties
    """

    _attribute_map = {
        'value': {'key': 'value', 'type': 'DiagnoseRequestProperties'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword value:
        :paramtype value: ~azure.mgmt.machinelearningservices.models.DiagnoseRequestProperties
        """
        super(DiagnoseWorkspaceParameters, self).__init__(**kwargs)
        self.value = kwargs.get('value', None)


class DistillationJob(JobBaseProperties):
    """Distillation Job definition.

    Variables are only populated by the server, and will be ignored when sending a request.

    All required parameters must be populated in order to send to Azure.

    :ivar description: The asset description text.
    :vartype description: str
    :ivar properties: The asset property dictionary.
    :vartype properties: dict[str, str]
    :ivar tags: A set of tags. Tag dictionary. Tags can be added, removed, and updated.
    :vartype tags: dict[str, str]
    :ivar component_id: ARM resource ID of the component resource.
    :vartype component_id: str
    :ivar compute_id: ARM resource ID of the compute resource.
    :vartype compute_id: str
    :ivar display_name: Display name of job.
    :vartype display_name: str
    :ivar experiment_name: The name of the experiment the job belongs to. If not set, the job is
     placed in the "Default" experiment.
    :vartype experiment_name: str
    :ivar identity: Identity configuration. If set, this should be one of AmlToken,
     ManagedIdentity, UserIdentity or null.
     Defaults to AmlToken if null.
    :vartype identity: ~azure.mgmt.machinelearningservices.models.IdentityConfiguration
    :ivar is_archived: Is the asset archived?.
    :vartype is_archived: bool
    :ivar job_type: Required. [Required] Specifies the type of job.Constant filled by server.
     Possible values include: "AutoML", "Command", "Sweep", "Pipeline", "Spark", "FineTuning",
     "Distillation".
    :vartype job_type: str or ~azure.mgmt.machinelearningservices.models.JobType
    :ivar notification_setting: Notification setting for the job.
    :vartype notification_setting: ~azure.mgmt.machinelearningservices.models.NotificationSetting
    :ivar parent_job_name: Parent job name.
    :vartype parent_job_name: str
    :ivar services: List of JobEndpoints.
     For local jobs, a job endpoint will have an endpoint value of FileStreamObject.
    :vartype services: dict[str, ~azure.mgmt.machinelearningservices.models.JobService]
    :ivar status: Status of the job. Possible values include: "NotStarted", "Starting",
     "Provisioning", "Preparing", "Queued", "Running", "Finalizing", "CancelRequested", "Completed",
     "Failed", "Canceled", "NotResponding", "Paused", "Unknown".
    :vartype status: str or ~azure.mgmt.machinelearningservices.models.JobStatus
    :ivar data_generation_details: Required. [Required].
    :vartype data_generation_details:
     ~azure.mgmt.machinelearningservices.models.DataGenerationVertical
    :ivar finetuning_details: Required. [Required].
    :vartype finetuning_details: ~azure.mgmt.machinelearningservices.models.FinetuningDetails
    :ivar outputs: Required. [Required].
    :vartype outputs: dict[str, ~azure.mgmt.machinelearningservices.models.JobOutput]
    :ivar queue_settings: Queue settings for the job.
    :vartype queue_settings: ~azure.mgmt.machinelearningservices.models.QueueSettings
    :ivar resources: Instance types and other resources for the job.
    :vartype resources: ~azure.mgmt.machinelearningservices.models.JobResources
    """

    _validation = {
        'job_type': {'required': True},
        'status': {'readonly': True},
        'data_generation_details': {'required': True},
        'finetuning_details': {'required': True},
        'outputs': {'required': True},
    }

    _attribute_map = {
        'description': {'key': 'description', 'type': 'str'},
        'properties': {'key': 'properties', 'type': '{str}'},
        'tags': {'key': 'tags', 'type': '{str}'},
        'component_id': {'key': 'componentId', 'type': 'str'},
        'compute_id': {'key': 'computeId', 'type': 'str'},
        'display_name': {'key': 'displayName', 'type': 'str'},
        'experiment_name': {'key': 'experimentName', 'type': 'str'},
        'identity': {'key': 'identity', 'type': 'IdentityConfiguration'},
        'is_archived': {'key': 'isArchived', 'type': 'bool'},
        'job_type': {'key': 'jobType', 'type': 'str'},
        'notification_setting': {'key': 'notificationSetting', 'type': 'NotificationSetting'},
        'parent_job_name': {'key': 'parentJobName', 'type': 'str'},
        'services': {'key': 'services', 'type': '{JobService}'},
        'status': {'key': 'status', 'type': 'str'},
        'data_generation_details': {'key': 'dataGenerationDetails', 'type': 'DataGenerationVertical'},
        'finetuning_details': {'key': 'finetuningDetails', 'type': 'FinetuningDetails'},
        'outputs': {'key': 'outputs', 'type': '{JobOutput}'},
        'queue_settings': {'key': 'queueSettings', 'type': 'QueueSettings'},
        'resources': {'key': 'resources', 'type': 'JobResources'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword description: The asset description text.
        :paramtype description: str
        :keyword properties: The asset property dictionary.
        :paramtype properties: dict[str, str]
        :keyword tags: A set of tags. Tag dictionary. Tags can be added, removed, and updated.
        :paramtype tags: dict[str, str]
        :keyword component_id: ARM resource ID of the component resource.
        :paramtype component_id: str
        :keyword compute_id: ARM resource ID of the compute resource.
        :paramtype compute_id: str
        :keyword display_name: Display name of job.
        :paramtype display_name: str
        :keyword experiment_name: The name of the experiment the job belongs to. If not set, the job is
         placed in the "Default" experiment.
        :paramtype experiment_name: str
        :keyword identity: Identity configuration. If set, this should be one of AmlToken,
         ManagedIdentity, UserIdentity or null.
         Defaults to AmlToken if null.
        :paramtype identity: ~azure.mgmt.machinelearningservices.models.IdentityConfiguration
        :keyword is_archived: Is the asset archived?.
        :paramtype is_archived: bool
        :keyword notification_setting: Notification setting for the job.
        :paramtype notification_setting: ~azure.mgmt.machinelearningservices.models.NotificationSetting
        :keyword parent_job_name: Parent job name.
        :paramtype parent_job_name: str
        :keyword services: List of JobEndpoints.
         For local jobs, a job endpoint will have an endpoint value of FileStreamObject.
        :paramtype services: dict[str, ~azure.mgmt.machinelearningservices.models.JobService]
        :keyword data_generation_details: Required. [Required].
        :paramtype data_generation_details:
         ~azure.mgmt.machinelearningservices.models.DataGenerationVertical
        :keyword finetuning_details: Required. [Required].
        :paramtype finetuning_details: ~azure.mgmt.machinelearningservices.models.FinetuningDetails
        :keyword outputs: Required. [Required].
        :paramtype outputs: dict[str, ~azure.mgmt.machinelearningservices.models.JobOutput]
        :keyword queue_settings: Queue settings for the job.
        :paramtype queue_settings: ~azure.mgmt.machinelearningservices.models.QueueSettings
        :keyword resources: Instance types and other resources for the job.
        :paramtype resources: ~azure.mgmt.machinelearningservices.models.JobResources
        """
        super(DistillationJob, self).__init__(**kwargs)
        self.job_type = 'Distillation'  # type: str
        self.data_generation_details = kwargs['data_generation_details']
        self.finetuning_details = kwargs['finetuning_details']
        self.outputs = kwargs['outputs']
        self.queue_settings = kwargs.get('queue_settings', None)
        self.resources = kwargs.get('resources', None)


class DistributionConfiguration(msrest.serialization.Model):
    """Base definition for job distribution configuration.

    You probably want to use the sub-classes and not this class directly. Known
    sub-classes are: Mpi, PyTorch, TensorFlow.

    All required parameters must be populated in order to send to Azure.

    :ivar distribution_type: Required. [Required] Specifies the type of distribution
     framework.Constant filled by server. Possible values include: "PyTorch", "TensorFlow", "Mpi".
    :vartype distribution_type: str or ~azure.mgmt.machinelearningservices.models.DistributionType
    """

    _validation = {
        'distribution_type': {'required': True},
    }

    _attribute_map = {
        'distribution_type': {'key': 'distributionType', 'type': 'str'},
    }

    _subtype_map = {
        'distribution_type': {'Mpi': 'Mpi', 'PyTorch': 'PyTorch', 'TensorFlow': 'TensorFlow'}
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        """
        super(DistributionConfiguration, self).__init__(**kwargs)
        self.distribution_type = None  # type: Optional[str]


class Docker(msrest.serialization.Model):
    """Docker.

    :ivar additional_properties: Unmatched properties from the message are deserialized to this
     collection.
    :vartype additional_properties: dict[str, any]
    :ivar privileged: Indicate whether container shall run in privileged or non-privileged mode.
    :vartype privileged: bool
    """

    _attribute_map = {
        'additional_properties': {'key': '', 'type': '{object}'},
        'privileged': {'key': 'privileged', 'type': 'bool'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword additional_properties: Unmatched properties from the message are deserialized to this
         collection.
        :paramtype additional_properties: dict[str, any]
        :keyword privileged: Indicate whether container shall run in privileged or non-privileged mode.
        :paramtype privileged: bool
        """
        super(Docker, self).__init__(**kwargs)
        self.additional_properties = kwargs.get('additional_properties', None)
        self.privileged = kwargs.get('privileged', None)


class DockerCredential(DataReferenceCredential):
    """Credential for docker with username and password.

    All required parameters must be populated in order to send to Azure.

    :ivar credential_type: Required. [Required] Credential type used to authentication with
     storage.Constant filled by server. Possible values include: "SAS", "DockerCredentials",
     "ManagedIdentity", "NoCredentials".
    :vartype credential_type: str or
     ~azure.mgmt.machinelearningservices.models.DataReferenceCredentialType
    :ivar password: DockerCredential user password.
    :vartype password: str
    :ivar user_name: DockerCredential user name.
    :vartype user_name: str
    """

    _validation = {
        'credential_type': {'required': True},
    }

    _attribute_map = {
        'credential_type': {'key': 'credentialType', 'type': 'str'},
        'password': {'key': 'password', 'type': 'str'},
        'user_name': {'key': 'userName', 'type': 'str'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword password: DockerCredential user password.
        :paramtype password: str
        :keyword user_name: DockerCredential user name.
        :paramtype user_name: str
        """
        super(DockerCredential, self).__init__(**kwargs)
        self.credential_type = 'DockerCredentials'  # type: str
        self.password = kwargs.get('password', None)
        self.user_name = kwargs.get('user_name', None)


class EncryptionKeyVaultUpdateProperties(msrest.serialization.Model):
    """EncryptionKeyVaultUpdateProperties.

    All required parameters must be populated in order to send to Azure.

    :ivar key_identifier: Required.
    :vartype key_identifier: str
    """

    _validation = {
        'key_identifier': {'required': True, 'min_length': 1, 'pattern': r'[a-zA-Z0-9_]'},
    }

    _attribute_map = {
        'key_identifier': {'key': 'keyIdentifier', 'type': 'str'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword key_identifier: Required.
        :paramtype key_identifier: str
        """
        super(EncryptionKeyVaultUpdateProperties, self).__init__(**kwargs)
        self.key_identifier = kwargs['key_identifier']


class EncryptionProperty(msrest.serialization.Model):
    """EncryptionProperty.

    All required parameters must be populated in order to send to Azure.

    :ivar cosmos_db_resource_id: The byok cosmosdb account that customer brings to store customer's
     data
     with encryption.
    :vartype cosmos_db_resource_id: str
    :ivar identity: Identity to be used with the keyVault.
    :vartype identity: ~azure.mgmt.machinelearningservices.models.IdentityForCmk
    :ivar key_vault_properties: Required. KeyVault details to do the encryption.
    :vartype key_vault_properties: ~azure.mgmt.machinelearningservices.models.KeyVaultProperties
    :ivar search_account_resource_id: The byok search account that customer brings to store
     customer's data
     with encryption.
    :vartype search_account_resource_id: str
    :ivar status: Required. Indicates whether or not the encryption is enabled for the workspace.
     Possible values include: "Enabled", "Disabled".
    :vartype status: str or ~azure.mgmt.machinelearningservices.models.EncryptionStatus
    :ivar storage_account_resource_id: The byok storage account that customer brings to store
     customer's data
     with encryption.
    :vartype storage_account_resource_id: str
    """

    _validation = {
        'key_vault_properties': {'required': True},
        'status': {'required': True},
    }

    _attribute_map = {
        'cosmos_db_resource_id': {'key': 'cosmosDbResourceId', 'type': 'str'},
        'identity': {'key': 'identity', 'type': 'IdentityForCmk'},
        'key_vault_properties': {'key': 'keyVaultProperties', 'type': 'KeyVaultProperties'},
        'search_account_resource_id': {'key': 'searchAccountResourceId', 'type': 'str'},
        'status': {'key': 'status', 'type': 'str'},
        'storage_account_resource_id': {'key': 'storageAccountResourceId', 'type': 'str'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword cosmos_db_resource_id: The byok cosmosdb account that customer brings to store
         customer's data
         with encryption.
        :paramtype cosmos_db_resource_id: str
        :keyword identity: Identity to be used with the keyVault.
        :paramtype identity: ~azure.mgmt.machinelearningservices.models.IdentityForCmk
        :keyword key_vault_properties: Required. KeyVault details to do the encryption.
        :paramtype key_vault_properties: ~azure.mgmt.machinelearningservices.models.KeyVaultProperties
        :keyword search_account_resource_id: The byok search account that customer brings to store
         customer's data
         with encryption.
        :paramtype search_account_resource_id: str
        :keyword status: Required. Indicates whether or not the encryption is enabled for the
         workspace. Possible values include: "Enabled", "Disabled".
        :paramtype status: str or ~azure.mgmt.machinelearningservices.models.EncryptionStatus
        :keyword storage_account_resource_id: The byok storage account that customer brings to store
         customer's data
         with encryption.
        :paramtype storage_account_resource_id: str
        """
        super(EncryptionProperty, self).__init__(**kwargs)
        self.cosmos_db_resource_id = kwargs.get('cosmos_db_resource_id', None)
        self.identity = kwargs.get('identity', None)
        self.key_vault_properties = kwargs['key_vault_properties']
        self.search_account_resource_id = kwargs.get('search_account_resource_id', None)
        self.status = kwargs['status']
        self.storage_account_resource_id = kwargs.get('storage_account_resource_id', None)


class EncryptionUpdateProperties(msrest.serialization.Model):
    """EncryptionUpdateProperties.

    All required parameters must be populated in order to send to Azure.

    :ivar key_vault_properties: Required.
    :vartype key_vault_properties:
     ~azure.mgmt.machinelearningservices.models.EncryptionKeyVaultUpdateProperties
    """

    _validation = {
        'key_vault_properties': {'required': True},
    }

    _attribute_map = {
        'key_vault_properties': {'key': 'keyVaultProperties', 'type': 'EncryptionKeyVaultUpdateProperties'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword key_vault_properties: Required.
        :paramtype key_vault_properties:
         ~azure.mgmt.machinelearningservices.models.EncryptionKeyVaultUpdateProperties
        """
        super(EncryptionUpdateProperties, self).__init__(**kwargs)
        self.key_vault_properties = kwargs['key_vault_properties']


class Endpoint(msrest.serialization.Model):
    """Endpoint.

    :ivar protocol: Protocol over which communication will happen over this endpoint. Possible
     values include: "tcp", "udp", "http". Default value: "tcp".
    :vartype protocol: str or ~azure.mgmt.machinelearningservices.models.Protocol
    :ivar name: Name of the Endpoint.
    :vartype name: str
    :ivar target: Application port inside the container.
    :vartype target: int
    :ivar published: Port over which the application is exposed from container.
    :vartype published: int
    :ivar host_ip: Host IP over which the application is exposed from the container.
    :vartype host_ip: str
    """

    _attribute_map = {
        'protocol': {'key': 'protocol', 'type': 'str'},
        'name': {'key': 'name', 'type': 'str'},
        'target': {'key': 'target', 'type': 'int'},
        'published': {'key': 'published', 'type': 'int'},
        'host_ip': {'key': 'hostIp', 'type': 'str'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword protocol: Protocol over which communication will happen over this endpoint. Possible
         values include: "tcp", "udp", "http". Default value: "tcp".
        :paramtype protocol: str or ~azure.mgmt.machinelearningservices.models.Protocol
        :keyword name: Name of the Endpoint.
        :paramtype name: str
        :keyword target: Application port inside the container.
        :paramtype target: int
        :keyword published: Port over which the application is exposed from container.
        :paramtype published: int
        :keyword host_ip: Host IP over which the application is exposed from the container.
        :paramtype host_ip: str
        """
        super(Endpoint, self).__init__(**kwargs)
        self.protocol = kwargs.get('protocol', "tcp")
        self.name = kwargs.get('name', None)
        self.target = kwargs.get('target', None)
        self.published = kwargs.get('published', None)
        self.host_ip = kwargs.get('host_ip', None)


class EndpointAuthKeys(msrest.serialization.Model):
    """Keys for endpoint authentication.

    :ivar primary_key: The primary key.
    :vartype primary_key: str
    :ivar secondary_key: The secondary key.
    :vartype secondary_key: str
    """

    _attribute_map = {
        'primary_key': {'key': 'primaryKey', 'type': 'str'},
        'secondary_key': {'key': 'secondaryKey', 'type': 'str'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword primary_key: The primary key.
        :paramtype primary_key: str
        :keyword secondary_key: The secondary key.
        :paramtype secondary_key: str
        """
        super(EndpointAuthKeys, self).__init__(**kwargs)
        self.primary_key = kwargs.get('primary_key', None)
        self.secondary_key = kwargs.get('secondary_key', None)


class EndpointAuthToken(msrest.serialization.Model):
    """Service Token.

    :ivar access_token: Access token for endpoint authentication.
    :vartype access_token: str
    :ivar expiry_time_utc: Access token expiry time (UTC).
    :vartype expiry_time_utc: long
    :ivar refresh_after_time_utc: Refresh access token after time (UTC).
    :vartype refresh_after_time_utc: long
    :ivar token_type: Access token type.
    :vartype token_type: str
    """

    _attribute_map = {
        'access_token': {'key': 'accessToken', 'type': 'str'},
        'expiry_time_utc': {'key': 'expiryTimeUtc', 'type': 'long'},
        'refresh_after_time_utc': {'key': 'refreshAfterTimeUtc', 'type': 'long'},
        'token_type': {'key': 'tokenType', 'type': 'str'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword access_token: Access token for endpoint authentication.
        :paramtype access_token: str
        :keyword expiry_time_utc: Access token expiry time (UTC).
        :paramtype expiry_time_utc: long
        :keyword refresh_after_time_utc: Refresh access token after time (UTC).
        :paramtype refresh_after_time_utc: long
        :keyword token_type: Access token type.
        :paramtype token_type: str
        """
        super(EndpointAuthToken, self).__init__(**kwargs)
        self.access_token = kwargs.get('access_token', None)
        self.expiry_time_utc = kwargs.get('expiry_time_utc', 0)
        self.refresh_after_time_utc = kwargs.get('refresh_after_time_utc', 0)
        self.token_type = kwargs.get('token_type', None)


class EndpointDeploymentModel(msrest.serialization.Model):
    """EndpointDeploymentModel.

    :ivar format: Model format.
    :vartype format: str
    :ivar name: Model name.
    :vartype name: str
    :ivar source: Optional. Deployment model source ARM resource ID.
    :vartype source: str
    :ivar version: Model version.
    :vartype version: str
    """

    _attribute_map = {
        'format': {'key': 'format', 'type': 'str'},
        'name': {'key': 'name', 'type': 'str'},
        'source': {'key': 'source', 'type': 'str'},
        'version': {'key': 'version', 'type': 'str'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword format: Model format.
        :paramtype format: str
        :keyword name: Model name.
        :paramtype name: str
        :keyword source: Optional. Deployment model source ARM resource ID.
        :paramtype source: str
        :keyword version: Model version.
        :paramtype version: str
        """
        super(EndpointDeploymentModel, self).__init__(**kwargs)
        self.format = kwargs.get('format', None)
        self.name = kwargs.get('name', None)
        self.source = kwargs.get('source', None)
        self.version = kwargs.get('version', None)


class EndpointDeploymentResourcePropertiesBasicResource(Resource):
    """EndpointDeploymentResourcePropertiesBasicResource.

    Variables are only populated by the server, and will be ignored when sending a request.

    All required parameters must be populated in order to send to Azure.

    :ivar id: Fully qualified resource ID for the resource. Ex -
     /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}.
    :vartype id: str
    :ivar name: The name of the resource.
    :vartype name: str
    :ivar type: The type of the resource. E.g. "Microsoft.Compute/virtualMachines" or
     "Microsoft.Storage/storageAccounts".
    :vartype type: str
    :ivar system_data: Azure Resource Manager metadata containing createdBy and modifiedBy
     information.
    :vartype system_data: ~azure.mgmt.machinelearningservices.models.SystemData
    :ivar properties: Required.
    :vartype properties:
     ~azure.mgmt.machinelearningservices.models.EndpointDeploymentResourceProperties
    """

    _validation = {
        'id': {'readonly': True},
        'name': {'readonly': True},
        'type': {'readonly': True},
        'system_data': {'readonly': True},
        'properties': {'required': True},
    }

    _attribute_map = {
        'id': {'key': 'id', 'type': 'str'},
        'name': {'key': 'name', 'type': 'str'},
        'type': {'key': 'type', 'type': 'str'},
        'system_data': {'key': 'systemData', 'type': 'SystemData'},
        'properties': {'key': 'properties', 'type': 'EndpointDeploymentResourceProperties'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword properties: Required.
        :paramtype properties:
         ~azure.mgmt.machinelearningservices.models.EndpointDeploymentResourceProperties
        """
        super(EndpointDeploymentResourcePropertiesBasicResource, self).__init__(**kwargs)
        self.properties = kwargs['properties']


class EndpointDeploymentResourcePropertiesBasicResourceArmPaginatedResult(msrest.serialization.Model):
    """EndpointDeploymentResourcePropertiesBasicResourceArmPaginatedResult.

    :ivar next_link:
    :vartype next_link: str
    :ivar value:
    :vartype value:
     list[~azure.mgmt.machinelearningservices.models.EndpointDeploymentResourcePropertiesBasicResource]
    """

    _attribute_map = {
        'next_link': {'key': 'nextLink', 'type': 'str'},
        'value': {'key': 'value', 'type': '[EndpointDeploymentResourcePropertiesBasicResource]'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword next_link:
        :paramtype next_link: str
        :keyword value:
        :paramtype value:
         list[~azure.mgmt.machinelearningservices.models.EndpointDeploymentResourcePropertiesBasicResource]
        """
        super(EndpointDeploymentResourcePropertiesBasicResourceArmPaginatedResult, self).__init__(**kwargs)
        self.next_link = kwargs.get('next_link', None)
        self.value = kwargs.get('value', None)


class EndpointKeys(msrest.serialization.Model):
    """EndpointKeys.

    :ivar keys: Dictionary of Keys for the endpoint.
    :vartype keys: ~azure.mgmt.machinelearningservices.models.AccountApiKeys
    """

    _attribute_map = {
        'keys': {'key': 'keys', 'type': 'AccountApiKeys'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword keys: Dictionary of Keys for the endpoint.
        :paramtype keys: ~azure.mgmt.machinelearningservices.models.AccountApiKeys
        """
        super(EndpointKeys, self).__init__(**kwargs)
        self.keys = kwargs.get('keys', None)


class EndpointModelDeprecationProperties(msrest.serialization.Model):
    """EndpointModelDeprecationProperties.

    :ivar fine_tune: The datetime of deprecation of the fineTune Model.
    :vartype fine_tune: ~datetime.datetime
    :ivar inference: The datetime of deprecation of the inference Model.
    :vartype inference: ~datetime.datetime
    """

    _attribute_map = {
        'fine_tune': {'key': 'fineTune', 'type': 'iso-8601'},
        'inference': {'key': 'inference', 'type': 'iso-8601'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword fine_tune: The datetime of deprecation of the fineTune Model.
        :paramtype fine_tune: ~datetime.datetime
        :keyword inference: The datetime of deprecation of the inference Model.
        :paramtype inference: ~datetime.datetime
        """
        super(EndpointModelDeprecationProperties, self).__init__(**kwargs)
        self.fine_tune = kwargs.get('fine_tune', None)
        self.inference = kwargs.get('inference', None)


class EndpointModelProperties(msrest.serialization.Model):
    """Endpoint Model properties.

    Variables are only populated by the server, and will be ignored when sending a request.

    :ivar capabilities: The capabilities.
    :vartype capabilities: dict[str, str]
    :ivar deprecation:
    :vartype deprecation:
     ~azure.mgmt.machinelearningservices.models.EndpointModelDeprecationProperties
    :ivar finetune_capabilities: The capabilities for finetune models.
    :vartype finetune_capabilities: dict[str, str]
    :ivar format: Deployment model format.
    :vartype format: str
    :ivar is_default_version: If the model is default version.
    :vartype is_default_version: bool
    :ivar lifecycle_status: Model lifecycle status. Possible values include: "GenerallyAvailable",
     "Preview".
    :vartype lifecycle_status: str or
     ~azure.mgmt.machinelearningservices.models.ModelLifecycleStatus
    :ivar max_capacity: The max capacity.
    :vartype max_capacity: int
    :ivar name: Deployment model name.
    :vartype name: str
    :ivar skus: The list of Model Sku.
    :vartype skus: list[~azure.mgmt.machinelearningservices.models.EndpointModelSkuProperties]
    :ivar system_data: Metadata pertaining to creation and last modification of the resource.
    :vartype system_data: ~azure.mgmt.machinelearningservices.models.SystemData
    :ivar version: Optional. Deployment model version. If version is not specified, a default
     version will be assigned. The default version is different for different models and might
     change when there is new version available for a model. Default version for a model could be
     found from list models API.
    :vartype version: str
    """

    _validation = {
        'system_data': {'readonly': True},
    }

    _attribute_map = {
        'capabilities': {'key': 'capabilities', 'type': '{str}'},
        'deprecation': {'key': 'deprecation', 'type': 'EndpointModelDeprecationProperties'},
        'finetune_capabilities': {'key': 'finetuneCapabilities', 'type': '{str}'},
        'format': {'key': 'format', 'type': 'str'},
        'is_default_version': {'key': 'isDefaultVersion', 'type': 'bool'},
        'lifecycle_status': {'key': 'lifecycleStatus', 'type': 'str'},
        'max_capacity': {'key': 'maxCapacity', 'type': 'int'},
        'name': {'key': 'name', 'type': 'str'},
        'skus': {'key': 'skus', 'type': '[EndpointModelSkuProperties]'},
        'system_data': {'key': 'systemData', 'type': 'SystemData'},
        'version': {'key': 'version', 'type': 'str'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword capabilities: The capabilities.
        :paramtype capabilities: dict[str, str]
        :keyword deprecation:
        :paramtype deprecation:
         ~azure.mgmt.machinelearningservices.models.EndpointModelDeprecationProperties
        :keyword finetune_capabilities: The capabilities for finetune models.
        :paramtype finetune_capabilities: dict[str, str]
        :keyword format: Deployment model format.
        :paramtype format: str
        :keyword is_default_version: If the model is default version.
        :paramtype is_default_version: bool
        :keyword lifecycle_status: Model lifecycle status. Possible values include:
         "GenerallyAvailable", "Preview".
        :paramtype lifecycle_status: str or
         ~azure.mgmt.machinelearningservices.models.ModelLifecycleStatus
        :keyword max_capacity: The max capacity.
        :paramtype max_capacity: int
        :keyword name: Deployment model name.
        :paramtype name: str
        :keyword skus: The list of Model Sku.
        :paramtype skus: list[~azure.mgmt.machinelearningservices.models.EndpointModelSkuProperties]
        :keyword version: Optional. Deployment model version. If version is not specified, a default
         version will be assigned. The default version is different for different models and might
         change when there is new version available for a model. Default version for a model could be
         found from list models API.
        :paramtype version: str
        """
        super(EndpointModelProperties, self).__init__(**kwargs)
        self.capabilities = kwargs.get('capabilities', None)
        self.deprecation = kwargs.get('deprecation', None)
        self.finetune_capabilities = kwargs.get('finetune_capabilities', None)
        self.format = kwargs.get('format', None)
        self.is_default_version = kwargs.get('is_default_version', None)
        self.lifecycle_status = kwargs.get('lifecycle_status', None)
        self.max_capacity = kwargs.get('max_capacity', None)
        self.name = kwargs.get('name', None)
        self.skus = kwargs.get('skus', None)
        self.system_data = None
        self.version = kwargs.get('version', None)


class EndpointModels(msrest.serialization.Model):
    """EndpointModels.

    :ivar next_link: The link to the next page constructed using the continuationToken.  If null,
     there are no additional pages.
    :vartype next_link: str
    :ivar value: List of models.
    :vartype value: list[~azure.mgmt.machinelearningservices.models.EndpointModelProperties]
    """

    _attribute_map = {
        'next_link': {'key': 'nextLink', 'type': 'str'},
        'value': {'key': 'value', 'type': '[EndpointModelProperties]'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword next_link: The link to the next page constructed using the continuationToken.  If
         null, there are no additional pages.
        :paramtype next_link: str
        :keyword value: List of models.
        :paramtype value: list[~azure.mgmt.machinelearningservices.models.EndpointModelProperties]
        """
        super(EndpointModels, self).__init__(**kwargs)
        self.next_link = kwargs.get('next_link', None)
        self.value = kwargs.get('value', None)


class EndpointModelSkuCapacityProperties(msrest.serialization.Model):
    """EndpointModelSkuCapacityProperties.

    :ivar default: The default capacity.
    :vartype default: int
    :ivar maximum: The maximum capacity.
    :vartype maximum: int
    """

    _attribute_map = {
        'default': {'key': 'default', 'type': 'int'},
        'maximum': {'key': 'maximum', 'type': 'int'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword default: The default capacity.
        :paramtype default: int
        :keyword maximum: The maximum capacity.
        :paramtype maximum: int
        """
        super(EndpointModelSkuCapacityProperties, self).__init__(**kwargs)
        self.default = kwargs.get('default', None)
        self.maximum = kwargs.get('maximum', None)


class EndpointModelSkuProperties(msrest.serialization.Model):
    """EndpointModelSkuProperties.

    :ivar capacity:
    :vartype capacity:
     ~azure.mgmt.machinelearningservices.models.EndpointModelSkuCapacityProperties
    :ivar connection_ids: The list of ARM id for the connection support this SKU.
    :vartype connection_ids: list[str]
    :ivar deprecation_date: The datetime of deprecation of the model SKU.
    :vartype deprecation_date: ~datetime.datetime
    :ivar name: The name of the model SKU.
    :vartype name: str
    :ivar rate_limits:
    :vartype rate_limits:
     list[~azure.mgmt.machinelearningservices.models.EndpointModelSkuRateLimitProperties]
    :ivar usage_name: The usage name of the model SKU.
    :vartype usage_name: str
    """

    _attribute_map = {
        'capacity': {'key': 'capacity', 'type': 'EndpointModelSkuCapacityProperties'},
        'connection_ids': {'key': 'connectionIds', 'type': '[str]'},
        'deprecation_date': {'key': 'deprecationDate', 'type': 'iso-8601'},
        'name': {'key': 'name', 'type': 'str'},
        'rate_limits': {'key': 'rateLimits', 'type': '[EndpointModelSkuRateLimitProperties]'},
        'usage_name': {'key': 'usageName', 'type': 'str'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword capacity:
        :paramtype capacity:
         ~azure.mgmt.machinelearningservices.models.EndpointModelSkuCapacityProperties
        :keyword connection_ids: The list of ARM id for the connection support this SKU.
        :paramtype connection_ids: list[str]
        :keyword deprecation_date: The datetime of deprecation of the model SKU.
        :paramtype deprecation_date: ~datetime.datetime
        :keyword name: The name of the model SKU.
        :paramtype name: str
        :keyword rate_limits:
        :paramtype rate_limits:
         list[~azure.mgmt.machinelearningservices.models.EndpointModelSkuRateLimitProperties]
        :keyword usage_name: The usage name of the model SKU.
        :paramtype usage_name: str
        """
        super(EndpointModelSkuProperties, self).__init__(**kwargs)
        self.capacity = kwargs.get('capacity', None)
        self.connection_ids = kwargs.get('connection_ids', None)
        self.deprecation_date = kwargs.get('deprecation_date', None)
        self.name = kwargs.get('name', None)
        self.rate_limits = kwargs.get('rate_limits', None)
        self.usage_name = kwargs.get('usage_name', None)


class EndpointModelSkuRateLimitProperties(msrest.serialization.Model):
    """EndpointModelSkuRateLimitProperties.

    :ivar count: The count value of Call Rate Limit.
    :vartype count: float
    :ivar renewal_period: The renewal period in seconds of Call Rate Limit.
    :vartype renewal_period: float
    :ivar rules: The call rate limit for the model.
    :vartype rules:
     list[~azure.mgmt.machinelearningservices.models.EndpointModelSkuRateLimitRuleProperties]
    """

    _attribute_map = {
        'count': {'key': 'count', 'type': 'float'},
        'renewal_period': {'key': 'renewalPeriod', 'type': 'float'},
        'rules': {'key': 'rules', 'type': '[EndpointModelSkuRateLimitRuleProperties]'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword count: The count value of Call Rate Limit.
        :paramtype count: float
        :keyword renewal_period: The renewal period in seconds of Call Rate Limit.
        :paramtype renewal_period: float
        :keyword rules: The call rate limit for the model.
        :paramtype rules:
         list[~azure.mgmt.machinelearningservices.models.EndpointModelSkuRateLimitRuleProperties]
        """
        super(EndpointModelSkuRateLimitProperties, self).__init__(**kwargs)
        self.count = kwargs.get('count', None)
        self.renewal_period = kwargs.get('renewal_period', None)
        self.rules = kwargs.get('rules', None)


class EndpointModelSkuRateLimitRulePatternProperties(msrest.serialization.Model):
    """EndpointModelSkuRateLimitRulePatternProperties.

    :ivar method:
    :vartype method: str
    :ivar path:
    :vartype path: str
    """

    _attribute_map = {
        'method': {'key': 'method', 'type': 'str'},
        'path': {'key': 'path', 'type': 'str'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword method:
        :paramtype method: str
        :keyword path:
        :paramtype path: str
        """
        super(EndpointModelSkuRateLimitRulePatternProperties, self).__init__(**kwargs)
        self.method = kwargs.get('method', None)
        self.path = kwargs.get('path', None)


class EndpointModelSkuRateLimitRuleProperties(msrest.serialization.Model):
    """EndpointModelSkuRateLimitRuleProperties.

    :ivar count:
    :vartype count: float
    :ivar dynamic_throttling_enabled: If the dynamic throttling is enabled.
    :vartype dynamic_throttling_enabled: bool
    :ivar key:
    :vartype key: str
    :ivar match_patterns:
    :vartype match_patterns:
     list[~azure.mgmt.machinelearningservices.models.EndpointModelSkuRateLimitRulePatternProperties]
    :ivar min_count:
    :vartype min_count: float
    :ivar renewal_period:
    :vartype renewal_period: float
    """

    _attribute_map = {
        'count': {'key': 'count', 'type': 'float'},
        'dynamic_throttling_enabled': {'key': 'dynamicThrottlingEnabled', 'type': 'bool'},
        'key': {'key': 'key', 'type': 'str'},
        'match_patterns': {'key': 'matchPatterns', 'type': '[EndpointModelSkuRateLimitRulePatternProperties]'},
        'min_count': {'key': 'minCount', 'type': 'float'},
        'renewal_period': {'key': 'renewalPeriod', 'type': 'float'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword count:
        :paramtype count: float
        :keyword dynamic_throttling_enabled: If the dynamic throttling is enabled.
        :paramtype dynamic_throttling_enabled: bool
        :keyword key:
        :paramtype key: str
        :keyword match_patterns:
        :paramtype match_patterns:
         list[~azure.mgmt.machinelearningservices.models.EndpointModelSkuRateLimitRulePatternProperties]
        :keyword min_count:
        :paramtype min_count: float
        :keyword renewal_period:
        :paramtype renewal_period: float
        """
        super(EndpointModelSkuRateLimitRuleProperties, self).__init__(**kwargs)
        self.count = kwargs.get('count', None)
        self.dynamic_throttling_enabled = kwargs.get('dynamic_throttling_enabled', None)
        self.key = kwargs.get('key', None)
        self.match_patterns = kwargs.get('match_patterns', None)
        self.min_count = kwargs.get('min_count', None)
        self.renewal_period = kwargs.get('renewal_period', None)


class EndpointResourcePropertiesBasicResource(Resource):
    """EndpointResourcePropertiesBasicResource.

    Variables are only populated by the server, and will be ignored when sending a request.

    All required parameters must be populated in order to send to Azure.

    :ivar id: Fully qualified resource ID for the resource. Ex -
     /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}.
    :vartype id: str
    :ivar name: The name of the resource.
    :vartype name: str
    :ivar type: The type of the resource. E.g. "Microsoft.Compute/virtualMachines" or
     "Microsoft.Storage/storageAccounts".
    :vartype type: str
    :ivar system_data: Azure Resource Manager metadata containing createdBy and modifiedBy
     information.
    :vartype system_data: ~azure.mgmt.machinelearningservices.models.SystemData
    :ivar properties: Required.
    :vartype properties: ~azure.mgmt.machinelearningservices.models.EndpointResourceProperties
    """

    _validation = {
        'id': {'readonly': True},
        'name': {'readonly': True},
        'type': {'readonly': True},
        'system_data': {'readonly': True},
        'properties': {'required': True},
    }

    _attribute_map = {
        'id': {'key': 'id', 'type': 'str'},
        'name': {'key': 'name', 'type': 'str'},
        'type': {'key': 'type', 'type': 'str'},
        'system_data': {'key': 'systemData', 'type': 'SystemData'},
        'properties': {'key': 'properties', 'type': 'EndpointResourceProperties'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword properties: Required.
        :paramtype properties: ~azure.mgmt.machinelearningservices.models.EndpointResourceProperties
        """
        super(EndpointResourcePropertiesBasicResource, self).__init__(**kwargs)
        self.properties = kwargs['properties']


class EndpointResourcePropertiesBasicResourceArmPaginatedResult(msrest.serialization.Model):
    """EndpointResourcePropertiesBasicResourceArmPaginatedResult.

    :ivar next_link:
    :vartype next_link: str
    :ivar value:
    :vartype value:
     list[~azure.mgmt.machinelearningservices.models.EndpointResourcePropertiesBasicResource]
    """

    _attribute_map = {
        'next_link': {'key': 'nextLink', 'type': 'str'},
        'value': {'key': 'value', 'type': '[EndpointResourcePropertiesBasicResource]'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword next_link:
        :paramtype next_link: str
        :keyword value:
        :paramtype value:
         list[~azure.mgmt.machinelearningservices.models.EndpointResourcePropertiesBasicResource]
        """
        super(EndpointResourcePropertiesBasicResourceArmPaginatedResult, self).__init__(**kwargs)
        self.next_link = kwargs.get('next_link', None)
        self.value = kwargs.get('value', None)


class EndpointScheduleAction(ScheduleActionBase):
    """EndpointScheduleAction.

    All required parameters must be populated in order to send to Azure.

    :ivar action_type: Required. [Required] Specifies the action type of the schedule.Constant
     filled by server. Possible values include: "CreateJob", "InvokeBatchEndpoint", "CreateMonitor".
    :vartype action_type: str or ~azure.mgmt.machinelearningservices.models.ScheduleActionType
    :ivar endpoint_invocation_definition: Required. [Required] Defines Schedule action definition
     details.
    
    
     .. raw:: html
    
        <see href="TBD" />.
    :vartype endpoint_invocation_definition: any
    """

    _validation = {
        'action_type': {'required': True},
        'endpoint_invocation_definition': {'required': True},
    }

    _attribute_map = {
        'action_type': {'key': 'actionType', 'type': 'str'},
        'endpoint_invocation_definition': {'key': 'endpointInvocationDefinition', 'type': 'object'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword endpoint_invocation_definition: Required. [Required] Defines Schedule action
         definition details.
        
        
         .. raw:: html
        
            <see href="TBD" />.
        :paramtype endpoint_invocation_definition: any
        """
        super(EndpointScheduleAction, self).__init__(**kwargs)
        self.action_type = 'InvokeBatchEndpoint'  # type: str
        self.endpoint_invocation_definition = kwargs['endpoint_invocation_definition']


class EnvironmentContainer(ProxyResource):
    """Azure Resource Manager resource envelope.

    Variables are only populated by the server, and will be ignored when sending a request.

    All required parameters must be populated in order to send to Azure.

    :ivar id: Fully qualified resource ID for the resource. Ex -
     /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}.
    :vartype id: str
    :ivar name: The name of the resource.
    :vartype name: str
    :ivar type: The type of the resource. E.g. "Microsoft.Compute/virtualMachines" or
     "Microsoft.Storage/storageAccounts".
    :vartype type: str
    :ivar system_data: Azure Resource Manager metadata containing createdBy and modifiedBy
     information.
    :vartype system_data: ~azure.mgmt.machinelearningservices.models.SystemData
    :ivar properties: Required. [Required] Additional attributes of the entity.
    :vartype properties: ~azure.mgmt.machinelearningservices.models.EnvironmentContainerProperties
    """

    _validation = {
        'id': {'readonly': True},
        'name': {'readonly': True},
        'type': {'readonly': True},
        'system_data': {'readonly': True},
        'properties': {'required': True},
    }

    _attribute_map = {
        'id': {'key': 'id', 'type': 'str'},
        'name': {'key': 'name', 'type': 'str'},
        'type': {'key': 'type', 'type': 'str'},
        'system_data': {'key': 'systemData', 'type': 'SystemData'},
        'properties': {'key': 'properties', 'type': 'EnvironmentContainerProperties'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword properties: Required. [Required] Additional attributes of the entity.
        :paramtype properties:
         ~azure.mgmt.machinelearningservices.models.EnvironmentContainerProperties
        """
        super(EnvironmentContainer, self).__init__(**kwargs)
        self.properties = kwargs['properties']


class EnvironmentContainerProperties(AssetContainer):
    """Container for environment specification versions.

    Variables are only populated by the server, and will be ignored when sending a request.

    :ivar description: The asset description text.
    :vartype description: str
    :ivar properties: The asset property dictionary.
    :vartype properties: dict[str, str]
    :ivar tags: A set of tags. Tag dictionary. Tags can be added, removed, and updated.
    :vartype tags: dict[str, str]
    :ivar is_archived: Is the asset archived?.
    :vartype is_archived: bool
    :ivar latest_version: The latest version inside this container.
    :vartype latest_version: str
    :ivar next_version: The next auto incremental version.
    :vartype next_version: str
    :ivar provisioning_state: Provisioning state for the environment container. Possible values
     include: "Succeeded", "Failed", "Canceled", "Creating", "Updating", "Deleting".
    :vartype provisioning_state: str or
     ~azure.mgmt.machinelearningservices.models.AssetProvisioningState
    """

    _validation = {
        'latest_version': {'readonly': True},
        'next_version': {'readonly': True},
        'provisioning_state': {'readonly': True},
    }

    _attribute_map = {
        'description': {'key': 'description', 'type': 'str'},
        'properties': {'key': 'properties', 'type': '{str}'},
        'tags': {'key': 'tags', 'type': '{str}'},
        'is_archived': {'key': 'isArchived', 'type': 'bool'},
        'latest_version': {'key': 'latestVersion', 'type': 'str'},
        'next_version': {'key': 'nextVersion', 'type': 'str'},
        'provisioning_state': {'key': 'provisioningState', 'type': 'str'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword description: The asset description text.
        :paramtype description: str
        :keyword properties: The asset property dictionary.
        :paramtype properties: dict[str, str]
        :keyword tags: A set of tags. Tag dictionary. Tags can be added, removed, and updated.
        :paramtype tags: dict[str, str]
        :keyword is_archived: Is the asset archived?.
        :paramtype is_archived: bool
        """
        super(EnvironmentContainerProperties, self).__init__(**kwargs)
        self.provisioning_state = None


class EnvironmentContainerResourceArmPaginatedResult(msrest.serialization.Model):
    """A paginated list of EnvironmentContainer entities.

    :ivar next_link: The link to the next page of EnvironmentContainer objects. If null, there are
     no additional pages.
    :vartype next_link: str
    :ivar value: An array of objects of type EnvironmentContainer.
    :vartype value: list[~azure.mgmt.machinelearningservices.models.EnvironmentContainer]
    """

    _attribute_map = {
        'next_link': {'key': 'nextLink', 'type': 'str'},
        'value': {'key': 'value', 'type': '[EnvironmentContainer]'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword next_link: The link to the next page of EnvironmentContainer objects. If null, there
         are no additional pages.
        :paramtype next_link: str
        :keyword value: An array of objects of type EnvironmentContainer.
        :paramtype value: list[~azure.mgmt.machinelearningservices.models.EnvironmentContainer]
        """
        super(EnvironmentContainerResourceArmPaginatedResult, self).__init__(**kwargs)
        self.next_link = kwargs.get('next_link', None)
        self.value = kwargs.get('value', None)


class EnvironmentVariable(msrest.serialization.Model):
    """EnvironmentVariable.

    :ivar additional_properties: Unmatched properties from the message are deserialized to this
     collection.
    :vartype additional_properties: dict[str, any]
    :ivar type: Type of the Environment Variable. Possible values are: local - For local variable.
     Possible values include: "local". Default value: "local".
    :vartype type: str or ~azure.mgmt.machinelearningservices.models.EnvironmentVariableType
    :ivar value: Value of the Environment variable.
    :vartype value: str
    """

    _attribute_map = {
        'additional_properties': {'key': '', 'type': '{object}'},
        'type': {'key': 'type', 'type': 'str'},
        'value': {'key': 'value', 'type': 'str'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword additional_properties: Unmatched properties from the message are deserialized to this
         collection.
        :paramtype additional_properties: dict[str, any]
        :keyword type: Type of the Environment Variable. Possible values are: local - For local
         variable. Possible values include: "local". Default value: "local".
        :paramtype type: str or ~azure.mgmt.machinelearningservices.models.EnvironmentVariableType
        :keyword value: Value of the Environment variable.
        :paramtype value: str
        """
        super(EnvironmentVariable, self).__init__(**kwargs)
        self.additional_properties = kwargs.get('additional_properties', None)
        self.type = kwargs.get('type', "local")
        self.value = kwargs.get('value', None)


class EnvironmentVersion(ProxyResource):
    """Azure Resource Manager resource envelope.

    Variables are only populated by the server, and will be ignored when sending a request.

    All required parameters must be populated in order to send to Azure.

    :ivar id: Fully qualified resource ID for the resource. Ex -
     /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}.
    :vartype id: str
    :ivar name: The name of the resource.
    :vartype name: str
    :ivar type: The type of the resource. E.g. "Microsoft.Compute/virtualMachines" or
     "Microsoft.Storage/storageAccounts".
    :vartype type: str
    :ivar system_data: Azure Resource Manager metadata containing createdBy and modifiedBy
     information.
    :vartype system_data: ~azure.mgmt.machinelearningservices.models.SystemData
    :ivar properties: Required. [Required] Additional attributes of the entity.
    :vartype properties: ~azure.mgmt.machinelearningservices.models.EnvironmentVersionProperties
    """

    _validation = {
        'id': {'readonly': True},
        'name': {'readonly': True},
        'type': {'readonly': True},
        'system_data': {'readonly': True},
        'properties': {'required': True},
    }

    _attribute_map = {
        'id': {'key': 'id', 'type': 'str'},
        'name': {'key': 'name', 'type': 'str'},
        'type': {'key': 'type', 'type': 'str'},
        'system_data': {'key': 'systemData', 'type': 'SystemData'},
        'properties': {'key': 'properties', 'type': 'EnvironmentVersionProperties'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword properties: Required. [Required] Additional attributes of the entity.
        :paramtype properties: ~azure.mgmt.machinelearningservices.models.EnvironmentVersionProperties
        """
        super(EnvironmentVersion, self).__init__(**kwargs)
        self.properties = kwargs['properties']


class EnvironmentVersionProperties(AssetBase):
    """Environment version details.

    Variables are only populated by the server, and will be ignored when sending a request.

    :ivar description: The asset description text.
    :vartype description: str
    :ivar properties: The asset property dictionary.
    :vartype properties: dict[str, str]
    :ivar tags: A set of tags. Tag dictionary. Tags can be added, removed, and updated.
    :vartype tags: dict[str, str]
    :ivar is_anonymous: If the name version are system generated (anonymous registration).
    :vartype is_anonymous: bool
    :ivar is_archived: Is the asset archived?.
    :vartype is_archived: bool
    :ivar auto_rebuild: Defines if image needs to be rebuilt based on base image changes. Possible
     values include: "Disabled", "OnBaseImageUpdate".
    :vartype auto_rebuild: str or ~azure.mgmt.machinelearningservices.models.AutoRebuildSetting
    :ivar build: Configuration settings for Docker build context.
    :vartype build: ~azure.mgmt.machinelearningservices.models.BuildContext
    :ivar conda_file: Standard configuration file used by Conda that lets you install any kind of
     package, including Python, R, and C/C++ packages.
    
    
     .. raw:: html
    
        <see
     href="https://repo2docker.readthedocs.io/en/latest/config_files.html#environment-yml-install-a-conda-environment"
     />.
    :vartype conda_file: str
    :ivar environment_type: Environment type is either user managed or curated by the Azure ML
     service
    
    
     .. raw:: html
    
        <see
     href="https://docs.microsoft.com/en-us/azure/machine-learning/resource-curated-environments"
     />. Possible values include: "Curated", "UserCreated".
    :vartype environment_type: str or ~azure.mgmt.machinelearningservices.models.EnvironmentType
    :ivar image: Name of the image that will be used for the environment.
    
    
     .. raw:: html
    
        <seealso
     href="https://docs.microsoft.com/en-us/azure/machine-learning/how-to-deploy-custom-docker-image#use-a-custom-base-image"
     />.
    :vartype image: str
    :ivar image_details: Environment image details.
    :vartype image_details: ~azure.mgmt.machinelearningservices.models.ImageDetails
    :ivar inference_config: Defines configuration specific to inference.
    :vartype inference_config:
     ~azure.mgmt.machinelearningservices.models.InferenceContainerProperties
    :ivar os_type: The OS type of the environment. Possible values include: "Linux", "Windows".
    :vartype os_type: str or ~azure.mgmt.machinelearningservices.models.OperatingSystemType
    :ivar provisioning_state: Provisioning state for the environment version. Possible values
     include: "Succeeded", "Failed", "Canceled", "Creating", "Updating", "Deleting".
    :vartype provisioning_state: str or
     ~azure.mgmt.machinelearningservices.models.AssetProvisioningState
    :ivar stage: Stage in the environment lifecycle assigned to this environment.
    :vartype stage: str
    """

    _validation = {
        'environment_type': {'readonly': True},
        'provisioning_state': {'readonly': True},
    }

    _attribute_map = {
        'description': {'key': 'description', 'type': 'str'},
        'properties': {'key': 'properties', 'type': '{str}'},
        'tags': {'key': 'tags', 'type': '{str}'},
        'is_anonymous': {'key': 'isAnonymous', 'type': 'bool'},
        'is_archived': {'key': 'isArchived', 'type': 'bool'},
        'auto_rebuild': {'key': 'autoRebuild', 'type': 'str'},
        'build': {'key': 'build', 'type': 'BuildContext'},
        'conda_file': {'key': 'condaFile', 'type': 'str'},
        'environment_type': {'key': 'environmentType', 'type': 'str'},
        'image': {'key': 'image', 'type': 'str'},
        'image_details': {'key': 'imageDetails', 'type': 'ImageDetails'},
        'inference_config': {'key': 'inferenceConfig', 'type': 'InferenceContainerProperties'},
        'os_type': {'key': 'osType', 'type': 'str'},
        'provisioning_state': {'key': 'provisioningState', 'type': 'str'},
        'stage': {'key': 'stage', 'type': 'str'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword description: The asset description text.
        :paramtype description: str
        :keyword properties: The asset property dictionary.
        :paramtype properties: dict[str, str]
        :keyword tags: A set of tags. Tag dictionary. Tags can be added, removed, and updated.
        :paramtype tags: dict[str, str]
        :keyword is_anonymous: If the name version are system generated (anonymous registration).
        :paramtype is_anonymous: bool
        :keyword is_archived: Is the asset archived?.
        :paramtype is_archived: bool
        :keyword auto_rebuild: Defines if image needs to be rebuilt based on base image changes.
         Possible values include: "Disabled", "OnBaseImageUpdate".
        :paramtype auto_rebuild: str or ~azure.mgmt.machinelearningservices.models.AutoRebuildSetting
        :keyword build: Configuration settings for Docker build context.
        :paramtype build: ~azure.mgmt.machinelearningservices.models.BuildContext
        :keyword conda_file: Standard configuration file used by Conda that lets you install any kind
         of package, including Python, R, and C/C++ packages.
        
        
         .. raw:: html
        
            <see
         href="https://repo2docker.readthedocs.io/en/latest/config_files.html#environment-yml-install-a-conda-environment"
         />.
        :paramtype conda_file: str
        :keyword image: Name of the image that will be used for the environment.
        
        
         .. raw:: html
        
            <seealso
         href="https://docs.microsoft.com/en-us/azure/machine-learning/how-to-deploy-custom-docker-image#use-a-custom-base-image"
         />.
        :paramtype image: str
        :keyword image_details: Environment image details.
        :paramtype image_details: ~azure.mgmt.machinelearningservices.models.ImageDetails
        :keyword inference_config: Defines configuration specific to inference.
        :paramtype inference_config:
         ~azure.mgmt.machinelearningservices.models.InferenceContainerProperties
        :keyword os_type: The OS type of the environment. Possible values include: "Linux", "Windows".
        :paramtype os_type: str or ~azure.mgmt.machinelearningservices.models.OperatingSystemType
        :keyword stage: Stage in the environment lifecycle assigned to this environment.
        :paramtype stage: str
        """
        super(EnvironmentVersionProperties, self).__init__(**kwargs)
        self.auto_rebuild = kwargs.get('auto_rebuild', None)
        self.build = kwargs.get('build', None)
        self.conda_file = kwargs.get('conda_file', None)
        self.environment_type = None
        self.image = kwargs.get('image', None)
        self.image_details = kwargs.get('image_details', None)
        self.inference_config = kwargs.get('inference_config', None)
        self.os_type = kwargs.get('os_type', None)
        self.provisioning_state = None
        self.stage = kwargs.get('stage', None)


class EnvironmentVersionResourceArmPaginatedResult(msrest.serialization.Model):
    """A paginated list of EnvironmentVersion entities.

    :ivar next_link: The link to the next page of EnvironmentVersion objects. If null, there are no
     additional pages.
    :vartype next_link: str
    :ivar value: An array of objects of type EnvironmentVersion.
    :vartype value: list[~azure.mgmt.machinelearningservices.models.EnvironmentVersion]
    """

    _attribute_map = {
        'next_link': {'key': 'nextLink', 'type': 'str'},
        'value': {'key': 'value', 'type': '[EnvironmentVersion]'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword next_link: The link to the next page of EnvironmentVersion objects. If null, there are
         no additional pages.
        :paramtype next_link: str
        :keyword value: An array of objects of type EnvironmentVersion.
        :paramtype value: list[~azure.mgmt.machinelearningservices.models.EnvironmentVersion]
        """
        super(EnvironmentVersionResourceArmPaginatedResult, self).__init__(**kwargs)
        self.next_link = kwargs.get('next_link', None)
        self.value = kwargs.get('value', None)


class ErrorAdditionalInfo(msrest.serialization.Model):
    """The resource management error additional info.

    Variables are only populated by the server, and will be ignored when sending a request.

    :ivar type: The additional info type.
    :vartype type: str
    :ivar info: The additional info.
    :vartype info: any
    """

    _validation = {
        'type': {'readonly': True},
        'info': {'readonly': True},
    }

    _attribute_map = {
        'type': {'key': 'type', 'type': 'str'},
        'info': {'key': 'info', 'type': 'object'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        """
        super(ErrorAdditionalInfo, self).__init__(**kwargs)
        self.type = None
        self.info = None


class ErrorDetail(msrest.serialization.Model):
    """The error detail.

    Variables are only populated by the server, and will be ignored when sending a request.

    :ivar code: The error code.
    :vartype code: str
    :ivar message: The error message.
    :vartype message: str
    :ivar target: The error target.
    :vartype target: str
    :ivar details: The error details.
    :vartype details: list[~azure.mgmt.machinelearningservices.models.ErrorDetail]
    :ivar additional_info: The error additional info.
    :vartype additional_info: list[~azure.mgmt.machinelearningservices.models.ErrorAdditionalInfo]
    """

    _validation = {
        'code': {'readonly': True},
        'message': {'readonly': True},
        'target': {'readonly': True},
        'details': {'readonly': True},
        'additional_info': {'readonly': True},
    }

    _attribute_map = {
        'code': {'key': 'code', 'type': 'str'},
        'message': {'key': 'message', 'type': 'str'},
        'target': {'key': 'target', 'type': 'str'},
        'details': {'key': 'details', 'type': '[ErrorDetail]'},
        'additional_info': {'key': 'additionalInfo', 'type': '[ErrorAdditionalInfo]'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        """
        super(ErrorDetail, self).__init__(**kwargs)
        self.code = None
        self.message = None
        self.target = None
        self.details = None
        self.additional_info = None


class ErrorResponse(msrest.serialization.Model):
    """Common error response for all Azure Resource Manager APIs to return error details for failed operations. (This also follows the OData error response format.).

    :ivar error: The error object.
    :vartype error: ~azure.mgmt.machinelearningservices.models.ErrorDetail
    """

    _attribute_map = {
        'error': {'key': 'error', 'type': 'ErrorDetail'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword error: The error object.
        :paramtype error: ~azure.mgmt.machinelearningservices.models.ErrorDetail
        """
        super(ErrorResponse, self).__init__(**kwargs)
        self.error = kwargs.get('error', None)


class EstimatedVMPrice(msrest.serialization.Model):
    """The estimated price info for using a VM of a particular OS type, tier, etc.

    All required parameters must be populated in order to send to Azure.

    :ivar retail_price: Required. The price charged for using the VM.
    :vartype retail_price: float
    :ivar os_type: Required. Operating system type used by the VM. Possible values include:
     "Linux", "Windows".
    :vartype os_type: str or ~azure.mgmt.machinelearningservices.models.VMPriceOSType
    :ivar vm_tier: Required. The type of the VM. Possible values include: "Standard",
     "LowPriority", "Spot".
    :vartype vm_tier: str or ~azure.mgmt.machinelearningservices.models.VMTier
    """

    _validation = {
        'retail_price': {'required': True},
        'os_type': {'required': True},
        'vm_tier': {'required': True},
    }

    _attribute_map = {
        'retail_price': {'key': 'retailPrice', 'type': 'float'},
        'os_type': {'key': 'osType', 'type': 'str'},
        'vm_tier': {'key': 'vmTier', 'type': 'str'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword retail_price: Required. The price charged for using the VM.
        :paramtype retail_price: float
        :keyword os_type: Required. Operating system type used by the VM. Possible values include:
         "Linux", "Windows".
        :paramtype os_type: str or ~azure.mgmt.machinelearningservices.models.VMPriceOSType
        :keyword vm_tier: Required. The type of the VM. Possible values include: "Standard",
         "LowPriority", "Spot".
        :paramtype vm_tier: str or ~azure.mgmt.machinelearningservices.models.VMTier
        """
        super(EstimatedVMPrice, self).__init__(**kwargs)
        self.retail_price = kwargs['retail_price']
        self.os_type = kwargs['os_type']
        self.vm_tier = kwargs['vm_tier']


class EstimatedVMPrices(msrest.serialization.Model):
    """The estimated price info for using a VM.

    All required parameters must be populated in order to send to Azure.

    :ivar billing_currency: Required. Three lettered code specifying the currency of the VM price.
     Example: USD. Possible values include: "USD".
    :vartype billing_currency: str or ~azure.mgmt.machinelearningservices.models.BillingCurrency
    :ivar unit_of_measure: Required. The unit of time measurement for the specified VM price.
     Example: OneHour. Possible values include: "OneHour".
    :vartype unit_of_measure: str or ~azure.mgmt.machinelearningservices.models.UnitOfMeasure
    :ivar values: Required. The list of estimated prices for using a VM of a particular OS type,
     tier, etc.
    :vartype values: list[~azure.mgmt.machinelearningservices.models.EstimatedVMPrice]
    """

    _validation = {
        'billing_currency': {'required': True},
        'unit_of_measure': {'required': True},
        'values': {'required': True},
    }

    _attribute_map = {
        'billing_currency': {'key': 'billingCurrency', 'type': 'str'},
        'unit_of_measure': {'key': 'unitOfMeasure', 'type': 'str'},
        'values': {'key': 'values', 'type': '[EstimatedVMPrice]'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword billing_currency: Required. Three lettered code specifying the currency of the VM
         price. Example: USD. Possible values include: "USD".
        :paramtype billing_currency: str or ~azure.mgmt.machinelearningservices.models.BillingCurrency
        :keyword unit_of_measure: Required. The unit of time measurement for the specified VM price.
         Example: OneHour. Possible values include: "OneHour".
        :paramtype unit_of_measure: str or ~azure.mgmt.machinelearningservices.models.UnitOfMeasure
        :keyword values: Required. The list of estimated prices for using a VM of a particular OS type,
         tier, etc.
        :paramtype values: list[~azure.mgmt.machinelearningservices.models.EstimatedVMPrice]
        """
        super(EstimatedVMPrices, self).__init__(**kwargs)
        self.billing_currency = kwargs['billing_currency']
        self.unit_of_measure = kwargs['unit_of_measure']
        self.values = kwargs['values']


class ExternalFQDNResponse(msrest.serialization.Model):
    """ExternalFQDNResponse.

    :ivar value:
    :vartype value: list[~azure.mgmt.machinelearningservices.models.FQDNEndpointsPropertyBag]
    """

    _attribute_map = {
        'value': {'key': 'value', 'type': '[FQDNEndpointsPropertyBag]'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword value:
        :paramtype value: list[~azure.mgmt.machinelearningservices.models.FQDNEndpointsPropertyBag]
        """
        super(ExternalFQDNResponse, self).__init__(**kwargs)
        self.value = kwargs.get('value', None)


class Feature(ProxyResource):
    """Azure Resource Manager resource envelope.

    Variables are only populated by the server, and will be ignored when sending a request.

    All required parameters must be populated in order to send to Azure.

    :ivar id: Fully qualified resource ID for the resource. Ex -
     /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}.
    :vartype id: str
    :ivar name: The name of the resource.
    :vartype name: str
    :ivar type: The type of the resource. E.g. "Microsoft.Compute/virtualMachines" or
     "Microsoft.Storage/storageAccounts".
    :vartype type: str
    :ivar system_data: Azure Resource Manager metadata containing createdBy and modifiedBy
     information.
    :vartype system_data: ~azure.mgmt.machinelearningservices.models.SystemData
    :ivar properties: Required. [Required] Additional attributes of the entity.
    :vartype properties: ~azure.mgmt.machinelearningservices.models.FeatureProperties
    """

    _validation = {
        'id': {'readonly': True},
        'name': {'readonly': True},
        'type': {'readonly': True},
        'system_data': {'readonly': True},
        'properties': {'required': True},
    }

    _attribute_map = {
        'id': {'key': 'id', 'type': 'str'},
        'name': {'key': 'name', 'type': 'str'},
        'type': {'key': 'type', 'type': 'str'},
        'system_data': {'key': 'systemData', 'type': 'SystemData'},
        'properties': {'key': 'properties', 'type': 'FeatureProperties'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword properties: Required. [Required] Additional attributes of the entity.
        :paramtype properties: ~azure.mgmt.machinelearningservices.models.FeatureProperties
        """
        super(Feature, self).__init__(**kwargs)
        self.properties = kwargs['properties']


class FeatureAttributionDriftMonitoringSignal(MonitoringSignalBase):
    """FeatureAttributionDriftMonitoringSignal.

    All required parameters must be populated in order to send to Azure.

    :ivar notification_types: The current notification mode for this signal.
    :vartype notification_types: list[str or
     ~azure.mgmt.machinelearningservices.models.MonitoringNotificationType]
    :ivar properties: Property dictionary. Properties can be added, but not removed or altered.
    :vartype properties: dict[str, str]
    :ivar signal_type: Required. [Required] Specifies the type of signal to monitor.Constant filled
     by server. Possible values include: "DataDrift", "PredictionDrift", "DataQuality",
     "FeatureAttributionDrift", "Custom".
    :vartype signal_type: str or ~azure.mgmt.machinelearningservices.models.MonitoringSignalType
    :ivar feature_data_type_override: A dictionary that maps feature names to their respective data
     types.
    :vartype feature_data_type_override: dict[str, str or
     ~azure.mgmt.machinelearningservices.models.MonitoringFeatureDataType]
    :ivar feature_importance_settings: Required. [Required] The settings for computing feature
     importance.
    :vartype feature_importance_settings:
     ~azure.mgmt.machinelearningservices.models.FeatureImportanceSettings
    :ivar metric_threshold: Required. [Required] A list of metrics to calculate and their
     associated thresholds.
    :vartype metric_threshold:
     ~azure.mgmt.machinelearningservices.models.FeatureAttributionMetricThreshold
    :ivar production_data: Required. [Required] The data which drift will be calculated for.
    :vartype production_data:
     list[~azure.mgmt.machinelearningservices.models.MonitoringInputDataBase]
    :ivar reference_data: Required. [Required] The data to calculate drift against.
    :vartype reference_data: ~azure.mgmt.machinelearningservices.models.MonitoringInputDataBase
    """

    _validation = {
        'signal_type': {'required': True},
        'feature_importance_settings': {'required': True},
        'metric_threshold': {'required': True},
        'production_data': {'required': True},
        'reference_data': {'required': True},
    }

    _attribute_map = {
        'notification_types': {'key': 'notificationTypes', 'type': '[str]'},
        'properties': {'key': 'properties', 'type': '{str}'},
        'signal_type': {'key': 'signalType', 'type': 'str'},
        'feature_data_type_override': {'key': 'featureDataTypeOverride', 'type': '{str}'},
        'feature_importance_settings': {'key': 'featureImportanceSettings', 'type': 'FeatureImportanceSettings'},
        'metric_threshold': {'key': 'metricThreshold', 'type': 'FeatureAttributionMetricThreshold'},
        'production_data': {'key': 'productionData', 'type': '[MonitoringInputDataBase]'},
        'reference_data': {'key': 'referenceData', 'type': 'MonitoringInputDataBase'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword notification_types: The current notification mode for this signal.
        :paramtype notification_types: list[str or
         ~azure.mgmt.machinelearningservices.models.MonitoringNotificationType]
        :keyword properties: Property dictionary. Properties can be added, but not removed or altered.
        :paramtype properties: dict[str, str]
        :keyword feature_data_type_override: A dictionary that maps feature names to their respective
         data types.
        :paramtype feature_data_type_override: dict[str, str or
         ~azure.mgmt.machinelearningservices.models.MonitoringFeatureDataType]
        :keyword feature_importance_settings: Required. [Required] The settings for computing feature
         importance.
        :paramtype feature_importance_settings:
         ~azure.mgmt.machinelearningservices.models.FeatureImportanceSettings
        :keyword metric_threshold: Required. [Required] A list of metrics to calculate and their
         associated thresholds.
        :paramtype metric_threshold:
         ~azure.mgmt.machinelearningservices.models.FeatureAttributionMetricThreshold
        :keyword production_data: Required. [Required] The data which drift will be calculated for.
        :paramtype production_data:
         list[~azure.mgmt.machinelearningservices.models.MonitoringInputDataBase]
        :keyword reference_data: Required. [Required] The data to calculate drift against.
        :paramtype reference_data: ~azure.mgmt.machinelearningservices.models.MonitoringInputDataBase
        """
        super(FeatureAttributionDriftMonitoringSignal, self).__init__(**kwargs)
        self.signal_type = 'FeatureAttributionDrift'  # type: str
        self.feature_data_type_override = kwargs.get('feature_data_type_override', None)
        self.feature_importance_settings = kwargs['feature_importance_settings']
        self.metric_threshold = kwargs['metric_threshold']
        self.production_data = kwargs['production_data']
        self.reference_data = kwargs['reference_data']


class FeatureAttributionMetricThreshold(msrest.serialization.Model):
    """FeatureAttributionMetricThreshold.

    All required parameters must be populated in order to send to Azure.

    :ivar metric: Required. [Required] The feature attribution metric to calculate. Possible values
     include: "NormalizedDiscountedCumulativeGain".
    :vartype metric: str or ~azure.mgmt.machinelearningservices.models.FeatureAttributionMetric
    :ivar threshold: The threshold value. If null, a default value will be set depending on the
     selected metric.
    :vartype threshold: ~azure.mgmt.machinelearningservices.models.MonitoringThreshold
    """

    _validation = {
        'metric': {'required': True},
    }

    _attribute_map = {
        'metric': {'key': 'metric', 'type': 'str'},
        'threshold': {'key': 'threshold', 'type': 'MonitoringThreshold'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword metric: Required. [Required] The feature attribution metric to calculate. Possible
         values include: "NormalizedDiscountedCumulativeGain".
        :paramtype metric: str or ~azure.mgmt.machinelearningservices.models.FeatureAttributionMetric
        :keyword threshold: The threshold value. If null, a default value will be set depending on the
         selected metric.
        :paramtype threshold: ~azure.mgmt.machinelearningservices.models.MonitoringThreshold
        """
        super(FeatureAttributionMetricThreshold, self).__init__(**kwargs)
        self.metric = kwargs['metric']
        self.threshold = kwargs.get('threshold', None)


class FeatureImportanceSettings(msrest.serialization.Model):
    """FeatureImportanceSettings.

    :ivar mode: The mode of operation for computing feature importance. Possible values include:
     "Disabled", "Enabled".
    :vartype mode: str or ~azure.mgmt.machinelearningservices.models.FeatureImportanceMode
    :ivar target_column: The name of the target column within the input data asset.
    :vartype target_column: str
    """

    _attribute_map = {
        'mode': {'key': 'mode', 'type': 'str'},
        'target_column': {'key': 'targetColumn', 'type': 'str'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword mode: The mode of operation for computing feature importance. Possible values include:
         "Disabled", "Enabled".
        :paramtype mode: str or ~azure.mgmt.machinelearningservices.models.FeatureImportanceMode
        :keyword target_column: The name of the target column within the input data asset.
        :paramtype target_column: str
        """
        super(FeatureImportanceSettings, self).__init__(**kwargs)
        self.mode = kwargs.get('mode', None)
        self.target_column = kwargs.get('target_column', None)


class FeatureProperties(ResourceBase):
    """DTO object representing feature.

    :ivar description: The asset description text.
    :vartype description: str
    :ivar properties: The asset property dictionary.
    :vartype properties: dict[str, str]
    :ivar tags: A set of tags. Tag dictionary. Tags can be added, removed, and updated.
    :vartype tags: dict[str, str]
    :ivar data_type: Specifies type. Possible values include: "String", "Integer", "Long", "Float",
     "Double", "Binary", "Datetime", "Boolean".
    :vartype data_type: str or ~azure.mgmt.machinelearningservices.models.FeatureDataType
    :ivar feature_name: Specifies name.
    :vartype feature_name: str
    """

    _attribute_map = {
        'description': {'key': 'description', 'type': 'str'},
        'properties': {'key': 'properties', 'type': '{str}'},
        'tags': {'key': 'tags', 'type': '{str}'},
        'data_type': {'key': 'dataType', 'type': 'str'},
        'feature_name': {'key': 'featureName', 'type': 'str'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword description: The asset description text.
        :paramtype description: str
        :keyword properties: The asset property dictionary.
        :paramtype properties: dict[str, str]
        :keyword tags: A set of tags. Tag dictionary. Tags can be added, removed, and updated.
        :paramtype tags: dict[str, str]
        :keyword data_type: Specifies type. Possible values include: "String", "Integer", "Long",
         "Float", "Double", "Binary", "Datetime", "Boolean".
        :paramtype data_type: str or ~azure.mgmt.machinelearningservices.models.FeatureDataType
        :keyword feature_name: Specifies name.
        :paramtype feature_name: str
        """
        super(FeatureProperties, self).__init__(**kwargs)
        self.data_type = kwargs.get('data_type', None)
        self.feature_name = kwargs.get('feature_name', None)


class FeatureResourceArmPaginatedResult(msrest.serialization.Model):
    """A paginated list of Feature entities.

    :ivar next_link: The link to the next page of Feature objects. If null, there are no additional
     pages.
    :vartype next_link: str
    :ivar value: An array of objects of type Feature.
    :vartype value: list[~azure.mgmt.machinelearningservices.models.Feature]
    """

    _attribute_map = {
        'next_link': {'key': 'nextLink', 'type': 'str'},
        'value': {'key': 'value', 'type': '[Feature]'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword next_link: The link to the next page of Feature objects. If null, there are no
         additional pages.
        :paramtype next_link: str
        :keyword value: An array of objects of type Feature.
        :paramtype value: list[~azure.mgmt.machinelearningservices.models.Feature]
        """
        super(FeatureResourceArmPaginatedResult, self).__init__(**kwargs)
        self.next_link = kwargs.get('next_link', None)
        self.value = kwargs.get('value', None)


class FeaturesetContainer(ProxyResource):
    """Azure Resource Manager resource envelope.

    Variables are only populated by the server, and will be ignored when sending a request.

    All required parameters must be populated in order to send to Azure.

    :ivar id: Fully qualified resource ID for the resource. Ex -
     /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}.
    :vartype id: str
    :ivar name: The name of the resource.
    :vartype name: str
    :ivar type: The type of the resource. E.g. "Microsoft.Compute/virtualMachines" or
     "Microsoft.Storage/storageAccounts".
    :vartype type: str
    :ivar system_data: Azure Resource Manager metadata containing createdBy and modifiedBy
     information.
    :vartype system_data: ~azure.mgmt.machinelearningservices.models.SystemData
    :ivar properties: Required. [Required] Additional attributes of the entity.
    :vartype properties: ~azure.mgmt.machinelearningservices.models.FeaturesetContainerProperties
    """

    _validation = {
        'id': {'readonly': True},
        'name': {'readonly': True},
        'type': {'readonly': True},
        'system_data': {'readonly': True},
        'properties': {'required': True},
    }

    _attribute_map = {
        'id': {'key': 'id', 'type': 'str'},
        'name': {'key': 'name', 'type': 'str'},
        'type': {'key': 'type', 'type': 'str'},
        'system_data': {'key': 'systemData', 'type': 'SystemData'},
        'properties': {'key': 'properties', 'type': 'FeaturesetContainerProperties'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword properties: Required. [Required] Additional attributes of the entity.
        :paramtype properties: ~azure.mgmt.machinelearningservices.models.FeaturesetContainerProperties
        """
        super(FeaturesetContainer, self).__init__(**kwargs)
        self.properties = kwargs['properties']


class FeaturesetContainerProperties(AssetContainer):
    """DTO object representing feature set.

    Variables are only populated by the server, and will be ignored when sending a request.

    :ivar description: The asset description text.
    :vartype description: str
    :ivar properties: The asset property dictionary.
    :vartype properties: dict[str, str]
    :ivar tags: A set of tags. Tag dictionary. Tags can be added, removed, and updated.
    :vartype tags: dict[str, str]
    :ivar is_archived: Is the asset archived?.
    :vartype is_archived: bool
    :ivar latest_version: The latest version inside this container.
    :vartype latest_version: str
    :ivar next_version: The next auto incremental version.
    :vartype next_version: str
    :ivar provisioning_state: Provisioning state for the featureset container. Possible values
     include: "Succeeded", "Failed", "Canceled", "Creating", "Updating", "Deleting".
    :vartype provisioning_state: str or
     ~azure.mgmt.machinelearningservices.models.AssetProvisioningState
    """

    _validation = {
        'latest_version': {'readonly': True},
        'next_version': {'readonly': True},
        'provisioning_state': {'readonly': True},
    }

    _attribute_map = {
        'description': {'key': 'description', 'type': 'str'},
        'properties': {'key': 'properties', 'type': '{str}'},
        'tags': {'key': 'tags', 'type': '{str}'},
        'is_archived': {'key': 'isArchived', 'type': 'bool'},
        'latest_version': {'key': 'latestVersion', 'type': 'str'},
        'next_version': {'key': 'nextVersion', 'type': 'str'},
        'provisioning_state': {'key': 'provisioningState', 'type': 'str'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword description: The asset description text.
        :paramtype description: str
        :keyword properties: The asset property dictionary.
        :paramtype properties: dict[str, str]
        :keyword tags: A set of tags. Tag dictionary. Tags can be added, removed, and updated.
        :paramtype tags: dict[str, str]
        :keyword is_archived: Is the asset archived?.
        :paramtype is_archived: bool
        """
        super(FeaturesetContainerProperties, self).__init__(**kwargs)
        self.provisioning_state = None


class FeaturesetContainerResourceArmPaginatedResult(msrest.serialization.Model):
    """A paginated list of FeaturesetContainer entities.

    :ivar next_link: The link to the next page of FeaturesetContainer objects. If null, there are
     no additional pages.
    :vartype next_link: str
    :ivar value: An array of objects of type FeaturesetContainer.
    :vartype value: list[~azure.mgmt.machinelearningservices.models.FeaturesetContainer]
    """

    _attribute_map = {
        'next_link': {'key': 'nextLink', 'type': 'str'},
        'value': {'key': 'value', 'type': '[FeaturesetContainer]'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword next_link: The link to the next page of FeaturesetContainer objects. If null, there
         are no additional pages.
        :paramtype next_link: str
        :keyword value: An array of objects of type FeaturesetContainer.
        :paramtype value: list[~azure.mgmt.machinelearningservices.models.FeaturesetContainer]
        """
        super(FeaturesetContainerResourceArmPaginatedResult, self).__init__(**kwargs)
        self.next_link = kwargs.get('next_link', None)
        self.value = kwargs.get('value', None)


class FeaturesetSpecification(msrest.serialization.Model):
    """DTO object representing specification.

    :ivar path: Specifies the spec path.
    :vartype path: str
    """

    _attribute_map = {
        'path': {'key': 'path', 'type': 'str'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword path: Specifies the spec path.
        :paramtype path: str
        """
        super(FeaturesetSpecification, self).__init__(**kwargs)
        self.path = kwargs.get('path', None)


class FeaturesetVersion(ProxyResource):
    """Azure Resource Manager resource envelope.

    Variables are only populated by the server, and will be ignored when sending a request.

    All required parameters must be populated in order to send to Azure.

    :ivar id: Fully qualified resource ID for the resource. Ex -
     /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}.
    :vartype id: str
    :ivar name: The name of the resource.
    :vartype name: str
    :ivar type: The type of the resource. E.g. "Microsoft.Compute/virtualMachines" or
     "Microsoft.Storage/storageAccounts".
    :vartype type: str
    :ivar system_data: Azure Resource Manager metadata containing createdBy and modifiedBy
     information.
    :vartype system_data: ~azure.mgmt.machinelearningservices.models.SystemData
    :ivar properties: Required. [Required] Additional attributes of the entity.
    :vartype properties: ~azure.mgmt.machinelearningservices.models.FeaturesetVersionProperties
    """

    _validation = {
        'id': {'readonly': True},
        'name': {'readonly': True},
        'type': {'readonly': True},
        'system_data': {'readonly': True},
        'properties': {'required': True},
    }

    _attribute_map = {
        'id': {'key': 'id', 'type': 'str'},
        'name': {'key': 'name', 'type': 'str'},
        'type': {'key': 'type', 'type': 'str'},
        'system_data': {'key': 'systemData', 'type': 'SystemData'},
        'properties': {'key': 'properties', 'type': 'FeaturesetVersionProperties'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword properties: Required. [Required] Additional attributes of the entity.
        :paramtype properties: ~azure.mgmt.machinelearningservices.models.FeaturesetVersionProperties
        """
        super(FeaturesetVersion, self).__init__(**kwargs)
        self.properties = kwargs['properties']


class FeaturesetVersionBackfillRequest(msrest.serialization.Model):
    """Request payload for creating a backfill request for a given feature set version.

    :ivar data_availability_status: Specified the data availability status that you want to
     backfill.
    :vartype data_availability_status: list[str or
     ~azure.mgmt.machinelearningservices.models.DataAvailabilityStatus]
    :ivar description: Specifies description.
    :vartype description: str
    :ivar display_name: Specifies description.
    :vartype display_name: str
    :ivar feature_window: Specifies the backfill feature window to be materialized.
    :vartype feature_window: ~azure.mgmt.machinelearningservices.models.FeatureWindow
    :ivar job_id: Specify the jobId to retry the failed materialization.
    :vartype job_id: str
    :ivar properties: Specifies the properties.
    :vartype properties: dict[str, str]
    :ivar resource: Specifies the compute resource settings.
    :vartype resource: ~azure.mgmt.machinelearningservices.models.MaterializationComputeResource
    :ivar spark_configuration: Specifies the spark compute settings.
    :vartype spark_configuration: dict[str, str]
    :ivar tags: A set of tags. Specifies the tags.
    :vartype tags: dict[str, str]
    """

    _attribute_map = {
        'data_availability_status': {'key': 'dataAvailabilityStatus', 'type': '[str]'},
        'description': {'key': 'description', 'type': 'str'},
        'display_name': {'key': 'displayName', 'type': 'str'},
        'feature_window': {'key': 'featureWindow', 'type': 'FeatureWindow'},
        'job_id': {'key': 'jobId', 'type': 'str'},
        'properties': {'key': 'properties', 'type': '{str}'},
        'resource': {'key': 'resource', 'type': 'MaterializationComputeResource'},
        'spark_configuration': {'key': 'sparkConfiguration', 'type': '{str}'},
        'tags': {'key': 'tags', 'type': '{str}'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword data_availability_status: Specified the data availability status that you want to
         backfill.
        :paramtype data_availability_status: list[str or
         ~azure.mgmt.machinelearningservices.models.DataAvailabilityStatus]
        :keyword description: Specifies description.
        :paramtype description: str
        :keyword display_name: Specifies description.
        :paramtype display_name: str
        :keyword feature_window: Specifies the backfill feature window to be materialized.
        :paramtype feature_window: ~azure.mgmt.machinelearningservices.models.FeatureWindow
        :keyword job_id: Specify the jobId to retry the failed materialization.
        :paramtype job_id: str
        :keyword properties: Specifies the properties.
        :paramtype properties: dict[str, str]
        :keyword resource: Specifies the compute resource settings.
        :paramtype resource: ~azure.mgmt.machinelearningservices.models.MaterializationComputeResource
        :keyword spark_configuration: Specifies the spark compute settings.
        :paramtype spark_configuration: dict[str, str]
        :keyword tags: A set of tags. Specifies the tags.
        :paramtype tags: dict[str, str]
        """
        super(FeaturesetVersionBackfillRequest, self).__init__(**kwargs)
        self.data_availability_status = kwargs.get('data_availability_status', None)
        self.description = kwargs.get('description', None)
        self.display_name = kwargs.get('display_name', None)
        self.feature_window = kwargs.get('feature_window', None)
        self.job_id = kwargs.get('job_id', None)
        self.properties = kwargs.get('properties', None)
        self.resource = kwargs.get('resource', None)
        self.spark_configuration = kwargs.get('spark_configuration', None)
        self.tags = kwargs.get('tags', None)


class FeaturesetVersionBackfillResponse(msrest.serialization.Model):
    """Response payload for creating a backfill request for a given feature set version.

    :ivar job_ids: List of jobs submitted as part of the backfill request.
    :vartype job_ids: list[str]
    """

    _attribute_map = {
        'job_ids': {'key': 'jobIds', 'type': '[str]'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword job_ids: List of jobs submitted as part of the backfill request.
        :paramtype job_ids: list[str]
        """
        super(FeaturesetVersionBackfillResponse, self).__init__(**kwargs)
        self.job_ids = kwargs.get('job_ids', None)


class FeaturesetVersionProperties(AssetBase):
    """DTO object representing feature set version.

    Variables are only populated by the server, and will be ignored when sending a request.

    :ivar description: The asset description text.
    :vartype description: str
    :ivar properties: The asset property dictionary.
    :vartype properties: dict[str, str]
    :ivar tags: A set of tags. Tag dictionary. Tags can be added, removed, and updated.
    :vartype tags: dict[str, str]
    :ivar is_anonymous: If the name version are system generated (anonymous registration).
    :vartype is_anonymous: bool
    :ivar is_archived: Is the asset archived?.
    :vartype is_archived: bool
    :ivar entities: Specifies list of entities.
    :vartype entities: list[str]
    :ivar materialization_settings: Specifies the materialization settings.
    :vartype materialization_settings:
     ~azure.mgmt.machinelearningservices.models.MaterializationSettings
    :ivar provisioning_state: Provisioning state for the featureset version container. Possible
     values include: "Succeeded", "Failed", "Canceled", "Creating", "Updating", "Deleting".
    :vartype provisioning_state: str or
     ~azure.mgmt.machinelearningservices.models.AssetProvisioningState
    :ivar specification: Specifies the feature spec details.
    :vartype specification: ~azure.mgmt.machinelearningservices.models.FeaturesetSpecification
    :ivar stage: Specifies the asset stage.
    :vartype stage: str
    """

    _validation = {
        'provisioning_state': {'readonly': True},
    }

    _attribute_map = {
        'description': {'key': 'description', 'type': 'str'},
        'properties': {'key': 'properties', 'type': '{str}'},
        'tags': {'key': 'tags', 'type': '{str}'},
        'is_anonymous': {'key': 'isAnonymous', 'type': 'bool'},
        'is_archived': {'key': 'isArchived', 'type': 'bool'},
        'entities': {'key': 'entities', 'type': '[str]'},
        'materialization_settings': {'key': 'materializationSettings', 'type': 'MaterializationSettings'},
        'provisioning_state': {'key': 'provisioningState', 'type': 'str'},
        'specification': {'key': 'specification', 'type': 'FeaturesetSpecification'},
        'stage': {'key': 'stage', 'type': 'str'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword description: The asset description text.
        :paramtype description: str
        :keyword properties: The asset property dictionary.
        :paramtype properties: dict[str, str]
        :keyword tags: A set of tags. Tag dictionary. Tags can be added, removed, and updated.
        :paramtype tags: dict[str, str]
        :keyword is_anonymous: If the name version are system generated (anonymous registration).
        :paramtype is_anonymous: bool
        :keyword is_archived: Is the asset archived?.
        :paramtype is_archived: bool
        :keyword entities: Specifies list of entities.
        :paramtype entities: list[str]
        :keyword materialization_settings: Specifies the materialization settings.
        :paramtype materialization_settings:
         ~azure.mgmt.machinelearningservices.models.MaterializationSettings
        :keyword specification: Specifies the feature spec details.
        :paramtype specification: ~azure.mgmt.machinelearningservices.models.FeaturesetSpecification
        :keyword stage: Specifies the asset stage.
        :paramtype stage: str
        """
        super(FeaturesetVersionProperties, self).__init__(**kwargs)
        self.entities = kwargs.get('entities', None)
        self.materialization_settings = kwargs.get('materialization_settings', None)
        self.provisioning_state = None
        self.specification = kwargs.get('specification', None)
        self.stage = kwargs.get('stage', None)


class FeaturesetVersionResourceArmPaginatedResult(msrest.serialization.Model):
    """A paginated list of FeaturesetVersion entities.

    :ivar next_link: The link to the next page of FeaturesetVersion objects. If null, there are no
     additional pages.
    :vartype next_link: str
    :ivar value: An array of objects of type FeaturesetVersion.
    :vartype value: list[~azure.mgmt.machinelearningservices.models.FeaturesetVersion]
    """

    _attribute_map = {
        'next_link': {'key': 'nextLink', 'type': 'str'},
        'value': {'key': 'value', 'type': '[FeaturesetVersion]'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword next_link: The link to the next page of FeaturesetVersion objects. If null, there are
         no additional pages.
        :paramtype next_link: str
        :keyword value: An array of objects of type FeaturesetVersion.
        :paramtype value: list[~azure.mgmt.machinelearningservices.models.FeaturesetVersion]
        """
        super(FeaturesetVersionResourceArmPaginatedResult, self).__init__(**kwargs)
        self.next_link = kwargs.get('next_link', None)
        self.value = kwargs.get('value', None)


class FeaturestoreEntityContainer(ProxyResource):
    """Azure Resource Manager resource envelope.

    Variables are only populated by the server, and will be ignored when sending a request.

    All required parameters must be populated in order to send to Azure.

    :ivar id: Fully qualified resource ID for the resource. Ex -
     /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}.
    :vartype id: str
    :ivar name: The name of the resource.
    :vartype name: str
    :ivar type: The type of the resource. E.g. "Microsoft.Compute/virtualMachines" or
     "Microsoft.Storage/storageAccounts".
    :vartype type: str
    :ivar system_data: Azure Resource Manager metadata containing createdBy and modifiedBy
     information.
    :vartype system_data: ~azure.mgmt.machinelearningservices.models.SystemData
    :ivar properties: Required. [Required] Additional attributes of the entity.
    :vartype properties:
     ~azure.mgmt.machinelearningservices.models.FeaturestoreEntityContainerProperties
    """

    _validation = {
        'id': {'readonly': True},
        'name': {'readonly': True},
        'type': {'readonly': True},
        'system_data': {'readonly': True},
        'properties': {'required': True},
    }

    _attribute_map = {
        'id': {'key': 'id', 'type': 'str'},
        'name': {'key': 'name', 'type': 'str'},
        'type': {'key': 'type', 'type': 'str'},
        'system_data': {'key': 'systemData', 'type': 'SystemData'},
        'properties': {'key': 'properties', 'type': 'FeaturestoreEntityContainerProperties'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword properties: Required. [Required] Additional attributes of the entity.
        :paramtype properties:
         ~azure.mgmt.machinelearningservices.models.FeaturestoreEntityContainerProperties
        """
        super(FeaturestoreEntityContainer, self).__init__(**kwargs)
        self.properties = kwargs['properties']


class FeaturestoreEntityContainerProperties(AssetContainer):
    """DTO object representing feature entity.

    Variables are only populated by the server, and will be ignored when sending a request.

    :ivar description: The asset description text.
    :vartype description: str
    :ivar properties: The asset property dictionary.
    :vartype properties: dict[str, str]
    :ivar tags: A set of tags. Tag dictionary. Tags can be added, removed, and updated.
    :vartype tags: dict[str, str]
    :ivar is_archived: Is the asset archived?.
    :vartype is_archived: bool
    :ivar latest_version: The latest version inside this container.
    :vartype latest_version: str
    :ivar next_version: The next auto incremental version.
    :vartype next_version: str
    :ivar provisioning_state: Provisioning state for the featurestore entity container. Possible
     values include: "Succeeded", "Failed", "Canceled", "Creating", "Updating", "Deleting".
    :vartype provisioning_state: str or
     ~azure.mgmt.machinelearningservices.models.AssetProvisioningState
    """

    _validation = {
        'latest_version': {'readonly': True},
        'next_version': {'readonly': True},
        'provisioning_state': {'readonly': True},
    }

    _attribute_map = {
        'description': {'key': 'description', 'type': 'str'},
        'properties': {'key': 'properties', 'type': '{str}'},
        'tags': {'key': 'tags', 'type': '{str}'},
        'is_archived': {'key': 'isArchived', 'type': 'bool'},
        'latest_version': {'key': 'latestVersion', 'type': 'str'},
        'next_version': {'key': 'nextVersion', 'type': 'str'},
        'provisioning_state': {'key': 'provisioningState', 'type': 'str'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword description: The asset description text.
        :paramtype description: str
        :keyword properties: The asset property dictionary.
        :paramtype properties: dict[str, str]
        :keyword tags: A set of tags. Tag dictionary. Tags can be added, removed, and updated.
        :paramtype tags: dict[str, str]
        :keyword is_archived: Is the asset archived?.
        :paramtype is_archived: bool
        """
        super(FeaturestoreEntityContainerProperties, self).__init__(**kwargs)
        self.provisioning_state = None


class FeaturestoreEntityContainerResourceArmPaginatedResult(msrest.serialization.Model):
    """A paginated list of FeaturestoreEntityContainer entities.

    :ivar next_link: The link to the next page of FeaturestoreEntityContainer objects. If null,
     there are no additional pages.
    :vartype next_link: str
    :ivar value: An array of objects of type FeaturestoreEntityContainer.
    :vartype value: list[~azure.mgmt.machinelearningservices.models.FeaturestoreEntityContainer]
    """

    _attribute_map = {
        'next_link': {'key': 'nextLink', 'type': 'str'},
        'value': {'key': 'value', 'type': '[FeaturestoreEntityContainer]'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword next_link: The link to the next page of FeaturestoreEntityContainer objects. If null,
         there are no additional pages.
        :paramtype next_link: str
        :keyword value: An array of objects of type FeaturestoreEntityContainer.
        :paramtype value: list[~azure.mgmt.machinelearningservices.models.FeaturestoreEntityContainer]
        """
        super(FeaturestoreEntityContainerResourceArmPaginatedResult, self).__init__(**kwargs)
        self.next_link = kwargs.get('next_link', None)
        self.value = kwargs.get('value', None)


class FeaturestoreEntityVersion(ProxyResource):
    """Azure Resource Manager resource envelope.

    Variables are only populated by the server, and will be ignored when sending a request.

    All required parameters must be populated in order to send to Azure.

    :ivar id: Fully qualified resource ID for the resource. Ex -
     /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}.
    :vartype id: str
    :ivar name: The name of the resource.
    :vartype name: str
    :ivar type: The type of the resource. E.g. "Microsoft.Compute/virtualMachines" or
     "Microsoft.Storage/storageAccounts".
    :vartype type: str
    :ivar system_data: Azure Resource Manager metadata containing createdBy and modifiedBy
     information.
    :vartype system_data: ~azure.mgmt.machinelearningservices.models.SystemData
    :ivar properties: Required. [Required] Additional attributes of the entity.
    :vartype properties:
     ~azure.mgmt.machinelearningservices.models.FeaturestoreEntityVersionProperties
    """

    _validation = {
        'id': {'readonly': True},
        'name': {'readonly': True},
        'type': {'readonly': True},
        'system_data': {'readonly': True},
        'properties': {'required': True},
    }

    _attribute_map = {
        'id': {'key': 'id', 'type': 'str'},
        'name': {'key': 'name', 'type': 'str'},
        'type': {'key': 'type', 'type': 'str'},
        'system_data': {'key': 'systemData', 'type': 'SystemData'},
        'properties': {'key': 'properties', 'type': 'FeaturestoreEntityVersionProperties'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword properties: Required. [Required] Additional attributes of the entity.
        :paramtype properties:
         ~azure.mgmt.machinelearningservices.models.FeaturestoreEntityVersionProperties
        """
        super(FeaturestoreEntityVersion, self).__init__(**kwargs)
        self.properties = kwargs['properties']


class FeaturestoreEntityVersionProperties(AssetBase):
    """DTO object representing feature entity version.

    Variables are only populated by the server, and will be ignored when sending a request.

    :ivar description: The asset description text.
    :vartype description: str
    :ivar properties: The asset property dictionary.
    :vartype properties: dict[str, str]
    :ivar tags: A set of tags. Tag dictionary. Tags can be added, removed, and updated.
    :vartype tags: dict[str, str]
    :ivar is_anonymous: If the name version are system generated (anonymous registration).
    :vartype is_anonymous: bool
    :ivar is_archived: Is the asset archived?.
    :vartype is_archived: bool
    :ivar index_columns: Specifies index columns.
    :vartype index_columns: list[~azure.mgmt.machinelearningservices.models.IndexColumn]
    :ivar provisioning_state: Provisioning state for the featurestore entity version. Possible
     values include: "Succeeded", "Failed", "Canceled", "Creating", "Updating", "Deleting".
    :vartype provisioning_state: str or
     ~azure.mgmt.machinelearningservices.models.AssetProvisioningState
    :ivar stage: Specifies the asset stage.
    :vartype stage: str
    """

    _validation = {
        'provisioning_state': {'readonly': True},
    }

    _attribute_map = {
        'description': {'key': 'description', 'type': 'str'},
        'properties': {'key': 'properties', 'type': '{str}'},
        'tags': {'key': 'tags', 'type': '{str}'},
        'is_anonymous': {'key': 'isAnonymous', 'type': 'bool'},
        'is_archived': {'key': 'isArchived', 'type': 'bool'},
        'index_columns': {'key': 'indexColumns', 'type': '[IndexColumn]'},
        'provisioning_state': {'key': 'provisioningState', 'type': 'str'},
        'stage': {'key': 'stage', 'type': 'str'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword description: The asset description text.
        :paramtype description: str
        :keyword properties: The asset property dictionary.
        :paramtype properties: dict[str, str]
        :keyword tags: A set of tags. Tag dictionary. Tags can be added, removed, and updated.
        :paramtype tags: dict[str, str]
        :keyword is_anonymous: If the name version are system generated (anonymous registration).
        :paramtype is_anonymous: bool
        :keyword is_archived: Is the asset archived?.
        :paramtype is_archived: bool
        :keyword index_columns: Specifies index columns.
        :paramtype index_columns: list[~azure.mgmt.machinelearningservices.models.IndexColumn]
        :keyword stage: Specifies the asset stage.
        :paramtype stage: str
        """
        super(FeaturestoreEntityVersionProperties, self).__init__(**kwargs)
        self.index_columns = kwargs.get('index_columns', None)
        self.provisioning_state = None
        self.stage = kwargs.get('stage', None)


class FeaturestoreEntityVersionResourceArmPaginatedResult(msrest.serialization.Model):
    """A paginated list of FeaturestoreEntityVersion entities.

    :ivar next_link: The link to the next page of FeaturestoreEntityVersion objects. If null, there
     are no additional pages.
    :vartype next_link: str
    :ivar value: An array of objects of type FeaturestoreEntityVersion.
    :vartype value: list[~azure.mgmt.machinelearningservices.models.FeaturestoreEntityVersion]
    """

    _attribute_map = {
        'next_link': {'key': 'nextLink', 'type': 'str'},
        'value': {'key': 'value', 'type': '[FeaturestoreEntityVersion]'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword next_link: The link to the next page of FeaturestoreEntityVersion objects. If null,
         there are no additional pages.
        :paramtype next_link: str
        :keyword value: An array of objects of type FeaturestoreEntityVersion.
        :paramtype value: list[~azure.mgmt.machinelearningservices.models.FeaturestoreEntityVersion]
        """
        super(FeaturestoreEntityVersionResourceArmPaginatedResult, self).__init__(**kwargs)
        self.next_link = kwargs.get('next_link', None)
        self.value = kwargs.get('value', None)


class FeatureStoreSettings(msrest.serialization.Model):
    """FeatureStoreSettings.

    :ivar compute_runtime:
    :vartype compute_runtime: ~azure.mgmt.machinelearningservices.models.ComputeRuntimeDto
    :ivar offline_store_connection_name:
    :vartype offline_store_connection_name: str
    :ivar online_store_connection_name:
    :vartype online_store_connection_name: str
    """

    _attribute_map = {
        'compute_runtime': {'key': 'computeRuntime', 'type': 'ComputeRuntimeDto'},
        'offline_store_connection_name': {'key': 'offlineStoreConnectionName', 'type': 'str'},
        'online_store_connection_name': {'key': 'onlineStoreConnectionName', 'type': 'str'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword compute_runtime:
        :paramtype compute_runtime: ~azure.mgmt.machinelearningservices.models.ComputeRuntimeDto
        :keyword offline_store_connection_name:
        :paramtype offline_store_connection_name: str
        :keyword online_store_connection_name:
        :paramtype online_store_connection_name: str
        """
        super(FeatureStoreSettings, self).__init__(**kwargs)
        self.compute_runtime = kwargs.get('compute_runtime', None)
        self.offline_store_connection_name = kwargs.get('offline_store_connection_name', None)
        self.online_store_connection_name = kwargs.get('online_store_connection_name', None)


class FeatureSubset(MonitoringFeatureFilterBase):
    """FeatureSubset.

    All required parameters must be populated in order to send to Azure.

    :ivar filter_type: Required. [Required] Specifies the feature filter to leverage when selecting
     features to calculate metrics over.Constant filled by server. Possible values include:
     "AllFeatures", "TopNByAttribution", "FeatureSubset".
    :vartype filter_type: str or
     ~azure.mgmt.machinelearningservices.models.MonitoringFeatureFilterType
    :ivar features: Required. [Required] The list of features to include.
    :vartype features: list[str]
    """

    _validation = {
        'filter_type': {'required': True},
        'features': {'required': True},
    }

    _attribute_map = {
        'filter_type': {'key': 'filterType', 'type': 'str'},
        'features': {'key': 'features', 'type': '[str]'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword features: Required. [Required] The list of features to include.
        :paramtype features: list[str]
        """
        super(FeatureSubset, self).__init__(**kwargs)
        self.filter_type = 'FeatureSubset'  # type: str
        self.features = kwargs['features']


class FeatureWindow(msrest.serialization.Model):
    """Specifies the feature window.

    :ivar feature_window_end: Specifies the feature window end time.
    :vartype feature_window_end: ~datetime.datetime
    :ivar feature_window_start: Specifies the feature window start time.
    :vartype feature_window_start: ~datetime.datetime
    """

    _attribute_map = {
        'feature_window_end': {'key': 'featureWindowEnd', 'type': 'iso-8601'},
        'feature_window_start': {'key': 'featureWindowStart', 'type': 'iso-8601'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword feature_window_end: Specifies the feature window end time.
        :paramtype feature_window_end: ~datetime.datetime
        :keyword feature_window_start: Specifies the feature window start time.
        :paramtype feature_window_start: ~datetime.datetime
        """
        super(FeatureWindow, self).__init__(**kwargs)
        self.feature_window_end = kwargs.get('feature_window_end', None)
        self.feature_window_start = kwargs.get('feature_window_start', None)


class FeaturizationSettings(msrest.serialization.Model):
    """Featurization Configuration.

    :ivar dataset_language: Dataset language, useful for the text data.
    :vartype dataset_language: str
    """

    _attribute_map = {
        'dataset_language': {'key': 'datasetLanguage', 'type': 'str'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword dataset_language: Dataset language, useful for the text data.
        :paramtype dataset_language: str
        """
        super(FeaturizationSettings, self).__init__(**kwargs)
        self.dataset_language = kwargs.get('dataset_language', None)


class FinetuningDetails(msrest.serialization.Model):
    """FinetuningDetails.

    All required parameters must be populated in order to send to Azure.

    :ivar hyper_parameters: Finetuning Hyperparameters.
    :vartype hyper_parameters: dict[str, str]
    :ivar student_model: Required. [Required] Student model for fine tuning.
    :vartype student_model: ~azure.mgmt.machinelearningservices.models.JobInput
    """

    _validation = {
        'student_model': {'required': True},
    }

    _attribute_map = {
        'hyper_parameters': {'key': 'hyperParameters', 'type': '{str}'},
        'student_model': {'key': 'studentModel', 'type': 'JobInput'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword hyper_parameters: Finetuning Hyperparameters.
        :paramtype hyper_parameters: dict[str, str]
        :keyword student_model: Required. [Required] Student model for fine tuning.
        :paramtype student_model: ~azure.mgmt.machinelearningservices.models.JobInput
        """
        super(FinetuningDetails, self).__init__(**kwargs)
        self.hyper_parameters = kwargs.get('hyper_parameters', None)
        self.student_model = kwargs['student_model']


class FineTuningJob(JobBaseProperties):
    """FineTuning Job definition.

    Variables are only populated by the server, and will be ignored when sending a request.

    All required parameters must be populated in order to send to Azure.

    :ivar description: The asset description text.
    :vartype description: str
    :ivar properties: The asset property dictionary.
    :vartype properties: dict[str, str]
    :ivar tags: A set of tags. Tag dictionary. Tags can be added, removed, and updated.
    :vartype tags: dict[str, str]
    :ivar component_id: ARM resource ID of the component resource.
    :vartype component_id: str
    :ivar compute_id: ARM resource ID of the compute resource.
    :vartype compute_id: str
    :ivar display_name: Display name of job.
    :vartype display_name: str
    :ivar experiment_name: The name of the experiment the job belongs to. If not set, the job is
     placed in the "Default" experiment.
    :vartype experiment_name: str
    :ivar identity: Identity configuration. If set, this should be one of AmlToken,
     ManagedIdentity, UserIdentity or null.
     Defaults to AmlToken if null.
    :vartype identity: ~azure.mgmt.machinelearningservices.models.IdentityConfiguration
    :ivar is_archived: Is the asset archived?.
    :vartype is_archived: bool
    :ivar job_type: Required. [Required] Specifies the type of job.Constant filled by server.
     Possible values include: "AutoML", "Command", "Sweep", "Pipeline", "Spark", "FineTuning",
     "Distillation".
    :vartype job_type: str or ~azure.mgmt.machinelearningservices.models.JobType
    :ivar notification_setting: Notification setting for the job.
    :vartype notification_setting: ~azure.mgmt.machinelearningservices.models.NotificationSetting
    :ivar parent_job_name: Parent job name.
    :vartype parent_job_name: str
    :ivar services: List of JobEndpoints.
     For local jobs, a job endpoint will have an endpoint value of FileStreamObject.
    :vartype services: dict[str, ~azure.mgmt.machinelearningservices.models.JobService]
    :ivar status: Status of the job. Possible values include: "NotStarted", "Starting",
     "Provisioning", "Preparing", "Queued", "Running", "Finalizing", "CancelRequested", "Completed",
     "Failed", "Canceled", "NotResponding", "Paused", "Unknown".
    :vartype status: str or ~azure.mgmt.machinelearningservices.models.JobStatus
    :ivar fine_tuning_details: Required. [Required].
    :vartype fine_tuning_details: ~azure.mgmt.machinelearningservices.models.FineTuningVertical
    :ivar outputs: Required. [Required].
    :vartype outputs: dict[str, ~azure.mgmt.machinelearningservices.models.JobOutput]
    :ivar queue_settings: Queue settings for the job.
    :vartype queue_settings: ~azure.mgmt.machinelearningservices.models.QueueSettings
    :ivar resources: Instance types and other resources for the job.
    :vartype resources: ~azure.mgmt.machinelearningservices.models.JobResources
    """

    _validation = {
        'job_type': {'required': True},
        'status': {'readonly': True},
        'fine_tuning_details': {'required': True},
        'outputs': {'required': True},
    }

    _attribute_map = {
        'description': {'key': 'description', 'type': 'str'},
        'properties': {'key': 'properties', 'type': '{str}'},
        'tags': {'key': 'tags', 'type': '{str}'},
        'component_id': {'key': 'componentId', 'type': 'str'},
        'compute_id': {'key': 'computeId', 'type': 'str'},
        'display_name': {'key': 'displayName', 'type': 'str'},
        'experiment_name': {'key': 'experimentName', 'type': 'str'},
        'identity': {'key': 'identity', 'type': 'IdentityConfiguration'},
        'is_archived': {'key': 'isArchived', 'type': 'bool'},
        'job_type': {'key': 'jobType', 'type': 'str'},
        'notification_setting': {'key': 'notificationSetting', 'type': 'NotificationSetting'},
        'parent_job_name': {'key': 'parentJobName', 'type': 'str'},
        'services': {'key': 'services', 'type': '{JobService}'},
        'status': {'key': 'status', 'type': 'str'},
        'fine_tuning_details': {'key': 'fineTuningDetails', 'type': 'FineTuningVertical'},
        'outputs': {'key': 'outputs', 'type': '{JobOutput}'},
        'queue_settings': {'key': 'queueSettings', 'type': 'QueueSettings'},
        'resources': {'key': 'resources', 'type': 'JobResources'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword description: The asset description text.
        :paramtype description: str
        :keyword properties: The asset property dictionary.
        :paramtype properties: dict[str, str]
        :keyword tags: A set of tags. Tag dictionary. Tags can be added, removed, and updated.
        :paramtype tags: dict[str, str]
        :keyword component_id: ARM resource ID of the component resource.
        :paramtype component_id: str
        :keyword compute_id: ARM resource ID of the compute resource.
        :paramtype compute_id: str
        :keyword display_name: Display name of job.
        :paramtype display_name: str
        :keyword experiment_name: The name of the experiment the job belongs to. If not set, the job is
         placed in the "Default" experiment.
        :paramtype experiment_name: str
        :keyword identity: Identity configuration. If set, this should be one of AmlToken,
         ManagedIdentity, UserIdentity or null.
         Defaults to AmlToken if null.
        :paramtype identity: ~azure.mgmt.machinelearningservices.models.IdentityConfiguration
        :keyword is_archived: Is the asset archived?.
        :paramtype is_archived: bool
        :keyword notification_setting: Notification setting for the job.
        :paramtype notification_setting: ~azure.mgmt.machinelearningservices.models.NotificationSetting
        :keyword parent_job_name: Parent job name.
        :paramtype parent_job_name: str
        :keyword services: List of JobEndpoints.
         For local jobs, a job endpoint will have an endpoint value of FileStreamObject.
        :paramtype services: dict[str, ~azure.mgmt.machinelearningservices.models.JobService]
        :keyword fine_tuning_details: Required. [Required].
        :paramtype fine_tuning_details: ~azure.mgmt.machinelearningservices.models.FineTuningVertical
        :keyword outputs: Required. [Required].
        :paramtype outputs: dict[str, ~azure.mgmt.machinelearningservices.models.JobOutput]
        :keyword queue_settings: Queue settings for the job.
        :paramtype queue_settings: ~azure.mgmt.machinelearningservices.models.QueueSettings
        :keyword resources: Instance types and other resources for the job.
        :paramtype resources: ~azure.mgmt.machinelearningservices.models.JobResources
        """
        super(FineTuningJob, self).__init__(**kwargs)
        self.job_type = 'FineTuning'  # type: str
        self.fine_tuning_details = kwargs['fine_tuning_details']
        self.outputs = kwargs['outputs']
        self.queue_settings = kwargs.get('queue_settings', None)
        self.resources = kwargs.get('resources', None)


class MonitoringInputDataBase(msrest.serialization.Model):
    """Monitoring input data base definition.

    You probably want to use the sub-classes and not this class directly. Known
    sub-classes are: FixedInputData, RollingInputData, StaticInputData.

    All required parameters must be populated in order to send to Azure.

    :ivar columns: Mapping of column names to special uses.
    :vartype columns: dict[str, str]
    :ivar data_context: The context metadata of the data source.
    :vartype data_context: str
    :ivar input_data_type: Required. [Required] Specifies the type of signal to monitor.Constant
     filled by server. Possible values include: "Static", "Rolling", "Fixed".
    :vartype input_data_type: str or
     ~azure.mgmt.machinelearningservices.models.MonitoringInputDataType
    :ivar job_input_type: Required. [Required] Specifies the type of job. Possible values include:
     "literal", "uri_file", "uri_folder", "mltable", "custom_model", "mlflow_model", "triton_model".
    :vartype job_input_type: str or ~azure.mgmt.machinelearningservices.models.JobInputType
    :ivar uri: Required. [Required] Input Asset URI.
    :vartype uri: str
    """

    _validation = {
        'input_data_type': {'required': True},
        'job_input_type': {'required': True},
        'uri': {'required': True, 'min_length': 1, 'pattern': r'[a-zA-Z0-9_]'},
    }

    _attribute_map = {
        'columns': {'key': 'columns', 'type': '{str}'},
        'data_context': {'key': 'dataContext', 'type': 'str'},
        'input_data_type': {'key': 'inputDataType', 'type': 'str'},
        'job_input_type': {'key': 'jobInputType', 'type': 'str'},
        'uri': {'key': 'uri', 'type': 'str'},
    }

    _subtype_map = {
        'input_data_type': {'Fixed': 'FixedInputData', 'Rolling': 'RollingInputData', 'Static': 'StaticInputData'}
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword columns: Mapping of column names to special uses.
        :paramtype columns: dict[str, str]
        :keyword data_context: The context metadata of the data source.
        :paramtype data_context: str
        :keyword job_input_type: Required. [Required] Specifies the type of job. Possible values
         include: "literal", "uri_file", "uri_folder", "mltable", "custom_model", "mlflow_model",
         "triton_model".
        :paramtype job_input_type: str or ~azure.mgmt.machinelearningservices.models.JobInputType
        :keyword uri: Required. [Required] Input Asset URI.
        :paramtype uri: str
        """
        super(MonitoringInputDataBase, self).__init__(**kwargs)
        self.columns = kwargs.get('columns', None)
        self.data_context = kwargs.get('data_context', None)
        self.input_data_type = None  # type: Optional[str]
        self.job_input_type = kwargs['job_input_type']
        self.uri = kwargs['uri']


class FixedInputData(MonitoringInputDataBase):
    """Fixed input data definition.

    All required parameters must be populated in order to send to Azure.

    :ivar columns: Mapping of column names to special uses.
    :vartype columns: dict[str, str]
    :ivar data_context: The context metadata of the data source.
    :vartype data_context: str
    :ivar input_data_type: Required. [Required] Specifies the type of signal to monitor.Constant
     filled by server. Possible values include: "Static", "Rolling", "Fixed".
    :vartype input_data_type: str or
     ~azure.mgmt.machinelearningservices.models.MonitoringInputDataType
    :ivar job_input_type: Required. [Required] Specifies the type of job. Possible values include:
     "literal", "uri_file", "uri_folder", "mltable", "custom_model", "mlflow_model", "triton_model".
    :vartype job_input_type: str or ~azure.mgmt.machinelearningservices.models.JobInputType
    :ivar uri: Required. [Required] Input Asset URI.
    :vartype uri: str
    """

    _validation = {
        'input_data_type': {'required': True},
        'job_input_type': {'required': True},
        'uri': {'required': True, 'min_length': 1, 'pattern': r'[a-zA-Z0-9_]'},
    }

    _attribute_map = {
        'columns': {'key': 'columns', 'type': '{str}'},
        'data_context': {'key': 'dataContext', 'type': 'str'},
        'input_data_type': {'key': 'inputDataType', 'type': 'str'},
        'job_input_type': {'key': 'jobInputType', 'type': 'str'},
        'uri': {'key': 'uri', 'type': 'str'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword columns: Mapping of column names to special uses.
        :paramtype columns: dict[str, str]
        :keyword data_context: The context metadata of the data source.
        :paramtype data_context: str
        :keyword job_input_type: Required. [Required] Specifies the type of job. Possible values
         include: "literal", "uri_file", "uri_folder", "mltable", "custom_model", "mlflow_model",
         "triton_model".
        :paramtype job_input_type: str or ~azure.mgmt.machinelearningservices.models.JobInputType
        :keyword uri: Required. [Required] Input Asset URI.
        :paramtype uri: str
        """
        super(FixedInputData, self).__init__(**kwargs)
        self.input_data_type = 'Fixed'  # type: str


class FlavorData(msrest.serialization.Model):
    """FlavorData.

    :ivar data: Model flavor-specific data.
    :vartype data: dict[str, str]
    """

    _attribute_map = {
        'data': {'key': 'data', 'type': '{str}'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword data: Model flavor-specific data.
        :paramtype data: dict[str, str]
        """
        super(FlavorData, self).__init__(**kwargs)
        self.data = kwargs.get('data', None)


class Forecasting(AutoMLVertical, TableVertical):
    """Forecasting task in AutoML Table vertical.

    All required parameters must be populated in order to send to Azure.

    :ivar cv_split_column_names: Columns to use for CVSplit data.
    :vartype cv_split_column_names: list[str]
    :ivar featurization_settings: Featurization inputs needed for AutoML job.
    :vartype featurization_settings:
     ~azure.mgmt.machinelearningservices.models.TableVerticalFeaturizationSettings
    :ivar limit_settings: Execution constraints for AutoMLJob.
    :vartype limit_settings: ~azure.mgmt.machinelearningservices.models.TableVerticalLimitSettings
    :ivar n_cross_validations: Number of cross validation folds to be applied on training dataset
     when validation dataset is not provided.
    :vartype n_cross_validations: ~azure.mgmt.machinelearningservices.models.NCrossValidations
    :ivar test_data: Test data input.
    :vartype test_data: ~azure.mgmt.machinelearningservices.models.MLTableJobInput
    :ivar test_data_size: The fraction of test dataset that needs to be set aside for validation
     purpose.
     Values between (0.0 , 1.0)
     Applied when validation dataset is not provided.
    :vartype test_data_size: float
    :ivar validation_data: Validation data inputs.
    :vartype validation_data: ~azure.mgmt.machinelearningservices.models.MLTableJobInput
    :ivar validation_data_size: The fraction of training dataset that needs to be set aside for
     validation purpose.
     Values between (0.0 , 1.0)
     Applied when validation dataset is not provided.
    :vartype validation_data_size: float
    :ivar weight_column_name: The name of the sample weight column. Automated ML supports a
     weighted column as an input, causing rows in the data to be weighted up or down.
    :vartype weight_column_name: str
    :ivar log_verbosity: Log verbosity for the job. Possible values include: "NotSet", "Debug",
     "Info", "Warning", "Error", "Critical".
    :vartype log_verbosity: str or ~azure.mgmt.machinelearningservices.models.LogVerbosity
    :ivar target_column_name: Target column name: This is prediction values column.
     Also known as label column name in context of classification tasks.
    :vartype target_column_name: str
    :ivar task_type: Required. [Required] Task type for AutoMLJob.Constant filled by server.
     Possible values include: "Classification", "Regression", "Forecasting", "ImageClassification",
     "ImageClassificationMultilabel", "ImageObjectDetection", "ImageInstanceSegmentation",
     "TextClassification", "TextClassificationMultilabel", "TextNER".
    :vartype task_type: str or ~azure.mgmt.machinelearningservices.models.TaskType
    :ivar training_data: Required. [Required] Training data input.
    :vartype training_data: ~azure.mgmt.machinelearningservices.models.MLTableJobInput
    :ivar forecasting_settings: Forecasting task specific inputs.
    :vartype forecasting_settings: ~azure.mgmt.machinelearningservices.models.ForecastingSettings
    :ivar primary_metric: Primary metric for forecasting task. Possible values include:
     "SpearmanCorrelation", "NormalizedRootMeanSquaredError", "R2Score",
     "NormalizedMeanAbsoluteError".
    :vartype primary_metric: str or
     ~azure.mgmt.machinelearningservices.models.ForecastingPrimaryMetrics
    :ivar training_settings: Inputs for training phase for an AutoML Job.
    :vartype training_settings:
     ~azure.mgmt.machinelearningservices.models.ForecastingTrainingSettings
    """

    _validation = {
        'task_type': {'required': True},
        'training_data': {'required': True},
    }

    _attribute_map = {
        'cv_split_column_names': {'key': 'cvSplitColumnNames', 'type': '[str]'},
        'featurization_settings': {'key': 'featurizationSettings', 'type': 'TableVerticalFeaturizationSettings'},
        'limit_settings': {'key': 'limitSettings', 'type': 'TableVerticalLimitSettings'},
        'n_cross_validations': {'key': 'nCrossValidations', 'type': 'NCrossValidations'},
        'test_data': {'key': 'testData', 'type': 'MLTableJobInput'},
        'test_data_size': {'key': 'testDataSize', 'type': 'float'},
        'validation_data': {'key': 'validationData', 'type': 'MLTableJobInput'},
        'validation_data_size': {'key': 'validationDataSize', 'type': 'float'},
        'weight_column_name': {'key': 'weightColumnName', 'type': 'str'},
        'log_verbosity': {'key': 'logVerbosity', 'type': 'str'},
        'target_column_name': {'key': 'targetColumnName', 'type': 'str'},
        'task_type': {'key': 'taskType', 'type': 'str'},
        'training_data': {'key': 'trainingData', 'type': 'MLTableJobInput'},
        'forecasting_settings': {'key': 'forecastingSettings', 'type': 'ForecastingSettings'},
        'primary_metric': {'key': 'primaryMetric', 'type': 'str'},
        'training_settings': {'key': 'trainingSettings', 'type': 'ForecastingTrainingSettings'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword cv_split_column_names: Columns to use for CVSplit data.
        :paramtype cv_split_column_names: list[str]
        :keyword featurization_settings: Featurization inputs needed for AutoML job.
        :paramtype featurization_settings:
         ~azure.mgmt.machinelearningservices.models.TableVerticalFeaturizationSettings
        :keyword limit_settings: Execution constraints for AutoMLJob.
        :paramtype limit_settings:
         ~azure.mgmt.machinelearningservices.models.TableVerticalLimitSettings
        :keyword n_cross_validations: Number of cross validation folds to be applied on training
         dataset
         when validation dataset is not provided.
        :paramtype n_cross_validations: ~azure.mgmt.machinelearningservices.models.NCrossValidations
        :keyword test_data: Test data input.
        :paramtype test_data: ~azure.mgmt.machinelearningservices.models.MLTableJobInput
        :keyword test_data_size: The fraction of test dataset that needs to be set aside for validation
         purpose.
         Values between (0.0 , 1.0)
         Applied when validation dataset is not provided.
        :paramtype test_data_size: float
        :keyword validation_data: Validation data inputs.
        :paramtype validation_data: ~azure.mgmt.machinelearningservices.models.MLTableJobInput
        :keyword validation_data_size: The fraction of training dataset that needs to be set aside for
         validation purpose.
         Values between (0.0 , 1.0)
         Applied when validation dataset is not provided.
        :paramtype validation_data_size: float
        :keyword weight_column_name: The name of the sample weight column. Automated ML supports a
         weighted column as an input, causing rows in the data to be weighted up or down.
        :paramtype weight_column_name: str
        :keyword log_verbosity: Log verbosity for the job. Possible values include: "NotSet", "Debug",
         "Info", "Warning", "Error", "Critical".
        :paramtype log_verbosity: str or ~azure.mgmt.machinelearningservices.models.LogVerbosity
        :keyword target_column_name: Target column name: This is prediction values column.
         Also known as label column name in context of classification tasks.
        :paramtype target_column_name: str
        :keyword training_data: Required. [Required] Training data input.
        :paramtype training_data: ~azure.mgmt.machinelearningservices.models.MLTableJobInput
        :keyword forecasting_settings: Forecasting task specific inputs.
        :paramtype forecasting_settings: ~azure.mgmt.machinelearningservices.models.ForecastingSettings
        :keyword primary_metric: Primary metric for forecasting task. Possible values include:
         "SpearmanCorrelation", "NormalizedRootMeanSquaredError", "R2Score",
         "NormalizedMeanAbsoluteError".
        :paramtype primary_metric: str or
         ~azure.mgmt.machinelearningservices.models.ForecastingPrimaryMetrics
        :keyword training_settings: Inputs for training phase for an AutoML Job.
        :paramtype training_settings:
         ~azure.mgmt.machinelearningservices.models.ForecastingTrainingSettings
        """
        super(Forecasting, self).__init__(**kwargs)
        self.cv_split_column_names = kwargs.get('cv_split_column_names', None)
        self.featurization_settings = kwargs.get('featurization_settings', None)
        self.limit_settings = kwargs.get('limit_settings', None)
        self.n_cross_validations = kwargs.get('n_cross_validations', None)
        self.test_data = kwargs.get('test_data', None)
        self.test_data_size = kwargs.get('test_data_size', None)
        self.validation_data = kwargs.get('validation_data', None)
        self.validation_data_size = kwargs.get('validation_data_size', None)
        self.weight_column_name = kwargs.get('weight_column_name', None)
        self.task_type = 'Forecasting'  # type: str
        self.forecasting_settings = kwargs.get('forecasting_settings', None)
        self.primary_metric = kwargs.get('primary_metric', None)
        self.training_settings = kwargs.get('training_settings', None)
        self.log_verbosity = kwargs.get('log_verbosity', None)
        self.target_column_name = kwargs.get('target_column_name', None)
        self.training_data = kwargs['training_data']


class ForecastingSettings(msrest.serialization.Model):
    """Forecasting specific parameters.

    :ivar country_or_region_for_holidays: Country or region for holidays for forecasting tasks.
     These should be ISO 3166 two-letter country/region codes, for example 'US' or 'GB'.
    :vartype country_or_region_for_holidays: str
    :ivar cv_step_size: Number of periods between the origin time of one CV fold and the next fold.
     For
     example, if ``CVStepSize`` = 3 for daily data, the origin time for each fold will be
     three days apart.
    :vartype cv_step_size: int
    :ivar feature_lags: Flag for generating lags for the numeric features with 'auto' or null.
     Possible values include: "None", "Auto".
    :vartype feature_lags: str or ~azure.mgmt.machinelearningservices.models.FeatureLags
    :ivar forecast_horizon: The desired maximum forecast horizon in units of time-series frequency.
    :vartype forecast_horizon: ~azure.mgmt.machinelearningservices.models.ForecastHorizon
    :ivar frequency: When forecasting, this parameter represents the period with which the forecast
     is desired, for example daily, weekly, yearly, etc. The forecast frequency is dataset frequency
     by default.
    :vartype frequency: str
    :ivar seasonality: Set time series seasonality as an integer multiple of the series frequency.
     If seasonality is set to 'auto', it will be inferred.
    :vartype seasonality: ~azure.mgmt.machinelearningservices.models.Seasonality
    :ivar short_series_handling_config: The parameter defining how if AutoML should handle short
     time series. Possible values include: "None", "Auto", "Pad", "Drop".
    :vartype short_series_handling_config: str or
     ~azure.mgmt.machinelearningservices.models.ShortSeriesHandlingConfiguration
    :ivar target_aggregate_function: The function to be used to aggregate the time series target
     column to conform to a user specified frequency.
     If the TargetAggregateFunction is set i.e. not 'None', but the freq parameter is not set, the
     error is raised. The possible target aggregation functions are: "sum", "max", "min" and "mean".
     Possible values include: "None", "Sum", "Max", "Min", "Mean".
    :vartype target_aggregate_function: str or
     ~azure.mgmt.machinelearningservices.models.TargetAggregationFunction
    :ivar target_lags: The number of past periods to lag from the target column.
    :vartype target_lags: ~azure.mgmt.machinelearningservices.models.TargetLags
    :ivar target_rolling_window_size: The number of past periods used to create a rolling window
     average of the target column.
    :vartype target_rolling_window_size:
     ~azure.mgmt.machinelearningservices.models.TargetRollingWindowSize
    :ivar time_column_name: The name of the time column. This parameter is required when
     forecasting to specify the datetime column in the input data used for building the time series
     and inferring its frequency.
    :vartype time_column_name: str
    :ivar time_series_id_column_names: The names of columns used to group a timeseries. It can be
     used to create multiple series.
     If grain is not defined, the data set is assumed to be one time-series. This parameter is used
     with task type forecasting.
    :vartype time_series_id_column_names: list[str]
    :ivar use_stl: Configure STL Decomposition of the time-series target column. Possible values
     include: "None", "Season", "SeasonTrend".
    :vartype use_stl: str or ~azure.mgmt.machinelearningservices.models.UseStl
    """

    _attribute_map = {
        'country_or_region_for_holidays': {'key': 'countryOrRegionForHolidays', 'type': 'str'},
        'cv_step_size': {'key': 'cvStepSize', 'type': 'int'},
        'feature_lags': {'key': 'featureLags', 'type': 'str'},
        'forecast_horizon': {'key': 'forecastHorizon', 'type': 'ForecastHorizon'},
        'frequency': {'key': 'frequency', 'type': 'str'},
        'seasonality': {'key': 'seasonality', 'type': 'Seasonality'},
        'short_series_handling_config': {'key': 'shortSeriesHandlingConfig', 'type': 'str'},
        'target_aggregate_function': {'key': 'targetAggregateFunction', 'type': 'str'},
        'target_lags': {'key': 'targetLags', 'type': 'TargetLags'},
        'target_rolling_window_size': {'key': 'targetRollingWindowSize', 'type': 'TargetRollingWindowSize'},
        'time_column_name': {'key': 'timeColumnName', 'type': 'str'},
        'time_series_id_column_names': {'key': 'timeSeriesIdColumnNames', 'type': '[str]'},
        'use_stl': {'key': 'useStl', 'type': 'str'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword country_or_region_for_holidays: Country or region for holidays for forecasting tasks.
         These should be ISO 3166 two-letter country/region codes, for example 'US' or 'GB'.
        :paramtype country_or_region_for_holidays: str
        :keyword cv_step_size: Number of periods between the origin time of one CV fold and the next
         fold. For
         example, if ``CVStepSize`` = 3 for daily data, the origin time for each fold will be
         three days apart.
        :paramtype cv_step_size: int
        :keyword feature_lags: Flag for generating lags for the numeric features with 'auto' or null.
         Possible values include: "None", "Auto".
        :paramtype feature_lags: str or ~azure.mgmt.machinelearningservices.models.FeatureLags
        :keyword forecast_horizon: The desired maximum forecast horizon in units of time-series
         frequency.
        :paramtype forecast_horizon: ~azure.mgmt.machinelearningservices.models.ForecastHorizon
        :keyword frequency: When forecasting, this parameter represents the period with which the
         forecast is desired, for example daily, weekly, yearly, etc. The forecast frequency is dataset
         frequency by default.
        :paramtype frequency: str
        :keyword seasonality: Set time series seasonality as an integer multiple of the series
         frequency.
         If seasonality is set to 'auto', it will be inferred.
        :paramtype seasonality: ~azure.mgmt.machinelearningservices.models.Seasonality
        :keyword short_series_handling_config: The parameter defining how if AutoML should handle short
         time series. Possible values include: "None", "Auto", "Pad", "Drop".
        :paramtype short_series_handling_config: str or
         ~azure.mgmt.machinelearningservices.models.ShortSeriesHandlingConfiguration
        :keyword target_aggregate_function: The function to be used to aggregate the time series target
         column to conform to a user specified frequency.
         If the TargetAggregateFunction is set i.e. not 'None', but the freq parameter is not set, the
         error is raised. The possible target aggregation functions are: "sum", "max", "min" and "mean".
         Possible values include: "None", "Sum", "Max", "Min", "Mean".
        :paramtype target_aggregate_function: str or
         ~azure.mgmt.machinelearningservices.models.TargetAggregationFunction
        :keyword target_lags: The number of past periods to lag from the target column.
        :paramtype target_lags: ~azure.mgmt.machinelearningservices.models.TargetLags
        :keyword target_rolling_window_size: The number of past periods used to create a rolling window
         average of the target column.
        :paramtype target_rolling_window_size:
         ~azure.mgmt.machinelearningservices.models.TargetRollingWindowSize
        :keyword time_column_name: The name of the time column. This parameter is required when
         forecasting to specify the datetime column in the input data used for building the time series
         and inferring its frequency.
        :paramtype time_column_name: str
        :keyword time_series_id_column_names: The names of columns used to group a timeseries. It can
         be used to create multiple series.
         If grain is not defined, the data set is assumed to be one time-series. This parameter is used
         with task type forecasting.
        :paramtype time_series_id_column_names: list[str]
        :keyword use_stl: Configure STL Decomposition of the time-series target column. Possible values
         include: "None", "Season", "SeasonTrend".
        :paramtype use_stl: str or ~azure.mgmt.machinelearningservices.models.UseStl
        """
        super(ForecastingSettings, self).__init__(**kwargs)
        self.country_or_region_for_holidays = kwargs.get('country_or_region_for_holidays', None)
        self.cv_step_size = kwargs.get('cv_step_size', None)
        self.feature_lags = kwargs.get('feature_lags', None)
        self.forecast_horizon = kwargs.get('forecast_horizon', None)
        self.frequency = kwargs.get('frequency', None)
        self.seasonality = kwargs.get('seasonality', None)
        self.short_series_handling_config = kwargs.get('short_series_handling_config', None)
        self.target_aggregate_function = kwargs.get('target_aggregate_function', None)
        self.target_lags = kwargs.get('target_lags', None)
        self.target_rolling_window_size = kwargs.get('target_rolling_window_size', None)
        self.time_column_name = kwargs.get('time_column_name', None)
        self.time_series_id_column_names = kwargs.get('time_series_id_column_names', None)
        self.use_stl = kwargs.get('use_stl', None)


class ForecastingTrainingSettings(TrainingSettings):
    """Forecasting Training related configuration.

    :ivar enable_dnn_training: Enable recommendation of DNN models.
    :vartype enable_dnn_training: bool
    :ivar enable_model_explainability: Flag to turn on explainability on best model.
    :vartype enable_model_explainability: bool
    :ivar enable_onnx_compatible_models: Flag for enabling onnx compatible models.
    :vartype enable_onnx_compatible_models: bool
    :ivar enable_stack_ensemble: Enable stack ensemble run.
    :vartype enable_stack_ensemble: bool
    :ivar enable_vote_ensemble: Enable voting ensemble run.
    :vartype enable_vote_ensemble: bool
    :ivar ensemble_model_download_timeout: During VotingEnsemble and StackEnsemble model
     generation, multiple fitted models from the previous child runs are downloaded.
     Configure this parameter with a higher value than 300 secs, if more time is needed.
    :vartype ensemble_model_download_timeout: ~datetime.timedelta
    :ivar stack_ensemble_settings: Stack ensemble settings for stack ensemble run.
    :vartype stack_ensemble_settings:
     ~azure.mgmt.machinelearningservices.models.StackEnsembleSettings
    :ivar allowed_training_algorithms: Allowed models for forecasting task.
    :vartype allowed_training_algorithms: list[str or
     ~azure.mgmt.machinelearningservices.models.ForecastingModels]
    :ivar blocked_training_algorithms: Blocked models for forecasting task.
    :vartype blocked_training_algorithms: list[str or
     ~azure.mgmt.machinelearningservices.models.ForecastingModels]
    """

    _attribute_map = {
        'enable_dnn_training': {'key': 'enableDnnTraining', 'type': 'bool'},
        'enable_model_explainability': {'key': 'enableModelExplainability', 'type': 'bool'},
        'enable_onnx_compatible_models': {'key': 'enableOnnxCompatibleModels', 'type': 'bool'},
        'enable_stack_ensemble': {'key': 'enableStackEnsemble', 'type': 'bool'},
        'enable_vote_ensemble': {'key': 'enableVoteEnsemble', 'type': 'bool'},
        'ensemble_model_download_timeout': {'key': 'ensembleModelDownloadTimeout', 'type': 'duration'},
        'stack_ensemble_settings': {'key': 'stackEnsembleSettings', 'type': 'StackEnsembleSettings'},
        'allowed_training_algorithms': {'key': 'allowedTrainingAlgorithms', 'type': '[str]'},
        'blocked_training_algorithms': {'key': 'blockedTrainingAlgorithms', 'type': '[str]'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword enable_dnn_training: Enable recommendation of DNN models.
        :paramtype enable_dnn_training: bool
        :keyword enable_model_explainability: Flag to turn on explainability on best model.
        :paramtype enable_model_explainability: bool
        :keyword enable_onnx_compatible_models: Flag for enabling onnx compatible models.
        :paramtype enable_onnx_compatible_models: bool
        :keyword enable_stack_ensemble: Enable stack ensemble run.
        :paramtype enable_stack_ensemble: bool
        :keyword enable_vote_ensemble: Enable voting ensemble run.
        :paramtype enable_vote_ensemble: bool
        :keyword ensemble_model_download_timeout: During VotingEnsemble and StackEnsemble model
         generation, multiple fitted models from the previous child runs are downloaded.
         Configure this parameter with a higher value than 300 secs, if more time is needed.
        :paramtype ensemble_model_download_timeout: ~datetime.timedelta
        :keyword stack_ensemble_settings: Stack ensemble settings for stack ensemble run.
        :paramtype stack_ensemble_settings:
         ~azure.mgmt.machinelearningservices.models.StackEnsembleSettings
        :keyword allowed_training_algorithms: Allowed models for forecasting task.
        :paramtype allowed_training_algorithms: list[str or
         ~azure.mgmt.machinelearningservices.models.ForecastingModels]
        :keyword blocked_training_algorithms: Blocked models for forecasting task.
        :paramtype blocked_training_algorithms: list[str or
         ~azure.mgmt.machinelearningservices.models.ForecastingModels]
        """
        super(ForecastingTrainingSettings, self).__init__(**kwargs)
        self.allowed_training_algorithms = kwargs.get('allowed_training_algorithms', None)
        self.blocked_training_algorithms = kwargs.get('blocked_training_algorithms', None)


class FQDNEndpoint(msrest.serialization.Model):
    """FQDNEndpoint.

    :ivar domain_name:
    :vartype domain_name: str
    :ivar endpoint_details:
    :vartype endpoint_details: list[~azure.mgmt.machinelearningservices.models.FQDNEndpointDetail]
    """

    _attribute_map = {
        'domain_name': {'key': 'domainName', 'type': 'str'},
        'endpoint_details': {'key': 'endpointDetails', 'type': '[FQDNEndpointDetail]'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword domain_name:
        :paramtype domain_name: str
        :keyword endpoint_details:
        :paramtype endpoint_details:
         list[~azure.mgmt.machinelearningservices.models.FQDNEndpointDetail]
        """
        super(FQDNEndpoint, self).__init__(**kwargs)
        self.domain_name = kwargs.get('domain_name', None)
        self.endpoint_details = kwargs.get('endpoint_details', None)


class FQDNEndpointDetail(msrest.serialization.Model):
    """FQDNEndpointDetail.

    :ivar port:
    :vartype port: int
    """

    _attribute_map = {
        'port': {'key': 'port', 'type': 'int'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword port:
        :paramtype port: int
        """
        super(FQDNEndpointDetail, self).__init__(**kwargs)
        self.port = kwargs.get('port', None)


class FQDNEndpoints(msrest.serialization.Model):
    """FQDNEndpoints.

    :ivar category:
    :vartype category: str
    :ivar endpoints:
    :vartype endpoints: list[~azure.mgmt.machinelearningservices.models.FQDNEndpoint]
    """

    _attribute_map = {
        'category': {'key': 'category', 'type': 'str'},
        'endpoints': {'key': 'endpoints', 'type': '[FQDNEndpoint]'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword category:
        :paramtype category: str
        :keyword endpoints:
        :paramtype endpoints: list[~azure.mgmt.machinelearningservices.models.FQDNEndpoint]
        """
        super(FQDNEndpoints, self).__init__(**kwargs)
        self.category = kwargs.get('category', None)
        self.endpoints = kwargs.get('endpoints', None)


class FQDNEndpointsPropertyBag(msrest.serialization.Model):
    """Property bag for FQDN endpoints result.

    :ivar properties:
    :vartype properties: ~azure.mgmt.machinelearningservices.models.FQDNEndpoints
    """

    _attribute_map = {
        'properties': {'key': 'properties', 'type': 'FQDNEndpoints'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword properties:
        :paramtype properties: ~azure.mgmt.machinelearningservices.models.FQDNEndpoints
        """
        super(FQDNEndpointsPropertyBag, self).__init__(**kwargs)
        self.properties = kwargs.get('properties', None)


class OutboundRule(msrest.serialization.Model):
    """Outbound Rule for the managed network of a machine learning workspace.

    You probably want to use the sub-classes and not this class directly. Known
    sub-classes are: FqdnOutboundRule, PrivateEndpointOutboundRule, ServiceTagOutboundRule.

    Variables are only populated by the server, and will be ignored when sending a request.

    All required parameters must be populated in order to send to Azure.

    :ivar category: Category of a managed network Outbound Rule of a machine learning workspace.
     Possible values include: "Required", "Recommended", "UserDefined", "Dependency".
    :vartype category: str or ~azure.mgmt.machinelearningservices.models.RuleCategory
    :ivar parent_rule_names:
    :vartype parent_rule_names: list[str]
    :ivar status: Type of a managed network Outbound Rule of a machine learning workspace. Possible
     values include: "Inactive", "Active".
    :vartype status: str or ~azure.mgmt.machinelearningservices.models.RuleStatus
    :ivar type: Required. Type of a managed network Outbound Rule of a machine learning
     workspace.Constant filled by server. Possible values include: "FQDN", "PrivateEndpoint",
     "ServiceTag".
    :vartype type: str or ~azure.mgmt.machinelearningservices.models.RuleType
    """

    _validation = {
        'parent_rule_names': {'readonly': True},
        'type': {'required': True},
    }

    _attribute_map = {
        'category': {'key': 'category', 'type': 'str'},
        'parent_rule_names': {'key': 'parentRuleNames', 'type': '[str]'},
        'status': {'key': 'status', 'type': 'str'},
        'type': {'key': 'type', 'type': 'str'},
    }

    _subtype_map = {
        'type': {'FQDN': 'FqdnOutboundRule', 'PrivateEndpoint': 'PrivateEndpointOutboundRule', 'ServiceTag': 'ServiceTagOutboundRule'}
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword category: Category of a managed network Outbound Rule of a machine learning workspace.
         Possible values include: "Required", "Recommended", "UserDefined", "Dependency".
        :paramtype category: str or ~azure.mgmt.machinelearningservices.models.RuleCategory
        :keyword status: Type of a managed network Outbound Rule of a machine learning workspace.
         Possible values include: "Inactive", "Active".
        :paramtype status: str or ~azure.mgmt.machinelearningservices.models.RuleStatus
        """
        super(OutboundRule, self).__init__(**kwargs)
        self.category = kwargs.get('category', None)
        self.parent_rule_names = None
        self.status = kwargs.get('status', None)
        self.type = None  # type: Optional[str]


class FqdnOutboundRule(OutboundRule):
    """FQDN Outbound Rule for the managed network of a machine learning workspace.

    Variables are only populated by the server, and will be ignored when sending a request.

    All required parameters must be populated in order to send to Azure.

    :ivar category: Category of a managed network Outbound Rule of a machine learning workspace.
     Possible values include: "Required", "Recommended", "UserDefined", "Dependency".
    :vartype category: str or ~azure.mgmt.machinelearningservices.models.RuleCategory
    :ivar parent_rule_names:
    :vartype parent_rule_names: list[str]
    :ivar status: Type of a managed network Outbound Rule of a machine learning workspace. Possible
     values include: "Inactive", "Active".
    :vartype status: str or ~azure.mgmt.machinelearningservices.models.RuleStatus
    :ivar type: Required. Type of a managed network Outbound Rule of a machine learning
     workspace.Constant filled by server. Possible values include: "FQDN", "PrivateEndpoint",
     "ServiceTag".
    :vartype type: str or ~azure.mgmt.machinelearningservices.models.RuleType
    :ivar destination:
    :vartype destination: str
    """

    _validation = {
        'parent_rule_names': {'readonly': True},
        'type': {'required': True},
    }

    _attribute_map = {
        'category': {'key': 'category', 'type': 'str'},
        'parent_rule_names': {'key': 'parentRuleNames', 'type': '[str]'},
        'status': {'key': 'status', 'type': 'str'},
        'type': {'key': 'type', 'type': 'str'},
        'destination': {'key': 'destination', 'type': 'str'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword category: Category of a managed network Outbound Rule of a machine learning workspace.
         Possible values include: "Required", "Recommended", "UserDefined", "Dependency".
        :paramtype category: str or ~azure.mgmt.machinelearningservices.models.RuleCategory
        :keyword status: Type of a managed network Outbound Rule of a machine learning workspace.
         Possible values include: "Inactive", "Active".
        :paramtype status: str or ~azure.mgmt.machinelearningservices.models.RuleStatus
        :keyword destination:
        :paramtype destination: str
        """
        super(FqdnOutboundRule, self).__init__(**kwargs)
        self.type = 'FQDN'  # type: str
        self.destination = kwargs.get('destination', None)


class GetBlobReferenceForConsumptionDto(msrest.serialization.Model):
    """GetBlobReferenceForConsumptionDto.

    :ivar blob_uri: Blob uri, example: https://blob.windows.core.net/Container/Path.
    :vartype blob_uri: str
    :ivar credential: Credential info to access storage account.
    :vartype credential: ~azure.mgmt.machinelearningservices.models.DataReferenceCredential
    :ivar storage_account_arm_id: The ARM id of the storage account.
    :vartype storage_account_arm_id: str
    """

    _attribute_map = {
        'blob_uri': {'key': 'blobUri', 'type': 'str'},
        'credential': {'key': 'credential', 'type': 'DataReferenceCredential'},
        'storage_account_arm_id': {'key': 'storageAccountArmId', 'type': 'str'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword blob_uri: Blob uri, example: https://blob.windows.core.net/Container/Path.
        :paramtype blob_uri: str
        :keyword credential: Credential info to access storage account.
        :paramtype credential: ~azure.mgmt.machinelearningservices.models.DataReferenceCredential
        :keyword storage_account_arm_id: The ARM id of the storage account.
        :paramtype storage_account_arm_id: str
        """
        super(GetBlobReferenceForConsumptionDto, self).__init__(**kwargs)
        self.blob_uri = kwargs.get('blob_uri', None)
        self.credential = kwargs.get('credential', None)
        self.storage_account_arm_id = kwargs.get('storage_account_arm_id', None)


class GetBlobReferenceSASRequestDto(msrest.serialization.Model):
    """BlobReferenceSASRequest for getBlobReferenceSAS API.

    :ivar asset_id: Id of the asset to be accessed.
    :vartype asset_id: str
    :ivar blob_uri: Blob uri of the asset to be accessed.
    :vartype blob_uri: str
    """

    _attribute_map = {
        'asset_id': {'key': 'assetId', 'type': 'str'},
        'blob_uri': {'key': 'blobUri', 'type': 'str'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword asset_id: Id of the asset to be accessed.
        :paramtype asset_id: str
        :keyword blob_uri: Blob uri of the asset to be accessed.
        :paramtype blob_uri: str
        """
        super(GetBlobReferenceSASRequestDto, self).__init__(**kwargs)
        self.asset_id = kwargs.get('asset_id', None)
        self.blob_uri = kwargs.get('blob_uri', None)


class GetBlobReferenceSASResponseDto(msrest.serialization.Model):
    """BlobReferenceSASResponse for getBlobReferenceSAS API.

    :ivar blob_reference_for_consumption: Blob reference for consumption details.
    :vartype blob_reference_for_consumption:
     ~azure.mgmt.machinelearningservices.models.GetBlobReferenceForConsumptionDto
    """

    _attribute_map = {
        'blob_reference_for_consumption': {'key': 'blobReferenceForConsumption', 'type': 'GetBlobReferenceForConsumptionDto'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword blob_reference_for_consumption: Blob reference for consumption details.
        :paramtype blob_reference_for_consumption:
         ~azure.mgmt.machinelearningservices.models.GetBlobReferenceForConsumptionDto
        """
        super(GetBlobReferenceSASResponseDto, self).__init__(**kwargs)
        self.blob_reference_for_consumption = kwargs.get('blob_reference_for_consumption', None)


class GridSamplingAlgorithm(SamplingAlgorithm):
    """Defines a Sampling Algorithm that exhaustively generates every value combination in the space.

    All required parameters must be populated in order to send to Azure.

    :ivar sampling_algorithm_type: Required. [Required] The algorithm used for generating
     hyperparameter values, along with configuration properties.Constant filled by server. Possible
     values include: "Grid", "Random", "Bayesian".
    :vartype sampling_algorithm_type: str or
     ~azure.mgmt.machinelearningservices.models.SamplingAlgorithmType
    """

    _validation = {
        'sampling_algorithm_type': {'required': True},
    }

    _attribute_map = {
        'sampling_algorithm_type': {'key': 'samplingAlgorithmType', 'type': 'str'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        """
        super(GridSamplingAlgorithm, self).__init__(**kwargs)
        self.sampling_algorithm_type = 'Grid'  # type: str


class GroupEnvironmentConfiguration(msrest.serialization.Model):
    """Environment configuration options.

    :ivar environment_id: ARM resource ID of the environment specification for the inference pool.
    :vartype environment_id: str
    :ivar environment_variables: Environment variables configuration for the inference pool.
    :vartype environment_variables:
     list[~azure.mgmt.machinelearningservices.models.StringKeyValuePair]
    :ivar liveness_probe: Liveness probe monitors the health of the container regularly.
    :vartype liveness_probe: ~azure.mgmt.machinelearningservices.models.ProbeSettings
    :ivar readiness_probe: Readiness probe validates if the container is ready to serve traffic.
     The properties and defaults are the same as liveness probe.
    :vartype readiness_probe: ~azure.mgmt.machinelearningservices.models.ProbeSettings
    :ivar startup_probe: This verifies whether the application within a container is started.
     Startup probes run before any other probe, and, unless it finishes successfully, disables other
     probes.
    :vartype startup_probe: ~azure.mgmt.machinelearningservices.models.ProbeSettings
    """

    _attribute_map = {
        'environment_id': {'key': 'environmentId', 'type': 'str'},
        'environment_variables': {'key': 'environmentVariables', 'type': '[StringKeyValuePair]'},
        'liveness_probe': {'key': 'livenessProbe', 'type': 'ProbeSettings'},
        'readiness_probe': {'key': 'readinessProbe', 'type': 'ProbeSettings'},
        'startup_probe': {'key': 'startupProbe', 'type': 'ProbeSettings'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword environment_id: ARM resource ID of the environment specification for the inference
         pool.
        :paramtype environment_id: str
        :keyword environment_variables: Environment variables configuration for the inference pool.
        :paramtype environment_variables:
         list[~azure.mgmt.machinelearningservices.models.StringKeyValuePair]
        :keyword liveness_probe: Liveness probe monitors the health of the container regularly.
        :paramtype liveness_probe: ~azure.mgmt.machinelearningservices.models.ProbeSettings
        :keyword readiness_probe: Readiness probe validates if the container is ready to serve traffic.
         The properties and defaults are the same as liveness probe.
        :paramtype readiness_probe: ~azure.mgmt.machinelearningservices.models.ProbeSettings
        :keyword startup_probe: This verifies whether the application within a container is started.
         Startup probes run before any other probe, and, unless it finishes successfully, disables other
         probes.
        :paramtype startup_probe: ~azure.mgmt.machinelearningservices.models.ProbeSettings
        """
        super(GroupEnvironmentConfiguration, self).__init__(**kwargs)
        self.environment_id = kwargs.get('environment_id', None)
        self.environment_variables = kwargs.get('environment_variables', None)
        self.liveness_probe = kwargs.get('liveness_probe', None)
        self.readiness_probe = kwargs.get('readiness_probe', None)
        self.startup_probe = kwargs.get('startup_probe', None)


class GroupModelConfiguration(msrest.serialization.Model):
    """Model configuration options.

    :ivar model_id: The URI path to the model.
    :vartype model_id: str
    """

    _attribute_map = {
        'model_id': {'key': 'modelId', 'type': 'str'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword model_id: The URI path to the model.
        :paramtype model_id: str
        """
        super(GroupModelConfiguration, self).__init__(**kwargs)
        self.model_id = kwargs.get('model_id', None)


class GroupStatus(msrest.serialization.Model):
    """GroupStatus.

    :ivar actual_capacity_info: Gets or sets the actual capacity info for the group.
    :vartype actual_capacity_info: ~azure.mgmt.machinelearningservices.models.ActualCapacityInfo
    :ivar endpoint_count: Gets or sets the actual number of endpoints in the group.
    :vartype endpoint_count: int
    :ivar requested_capacity: Gets or sets the request number of instances for the group.
    :vartype requested_capacity: int
    """

    _attribute_map = {
        'actual_capacity_info': {'key': 'actualCapacityInfo', 'type': 'ActualCapacityInfo'},
        'endpoint_count': {'key': 'endpointCount', 'type': 'int'},
        'requested_capacity': {'key': 'requestedCapacity', 'type': 'int'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword actual_capacity_info: Gets or sets the actual capacity info for the group.
        :paramtype actual_capacity_info: ~azure.mgmt.machinelearningservices.models.ActualCapacityInfo
        :keyword endpoint_count: Gets or sets the actual number of endpoints in the group.
        :paramtype endpoint_count: int
        :keyword requested_capacity: Gets or sets the request number of instances for the group.
        :paramtype requested_capacity: int
        """
        super(GroupStatus, self).__init__(**kwargs)
        self.actual_capacity_info = kwargs.get('actual_capacity_info', None)
        self.endpoint_count = kwargs.get('endpoint_count', 0)
        self.requested_capacity = kwargs.get('requested_capacity', 0)


class HDInsightSchema(msrest.serialization.Model):
    """HDInsightSchema.

    :ivar properties: HDInsight compute properties.
    :vartype properties: ~azure.mgmt.machinelearningservices.models.HDInsightProperties
    """

    _attribute_map = {
        'properties': {'key': 'properties', 'type': 'HDInsightProperties'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword properties: HDInsight compute properties.
        :paramtype properties: ~azure.mgmt.machinelearningservices.models.HDInsightProperties
        """
        super(HDInsightSchema, self).__init__(**kwargs)
        self.properties = kwargs.get('properties', None)


class HDInsight(Compute, HDInsightSchema):
    """A HDInsight compute.

    Variables are only populated by the server, and will be ignored when sending a request.

    All required parameters must be populated in order to send to Azure.

    :ivar properties: HDInsight compute properties.
    :vartype properties: ~azure.mgmt.machinelearningservices.models.HDInsightProperties
    :ivar compute_type: Required. The type of compute.Constant filled by server. Possible values
     include: "AKS", "Kubernetes", "AmlCompute", "ComputeInstance", "DataFactory", "VirtualMachine",
     "HDInsight", "Databricks", "DataLakeAnalytics", "SynapseSpark".
    :vartype compute_type: str or ~azure.mgmt.machinelearningservices.models.ComputeType
    :ivar compute_location: Location for the underlying compute.
    :vartype compute_location: str
    :ivar provisioning_state: The provision state of the cluster. Valid values are Unknown,
     Updating, Provisioning, Succeeded, and Failed. Possible values include: "Unknown", "Updating",
     "Creating", "Deleting", "Succeeded", "Failed", "Canceled".
    :vartype provisioning_state: str or
     ~azure.mgmt.machinelearningservices.models.ProvisioningState
    :ivar description: The description of the Machine Learning compute.
    :vartype description: str
    :ivar created_on: The time at which the compute was created.
    :vartype created_on: ~datetime.datetime
    :ivar modified_on: The time at which the compute was last modified.
    :vartype modified_on: ~datetime.datetime
    :ivar resource_id: ARM resource id of the underlying compute.
    :vartype resource_id: str
    :ivar provisioning_errors: Errors during provisioning.
    :vartype provisioning_errors: list[~azure.mgmt.machinelearningservices.models.ErrorResponse]
    :ivar is_attached_compute: Indicating whether the compute was provisioned by user and brought
     from outside if true, or machine learning service provisioned it if false.
    :vartype is_attached_compute: bool
    :ivar disable_local_auth: Opt-out of local authentication and ensure customers can use only MSI
     and AAD exclusively for authentication.
    :vartype disable_local_auth: bool
    """

    _validation = {
        'compute_type': {'required': True},
        'provisioning_state': {'readonly': True},
        'created_on': {'readonly': True},
        'modified_on': {'readonly': True},
        'provisioning_errors': {'readonly': True},
        'is_attached_compute': {'readonly': True},
    }

    _attribute_map = {
        'properties': {'key': 'properties', 'type': 'HDInsightProperties'},
        'compute_type': {'key': 'computeType', 'type': 'str'},
        'compute_location': {'key': 'computeLocation', 'type': 'str'},
        'provisioning_state': {'key': 'provisioningState', 'type': 'str'},
        'description': {'key': 'description', 'type': 'str'},
        'created_on': {'key': 'createdOn', 'type': 'iso-8601'},
        'modified_on': {'key': 'modifiedOn', 'type': 'iso-8601'},
        'resource_id': {'key': 'resourceId', 'type': 'str'},
        'provisioning_errors': {'key': 'provisioningErrors', 'type': '[ErrorResponse]'},
        'is_attached_compute': {'key': 'isAttachedCompute', 'type': 'bool'},
        'disable_local_auth': {'key': 'disableLocalAuth', 'type': 'bool'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword properties: HDInsight compute properties.
        :paramtype properties: ~azure.mgmt.machinelearningservices.models.HDInsightProperties
        :keyword compute_location: Location for the underlying compute.
        :paramtype compute_location: str
        :keyword description: The description of the Machine Learning compute.
        :paramtype description: str
        :keyword resource_id: ARM resource id of the underlying compute.
        :paramtype resource_id: str
        :keyword disable_local_auth: Opt-out of local authentication and ensure customers can use only
         MSI and AAD exclusively for authentication.
        :paramtype disable_local_auth: bool
        """
        super(HDInsight, self).__init__(**kwargs)
        self.properties = kwargs.get('properties', None)
        self.compute_type = 'HDInsight'  # type: str
        self.compute_location = kwargs.get('compute_location', None)
        self.provisioning_state = None
        self.description = kwargs.get('description', None)
        self.created_on = None
        self.modified_on = None
        self.resource_id = kwargs.get('resource_id', None)
        self.provisioning_errors = None
        self.is_attached_compute = None
        self.disable_local_auth = kwargs.get('disable_local_auth', None)


class HDInsightProperties(msrest.serialization.Model):
    """HDInsight compute properties.

    :ivar ssh_port: Port open for ssh connections on the master node of the cluster.
    :vartype ssh_port: int
    :ivar address: Public IP address of the master node of the cluster.
    :vartype address: str
    :ivar administrator_account: Admin credentials for master node of the cluster.
    :vartype administrator_account:
     ~azure.mgmt.machinelearningservices.models.VirtualMachineSshCredentials
    """

    _attribute_map = {
        'ssh_port': {'key': 'sshPort', 'type': 'int'},
        'address': {'key': 'address', 'type': 'str'},
        'administrator_account': {'key': 'administratorAccount', 'type': 'VirtualMachineSshCredentials'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword ssh_port: Port open for ssh connections on the master node of the cluster.
        :paramtype ssh_port: int
        :keyword address: Public IP address of the master node of the cluster.
        :paramtype address: str
        :keyword administrator_account: Admin credentials for master node of the cluster.
        :paramtype administrator_account:
         ~azure.mgmt.machinelearningservices.models.VirtualMachineSshCredentials
        """
        super(HDInsightProperties, self).__init__(**kwargs)
        self.ssh_port = kwargs.get('ssh_port', None)
        self.address = kwargs.get('address', None)
        self.administrator_account = kwargs.get('administrator_account', None)


class IdAssetReference(AssetReferenceBase):
    """Reference to an asset via its ARM resource ID.

    All required parameters must be populated in order to send to Azure.

    :ivar reference_type: Required. [Required] Specifies the type of asset reference.Constant
     filled by server. Possible values include: "Id", "DataPath", "OutputPath".
    :vartype reference_type: str or ~azure.mgmt.machinelearningservices.models.ReferenceType
    :ivar asset_id: Required. [Required] ARM resource ID of the asset.
    :vartype asset_id: str
    """

    _validation = {
        'reference_type': {'required': True},
        'asset_id': {'required': True, 'min_length': 1, 'pattern': r'[a-zA-Z0-9_]'},
    }

    _attribute_map = {
        'reference_type': {'key': 'referenceType', 'type': 'str'},
        'asset_id': {'key': 'assetId', 'type': 'str'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword asset_id: Required. [Required] ARM resource ID of the asset.
        :paramtype asset_id: str
        """
        super(IdAssetReference, self).__init__(**kwargs)
        self.reference_type = 'Id'  # type: str
        self.asset_id = kwargs['asset_id']


class IdentityForCmk(msrest.serialization.Model):
    """Identity object used for encryption.

    :ivar user_assigned_identity: UserAssignedIdentity to be used to fetch the encryption key from
     keyVault.
    :vartype user_assigned_identity: str
    """

    _attribute_map = {
        'user_assigned_identity': {'key': 'userAssignedIdentity', 'type': 'str'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword user_assigned_identity: UserAssignedIdentity to be used to fetch the encryption key
         from keyVault.
        :paramtype user_assigned_identity: str
        """
        super(IdentityForCmk, self).__init__(**kwargs)
        self.user_assigned_identity = kwargs.get('user_assigned_identity', None)


class IdleShutdownSetting(msrest.serialization.Model):
    """Stops compute instance after user defined period of inactivity.

    :ivar idle_time_before_shutdown: Time is defined in ISO8601 format. Minimum is 15 min, maximum
     is 3 days.
    :vartype idle_time_before_shutdown: str
    """

    _attribute_map = {
        'idle_time_before_shutdown': {'key': 'idleTimeBeforeShutdown', 'type': 'str'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword idle_time_before_shutdown: Time is defined in ISO8601 format. Minimum is 15 min,
         maximum is 3 days.
        :paramtype idle_time_before_shutdown: str
        """
        super(IdleShutdownSetting, self).__init__(**kwargs)
        self.idle_time_before_shutdown = kwargs.get('idle_time_before_shutdown', None)


class Image(msrest.serialization.Model):
    """Image.

    :ivar additional_properties: Unmatched properties from the message are deserialized to this
     collection.
    :vartype additional_properties: dict[str, any]
    :ivar type: Type of the image. Possible values are: docker - For docker images. azureml - For
     AzureML Environment images (custom and curated). Possible values include: "docker", "azureml".
     Default value: "docker".
    :vartype type: str or ~azure.mgmt.machinelearningservices.models.ImageType
    :ivar reference: Image reference URL if type is docker. Environment name if type is azureml.
    :vartype reference: str
    :ivar version: Version of image being used. If latest then skip this field.
    :vartype version: str
    """

    _attribute_map = {
        'additional_properties': {'key': '', 'type': '{object}'},
        'type': {'key': 'type', 'type': 'str'},
        'reference': {'key': 'reference', 'type': 'str'},
        'version': {'key': 'version', 'type': 'str'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword additional_properties: Unmatched properties from the message are deserialized to this
         collection.
        :paramtype additional_properties: dict[str, any]
        :keyword type: Type of the image. Possible values are: docker - For docker images. azureml -
         For AzureML Environment images (custom and curated). Possible values include: "docker",
         "azureml". Default value: "docker".
        :paramtype type: str or ~azure.mgmt.machinelearningservices.models.ImageType
        :keyword reference: Image reference URL if type is docker. Environment name if type is azureml.
        :paramtype reference: str
        :keyword version: Version of image being used. If latest then skip this field.
        :paramtype version: str
        """
        super(Image, self).__init__(**kwargs)
        self.additional_properties = kwargs.get('additional_properties', None)
        self.type = kwargs.get('type', "docker")
        self.reference = kwargs.get('reference', None)
        self.version = kwargs.get('version', None)


class ImageVertical(msrest.serialization.Model):
    """Abstract class for AutoML tasks that train image (computer vision) models -
such as Image Classification / Image Classification Multilabel / Image Object Detection / Image Instance Segmentation.

    All required parameters must be populated in order to send to Azure.

    :ivar limit_settings: Required. [Required] Limit settings for the AutoML job.
    :vartype limit_settings: ~azure.mgmt.machinelearningservices.models.ImageLimitSettings
    :ivar sweep_settings: Model sweeping and hyperparameter sweeping related settings.
    :vartype sweep_settings: ~azure.mgmt.machinelearningservices.models.ImageSweepSettings
    :ivar validation_data: Validation data inputs.
    :vartype validation_data: ~azure.mgmt.machinelearningservices.models.MLTableJobInput
    :ivar validation_data_size: The fraction of training dataset that needs to be set aside for
     validation purpose.
     Values between (0.0 , 1.0)
     Applied when validation dataset is not provided.
    :vartype validation_data_size: float
    """

    _validation = {
        'limit_settings': {'required': True},
    }

    _attribute_map = {
        'limit_settings': {'key': 'limitSettings', 'type': 'ImageLimitSettings'},
        'sweep_settings': {'key': 'sweepSettings', 'type': 'ImageSweepSettings'},
        'validation_data': {'key': 'validationData', 'type': 'MLTableJobInput'},
        'validation_data_size': {'key': 'validationDataSize', 'type': 'float'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword limit_settings: Required. [Required] Limit settings for the AutoML job.
        :paramtype limit_settings: ~azure.mgmt.machinelearningservices.models.ImageLimitSettings
        :keyword sweep_settings: Model sweeping and hyperparameter sweeping related settings.
        :paramtype sweep_settings: ~azure.mgmt.machinelearningservices.models.ImageSweepSettings
        :keyword validation_data: Validation data inputs.
        :paramtype validation_data: ~azure.mgmt.machinelearningservices.models.MLTableJobInput
        :keyword validation_data_size: The fraction of training dataset that needs to be set aside for
         validation purpose.
         Values between (0.0 , 1.0)
         Applied when validation dataset is not provided.
        :paramtype validation_data_size: float
        """
        super(ImageVertical, self).__init__(**kwargs)
        self.limit_settings = kwargs['limit_settings']
        self.sweep_settings = kwargs.get('sweep_settings', None)
        self.validation_data = kwargs.get('validation_data', None)
        self.validation_data_size = kwargs.get('validation_data_size', None)


class ImageClassificationBase(ImageVertical):
    """ImageClassificationBase.

    All required parameters must be populated in order to send to Azure.

    :ivar limit_settings: Required. [Required] Limit settings for the AutoML job.
    :vartype limit_settings: ~azure.mgmt.machinelearningservices.models.ImageLimitSettings
    :ivar sweep_settings: Model sweeping and hyperparameter sweeping related settings.
    :vartype sweep_settings: ~azure.mgmt.machinelearningservices.models.ImageSweepSettings
    :ivar validation_data: Validation data inputs.
    :vartype validation_data: ~azure.mgmt.machinelearningservices.models.MLTableJobInput
    :ivar validation_data_size: The fraction of training dataset that needs to be set aside for
     validation purpose.
     Values between (0.0 , 1.0)
     Applied when validation dataset is not provided.
    :vartype validation_data_size: float
    :ivar model_settings: Settings used for training the model.
    :vartype model_settings:
     ~azure.mgmt.machinelearningservices.models.ImageModelSettingsClassification
    :ivar search_space: Search space for sampling different combinations of models and their
     hyperparameters.
    :vartype search_space:
     list[~azure.mgmt.machinelearningservices.models.ImageModelDistributionSettingsClassification]
    """

    _validation = {
        'limit_settings': {'required': True},
    }

    _attribute_map = {
        'limit_settings': {'key': 'limitSettings', 'type': 'ImageLimitSettings'},
        'sweep_settings': {'key': 'sweepSettings', 'type': 'ImageSweepSettings'},
        'validation_data': {'key': 'validationData', 'type': 'MLTableJobInput'},
        'validation_data_size': {'key': 'validationDataSize', 'type': 'float'},
        'model_settings': {'key': 'modelSettings', 'type': 'ImageModelSettingsClassification'},
        'search_space': {'key': 'searchSpace', 'type': '[ImageModelDistributionSettingsClassification]'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword limit_settings: Required. [Required] Limit settings for the AutoML job.
        :paramtype limit_settings: ~azure.mgmt.machinelearningservices.models.ImageLimitSettings
        :keyword sweep_settings: Model sweeping and hyperparameter sweeping related settings.
        :paramtype sweep_settings: ~azure.mgmt.machinelearningservices.models.ImageSweepSettings
        :keyword validation_data: Validation data inputs.
        :paramtype validation_data: ~azure.mgmt.machinelearningservices.models.MLTableJobInput
        :keyword validation_data_size: The fraction of training dataset that needs to be set aside for
         validation purpose.
         Values between (0.0 , 1.0)
         Applied when validation dataset is not provided.
        :paramtype validation_data_size: float
        :keyword model_settings: Settings used for training the model.
        :paramtype model_settings:
         ~azure.mgmt.machinelearningservices.models.ImageModelSettingsClassification
        :keyword search_space: Search space for sampling different combinations of models and their
         hyperparameters.
        :paramtype search_space:
         list[~azure.mgmt.machinelearningservices.models.ImageModelDistributionSettingsClassification]
        """
        super(ImageClassificationBase, self).__init__(**kwargs)
        self.model_settings = kwargs.get('model_settings', None)
        self.search_space = kwargs.get('search_space', None)


class ImageClassification(AutoMLVertical, ImageClassificationBase):
    """Image Classification. Multi-class image classification is used when an image is classified with only a single label
from a set of classes - e.g. each image is classified as either an image of a 'cat' or a 'dog' or a 'duck'.

    All required parameters must be populated in order to send to Azure.

    :ivar limit_settings: Required. [Required] Limit settings for the AutoML job.
    :vartype limit_settings: ~azure.mgmt.machinelearningservices.models.ImageLimitSettings
    :ivar sweep_settings: Model sweeping and hyperparameter sweeping related settings.
    :vartype sweep_settings: ~azure.mgmt.machinelearningservices.models.ImageSweepSettings
    :ivar validation_data: Validation data inputs.
    :vartype validation_data: ~azure.mgmt.machinelearningservices.models.MLTableJobInput
    :ivar validation_data_size: The fraction of training dataset that needs to be set aside for
     validation purpose.
     Values between (0.0 , 1.0)
     Applied when validation dataset is not provided.
    :vartype validation_data_size: float
    :ivar model_settings: Settings used for training the model.
    :vartype model_settings:
     ~azure.mgmt.machinelearningservices.models.ImageModelSettingsClassification
    :ivar search_space: Search space for sampling different combinations of models and their
     hyperparameters.
    :vartype search_space:
     list[~azure.mgmt.machinelearningservices.models.ImageModelDistributionSettingsClassification]
    :ivar log_verbosity: Log verbosity for the job. Possible values include: "NotSet", "Debug",
     "Info", "Warning", "Error", "Critical".
    :vartype log_verbosity: str or ~azure.mgmt.machinelearningservices.models.LogVerbosity
    :ivar target_column_name: Target column name: This is prediction values column.
     Also known as label column name in context of classification tasks.
    :vartype target_column_name: str
    :ivar task_type: Required. [Required] Task type for AutoMLJob.Constant filled by server.
     Possible values include: "Classification", "Regression", "Forecasting", "ImageClassification",
     "ImageClassificationMultilabel", "ImageObjectDetection", "ImageInstanceSegmentation",
     "TextClassification", "TextClassificationMultilabel", "TextNER".
    :vartype task_type: str or ~azure.mgmt.machinelearningservices.models.TaskType
    :ivar training_data: Required. [Required] Training data input.
    :vartype training_data: ~azure.mgmt.machinelearningservices.models.MLTableJobInput
    :ivar primary_metric: Primary metric to optimize for this task. Possible values include:
     "AUCWeighted", "Accuracy", "NormMacroRecall", "AveragePrecisionScoreWeighted",
     "PrecisionScoreWeighted".
    :vartype primary_metric: str or
     ~azure.mgmt.machinelearningservices.models.ClassificationPrimaryMetrics
    """

    _validation = {
        'limit_settings': {'required': True},
        'task_type': {'required': True},
        'training_data': {'required': True},
    }

    _attribute_map = {
        'limit_settings': {'key': 'limitSettings', 'type': 'ImageLimitSettings'},
        'sweep_settings': {'key': 'sweepSettings', 'type': 'ImageSweepSettings'},
        'validation_data': {'key': 'validationData', 'type': 'MLTableJobInput'},
        'validation_data_size': {'key': 'validationDataSize', 'type': 'float'},
        'model_settings': {'key': 'modelSettings', 'type': 'ImageModelSettingsClassification'},
        'search_space': {'key': 'searchSpace', 'type': '[ImageModelDistributionSettingsClassification]'},
        'log_verbosity': {'key': 'logVerbosity', 'type': 'str'},
        'target_column_name': {'key': 'targetColumnName', 'type': 'str'},
        'task_type': {'key': 'taskType', 'type': 'str'},
        'training_data': {'key': 'trainingData', 'type': 'MLTableJobInput'},
        'primary_metric': {'key': 'primaryMetric', 'type': 'str'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword limit_settings: Required. [Required] Limit settings for the AutoML job.
        :paramtype limit_settings: ~azure.mgmt.machinelearningservices.models.ImageLimitSettings
        :keyword sweep_settings: Model sweeping and hyperparameter sweeping related settings.
        :paramtype sweep_settings: ~azure.mgmt.machinelearningservices.models.ImageSweepSettings
        :keyword validation_data: Validation data inputs.
        :paramtype validation_data: ~azure.mgmt.machinelearningservices.models.MLTableJobInput
        :keyword validation_data_size: The fraction of training dataset that needs to be set aside for
         validation purpose.
         Values between (0.0 , 1.0)
         Applied when validation dataset is not provided.
        :paramtype validation_data_size: float
        :keyword model_settings: Settings used for training the model.
        :paramtype model_settings:
         ~azure.mgmt.machinelearningservices.models.ImageModelSettingsClassification
        :keyword search_space: Search space for sampling different combinations of models and their
         hyperparameters.
        :paramtype search_space:
         list[~azure.mgmt.machinelearningservices.models.ImageModelDistributionSettingsClassification]
        :keyword log_verbosity: Log verbosity for the job. Possible values include: "NotSet", "Debug",
         "Info", "Warning", "Error", "Critical".
        :paramtype log_verbosity: str or ~azure.mgmt.machinelearningservices.models.LogVerbosity
        :keyword target_column_name: Target column name: This is prediction values column.
         Also known as label column name in context of classification tasks.
        :paramtype target_column_name: str
        :keyword training_data: Required. [Required] Training data input.
        :paramtype training_data: ~azure.mgmt.machinelearningservices.models.MLTableJobInput
        :keyword primary_metric: Primary metric to optimize for this task. Possible values include:
         "AUCWeighted", "Accuracy", "NormMacroRecall", "AveragePrecisionScoreWeighted",
         "PrecisionScoreWeighted".
        :paramtype primary_metric: str or
         ~azure.mgmt.machinelearningservices.models.ClassificationPrimaryMetrics
        """
        super(ImageClassification, self).__init__(**kwargs)
        self.limit_settings = kwargs['limit_settings']
        self.sweep_settings = kwargs.get('sweep_settings', None)
        self.validation_data = kwargs.get('validation_data', None)
        self.validation_data_size = kwargs.get('validation_data_size', None)
        self.model_settings = kwargs.get('model_settings', None)
        self.search_space = kwargs.get('search_space', None)
        self.task_type = 'ImageClassification'  # type: str
        self.primary_metric = kwargs.get('primary_metric', None)
        self.log_verbosity = kwargs.get('log_verbosity', None)
        self.target_column_name = kwargs.get('target_column_name', None)
        self.training_data = kwargs['training_data']


class ImageClassificationMultilabel(AutoMLVertical, ImageClassificationBase):
    """Image Classification Multilabel. Multi-label image classification is used when an image could have one or more labels
from a set of labels - e.g. an image could be labeled with both 'cat' and 'dog'.

    All required parameters must be populated in order to send to Azure.

    :ivar limit_settings: Required. [Required] Limit settings for the AutoML job.
    :vartype limit_settings: ~azure.mgmt.machinelearningservices.models.ImageLimitSettings
    :ivar sweep_settings: Model sweeping and hyperparameter sweeping related settings.
    :vartype sweep_settings: ~azure.mgmt.machinelearningservices.models.ImageSweepSettings
    :ivar validation_data: Validation data inputs.
    :vartype validation_data: ~azure.mgmt.machinelearningservices.models.MLTableJobInput
    :ivar validation_data_size: The fraction of training dataset that needs to be set aside for
     validation purpose.
     Values between (0.0 , 1.0)
     Applied when validation dataset is not provided.
    :vartype validation_data_size: float
    :ivar model_settings: Settings used for training the model.
    :vartype model_settings:
     ~azure.mgmt.machinelearningservices.models.ImageModelSettingsClassification
    :ivar search_space: Search space for sampling different combinations of models and their
     hyperparameters.
    :vartype search_space:
     list[~azure.mgmt.machinelearningservices.models.ImageModelDistributionSettingsClassification]
    :ivar log_verbosity: Log verbosity for the job. Possible values include: "NotSet", "Debug",
     "Info", "Warning", "Error", "Critical".
    :vartype log_verbosity: str or ~azure.mgmt.machinelearningservices.models.LogVerbosity
    :ivar target_column_name: Target column name: This is prediction values column.
     Also known as label column name in context of classification tasks.
    :vartype target_column_name: str
    :ivar task_type: Required. [Required] Task type for AutoMLJob.Constant filled by server.
     Possible values include: "Classification", "Regression", "Forecasting", "ImageClassification",
     "ImageClassificationMultilabel", "ImageObjectDetection", "ImageInstanceSegmentation",
     "TextClassification", "TextClassificationMultilabel", "TextNER".
    :vartype task_type: str or ~azure.mgmt.machinelearningservices.models.TaskType
    :ivar training_data: Required. [Required] Training data input.
    :vartype training_data: ~azure.mgmt.machinelearningservices.models.MLTableJobInput
    :ivar primary_metric: Primary metric to optimize for this task. Possible values include:
     "AUCWeighted", "Accuracy", "NormMacroRecall", "AveragePrecisionScoreWeighted",
     "PrecisionScoreWeighted", "IOU".
    :vartype primary_metric: str or
     ~azure.mgmt.machinelearningservices.models.ClassificationMultilabelPrimaryMetrics
    """

    _validation = {
        'limit_settings': {'required': True},
        'task_type': {'required': True},
        'training_data': {'required': True},
    }

    _attribute_map = {
        'limit_settings': {'key': 'limitSettings', 'type': 'ImageLimitSettings'},
        'sweep_settings': {'key': 'sweepSettings', 'type': 'ImageSweepSettings'},
        'validation_data': {'key': 'validationData', 'type': 'MLTableJobInput'},
        'validation_data_size': {'key': 'validationDataSize', 'type': 'float'},
        'model_settings': {'key': 'modelSettings', 'type': 'ImageModelSettingsClassification'},
        'search_space': {'key': 'searchSpace', 'type': '[ImageModelDistributionSettingsClassification]'},
        'log_verbosity': {'key': 'logVerbosity', 'type': 'str'},
        'target_column_name': {'key': 'targetColumnName', 'type': 'str'},
        'task_type': {'key': 'taskType', 'type': 'str'},
        'training_data': {'key': 'trainingData', 'type': 'MLTableJobInput'},
        'primary_metric': {'key': 'primaryMetric', 'type': 'str'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword limit_settings: Required. [Required] Limit settings for the AutoML job.
        :paramtype limit_settings: ~azure.mgmt.machinelearningservices.models.ImageLimitSettings
        :keyword sweep_settings: Model sweeping and hyperparameter sweeping related settings.
        :paramtype sweep_settings: ~azure.mgmt.machinelearningservices.models.ImageSweepSettings
        :keyword validation_data: Validation data inputs.
        :paramtype validation_data: ~azure.mgmt.machinelearningservices.models.MLTableJobInput
        :keyword validation_data_size: The fraction of training dataset that needs to be set aside for
         validation purpose.
         Values between (0.0 , 1.0)
         Applied when validation dataset is not provided.
        :paramtype validation_data_size: float
        :keyword model_settings: Settings used for training the model.
        :paramtype model_settings:
         ~azure.mgmt.machinelearningservices.models.ImageModelSettingsClassification
        :keyword search_space: Search space for sampling different combinations of models and their
         hyperparameters.
        :paramtype search_space:
         list[~azure.mgmt.machinelearningservices.models.ImageModelDistributionSettingsClassification]
        :keyword log_verbosity: Log verbosity for the job. Possible values include: "NotSet", "Debug",
         "Info", "Warning", "Error", "Critical".
        :paramtype log_verbosity: str or ~azure.mgmt.machinelearningservices.models.LogVerbosity
        :keyword target_column_name: Target column name: This is prediction values column.
         Also known as label column name in context of classification tasks.
        :paramtype target_column_name: str
        :keyword training_data: Required. [Required] Training data input.
        :paramtype training_data: ~azure.mgmt.machinelearningservices.models.MLTableJobInput
        :keyword primary_metric: Primary metric to optimize for this task. Possible values include:
         "AUCWeighted", "Accuracy", "NormMacroRecall", "AveragePrecisionScoreWeighted",
         "PrecisionScoreWeighted", "IOU".
        :paramtype primary_metric: str or
         ~azure.mgmt.machinelearningservices.models.ClassificationMultilabelPrimaryMetrics
        """
        super(ImageClassificationMultilabel, self).__init__(**kwargs)
        self.limit_settings = kwargs['limit_settings']
        self.sweep_settings = kwargs.get('sweep_settings', None)
        self.validation_data = kwargs.get('validation_data', None)
        self.validation_data_size = kwargs.get('validation_data_size', None)
        self.model_settings = kwargs.get('model_settings', None)
        self.search_space = kwargs.get('search_space', None)
        self.task_type = 'ImageClassificationMultilabel'  # type: str
        self.primary_metric = kwargs.get('primary_metric', None)
        self.log_verbosity = kwargs.get('log_verbosity', None)
        self.target_column_name = kwargs.get('target_column_name', None)
        self.training_data = kwargs['training_data']


class ImageDetails(msrest.serialization.Model):
    """ImageDetails.

    :ivar exists: Indicates if image exists.
    :vartype exists: bool
    :ivar image: Container image details.
    :vartype image: ~azure.mgmt.machinelearningservices.models.ImageInfo
    :ivar vulnerability_findings: Vulnerability findings details.
    :vartype vulnerability_findings:
     ~azure.mgmt.machinelearningservices.models.VulnerabilityFindings
    """

    _attribute_map = {
        'exists': {'key': 'exists', 'type': 'bool'},
        'image': {'key': 'image', 'type': 'ImageInfo'},
        'vulnerability_findings': {'key': 'vulnerabilityFindings', 'type': 'VulnerabilityFindings'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword exists: Indicates if image exists.
        :paramtype exists: bool
        :keyword image: Container image details.
        :paramtype image: ~azure.mgmt.machinelearningservices.models.ImageInfo
        :keyword vulnerability_findings: Vulnerability findings details.
        :paramtype vulnerability_findings:
         ~azure.mgmt.machinelearningservices.models.VulnerabilityFindings
        """
        super(ImageDetails, self).__init__(**kwargs)
        self.exists = kwargs.get('exists', None)
        self.image = kwargs.get('image', None)
        self.vulnerability_findings = kwargs.get('vulnerability_findings', None)


class ImageInfo(msrest.serialization.Model):
    """ImageInfo.

    :ivar digest: Image digest.
    :vartype digest: str
    :ivar hostname: Container registry host name.
    :vartype hostname: str
    :ivar repository: Repository name.
    :vartype repository: str
    :ivar tag: Image tag.
    :vartype tag: str
    """

    _attribute_map = {
        'digest': {'key': 'digest', 'type': 'str'},
        'hostname': {'key': 'hostname', 'type': 'str'},
        'repository': {'key': 'repository', 'type': 'str'},
        'tag': {'key': 'tag', 'type': 'str'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword digest: Image digest.
        :paramtype digest: str
        :keyword hostname: Container registry host name.
        :paramtype hostname: str
        :keyword repository: Repository name.
        :paramtype repository: str
        :keyword tag: Image tag.
        :paramtype tag: str
        """
        super(ImageInfo, self).__init__(**kwargs)
        self.digest = kwargs.get('digest', None)
        self.hostname = kwargs.get('hostname', None)
        self.repository = kwargs.get('repository', None)
        self.tag = kwargs.get('tag', None)


class ImageObjectDetectionBase(ImageVertical):
    """ImageObjectDetectionBase.

    All required parameters must be populated in order to send to Azure.

    :ivar limit_settings: Required. [Required] Limit settings for the AutoML job.
    :vartype limit_settings: ~azure.mgmt.machinelearningservices.models.ImageLimitSettings
    :ivar sweep_settings: Model sweeping and hyperparameter sweeping related settings.
    :vartype sweep_settings: ~azure.mgmt.machinelearningservices.models.ImageSweepSettings
    :ivar validation_data: Validation data inputs.
    :vartype validation_data: ~azure.mgmt.machinelearningservices.models.MLTableJobInput
    :ivar validation_data_size: The fraction of training dataset that needs to be set aside for
     validation purpose.
     Values between (0.0 , 1.0)
     Applied when validation dataset is not provided.
    :vartype validation_data_size: float
    :ivar model_settings: Settings used for training the model.
    :vartype model_settings:
     ~azure.mgmt.machinelearningservices.models.ImageModelSettingsObjectDetection
    :ivar search_space: Search space for sampling different combinations of models and their
     hyperparameters.
    :vartype search_space:
     list[~azure.mgmt.machinelearningservices.models.ImageModelDistributionSettingsObjectDetection]
    """

    _validation = {
        'limit_settings': {'required': True},
    }

    _attribute_map = {
        'limit_settings': {'key': 'limitSettings', 'type': 'ImageLimitSettings'},
        'sweep_settings': {'key': 'sweepSettings', 'type': 'ImageSweepSettings'},
        'validation_data': {'key': 'validationData', 'type': 'MLTableJobInput'},
        'validation_data_size': {'key': 'validationDataSize', 'type': 'float'},
        'model_settings': {'key': 'modelSettings', 'type': 'ImageModelSettingsObjectDetection'},
        'search_space': {'key': 'searchSpace', 'type': '[ImageModelDistributionSettingsObjectDetection]'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword limit_settings: Required. [Required] Limit settings for the AutoML job.
        :paramtype limit_settings: ~azure.mgmt.machinelearningservices.models.ImageLimitSettings
        :keyword sweep_settings: Model sweeping and hyperparameter sweeping related settings.
        :paramtype sweep_settings: ~azure.mgmt.machinelearningservices.models.ImageSweepSettings
        :keyword validation_data: Validation data inputs.
        :paramtype validation_data: ~azure.mgmt.machinelearningservices.models.MLTableJobInput
        :keyword validation_data_size: The fraction of training dataset that needs to be set aside for
         validation purpose.
         Values between (0.0 , 1.0)
         Applied when validation dataset is not provided.
        :paramtype validation_data_size: float
        :keyword model_settings: Settings used for training the model.
        :paramtype model_settings:
         ~azure.mgmt.machinelearningservices.models.ImageModelSettingsObjectDetection
        :keyword search_space: Search space for sampling different combinations of models and their
         hyperparameters.
        :paramtype search_space:
         list[~azure.mgmt.machinelearningservices.models.ImageModelDistributionSettingsObjectDetection]
        """
        super(ImageObjectDetectionBase, self).__init__(**kwargs)
        self.model_settings = kwargs.get('model_settings', None)
        self.search_space = kwargs.get('search_space', None)


class ImageInstanceSegmentation(AutoMLVertical, ImageObjectDetectionBase):
    """Image Instance Segmentation. Instance segmentation is used to identify objects in an image at the pixel level,
drawing a polygon around each object in the image.

    All required parameters must be populated in order to send to Azure.

    :ivar limit_settings: Required. [Required] Limit settings for the AutoML job.
    :vartype limit_settings: ~azure.mgmt.machinelearningservices.models.ImageLimitSettings
    :ivar sweep_settings: Model sweeping and hyperparameter sweeping related settings.
    :vartype sweep_settings: ~azure.mgmt.machinelearningservices.models.ImageSweepSettings
    :ivar validation_data: Validation data inputs.
    :vartype validation_data: ~azure.mgmt.machinelearningservices.models.MLTableJobInput
    :ivar validation_data_size: The fraction of training dataset that needs to be set aside for
     validation purpose.
     Values between (0.0 , 1.0)
     Applied when validation dataset is not provided.
    :vartype validation_data_size: float
    :ivar model_settings: Settings used for training the model.
    :vartype model_settings:
     ~azure.mgmt.machinelearningservices.models.ImageModelSettingsObjectDetection
    :ivar search_space: Search space for sampling different combinations of models and their
     hyperparameters.
    :vartype search_space:
     list[~azure.mgmt.machinelearningservices.models.ImageModelDistributionSettingsObjectDetection]
    :ivar log_verbosity: Log verbosity for the job. Possible values include: "NotSet", "Debug",
     "Info", "Warning", "Error", "Critical".
    :vartype log_verbosity: str or ~azure.mgmt.machinelearningservices.models.LogVerbosity
    :ivar target_column_name: Target column name: This is prediction values column.
     Also known as label column name in context of classification tasks.
    :vartype target_column_name: str
    :ivar task_type: Required. [Required] Task type for AutoMLJob.Constant filled by server.
     Possible values include: "Classification", "Regression", "Forecasting", "ImageClassification",
     "ImageClassificationMultilabel", "ImageObjectDetection", "ImageInstanceSegmentation",
     "TextClassification", "TextClassificationMultilabel", "TextNER".
    :vartype task_type: str or ~azure.mgmt.machinelearningservices.models.TaskType
    :ivar training_data: Required. [Required] Training data input.
    :vartype training_data: ~azure.mgmt.machinelearningservices.models.MLTableJobInput
    :ivar primary_metric: Primary metric to optimize for this task. Possible values include:
     "MeanAveragePrecision".
    :vartype primary_metric: str or
     ~azure.mgmt.machinelearningservices.models.InstanceSegmentationPrimaryMetrics
    """

    _validation = {
        'limit_settings': {'required': True},
        'task_type': {'required': True},
        'training_data': {'required': True},
    }

    _attribute_map = {
        'limit_settings': {'key': 'limitSettings', 'type': 'ImageLimitSettings'},
        'sweep_settings': {'key': 'sweepSettings', 'type': 'ImageSweepSettings'},
        'validation_data': {'key': 'validationData', 'type': 'MLTableJobInput'},
        'validation_data_size': {'key': 'validationDataSize', 'type': 'float'},
        'model_settings': {'key': 'modelSettings', 'type': 'ImageModelSettingsObjectDetection'},
        'search_space': {'key': 'searchSpace', 'type': '[ImageModelDistributionSettingsObjectDetection]'},
        'log_verbosity': {'key': 'logVerbosity', 'type': 'str'},
        'target_column_name': {'key': 'targetColumnName', 'type': 'str'},
        'task_type': {'key': 'taskType', 'type': 'str'},
        'training_data': {'key': 'trainingData', 'type': 'MLTableJobInput'},
        'primary_metric': {'key': 'primaryMetric', 'type': 'str'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword limit_settings: Required. [Required] Limit settings for the AutoML job.
        :paramtype limit_settings: ~azure.mgmt.machinelearningservices.models.ImageLimitSettings
        :keyword sweep_settings: Model sweeping and hyperparameter sweeping related settings.
        :paramtype sweep_settings: ~azure.mgmt.machinelearningservices.models.ImageSweepSettings
        :keyword validation_data: Validation data inputs.
        :paramtype validation_data: ~azure.mgmt.machinelearningservices.models.MLTableJobInput
        :keyword validation_data_size: The fraction of training dataset that needs to be set aside for
         validation purpose.
         Values between (0.0 , 1.0)
         Applied when validation dataset is not provided.
        :paramtype validation_data_size: float
        :keyword model_settings: Settings used for training the model.
        :paramtype model_settings:
         ~azure.mgmt.machinelearningservices.models.ImageModelSettingsObjectDetection
        :keyword search_space: Search space for sampling different combinations of models and their
         hyperparameters.
        :paramtype search_space:
         list[~azure.mgmt.machinelearningservices.models.ImageModelDistributionSettingsObjectDetection]
        :keyword log_verbosity: Log verbosity for the job. Possible values include: "NotSet", "Debug",
         "Info", "Warning", "Error", "Critical".
        :paramtype log_verbosity: str or ~azure.mgmt.machinelearningservices.models.LogVerbosity
        :keyword target_column_name: Target column name: This is prediction values column.
         Also known as label column name in context of classification tasks.
        :paramtype target_column_name: str
        :keyword training_data: Required. [Required] Training data input.
        :paramtype training_data: ~azure.mgmt.machinelearningservices.models.MLTableJobInput
        :keyword primary_metric: Primary metric to optimize for this task. Possible values include:
         "MeanAveragePrecision".
        :paramtype primary_metric: str or
         ~azure.mgmt.machinelearningservices.models.InstanceSegmentationPrimaryMetrics
        """
        super(ImageInstanceSegmentation, self).__init__(**kwargs)
        self.limit_settings = kwargs['limit_settings']
        self.sweep_settings = kwargs.get('sweep_settings', None)
        self.validation_data = kwargs.get('validation_data', None)
        self.validation_data_size = kwargs.get('validation_data_size', None)
        self.model_settings = kwargs.get('model_settings', None)
        self.search_space = kwargs.get('search_space', None)
        self.task_type = 'ImageInstanceSegmentation'  # type: str
        self.primary_metric = kwargs.get('primary_metric', None)
        self.log_verbosity = kwargs.get('log_verbosity', None)
        self.target_column_name = kwargs.get('target_column_name', None)
        self.training_data = kwargs['training_data']


class ImageLimitSettings(msrest.serialization.Model):
    """Limit settings for the AutoML job.

    :ivar max_concurrent_trials: Maximum number of concurrent AutoML iterations.
    :vartype max_concurrent_trials: int
    :ivar max_trials: Maximum number of AutoML iterations.
    :vartype max_trials: int
    :ivar timeout: AutoML job timeout.
    :vartype timeout: ~datetime.timedelta
    """

    _attribute_map = {
        'max_concurrent_trials': {'key': 'maxConcurrentTrials', 'type': 'int'},
        'max_trials': {'key': 'maxTrials', 'type': 'int'},
        'timeout': {'key': 'timeout', 'type': 'duration'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword max_concurrent_trials: Maximum number of concurrent AutoML iterations.
        :paramtype max_concurrent_trials: int
        :keyword max_trials: Maximum number of AutoML iterations.
        :paramtype max_trials: int
        :keyword timeout: AutoML job timeout.
        :paramtype timeout: ~datetime.timedelta
        """
        super(ImageLimitSettings, self).__init__(**kwargs)
        self.max_concurrent_trials = kwargs.get('max_concurrent_trials', 1)
        self.max_trials = kwargs.get('max_trials', 1)
        self.timeout = kwargs.get('timeout', "P7D")


class ImageMetadata(msrest.serialization.Model):
    """Returns metadata about the operating system image for this compute instance.

    Variables are only populated by the server, and will be ignored when sending a request.

    :ivar current_image_version: Specifies the current operating system image version this compute
     instance is running on.
    :vartype current_image_version: str
    :ivar latest_image_version: Specifies the latest available operating system image version.
    :vartype latest_image_version: str
    :ivar is_latest_os_image_version: Specifies whether this compute instance is running on the
     latest operating system image.
    :vartype is_latest_os_image_version: bool
    :ivar os_patching_status: Metadata about the os patching.
    :vartype os_patching_status: ~azure.mgmt.machinelearningservices.models.OsPatchingStatus
    """

    _validation = {
        'os_patching_status': {'readonly': True},
    }

    _attribute_map = {
        'current_image_version': {'key': 'currentImageVersion', 'type': 'str'},
        'latest_image_version': {'key': 'latestImageVersion', 'type': 'str'},
        'is_latest_os_image_version': {'key': 'isLatestOsImageVersion', 'type': 'bool'},
        'os_patching_status': {'key': 'osPatchingStatus', 'type': 'OsPatchingStatus'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword current_image_version: Specifies the current operating system image version this
         compute instance is running on.
        :paramtype current_image_version: str
        :keyword latest_image_version: Specifies the latest available operating system image version.
        :paramtype latest_image_version: str
        :keyword is_latest_os_image_version: Specifies whether this compute instance is running on the
         latest operating system image.
        :paramtype is_latest_os_image_version: bool
        """
        super(ImageMetadata, self).__init__(**kwargs)
        self.current_image_version = kwargs.get('current_image_version', None)
        self.latest_image_version = kwargs.get('latest_image_version', None)
        self.is_latest_os_image_version = kwargs.get('is_latest_os_image_version', None)
        self.os_patching_status = None


class ImageModelDistributionSettings(msrest.serialization.Model):
    """Distribution expressions to sweep over values of model settings.

:code:`<example>
Some examples are:
```
ModelName = "choice('seresnext', 'resnest50')";
LearningRate = "uniform(0.001, 0.01)";
LayersToFreeze = "choice(0, 2)";
```</example>`
All distributions can be specified as distribution_name(min, max) or choice(val1, val2, ..., valn)
where distribution name can be: uniform, quniform, loguniform, etc
For more details on how to compose distribution expressions please check the documentation:
https://docs.microsoft.com/en-us/azure/machine-learning/how-to-tune-hyperparameters
For more information on the available settings please visit the official documentation:
https://docs.microsoft.com/en-us/azure/machine-learning/how-to-auto-train-image-models.

    :ivar ams_gradient: Enable AMSGrad when optimizer is 'adam' or 'adamw'.
    :vartype ams_gradient: str
    :ivar augmentations: Settings for using Augmentations.
    :vartype augmentations: str
    :ivar beta1: Value of 'beta1' when optimizer is 'adam' or 'adamw'. Must be a float in the range
     [0, 1].
    :vartype beta1: str
    :ivar beta2: Value of 'beta2' when optimizer is 'adam' or 'adamw'. Must be a float in the range
     [0, 1].
    :vartype beta2: str
    :ivar distributed: Whether to use distributer training.
    :vartype distributed: str
    :ivar early_stopping: Enable early stopping logic during training.
    :vartype early_stopping: str
    :ivar early_stopping_delay: Minimum number of epochs or validation evaluations to wait before
     primary metric improvement
     is tracked for early stopping. Must be a positive integer.
    :vartype early_stopping_delay: str
    :ivar early_stopping_patience: Minimum number of epochs or validation evaluations with no
     primary metric improvement before
     the run is stopped. Must be a positive integer.
    :vartype early_stopping_patience: str
    :ivar enable_onnx_normalization: Enable normalization when exporting ONNX model.
    :vartype enable_onnx_normalization: str
    :ivar evaluation_frequency: Frequency to evaluate validation dataset to get metric scores. Must
     be a positive integer.
    :vartype evaluation_frequency: str
    :ivar gradient_accumulation_step: Gradient accumulation means running a configured number of
     "GradAccumulationStep" steps without
     updating the model weights while accumulating the gradients of those steps, and then using
     the accumulated gradients to compute the weight updates. Must be a positive integer.
    :vartype gradient_accumulation_step: str
    :ivar layers_to_freeze: Number of layers to freeze for the model. Must be a positive integer.
     For instance, passing 2 as value for 'seresnext' means
     freezing layer0 and layer1. For a full list of models supported and details on layer freeze,
     please
     see: https://docs.microsoft.com/en-us/azure/machine-learning/how-to-auto-train-image-models.
    :vartype layers_to_freeze: str
    :ivar learning_rate: Initial learning rate. Must be a float in the range [0, 1].
    :vartype learning_rate: str
    :ivar learning_rate_scheduler: Type of learning rate scheduler. Must be 'warmup_cosine' or
     'step'.
    :vartype learning_rate_scheduler: str
    :ivar model_name: Name of the model to use for training.
     For more information on the available models please visit the official documentation:
     https://docs.microsoft.com/en-us/azure/machine-learning/how-to-auto-train-image-models.
    :vartype model_name: str
    :ivar momentum: Value of momentum when optimizer is 'sgd'. Must be a float in the range [0, 1].
    :vartype momentum: str
    :ivar nesterov: Enable nesterov when optimizer is 'sgd'.
    :vartype nesterov: str
    :ivar number_of_epochs: Number of training epochs. Must be a positive integer.
    :vartype number_of_epochs: str
    :ivar number_of_workers: Number of data loader workers. Must be a non-negative integer.
    :vartype number_of_workers: str
    :ivar optimizer: Type of optimizer. Must be either 'sgd', 'adam', or 'adamw'.
    :vartype optimizer: str
    :ivar random_seed: Random seed to be used when using deterministic training.
    :vartype random_seed: str
    :ivar step_lr_gamma: Value of gamma when learning rate scheduler is 'step'. Must be a float in
     the range [0, 1].
    :vartype step_lr_gamma: str
    :ivar step_lr_step_size: Value of step size when learning rate scheduler is 'step'. Must be a
     positive integer.
    :vartype step_lr_step_size: str
    :ivar training_batch_size: Training batch size. Must be a positive integer.
    :vartype training_batch_size: str
    :ivar validation_batch_size: Validation batch size. Must be a positive integer.
    :vartype validation_batch_size: str
    :ivar warmup_cosine_lr_cycles: Value of cosine cycle when learning rate scheduler is
     'warmup_cosine'. Must be a float in the range [0, 1].
    :vartype warmup_cosine_lr_cycles: str
    :ivar warmup_cosine_lr_warmup_epochs: Value of warmup epochs when learning rate scheduler is
     'warmup_cosine'. Must be a positive integer.
    :vartype warmup_cosine_lr_warmup_epochs: str
    :ivar weight_decay: Value of weight decay when optimizer is 'sgd', 'adam', or 'adamw'. Must be
     a float in the range[0, 1].
    :vartype weight_decay: str
    """

    _attribute_map = {
        'ams_gradient': {'key': 'amsGradient', 'type': 'str'},
        'augmentations': {'key': 'augmentations', 'type': 'str'},
        'beta1': {'key': 'beta1', 'type': 'str'},
        'beta2': {'key': 'beta2', 'type': 'str'},
        'distributed': {'key': 'distributed', 'type': 'str'},
        'early_stopping': {'key': 'earlyStopping', 'type': 'str'},
        'early_stopping_delay': {'key': 'earlyStoppingDelay', 'type': 'str'},
        'early_stopping_patience': {'key': 'earlyStoppingPatience', 'type': 'str'},
        'enable_onnx_normalization': {'key': 'enableOnnxNormalization', 'type': 'str'},
        'evaluation_frequency': {'key': 'evaluationFrequency', 'type': 'str'},
        'gradient_accumulation_step': {'key': 'gradientAccumulationStep', 'type': 'str'},
        'layers_to_freeze': {'key': 'layersToFreeze', 'type': 'str'},
        'learning_rate': {'key': 'learningRate', 'type': 'str'},
        'learning_rate_scheduler': {'key': 'learningRateScheduler', 'type': 'str'},
        'model_name': {'key': 'modelName', 'type': 'str'},
        'momentum': {'key': 'momentum', 'type': 'str'},
        'nesterov': {'key': 'nesterov', 'type': 'str'},
        'number_of_epochs': {'key': 'numberOfEpochs', 'type': 'str'},
        'number_of_workers': {'key': 'numberOfWorkers', 'type': 'str'},
        'optimizer': {'key': 'optimizer', 'type': 'str'},
        'random_seed': {'key': 'randomSeed', 'type': 'str'},
        'step_lr_gamma': {'key': 'stepLRGamma', 'type': 'str'},
        'step_lr_step_size': {'key': 'stepLRStepSize', 'type': 'str'},
        'training_batch_size': {'key': 'trainingBatchSize', 'type': 'str'},
        'validation_batch_size': {'key': 'validationBatchSize', 'type': 'str'},
        'warmup_cosine_lr_cycles': {'key': 'warmupCosineLRCycles', 'type': 'str'},
        'warmup_cosine_lr_warmup_epochs': {'key': 'warmupCosineLRWarmupEpochs', 'type': 'str'},
        'weight_decay': {'key': 'weightDecay', 'type': 'str'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword ams_gradient: Enable AMSGrad when optimizer is 'adam' or 'adamw'.
        :paramtype ams_gradient: str
        :keyword augmentations: Settings for using Augmentations.
        :paramtype augmentations: str
        :keyword beta1: Value of 'beta1' when optimizer is 'adam' or 'adamw'. Must be a float in the
         range [0, 1].
        :paramtype beta1: str
        :keyword beta2: Value of 'beta2' when optimizer is 'adam' or 'adamw'. Must be a float in the
         range [0, 1].
        :paramtype beta2: str
        :keyword distributed: Whether to use distributer training.
        :paramtype distributed: str
        :keyword early_stopping: Enable early stopping logic during training.
        :paramtype early_stopping: str
        :keyword early_stopping_delay: Minimum number of epochs or validation evaluations to wait
         before primary metric improvement
         is tracked for early stopping. Must be a positive integer.
        :paramtype early_stopping_delay: str
        :keyword early_stopping_patience: Minimum number of epochs or validation evaluations with no
         primary metric improvement before
         the run is stopped. Must be a positive integer.
        :paramtype early_stopping_patience: str
        :keyword enable_onnx_normalization: Enable normalization when exporting ONNX model.
        :paramtype enable_onnx_normalization: str
        :keyword evaluation_frequency: Frequency to evaluate validation dataset to get metric scores.
         Must be a positive integer.
        :paramtype evaluation_frequency: str
        :keyword gradient_accumulation_step: Gradient accumulation means running a configured number of
         "GradAccumulationStep" steps without
         updating the model weights while accumulating the gradients of those steps, and then using
         the accumulated gradients to compute the weight updates. Must be a positive integer.
        :paramtype gradient_accumulation_step: str
        :keyword layers_to_freeze: Number of layers to freeze for the model. Must be a positive
         integer.
         For instance, passing 2 as value for 'seresnext' means
         freezing layer0 and layer1. For a full list of models supported and details on layer freeze,
         please
         see: https://docs.microsoft.com/en-us/azure/machine-learning/how-to-auto-train-image-models.
        :paramtype layers_to_freeze: str
        :keyword learning_rate: Initial learning rate. Must be a float in the range [0, 1].
        :paramtype learning_rate: str
        :keyword learning_rate_scheduler: Type of learning rate scheduler. Must be 'warmup_cosine' or
         'step'.
        :paramtype learning_rate_scheduler: str
        :keyword model_name: Name of the model to use for training.
         For more information on the available models please visit the official documentation:
         https://docs.microsoft.com/en-us/azure/machine-learning/how-to-auto-train-image-models.
        :paramtype model_name: str
        :keyword momentum: Value of momentum when optimizer is 'sgd'. Must be a float in the range [0,
         1].
        :paramtype momentum: str
        :keyword nesterov: Enable nesterov when optimizer is 'sgd'.
        :paramtype nesterov: str
        :keyword number_of_epochs: Number of training epochs. Must be a positive integer.
        :paramtype number_of_epochs: str
        :keyword number_of_workers: Number of data loader workers. Must be a non-negative integer.
        :paramtype number_of_workers: str
        :keyword optimizer: Type of optimizer. Must be either 'sgd', 'adam', or 'adamw'.
        :paramtype optimizer: str
        :keyword random_seed: Random seed to be used when using deterministic training.
        :paramtype random_seed: str
        :keyword step_lr_gamma: Value of gamma when learning rate scheduler is 'step'. Must be a float
         in the range [0, 1].
        :paramtype step_lr_gamma: str
        :keyword step_lr_step_size: Value of step size when learning rate scheduler is 'step'. Must be
         a positive integer.
        :paramtype step_lr_step_size: str
        :keyword training_batch_size: Training batch size. Must be a positive integer.
        :paramtype training_batch_size: str
        :keyword validation_batch_size: Validation batch size. Must be a positive integer.
        :paramtype validation_batch_size: str
        :keyword warmup_cosine_lr_cycles: Value of cosine cycle when learning rate scheduler is
         'warmup_cosine'. Must be a float in the range [0, 1].
        :paramtype warmup_cosine_lr_cycles: str
        :keyword warmup_cosine_lr_warmup_epochs: Value of warmup epochs when learning rate scheduler is
         'warmup_cosine'. Must be a positive integer.
        :paramtype warmup_cosine_lr_warmup_epochs: str
        :keyword weight_decay: Value of weight decay when optimizer is 'sgd', 'adam', or 'adamw'. Must
         be a float in the range[0, 1].
        :paramtype weight_decay: str
        """
        super(ImageModelDistributionSettings, self).__init__(**kwargs)
        self.ams_gradient = kwargs.get('ams_gradient', None)
        self.augmentations = kwargs.get('augmentations', None)
        self.beta1 = kwargs.get('beta1', None)
        self.beta2 = kwargs.get('beta2', None)
        self.distributed = kwargs.get('distributed', None)
        self.early_stopping = kwargs.get('early_stopping', None)
        self.early_stopping_delay = kwargs.get('early_stopping_delay', None)
        self.early_stopping_patience = kwargs.get('early_stopping_patience', None)
        self.enable_onnx_normalization = kwargs.get('enable_onnx_normalization', None)
        self.evaluation_frequency = kwargs.get('evaluation_frequency', None)
        self.gradient_accumulation_step = kwargs.get('gradient_accumulation_step', None)
        self.layers_to_freeze = kwargs.get('layers_to_freeze', None)
        self.learning_rate = kwargs.get('learning_rate', None)
        self.learning_rate_scheduler = kwargs.get('learning_rate_scheduler', None)
        self.model_name = kwargs.get('model_name', None)
        self.momentum = kwargs.get('momentum', None)
        self.nesterov = kwargs.get('nesterov', None)
        self.number_of_epochs = kwargs.get('number_of_epochs', None)
        self.number_of_workers = kwargs.get('number_of_workers', None)
        self.optimizer = kwargs.get('optimizer', None)
        self.random_seed = kwargs.get('random_seed', None)
        self.step_lr_gamma = kwargs.get('step_lr_gamma', None)
        self.step_lr_step_size = kwargs.get('step_lr_step_size', None)
        self.training_batch_size = kwargs.get('training_batch_size', None)
        self.validation_batch_size = kwargs.get('validation_batch_size', None)
        self.warmup_cosine_lr_cycles = kwargs.get('warmup_cosine_lr_cycles', None)
        self.warmup_cosine_lr_warmup_epochs = kwargs.get('warmup_cosine_lr_warmup_epochs', None)
        self.weight_decay = kwargs.get('weight_decay', None)


class ImageModelDistributionSettingsClassification(ImageModelDistributionSettings):
    """Distribution expressions to sweep over values of model settings.

:code:`<example>
Some examples are:
```
ModelName = "choice('seresnext', 'resnest50')";
LearningRate = "uniform(0.001, 0.01)";
LayersToFreeze = "choice(0, 2)";
```</example>`
For more details on how to compose distribution expressions please check the documentation:
https://docs.microsoft.com/en-us/azure/machine-learning/how-to-tune-hyperparameters
For more information on the available settings please visit the official documentation:
https://docs.microsoft.com/en-us/azure/machine-learning/how-to-auto-train-image-models.

    :ivar ams_gradient: Enable AMSGrad when optimizer is 'adam' or 'adamw'.
    :vartype ams_gradient: str
    :ivar augmentations: Settings for using Augmentations.
    :vartype augmentations: str
    :ivar beta1: Value of 'beta1' when optimizer is 'adam' or 'adamw'. Must be a float in the range
     [0, 1].
    :vartype beta1: str
    :ivar beta2: Value of 'beta2' when optimizer is 'adam' or 'adamw'. Must be a float in the range
     [0, 1].
    :vartype beta2: str
    :ivar distributed: Whether to use distributer training.
    :vartype distributed: str
    :ivar early_stopping: Enable early stopping logic during training.
    :vartype early_stopping: str
    :ivar early_stopping_delay: Minimum number of epochs or validation evaluations to wait before
     primary metric improvement
     is tracked for early stopping. Must be a positive integer.
    :vartype early_stopping_delay: str
    :ivar early_stopping_patience: Minimum number of epochs or validation evaluations with no
     primary metric improvement before
     the run is stopped. Must be a positive integer.
    :vartype early_stopping_patience: str
    :ivar enable_onnx_normalization: Enable normalization when exporting ONNX model.
    :vartype enable_onnx_normalization: str
    :ivar evaluation_frequency: Frequency to evaluate validation dataset to get metric scores. Must
     be a positive integer.
    :vartype evaluation_frequency: str
    :ivar gradient_accumulation_step: Gradient accumulation means running a configured number of
     "GradAccumulationStep" steps without
     updating the model weights while accumulating the gradients of those steps, and then using
     the accumulated gradients to compute the weight updates. Must be a positive integer.
    :vartype gradient_accumulation_step: str
    :ivar layers_to_freeze: Number of layers to freeze for the model. Must be a positive integer.
     For instance, passing 2 as value for 'seresnext' means
     freezing layer0 and layer1. For a full list of models supported and details on layer freeze,
     please
     see: https://docs.microsoft.com/en-us/azure/machine-learning/how-to-auto-train-image-models.
    :vartype layers_to_freeze: str
    :ivar learning_rate: Initial learning rate. Must be a float in the range [0, 1].
    :vartype learning_rate: str
    :ivar learning_rate_scheduler: Type of learning rate scheduler. Must be 'warmup_cosine' or
     'step'.
    :vartype learning_rate_scheduler: str
    :ivar model_name: Name of the model to use for training.
     For more information on the available models please visit the official documentation:
     https://docs.microsoft.com/en-us/azure/machine-learning/how-to-auto-train-image-models.
    :vartype model_name: str
    :ivar momentum: Value of momentum when optimizer is 'sgd'. Must be a float in the range [0, 1].
    :vartype momentum: str
    :ivar nesterov: Enable nesterov when optimizer is 'sgd'.
    :vartype nesterov: str
    :ivar number_of_epochs: Number of training epochs. Must be a positive integer.
    :vartype number_of_epochs: str
    :ivar number_of_workers: Number of data loader workers. Must be a non-negative integer.
    :vartype number_of_workers: str
    :ivar optimizer: Type of optimizer. Must be either 'sgd', 'adam', or 'adamw'.
    :vartype optimizer: str
    :ivar random_seed: Random seed to be used when using deterministic training.
    :vartype random_seed: str
    :ivar step_lr_gamma: Value of gamma when learning rate scheduler is 'step'. Must be a float in
     the range [0, 1].
    :vartype step_lr_gamma: str
    :ivar step_lr_step_size: Value of step size when learning rate scheduler is 'step'. Must be a
     positive integer.
    :vartype step_lr_step_size: str
    :ivar training_batch_size: Training batch size. Must be a positive integer.
    :vartype training_batch_size: str
    :ivar validation_batch_size: Validation batch size. Must be a positive integer.
    :vartype validation_batch_size: str
    :ivar warmup_cosine_lr_cycles: Value of cosine cycle when learning rate scheduler is
     'warmup_cosine'. Must be a float in the range [0, 1].
    :vartype warmup_cosine_lr_cycles: str
    :ivar warmup_cosine_lr_warmup_epochs: Value of warmup epochs when learning rate scheduler is
     'warmup_cosine'. Must be a positive integer.
    :vartype warmup_cosine_lr_warmup_epochs: str
    :ivar weight_decay: Value of weight decay when optimizer is 'sgd', 'adam', or 'adamw'. Must be
     a float in the range[0, 1].
    :vartype weight_decay: str
    :ivar training_crop_size: Image crop size that is input to the neural network for the training
     dataset. Must be a positive integer.
    :vartype training_crop_size: str
    :ivar validation_crop_size: Image crop size that is input to the neural network for the
     validation dataset. Must be a positive integer.
    :vartype validation_crop_size: str
    :ivar validation_resize_size: Image size to which to resize before cropping for validation
     dataset. Must be a positive integer.
    :vartype validation_resize_size: str
    :ivar weighted_loss: Weighted loss. The accepted values are 0 for no weighted loss.
     1 for weighted loss with sqrt.(class_weights). 2 for weighted loss with class_weights. Must be
     0 or 1 or 2.
    :vartype weighted_loss: str
    """

    _attribute_map = {
        'ams_gradient': {'key': 'amsGradient', 'type': 'str'},
        'augmentations': {'key': 'augmentations', 'type': 'str'},
        'beta1': {'key': 'beta1', 'type': 'str'},
        'beta2': {'key': 'beta2', 'type': 'str'},
        'distributed': {'key': 'distributed', 'type': 'str'},
        'early_stopping': {'key': 'earlyStopping', 'type': 'str'},
        'early_stopping_delay': {'key': 'earlyStoppingDelay', 'type': 'str'},
        'early_stopping_patience': {'key': 'earlyStoppingPatience', 'type': 'str'},
        'enable_onnx_normalization': {'key': 'enableOnnxNormalization', 'type': 'str'},
        'evaluation_frequency': {'key': 'evaluationFrequency', 'type': 'str'},
        'gradient_accumulation_step': {'key': 'gradientAccumulationStep', 'type': 'str'},
        'layers_to_freeze': {'key': 'layersToFreeze', 'type': 'str'},
        'learning_rate': {'key': 'learningRate', 'type': 'str'},
        'learning_rate_scheduler': {'key': 'learningRateScheduler', 'type': 'str'},
        'model_name': {'key': 'modelName', 'type': 'str'},
        'momentum': {'key': 'momentum', 'type': 'str'},
        'nesterov': {'key': 'nesterov', 'type': 'str'},
        'number_of_epochs': {'key': 'numberOfEpochs', 'type': 'str'},
        'number_of_workers': {'key': 'numberOfWorkers', 'type': 'str'},
        'optimizer': {'key': 'optimizer', 'type': 'str'},
        'random_seed': {'key': 'randomSeed', 'type': 'str'},
        'step_lr_gamma': {'key': 'stepLRGamma', 'type': 'str'},
        'step_lr_step_size': {'key': 'stepLRStepSize', 'type': 'str'},
        'training_batch_size': {'key': 'trainingBatchSize', 'type': 'str'},
        'validation_batch_size': {'key': 'validationBatchSize', 'type': 'str'},
        'warmup_cosine_lr_cycles': {'key': 'warmupCosineLRCycles', 'type': 'str'},
        'warmup_cosine_lr_warmup_epochs': {'key': 'warmupCosineLRWarmupEpochs', 'type': 'str'},
        'weight_decay': {'key': 'weightDecay', 'type': 'str'},
        'training_crop_size': {'key': 'trainingCropSize', 'type': 'str'},
        'validation_crop_size': {'key': 'validationCropSize', 'type': 'str'},
        'validation_resize_size': {'key': 'validationResizeSize', 'type': 'str'},
        'weighted_loss': {'key': 'weightedLoss', 'type': 'str'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword ams_gradient: Enable AMSGrad when optimizer is 'adam' or 'adamw'.
        :paramtype ams_gradient: str
        :keyword augmentations: Settings for using Augmentations.
        :paramtype augmentations: str
        :keyword beta1: Value of 'beta1' when optimizer is 'adam' or 'adamw'. Must be a float in the
         range [0, 1].
        :paramtype beta1: str
        :keyword beta2: Value of 'beta2' when optimizer is 'adam' or 'adamw'. Must be a float in the
         range [0, 1].
        :paramtype beta2: str
        :keyword distributed: Whether to use distributer training.
        :paramtype distributed: str
        :keyword early_stopping: Enable early stopping logic during training.
        :paramtype early_stopping: str
        :keyword early_stopping_delay: Minimum number of epochs or validation evaluations to wait
         before primary metric improvement
         is tracked for early stopping. Must be a positive integer.
        :paramtype early_stopping_delay: str
        :keyword early_stopping_patience: Minimum number of epochs or validation evaluations with no
         primary metric improvement before
         the run is stopped. Must be a positive integer.
        :paramtype early_stopping_patience: str
        :keyword enable_onnx_normalization: Enable normalization when exporting ONNX model.
        :paramtype enable_onnx_normalization: str
        :keyword evaluation_frequency: Frequency to evaluate validation dataset to get metric scores.
         Must be a positive integer.
        :paramtype evaluation_frequency: str
        :keyword gradient_accumulation_step: Gradient accumulation means running a configured number of
         "GradAccumulationStep" steps without
         updating the model weights while accumulating the gradients of those steps, and then using
         the accumulated gradients to compute the weight updates. Must be a positive integer.
        :paramtype gradient_accumulation_step: str
        :keyword layers_to_freeze: Number of layers to freeze for the model. Must be a positive
         integer.
         For instance, passing 2 as value for 'seresnext' means
         freezing layer0 and layer1. For a full list of models supported and details on layer freeze,
         please
         see: https://docs.microsoft.com/en-us/azure/machine-learning/how-to-auto-train-image-models.
        :paramtype layers_to_freeze: str
        :keyword learning_rate: Initial learning rate. Must be a float in the range [0, 1].
        :paramtype learning_rate: str
        :keyword learning_rate_scheduler: Type of learning rate scheduler. Must be 'warmup_cosine' or
         'step'.
        :paramtype learning_rate_scheduler: str
        :keyword model_name: Name of the model to use for training.
         For more information on the available models please visit the official documentation:
         https://docs.microsoft.com/en-us/azure/machine-learning/how-to-auto-train-image-models.
        :paramtype model_name: str
        :keyword momentum: Value of momentum when optimizer is 'sgd'. Must be a float in the range [0,
         1].
        :paramtype momentum: str
        :keyword nesterov: Enable nesterov when optimizer is 'sgd'.
        :paramtype nesterov: str
        :keyword number_of_epochs: Number of training epochs. Must be a positive integer.
        :paramtype number_of_epochs: str
        :keyword number_of_workers: Number of data loader workers. Must be a non-negative integer.
        :paramtype number_of_workers: str
        :keyword optimizer: Type of optimizer. Must be either 'sgd', 'adam', or 'adamw'.
        :paramtype optimizer: str
        :keyword random_seed: Random seed to be used when using deterministic training.
        :paramtype random_seed: str
        :keyword step_lr_gamma: Value of gamma when learning rate scheduler is 'step'. Must be a float
         in the range [0, 1].
        :paramtype step_lr_gamma: str
        :keyword step_lr_step_size: Value of step size when learning rate scheduler is 'step'. Must be
         a positive integer.
        :paramtype step_lr_step_size: str
        :keyword training_batch_size: Training batch size. Must be a positive integer.
        :paramtype training_batch_size: str
        :keyword validation_batch_size: Validation batch size. Must be a positive integer.
        :paramtype validation_batch_size: str
        :keyword warmup_cosine_lr_cycles: Value of cosine cycle when learning rate scheduler is
         'warmup_cosine'. Must be a float in the range [0, 1].
        :paramtype warmup_cosine_lr_cycles: str
        :keyword warmup_cosine_lr_warmup_epochs: Value of warmup epochs when learning rate scheduler is
         'warmup_cosine'. Must be a positive integer.
        :paramtype warmup_cosine_lr_warmup_epochs: str
        :keyword weight_decay: Value of weight decay when optimizer is 'sgd', 'adam', or 'adamw'. Must
         be a float in the range[0, 1].
        :paramtype weight_decay: str
        :keyword training_crop_size: Image crop size that is input to the neural network for the
         training dataset. Must be a positive integer.
        :paramtype training_crop_size: str
        :keyword validation_crop_size: Image crop size that is input to the neural network for the
         validation dataset. Must be a positive integer.
        :paramtype validation_crop_size: str
        :keyword validation_resize_size: Image size to which to resize before cropping for validation
         dataset. Must be a positive integer.
        :paramtype validation_resize_size: str
        :keyword weighted_loss: Weighted loss. The accepted values are 0 for no weighted loss.
         1 for weighted loss with sqrt.(class_weights). 2 for weighted loss with class_weights. Must be
         0 or 1 or 2.
        :paramtype weighted_loss: str
        """
        super(ImageModelDistributionSettingsClassification, self).__init__(**kwargs)
        self.training_crop_size = kwargs.get('training_crop_size', None)
        self.validation_crop_size = kwargs.get('validation_crop_size', None)
        self.validation_resize_size = kwargs.get('validation_resize_size', None)
        self.weighted_loss = kwargs.get('weighted_loss', None)


class ImageModelDistributionSettingsObjectDetection(ImageModelDistributionSettings):
    """Distribution expressions to sweep over values of model settings.

:code:`<example>
Some examples are:
```
ModelName = "choice('seresnext', 'resnest50')";
LearningRate = "uniform(0.001, 0.01)";
LayersToFreeze = "choice(0, 2)";
```</example>`
For more details on how to compose distribution expressions please check the documentation:
https://docs.microsoft.com/en-us/azure/machine-learning/how-to-tune-hyperparameters
For more information on the available settings please visit the official documentation:
https://docs.microsoft.com/en-us/azure/machine-learning/how-to-auto-train-image-models.

    :ivar ams_gradient: Enable AMSGrad when optimizer is 'adam' or 'adamw'.
    :vartype ams_gradient: str
    :ivar augmentations: Settings for using Augmentations.
    :vartype augmentations: str
    :ivar beta1: Value of 'beta1' when optimizer is 'adam' or 'adamw'. Must be a float in the range
     [0, 1].
    :vartype beta1: str
    :ivar beta2: Value of 'beta2' when optimizer is 'adam' or 'adamw'. Must be a float in the range
     [0, 1].
    :vartype beta2: str
    :ivar distributed: Whether to use distributer training.
    :vartype distributed: str
    :ivar early_stopping: Enable early stopping logic during training.
    :vartype early_stopping: str
    :ivar early_stopping_delay: Minimum number of epochs or validation evaluations to wait before
     primary metric improvement
     is tracked for early stopping. Must be a positive integer.
    :vartype early_stopping_delay: str
    :ivar early_stopping_patience: Minimum number of epochs or validation evaluations with no
     primary metric improvement before
     the run is stopped. Must be a positive integer.
    :vartype early_stopping_patience: str
    :ivar enable_onnx_normalization: Enable normalization when exporting ONNX model.
    :vartype enable_onnx_normalization: str
    :ivar evaluation_frequency: Frequency to evaluate validation dataset to get metric scores. Must
     be a positive integer.
    :vartype evaluation_frequency: str
    :ivar gradient_accumulation_step: Gradient accumulation means running a configured number of
     "GradAccumulationStep" steps without
     updating the model weights while accumulating the gradients of those steps, and then using
     the accumulated gradients to compute the weight updates. Must be a positive integer.
    :vartype gradient_accumulation_step: str
    :ivar layers_to_freeze: Number of layers to freeze for the model. Must be a positive integer.
     For instance, passing 2 as value for 'seresnext' means
     freezing layer0 and layer1. For a full list of models supported and details on layer freeze,
     please
     see: https://docs.microsoft.com/en-us/azure/machine-learning/how-to-auto-train-image-models.
    :vartype layers_to_freeze: str
    :ivar learning_rate: Initial learning rate. Must be a float in the range [0, 1].
    :vartype learning_rate: str
    :ivar learning_rate_scheduler: Type of learning rate scheduler. Must be 'warmup_cosine' or
     'step'.
    :vartype learning_rate_scheduler: str
    :ivar model_name: Name of the model to use for training.
     For more information on the available models please visit the official documentation:
     https://docs.microsoft.com/en-us/azure/machine-learning/how-to-auto-train-image-models.
    :vartype model_name: str
    :ivar momentum: Value of momentum when optimizer is 'sgd'. Must be a float in the range [0, 1].
    :vartype momentum: str
    :ivar nesterov: Enable nesterov when optimizer is 'sgd'.
    :vartype nesterov: str
    :ivar number_of_epochs: Number of training epochs. Must be a positive integer.
    :vartype number_of_epochs: str
    :ivar number_of_workers: Number of data loader workers. Must be a non-negative integer.
    :vartype number_of_workers: str
    :ivar optimizer: Type of optimizer. Must be either 'sgd', 'adam', or 'adamw'.
    :vartype optimizer: str
    :ivar random_seed: Random seed to be used when using deterministic training.
    :vartype random_seed: str
    :ivar step_lr_gamma: Value of gamma when learning rate scheduler is 'step'. Must be a float in
     the range [0, 1].
    :vartype step_lr_gamma: str
    :ivar step_lr_step_size: Value of step size when learning rate scheduler is 'step'. Must be a
     positive integer.
    :vartype step_lr_step_size: str
    :ivar training_batch_size: Training batch size. Must be a positive integer.
    :vartype training_batch_size: str
    :ivar validation_batch_size: Validation batch size. Must be a positive integer.
    :vartype validation_batch_size: str
    :ivar warmup_cosine_lr_cycles: Value of cosine cycle when learning rate scheduler is
     'warmup_cosine'. Must be a float in the range [0, 1].
    :vartype warmup_cosine_lr_cycles: str
    :ivar warmup_cosine_lr_warmup_epochs: Value of warmup epochs when learning rate scheduler is
     'warmup_cosine'. Must be a positive integer.
    :vartype warmup_cosine_lr_warmup_epochs: str
    :ivar weight_decay: Value of weight decay when optimizer is 'sgd', 'adam', or 'adamw'. Must be
     a float in the range[0, 1].
    :vartype weight_decay: str
    :ivar box_detections_per_image: Maximum number of detections per image, for all classes. Must
     be a positive integer.
     Note: This settings is not supported for the 'yolov5' algorithm.
    :vartype box_detections_per_image: str
    :ivar box_score_threshold: During inference, only return proposals with a classification score
     greater than
     BoxScoreThreshold. Must be a float in the range[0, 1].
    :vartype box_score_threshold: str
    :ivar image_size: Image size for train and validation. Must be a positive integer.
     Note: The training run may get into CUDA OOM if the size is too big.
     Note: This settings is only supported for the 'yolov5' algorithm.
    :vartype image_size: str
    :ivar max_size: Maximum size of the image to be rescaled before feeding it to the backbone.
     Must be a positive integer. Note: training run may get into CUDA OOM if the size is too big.
     Note: This settings is not supported for the 'yolov5' algorithm.
    :vartype max_size: str
    :ivar min_size: Minimum size of the image to be rescaled before feeding it to the backbone.
     Must be a positive integer. Note: training run may get into CUDA OOM if the size is too big.
     Note: This settings is not supported for the 'yolov5' algorithm.
    :vartype min_size: str
    :ivar model_size: Model size. Must be 'small', 'medium', 'large', or 'xlarge'.
     Note: training run may get into CUDA OOM if the model size is too big.
     Note: This settings is only supported for the 'yolov5' algorithm.
    :vartype model_size: str
    :ivar multi_scale: Enable multi-scale image by varying image size by +/- 50%.
     Note: training run may get into CUDA OOM if no sufficient GPU memory.
     Note: This settings is only supported for the 'yolov5' algorithm.
    :vartype multi_scale: str
    :ivar nms_iou_threshold: IOU threshold used during inference in NMS post processing. Must be
     float in the range [0, 1].
    :vartype nms_iou_threshold: str
    :ivar tile_grid_size: The grid size to use for tiling each image. Note: TileGridSize must not
     be
     None to enable small object detection logic. A string containing two integers in mxn format.
     Note: This settings is not supported for the 'yolov5' algorithm.
    :vartype tile_grid_size: str
    :ivar tile_overlap_ratio: Overlap ratio between adjacent tiles in each dimension. Must be float
     in the range [0, 1).
     Note: This settings is not supported for the 'yolov5' algorithm.
    :vartype tile_overlap_ratio: str
    :ivar tile_predictions_nms_threshold: The IOU threshold to use to perform NMS while merging
     predictions from tiles and image.
     Used in validation/ inference. Must be float in the range [0, 1].
     Note: This settings is not supported for the 'yolov5' algorithm.
     NMS: Non-maximum suppression.
    :vartype tile_predictions_nms_threshold: str
    :ivar validation_iou_threshold: IOU threshold to use when computing validation metric. Must be
     float in the range [0, 1].
    :vartype validation_iou_threshold: str
    :ivar validation_metric_type: Metric computation method to use for validation metrics. Must be
     'none', 'coco', 'voc', or 'coco_voc'.
    :vartype validation_metric_type: str
    """

    _attribute_map = {
        'ams_gradient': {'key': 'amsGradient', 'type': 'str'},
        'augmentations': {'key': 'augmentations', 'type': 'str'},
        'beta1': {'key': 'beta1', 'type': 'str'},
        'beta2': {'key': 'beta2', 'type': 'str'},
        'distributed': {'key': 'distributed', 'type': 'str'},
        'early_stopping': {'key': 'earlyStopping', 'type': 'str'},
        'early_stopping_delay': {'key': 'earlyStoppingDelay', 'type': 'str'},
        'early_stopping_patience': {'key': 'earlyStoppingPatience', 'type': 'str'},
        'enable_onnx_normalization': {'key': 'enableOnnxNormalization', 'type': 'str'},
        'evaluation_frequency': {'key': 'evaluationFrequency', 'type': 'str'},
        'gradient_accumulation_step': {'key': 'gradientAccumulationStep', 'type': 'str'},
        'layers_to_freeze': {'key': 'layersToFreeze', 'type': 'str'},
        'learning_rate': {'key': 'learningRate', 'type': 'str'},
        'learning_rate_scheduler': {'key': 'learningRateScheduler', 'type': 'str'},
        'model_name': {'key': 'modelName', 'type': 'str'},
        'momentum': {'key': 'momentum', 'type': 'str'},
        'nesterov': {'key': 'nesterov', 'type': 'str'},
        'number_of_epochs': {'key': 'numberOfEpochs', 'type': 'str'},
        'number_of_workers': {'key': 'numberOfWorkers', 'type': 'str'},
        'optimizer': {'key': 'optimizer', 'type': 'str'},
        'random_seed': {'key': 'randomSeed', 'type': 'str'},
        'step_lr_gamma': {'key': 'stepLRGamma', 'type': 'str'},
        'step_lr_step_size': {'key': 'stepLRStepSize', 'type': 'str'},
        'training_batch_size': {'key': 'trainingBatchSize', 'type': 'str'},
        'validation_batch_size': {'key': 'validationBatchSize', 'type': 'str'},
        'warmup_cosine_lr_cycles': {'key': 'warmupCosineLRCycles', 'type': 'str'},
        'warmup_cosine_lr_warmup_epochs': {'key': 'warmupCosineLRWarmupEpochs', 'type': 'str'},
        'weight_decay': {'key': 'weightDecay', 'type': 'str'},
        'box_detections_per_image': {'key': 'boxDetectionsPerImage', 'type': 'str'},
        'box_score_threshold': {'key': 'boxScoreThreshold', 'type': 'str'},
        'image_size': {'key': 'imageSize', 'type': 'str'},
        'max_size': {'key': 'maxSize', 'type': 'str'},
        'min_size': {'key': 'minSize', 'type': 'str'},
        'model_size': {'key': 'modelSize', 'type': 'str'},
        'multi_scale': {'key': 'multiScale', 'type': 'str'},
        'nms_iou_threshold': {'key': 'nmsIouThreshold', 'type': 'str'},
        'tile_grid_size': {'key': 'tileGridSize', 'type': 'str'},
        'tile_overlap_ratio': {'key': 'tileOverlapRatio', 'type': 'str'},
        'tile_predictions_nms_threshold': {'key': 'tilePredictionsNmsThreshold', 'type': 'str'},
        'validation_iou_threshold': {'key': 'validationIouThreshold', 'type': 'str'},
        'validation_metric_type': {'key': 'validationMetricType', 'type': 'str'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword ams_gradient: Enable AMSGrad when optimizer is 'adam' or 'adamw'.
        :paramtype ams_gradient: str
        :keyword augmentations: Settings for using Augmentations.
        :paramtype augmentations: str
        :keyword beta1: Value of 'beta1' when optimizer is 'adam' or 'adamw'. Must be a float in the
         range [0, 1].
        :paramtype beta1: str
        :keyword beta2: Value of 'beta2' when optimizer is 'adam' or 'adamw'. Must be a float in the
         range [0, 1].
        :paramtype beta2: str
        :keyword distributed: Whether to use distributer training.
        :paramtype distributed: str
        :keyword early_stopping: Enable early stopping logic during training.
        :paramtype early_stopping: str
        :keyword early_stopping_delay: Minimum number of epochs or validation evaluations to wait
         before primary metric improvement
         is tracked for early stopping. Must be a positive integer.
        :paramtype early_stopping_delay: str
        :keyword early_stopping_patience: Minimum number of epochs or validation evaluations with no
         primary metric improvement before
         the run is stopped. Must be a positive integer.
        :paramtype early_stopping_patience: str
        :keyword enable_onnx_normalization: Enable normalization when exporting ONNX model.
        :paramtype enable_onnx_normalization: str
        :keyword evaluation_frequency: Frequency to evaluate validation dataset to get metric scores.
         Must be a positive integer.
        :paramtype evaluation_frequency: str
        :keyword gradient_accumulation_step: Gradient accumulation means running a configured number of
         "GradAccumulationStep" steps without
         updating the model weights while accumulating the gradients of those steps, and then using
         the accumulated gradients to compute the weight updates. Must be a positive integer.
        :paramtype gradient_accumulation_step: str
        :keyword layers_to_freeze: Number of layers to freeze for the model. Must be a positive
         integer.
         For instance, passing 2 as value for 'seresnext' means
         freezing layer0 and layer1. For a full list of models supported and details on layer freeze,
         please
         see: https://docs.microsoft.com/en-us/azure/machine-learning/how-to-auto-train-image-models.
        :paramtype layers_to_freeze: str
        :keyword learning_rate: Initial learning rate. Must be a float in the range [0, 1].
        :paramtype learning_rate: str
        :keyword learning_rate_scheduler: Type of learning rate scheduler. Must be 'warmup_cosine' or
         'step'.
        :paramtype learning_rate_scheduler: str
        :keyword model_name: Name of the model to use for training.
         For more information on the available models please visit the official documentation:
         https://docs.microsoft.com/en-us/azure/machine-learning/how-to-auto-train-image-models.
        :paramtype model_name: str
        :keyword momentum: Value of momentum when optimizer is 'sgd'. Must be a float in the range [0,
         1].
        :paramtype momentum: str
        :keyword nesterov: Enable nesterov when optimizer is 'sgd'.
        :paramtype nesterov: str
        :keyword number_of_epochs: Number of training epochs. Must be a positive integer.
        :paramtype number_of_epochs: str
        :keyword number_of_workers: Number of data loader workers. Must be a non-negative integer.
        :paramtype number_of_workers: str
        :keyword optimizer: Type of optimizer. Must be either 'sgd', 'adam', or 'adamw'.
        :paramtype optimizer: str
        :keyword random_seed: Random seed to be used when using deterministic training.
        :paramtype random_seed: str
        :keyword step_lr_gamma: Value of gamma when learning rate scheduler is 'step'. Must be a float
         in the range [0, 1].
        :paramtype step_lr_gamma: str
        :keyword step_lr_step_size: Value of step size when learning rate scheduler is 'step'. Must be
         a positive integer.
        :paramtype step_lr_step_size: str
        :keyword training_batch_size: Training batch size. Must be a positive integer.
        :paramtype training_batch_size: str
        :keyword validation_batch_size: Validation batch size. Must be a positive integer.
        :paramtype validation_batch_size: str
        :keyword warmup_cosine_lr_cycles: Value of cosine cycle when learning rate scheduler is
         'warmup_cosine'. Must be a float in the range [0, 1].
        :paramtype warmup_cosine_lr_cycles: str
        :keyword warmup_cosine_lr_warmup_epochs: Value of warmup epochs when learning rate scheduler is
         'warmup_cosine'. Must be a positive integer.
        :paramtype warmup_cosine_lr_warmup_epochs: str
        :keyword weight_decay: Value of weight decay when optimizer is 'sgd', 'adam', or 'adamw'. Must
         be a float in the range[0, 1].
        :paramtype weight_decay: str
        :keyword box_detections_per_image: Maximum number of detections per image, for all classes.
         Must be a positive integer.
         Note: This settings is not supported for the 'yolov5' algorithm.
        :paramtype box_detections_per_image: str
        :keyword box_score_threshold: During inference, only return proposals with a classification
         score greater than
         BoxScoreThreshold. Must be a float in the range[0, 1].
        :paramtype box_score_threshold: str
        :keyword image_size: Image size for train and validation. Must be a positive integer.
         Note: The training run may get into CUDA OOM if the size is too big.
         Note: This settings is only supported for the 'yolov5' algorithm.
        :paramtype image_size: str
        :keyword max_size: Maximum size of the image to be rescaled before feeding it to the backbone.
         Must be a positive integer. Note: training run may get into CUDA OOM if the size is too big.
         Note: This settings is not supported for the 'yolov5' algorithm.
        :paramtype max_size: str
        :keyword min_size: Minimum size of the image to be rescaled before feeding it to the backbone.
         Must be a positive integer. Note: training run may get into CUDA OOM if the size is too big.
         Note: This settings is not supported for the 'yolov5' algorithm.
        :paramtype min_size: str
        :keyword model_size: Model size. Must be 'small', 'medium', 'large', or 'xlarge'.
         Note: training run may get into CUDA OOM if the model size is too big.
         Note: This settings is only supported for the 'yolov5' algorithm.
        :paramtype model_size: str
        :keyword multi_scale: Enable multi-scale image by varying image size by +/- 50%.
         Note: training run may get into CUDA OOM if no sufficient GPU memory.
         Note: This settings is only supported for the 'yolov5' algorithm.
        :paramtype multi_scale: str
        :keyword nms_iou_threshold: IOU threshold used during inference in NMS post processing. Must be
         float in the range [0, 1].
        :paramtype nms_iou_threshold: str
        :keyword tile_grid_size: The grid size to use for tiling each image. Note: TileGridSize must
         not be
         None to enable small object detection logic. A string containing two integers in mxn format.
         Note: This settings is not supported for the 'yolov5' algorithm.
        :paramtype tile_grid_size: str
        :keyword tile_overlap_ratio: Overlap ratio between adjacent tiles in each dimension. Must be
         float in the range [0, 1).
         Note: This settings is not supported for the 'yolov5' algorithm.
        :paramtype tile_overlap_ratio: str
        :keyword tile_predictions_nms_threshold: The IOU threshold to use to perform NMS while merging
         predictions from tiles and image.
         Used in validation/ inference. Must be float in the range [0, 1].
         Note: This settings is not supported for the 'yolov5' algorithm.
         NMS: Non-maximum suppression.
        :paramtype tile_predictions_nms_threshold: str
        :keyword validation_iou_threshold: IOU threshold to use when computing validation metric. Must
         be float in the range [0, 1].
        :paramtype validation_iou_threshold: str
        :keyword validation_metric_type: Metric computation method to use for validation metrics. Must
         be 'none', 'coco', 'voc', or 'coco_voc'.
        :paramtype validation_metric_type: str
        """
        super(ImageModelDistributionSettingsObjectDetection, self).__init__(**kwargs)
        self.box_detections_per_image = kwargs.get('box_detections_per_image', None)
        self.box_score_threshold = kwargs.get('box_score_threshold', None)
        self.image_size = kwargs.get('image_size', None)
        self.max_size = kwargs.get('max_size', None)
        self.min_size = kwargs.get('min_size', None)
        self.model_size = kwargs.get('model_size', None)
        self.multi_scale = kwargs.get('multi_scale', None)
        self.nms_iou_threshold = kwargs.get('nms_iou_threshold', None)
        self.tile_grid_size = kwargs.get('tile_grid_size', None)
        self.tile_overlap_ratio = kwargs.get('tile_overlap_ratio', None)
        self.tile_predictions_nms_threshold = kwargs.get('tile_predictions_nms_threshold', None)
        self.validation_iou_threshold = kwargs.get('validation_iou_threshold', None)
        self.validation_metric_type = kwargs.get('validation_metric_type', None)


class ImageModelSettings(msrest.serialization.Model):
    """Settings used for training the model.
For more information on the available settings please visit the official documentation:
https://docs.microsoft.com/en-us/azure/machine-learning/how-to-auto-train-image-models.

    :ivar advanced_settings: Settings for advanced scenarios.
    :vartype advanced_settings: str
    :ivar ams_gradient: Enable AMSGrad when optimizer is 'adam' or 'adamw'.
    :vartype ams_gradient: bool
    :ivar augmentations: Settings for using Augmentations.
    :vartype augmentations: str
    :ivar beta1: Value of 'beta1' when optimizer is 'adam' or 'adamw'. Must be a float in the range
     [0, 1].
    :vartype beta1: float
    :ivar beta2: Value of 'beta2' when optimizer is 'adam' or 'adamw'. Must be a float in the range
     [0, 1].
    :vartype beta2: float
    :ivar checkpoint_frequency: Frequency to store model checkpoints. Must be a positive integer.
    :vartype checkpoint_frequency: int
    :ivar checkpoint_model: The pretrained checkpoint model for incremental training.
    :vartype checkpoint_model: ~azure.mgmt.machinelearningservices.models.MLFlowModelJobInput
    :ivar checkpoint_run_id: The id of a previous run that has a pretrained checkpoint for
     incremental training.
    :vartype checkpoint_run_id: str
    :ivar distributed: Whether to use distributed training.
    :vartype distributed: bool
    :ivar early_stopping: Enable early stopping logic during training.
    :vartype early_stopping: bool
    :ivar early_stopping_delay: Minimum number of epochs or validation evaluations to wait before
     primary metric improvement
     is tracked for early stopping. Must be a positive integer.
    :vartype early_stopping_delay: int
    :ivar early_stopping_patience: Minimum number of epochs or validation evaluations with no
     primary metric improvement before
     the run is stopped. Must be a positive integer.
    :vartype early_stopping_patience: int
    :ivar enable_onnx_normalization: Enable normalization when exporting ONNX model.
    :vartype enable_onnx_normalization: bool
    :ivar evaluation_frequency: Frequency to evaluate validation dataset to get metric scores. Must
     be a positive integer.
    :vartype evaluation_frequency: int
    :ivar gradient_accumulation_step: Gradient accumulation means running a configured number of
     "GradAccumulationStep" steps without
     updating the model weights while accumulating the gradients of those steps, and then using
     the accumulated gradients to compute the weight updates. Must be a positive integer.
    :vartype gradient_accumulation_step: int
    :ivar layers_to_freeze: Number of layers to freeze for the model. Must be a positive integer.
     For instance, passing 2 as value for 'seresnext' means
     freezing layer0 and layer1. For a full list of models supported and details on layer freeze,
     please
     see: https://docs.microsoft.com/en-us/azure/machine-learning/how-to-auto-train-image-models.
    :vartype layers_to_freeze: int
    :ivar learning_rate: Initial learning rate. Must be a float in the range [0, 1].
    :vartype learning_rate: float
    :ivar learning_rate_scheduler: Type of learning rate scheduler. Must be 'warmup_cosine' or
     'step'. Possible values include: "None", "WarmupCosine", "Step".
    :vartype learning_rate_scheduler: str or
     ~azure.mgmt.machinelearningservices.models.LearningRateScheduler
    :ivar model_name: Name of the model to use for training.
     For more information on the available models please visit the official documentation:
     https://docs.microsoft.com/en-us/azure/machine-learning/how-to-auto-train-image-models.
    :vartype model_name: str
    :ivar momentum: Value of momentum when optimizer is 'sgd'. Must be a float in the range [0, 1].
    :vartype momentum: float
    :ivar nesterov: Enable nesterov when optimizer is 'sgd'.
    :vartype nesterov: bool
    :ivar number_of_epochs: Number of training epochs. Must be a positive integer.
    :vartype number_of_epochs: int
    :ivar number_of_workers: Number of data loader workers. Must be a non-negative integer.
    :vartype number_of_workers: int
    :ivar optimizer: Type of optimizer. Possible values include: "None", "Sgd", "Adam", "Adamw".
    :vartype optimizer: str or ~azure.mgmt.machinelearningservices.models.StochasticOptimizer
    :ivar random_seed: Random seed to be used when using deterministic training.
    :vartype random_seed: int
    :ivar step_lr_gamma: Value of gamma when learning rate scheduler is 'step'. Must be a float in
     the range [0, 1].
    :vartype step_lr_gamma: float
    :ivar step_lr_step_size: Value of step size when learning rate scheduler is 'step'. Must be a
     positive integer.
    :vartype step_lr_step_size: int
    :ivar training_batch_size: Training batch size. Must be a positive integer.
    :vartype training_batch_size: int
    :ivar validation_batch_size: Validation batch size. Must be a positive integer.
    :vartype validation_batch_size: int
    :ivar warmup_cosine_lr_cycles: Value of cosine cycle when learning rate scheduler is
     'warmup_cosine'. Must be a float in the range [0, 1].
    :vartype warmup_cosine_lr_cycles: float
    :ivar warmup_cosine_lr_warmup_epochs: Value of warmup epochs when learning rate scheduler is
     'warmup_cosine'. Must be a positive integer.
    :vartype warmup_cosine_lr_warmup_epochs: int
    :ivar weight_decay: Value of weight decay when optimizer is 'sgd', 'adam', or 'adamw'. Must be
     a float in the range[0, 1].
    :vartype weight_decay: float
    """

    _attribute_map = {
        'advanced_settings': {'key': 'advancedSettings', 'type': 'str'},
        'ams_gradient': {'key': 'amsGradient', 'type': 'bool'},
        'augmentations': {'key': 'augmentations', 'type': 'str'},
        'beta1': {'key': 'beta1', 'type': 'float'},
        'beta2': {'key': 'beta2', 'type': 'float'},
        'checkpoint_frequency': {'key': 'checkpointFrequency', 'type': 'int'},
        'checkpoint_model': {'key': 'checkpointModel', 'type': 'MLFlowModelJobInput'},
        'checkpoint_run_id': {'key': 'checkpointRunId', 'type': 'str'},
        'distributed': {'key': 'distributed', 'type': 'bool'},
        'early_stopping': {'key': 'earlyStopping', 'type': 'bool'},
        'early_stopping_delay': {'key': 'earlyStoppingDelay', 'type': 'int'},
        'early_stopping_patience': {'key': 'earlyStoppingPatience', 'type': 'int'},
        'enable_onnx_normalization': {'key': 'enableOnnxNormalization', 'type': 'bool'},
        'evaluation_frequency': {'key': 'evaluationFrequency', 'type': 'int'},
        'gradient_accumulation_step': {'key': 'gradientAccumulationStep', 'type': 'int'},
        'layers_to_freeze': {'key': 'layersToFreeze', 'type': 'int'},
        'learning_rate': {'key': 'learningRate', 'type': 'float'},
        'learning_rate_scheduler': {'key': 'learningRateScheduler', 'type': 'str'},
        'model_name': {'key': 'modelName', 'type': 'str'},
        'momentum': {'key': 'momentum', 'type': 'float'},
        'nesterov': {'key': 'nesterov', 'type': 'bool'},
        'number_of_epochs': {'key': 'numberOfEpochs', 'type': 'int'},
        'number_of_workers': {'key': 'numberOfWorkers', 'type': 'int'},
        'optimizer': {'key': 'optimizer', 'type': 'str'},
        'random_seed': {'key': 'randomSeed', 'type': 'int'},
        'step_lr_gamma': {'key': 'stepLRGamma', 'type': 'float'},
        'step_lr_step_size': {'key': 'stepLRStepSize', 'type': 'int'},
        'training_batch_size': {'key': 'trainingBatchSize', 'type': 'int'},
        'validation_batch_size': {'key': 'validationBatchSize', 'type': 'int'},
        'warmup_cosine_lr_cycles': {'key': 'warmupCosineLRCycles', 'type': 'float'},
        'warmup_cosine_lr_warmup_epochs': {'key': 'warmupCosineLRWarmupEpochs', 'type': 'int'},
        'weight_decay': {'key': 'weightDecay', 'type': 'float'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword advanced_settings: Settings for advanced scenarios.
        :paramtype advanced_settings: str
        :keyword ams_gradient: Enable AMSGrad when optimizer is 'adam' or 'adamw'.
        :paramtype ams_gradient: bool
        :keyword augmentations: Settings for using Augmentations.
        :paramtype augmentations: str
        :keyword beta1: Value of 'beta1' when optimizer is 'adam' or 'adamw'. Must be a float in the
         range [0, 1].
        :paramtype beta1: float
        :keyword beta2: Value of 'beta2' when optimizer is 'adam' or 'adamw'. Must be a float in the
         range [0, 1].
        :paramtype beta2: float
        :keyword checkpoint_frequency: Frequency to store model checkpoints. Must be a positive
         integer.
        :paramtype checkpoint_frequency: int
        :keyword checkpoint_model: The pretrained checkpoint model for incremental training.
        :paramtype checkpoint_model: ~azure.mgmt.machinelearningservices.models.MLFlowModelJobInput
        :keyword checkpoint_run_id: The id of a previous run that has a pretrained checkpoint for
         incremental training.
        :paramtype checkpoint_run_id: str
        :keyword distributed: Whether to use distributed training.
        :paramtype distributed: bool
        :keyword early_stopping: Enable early stopping logic during training.
        :paramtype early_stopping: bool
        :keyword early_stopping_delay: Minimum number of epochs or validation evaluations to wait
         before primary metric improvement
         is tracked for early stopping. Must be a positive integer.
        :paramtype early_stopping_delay: int
        :keyword early_stopping_patience: Minimum number of epochs or validation evaluations with no
         primary metric improvement before
         the run is stopped. Must be a positive integer.
        :paramtype early_stopping_patience: int
        :keyword enable_onnx_normalization: Enable normalization when exporting ONNX model.
        :paramtype enable_onnx_normalization: bool
        :keyword evaluation_frequency: Frequency to evaluate validation dataset to get metric scores.
         Must be a positive integer.
        :paramtype evaluation_frequency: int
        :keyword gradient_accumulation_step: Gradient accumulation means running a configured number of
         "GradAccumulationStep" steps without
         updating the model weights while accumulating the gradients of those steps, and then using
         the accumulated gradients to compute the weight updates. Must be a positive integer.
        :paramtype gradient_accumulation_step: int
        :keyword layers_to_freeze: Number of layers to freeze for the model. Must be a positive
         integer.
         For instance, passing 2 as value for 'seresnext' means
         freezing layer0 and layer1. For a full list of models supported and details on layer freeze,
         please
         see: https://docs.microsoft.com/en-us/azure/machine-learning/how-to-auto-train-image-models.
        :paramtype layers_to_freeze: int
        :keyword learning_rate: Initial learning rate. Must be a float in the range [0, 1].
        :paramtype learning_rate: float
        :keyword learning_rate_scheduler: Type of learning rate scheduler. Must be 'warmup_cosine' or
         'step'. Possible values include: "None", "WarmupCosine", "Step".
        :paramtype learning_rate_scheduler: str or
         ~azure.mgmt.machinelearningservices.models.LearningRateScheduler
        :keyword model_name: Name of the model to use for training.
         For more information on the available models please visit the official documentation:
         https://docs.microsoft.com/en-us/azure/machine-learning/how-to-auto-train-image-models.
        :paramtype model_name: str
        :keyword momentum: Value of momentum when optimizer is 'sgd'. Must be a float in the range [0,
         1].
        :paramtype momentum: float
        :keyword nesterov: Enable nesterov when optimizer is 'sgd'.
        :paramtype nesterov: bool
        :keyword number_of_epochs: Number of training epochs. Must be a positive integer.
        :paramtype number_of_epochs: int
        :keyword number_of_workers: Number of data loader workers. Must be a non-negative integer.
        :paramtype number_of_workers: int
        :keyword optimizer: Type of optimizer. Possible values include: "None", "Sgd", "Adam", "Adamw".
        :paramtype optimizer: str or ~azure.mgmt.machinelearningservices.models.StochasticOptimizer
        :keyword random_seed: Random seed to be used when using deterministic training.
        :paramtype random_seed: int
        :keyword step_lr_gamma: Value of gamma when learning rate scheduler is 'step'. Must be a float
         in the range [0, 1].
        :paramtype step_lr_gamma: float
        :keyword step_lr_step_size: Value of step size when learning rate scheduler is 'step'. Must be
         a positive integer.
        :paramtype step_lr_step_size: int
        :keyword training_batch_size: Training batch size. Must be a positive integer.
        :paramtype training_batch_size: int
        :keyword validation_batch_size: Validation batch size. Must be a positive integer.
        :paramtype validation_batch_size: int
        :keyword warmup_cosine_lr_cycles: Value of cosine cycle when learning rate scheduler is
         'warmup_cosine'. Must be a float in the range [0, 1].
        :paramtype warmup_cosine_lr_cycles: float
        :keyword warmup_cosine_lr_warmup_epochs: Value of warmup epochs when learning rate scheduler is
         'warmup_cosine'. Must be a positive integer.
        :paramtype warmup_cosine_lr_warmup_epochs: int
        :keyword weight_decay: Value of weight decay when optimizer is 'sgd', 'adam', or 'adamw'. Must
         be a float in the range[0, 1].
        :paramtype weight_decay: float
        """
        super(ImageModelSettings, self).__init__(**kwargs)
        self.advanced_settings = kwargs.get('advanced_settings', None)
        self.ams_gradient = kwargs.get('ams_gradient', None)
        self.augmentations = kwargs.get('augmentations', None)
        self.beta1 = kwargs.get('beta1', None)
        self.beta2 = kwargs.get('beta2', None)
        self.checkpoint_frequency = kwargs.get('checkpoint_frequency', None)
        self.checkpoint_model = kwargs.get('checkpoint_model', None)
        self.checkpoint_run_id = kwargs.get('checkpoint_run_id', None)
        self.distributed = kwargs.get('distributed', None)
        self.early_stopping = kwargs.get('early_stopping', None)
        self.early_stopping_delay = kwargs.get('early_stopping_delay', None)
        self.early_stopping_patience = kwargs.get('early_stopping_patience', None)
        self.enable_onnx_normalization = kwargs.get('enable_onnx_normalization', None)
        self.evaluation_frequency = kwargs.get('evaluation_frequency', None)
        self.gradient_accumulation_step = kwargs.get('gradient_accumulation_step', None)
        self.layers_to_freeze = kwargs.get('layers_to_freeze', None)
        self.learning_rate = kwargs.get('learning_rate', None)
        self.learning_rate_scheduler = kwargs.get('learning_rate_scheduler', None)
        self.model_name = kwargs.get('model_name', None)
        self.momentum = kwargs.get('momentum', None)
        self.nesterov = kwargs.get('nesterov', None)
        self.number_of_epochs = kwargs.get('number_of_epochs', None)
        self.number_of_workers = kwargs.get('number_of_workers', None)
        self.optimizer = kwargs.get('optimizer', None)
        self.random_seed = kwargs.get('random_seed', None)
        self.step_lr_gamma = kwargs.get('step_lr_gamma', None)
        self.step_lr_step_size = kwargs.get('step_lr_step_size', None)
        self.training_batch_size = kwargs.get('training_batch_size', None)
        self.validation_batch_size = kwargs.get('validation_batch_size', None)
        self.warmup_cosine_lr_cycles = kwargs.get('warmup_cosine_lr_cycles', None)
        self.warmup_cosine_lr_warmup_epochs = kwargs.get('warmup_cosine_lr_warmup_epochs', None)
        self.weight_decay = kwargs.get('weight_decay', None)


class ImageModelSettingsClassification(ImageModelSettings):
    """Settings used for training the model.
For more information on the available settings please visit the official documentation:
https://docs.microsoft.com/en-us/azure/machine-learning/how-to-auto-train-image-models.

    :ivar advanced_settings: Settings for advanced scenarios.
    :vartype advanced_settings: str
    :ivar ams_gradient: Enable AMSGrad when optimizer is 'adam' or 'adamw'.
    :vartype ams_gradient: bool
    :ivar augmentations: Settings for using Augmentations.
    :vartype augmentations: str
    :ivar beta1: Value of 'beta1' when optimizer is 'adam' or 'adamw'. Must be a float in the range
     [0, 1].
    :vartype beta1: float
    :ivar beta2: Value of 'beta2' when optimizer is 'adam' or 'adamw'. Must be a float in the range
     [0, 1].
    :vartype beta2: float
    :ivar checkpoint_frequency: Frequency to store model checkpoints. Must be a positive integer.
    :vartype checkpoint_frequency: int
    :ivar checkpoint_model: The pretrained checkpoint model for incremental training.
    :vartype checkpoint_model: ~azure.mgmt.machinelearningservices.models.MLFlowModelJobInput
    :ivar checkpoint_run_id: The id of a previous run that has a pretrained checkpoint for
     incremental training.
    :vartype checkpoint_run_id: str
    :ivar distributed: Whether to use distributed training.
    :vartype distributed: bool
    :ivar early_stopping: Enable early stopping logic during training.
    :vartype early_stopping: bool
    :ivar early_stopping_delay: Minimum number of epochs or validation evaluations to wait before
     primary metric improvement
     is tracked for early stopping. Must be a positive integer.
    :vartype early_stopping_delay: int
    :ivar early_stopping_patience: Minimum number of epochs or validation evaluations with no
     primary metric improvement before
     the run is stopped. Must be a positive integer.
    :vartype early_stopping_patience: int
    :ivar enable_onnx_normalization: Enable normalization when exporting ONNX model.
    :vartype enable_onnx_normalization: bool
    :ivar evaluation_frequency: Frequency to evaluate validation dataset to get metric scores. Must
     be a positive integer.
    :vartype evaluation_frequency: int
    :ivar gradient_accumulation_step: Gradient accumulation means running a configured number of
     "GradAccumulationStep" steps without
     updating the model weights while accumulating the gradients of those steps, and then using
     the accumulated gradients to compute the weight updates. Must be a positive integer.
    :vartype gradient_accumulation_step: int
    :ivar layers_to_freeze: Number of layers to freeze for the model. Must be a positive integer.
     For instance, passing 2 as value for 'seresnext' means
     freezing layer0 and layer1. For a full list of models supported and details on layer freeze,
     please
     see: https://docs.microsoft.com/en-us/azure/machine-learning/how-to-auto-train-image-models.
    :vartype layers_to_freeze: int
    :ivar learning_rate: Initial learning rate. Must be a float in the range [0, 1].
    :vartype learning_rate: float
    :ivar learning_rate_scheduler: Type of learning rate scheduler. Must be 'warmup_cosine' or
     'step'. Possible values include: "None", "WarmupCosine", "Step".
    :vartype learning_rate_scheduler: str or
     ~azure.mgmt.machinelearningservices.models.LearningRateScheduler
    :ivar model_name: Name of the model to use for training.
     For more information on the available models please visit the official documentation:
     https://docs.microsoft.com/en-us/azure/machine-learning/how-to-auto-train-image-models.
    :vartype model_name: str
    :ivar momentum: Value of momentum when optimizer is 'sgd'. Must be a float in the range [0, 1].
    :vartype momentum: float
    :ivar nesterov: Enable nesterov when optimizer is 'sgd'.
    :vartype nesterov: bool
    :ivar number_of_epochs: Number of training epochs. Must be a positive integer.
    :vartype number_of_epochs: int
    :ivar number_of_workers: Number of data loader workers. Must be a non-negative integer.
    :vartype number_of_workers: int
    :ivar optimizer: Type of optimizer. Possible values include: "None", "Sgd", "Adam", "Adamw".
    :vartype optimizer: str or ~azure.mgmt.machinelearningservices.models.StochasticOptimizer
    :ivar random_seed: Random seed to be used when using deterministic training.
    :vartype random_seed: int
    :ivar step_lr_gamma: Value of gamma when learning rate scheduler is 'step'. Must be a float in
     the range [0, 1].
    :vartype step_lr_gamma: float
    :ivar step_lr_step_size: Value of step size when learning rate scheduler is 'step'. Must be a
     positive integer.
    :vartype step_lr_step_size: int
    :ivar training_batch_size: Training batch size. Must be a positive integer.
    :vartype training_batch_size: int
    :ivar validation_batch_size: Validation batch size. Must be a positive integer.
    :vartype validation_batch_size: int
    :ivar warmup_cosine_lr_cycles: Value of cosine cycle when learning rate scheduler is
     'warmup_cosine'. Must be a float in the range [0, 1].
    :vartype warmup_cosine_lr_cycles: float
    :ivar warmup_cosine_lr_warmup_epochs: Value of warmup epochs when learning rate scheduler is
     'warmup_cosine'. Must be a positive integer.
    :vartype warmup_cosine_lr_warmup_epochs: int
    :ivar weight_decay: Value of weight decay when optimizer is 'sgd', 'adam', or 'adamw'. Must be
     a float in the range[0, 1].
    :vartype weight_decay: float
    :ivar training_crop_size: Image crop size that is input to the neural network for the training
     dataset. Must be a positive integer.
    :vartype training_crop_size: int
    :ivar validation_crop_size: Image crop size that is input to the neural network for the
     validation dataset. Must be a positive integer.
    :vartype validation_crop_size: int
    :ivar validation_resize_size: Image size to which to resize before cropping for validation
     dataset. Must be a positive integer.
    :vartype validation_resize_size: int
    :ivar weighted_loss: Weighted loss. The accepted values are 0 for no weighted loss.
     1 for weighted loss with sqrt.(class_weights). 2 for weighted loss with class_weights. Must be
     0 or 1 or 2.
    :vartype weighted_loss: int
    """

    _attribute_map = {
        'advanced_settings': {'key': 'advancedSettings', 'type': 'str'},
        'ams_gradient': {'key': 'amsGradient', 'type': 'bool'},
        'augmentations': {'key': 'augmentations', 'type': 'str'},
        'beta1': {'key': 'beta1', 'type': 'float'},
        'beta2': {'key': 'beta2', 'type': 'float'},
        'checkpoint_frequency': {'key': 'checkpointFrequency', 'type': 'int'},
        'checkpoint_model': {'key': 'checkpointModel', 'type': 'MLFlowModelJobInput'},
        'checkpoint_run_id': {'key': 'checkpointRunId', 'type': 'str'},
        'distributed': {'key': 'distributed', 'type': 'bool'},
        'early_stopping': {'key': 'earlyStopping', 'type': 'bool'},
        'early_stopping_delay': {'key': 'earlyStoppingDelay', 'type': 'int'},
        'early_stopping_patience': {'key': 'earlyStoppingPatience', 'type': 'int'},
        'enable_onnx_normalization': {'key': 'enableOnnxNormalization', 'type': 'bool'},
        'evaluation_frequency': {'key': 'evaluationFrequency', 'type': 'int'},
        'gradient_accumulation_step': {'key': 'gradientAccumulationStep', 'type': 'int'},
        'layers_to_freeze': {'key': 'layersToFreeze', 'type': 'int'},
        'learning_rate': {'key': 'learningRate', 'type': 'float'},
        'learning_rate_scheduler': {'key': 'learningRateScheduler', 'type': 'str'},
        'model_name': {'key': 'modelName', 'type': 'str'},
        'momentum': {'key': 'momentum', 'type': 'float'},
        'nesterov': {'key': 'nesterov', 'type': 'bool'},
        'number_of_epochs': {'key': 'numberOfEpochs', 'type': 'int'},
        'number_of_workers': {'key': 'numberOfWorkers', 'type': 'int'},
        'optimizer': {'key': 'optimizer', 'type': 'str'},
        'random_seed': {'key': 'randomSeed', 'type': 'int'},
        'step_lr_gamma': {'key': 'stepLRGamma', 'type': 'float'},
        'step_lr_step_size': {'key': 'stepLRStepSize', 'type': 'int'},
        'training_batch_size': {'key': 'trainingBatchSize', 'type': 'int'},
        'validation_batch_size': {'key': 'validationBatchSize', 'type': 'int'},
        'warmup_cosine_lr_cycles': {'key': 'warmupCosineLRCycles', 'type': 'float'},
        'warmup_cosine_lr_warmup_epochs': {'key': 'warmupCosineLRWarmupEpochs', 'type': 'int'},
        'weight_decay': {'key': 'weightDecay', 'type': 'float'},
        'training_crop_size': {'key': 'trainingCropSize', 'type': 'int'},
        'validation_crop_size': {'key': 'validationCropSize', 'type': 'int'},
        'validation_resize_size': {'key': 'validationResizeSize', 'type': 'int'},
        'weighted_loss': {'key': 'weightedLoss', 'type': 'int'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword advanced_settings: Settings for advanced scenarios.
        :paramtype advanced_settings: str
        :keyword ams_gradient: Enable AMSGrad when optimizer is 'adam' or 'adamw'.
        :paramtype ams_gradient: bool
        :keyword augmentations: Settings for using Augmentations.
        :paramtype augmentations: str
        :keyword beta1: Value of 'beta1' when optimizer is 'adam' or 'adamw'. Must be a float in the
         range [0, 1].
        :paramtype beta1: float
        :keyword beta2: Value of 'beta2' when optimizer is 'adam' or 'adamw'. Must be a float in the
         range [0, 1].
        :paramtype beta2: float
        :keyword checkpoint_frequency: Frequency to store model checkpoints. Must be a positive
         integer.
        :paramtype checkpoint_frequency: int
        :keyword checkpoint_model: The pretrained checkpoint model for incremental training.
        :paramtype checkpoint_model: ~azure.mgmt.machinelearningservices.models.MLFlowModelJobInput
        :keyword checkpoint_run_id: The id of a previous run that has a pretrained checkpoint for
         incremental training.
        :paramtype checkpoint_run_id: str
        :keyword distributed: Whether to use distributed training.
        :paramtype distributed: bool
        :keyword early_stopping: Enable early stopping logic during training.
        :paramtype early_stopping: bool
        :keyword early_stopping_delay: Minimum number of epochs or validation evaluations to wait
         before primary metric improvement
         is tracked for early stopping. Must be a positive integer.
        :paramtype early_stopping_delay: int
        :keyword early_stopping_patience: Minimum number of epochs or validation evaluations with no
         primary metric improvement before
         the run is stopped. Must be a positive integer.
        :paramtype early_stopping_patience: int
        :keyword enable_onnx_normalization: Enable normalization when exporting ONNX model.
        :paramtype enable_onnx_normalization: bool
        :keyword evaluation_frequency: Frequency to evaluate validation dataset to get metric scores.
         Must be a positive integer.
        :paramtype evaluation_frequency: int
        :keyword gradient_accumulation_step: Gradient accumulation means running a configured number of
         "GradAccumulationStep" steps without
         updating the model weights while accumulating the gradients of those steps, and then using
         the accumulated gradients to compute the weight updates. Must be a positive integer.
        :paramtype gradient_accumulation_step: int
        :keyword layers_to_freeze: Number of layers to freeze for the model. Must be a positive
         integer.
         For instance, passing 2 as value for 'seresnext' means
         freezing layer0 and layer1. For a full list of models supported and details on layer freeze,
         please
         see: https://docs.microsoft.com/en-us/azure/machine-learning/how-to-auto-train-image-models.
        :paramtype layers_to_freeze: int
        :keyword learning_rate: Initial learning rate. Must be a float in the range [0, 1].
        :paramtype learning_rate: float
        :keyword learning_rate_scheduler: Type of learning rate scheduler. Must be 'warmup_cosine' or
         'step'. Possible values include: "None", "WarmupCosine", "Step".
        :paramtype learning_rate_scheduler: str or
         ~azure.mgmt.machinelearningservices.models.LearningRateScheduler
        :keyword model_name: Name of the model to use for training.
         For more information on the available models please visit the official documentation:
         https://docs.microsoft.com/en-us/azure/machine-learning/how-to-auto-train-image-models.
        :paramtype model_name: str
        :keyword momentum: Value of momentum when optimizer is 'sgd'. Must be a float in the range [0,
         1].
        :paramtype momentum: float
        :keyword nesterov: Enable nesterov when optimizer is 'sgd'.
        :paramtype nesterov: bool
        :keyword number_of_epochs: Number of training epochs. Must be a positive integer.
        :paramtype number_of_epochs: int
        :keyword number_of_workers: Number of data loader workers. Must be a non-negative integer.
        :paramtype number_of_workers: int
        :keyword optimizer: Type of optimizer. Possible values include: "None", "Sgd", "Adam", "Adamw".
        :paramtype optimizer: str or ~azure.mgmt.machinelearningservices.models.StochasticOptimizer
        :keyword random_seed: Random seed to be used when using deterministic training.
        :paramtype random_seed: int
        :keyword step_lr_gamma: Value of gamma when learning rate scheduler is 'step'. Must be a float
         in the range [0, 1].
        :paramtype step_lr_gamma: float
        :keyword step_lr_step_size: Value of step size when learning rate scheduler is 'step'. Must be
         a positive integer.
        :paramtype step_lr_step_size: int
        :keyword training_batch_size: Training batch size. Must be a positive integer.
        :paramtype training_batch_size: int
        :keyword validation_batch_size: Validation batch size. Must be a positive integer.
        :paramtype validation_batch_size: int
        :keyword warmup_cosine_lr_cycles: Value of cosine cycle when learning rate scheduler is
         'warmup_cosine'. Must be a float in the range [0, 1].
        :paramtype warmup_cosine_lr_cycles: float
        :keyword warmup_cosine_lr_warmup_epochs: Value of warmup epochs when learning rate scheduler is
         'warmup_cosine'. Must be a positive integer.
        :paramtype warmup_cosine_lr_warmup_epochs: int
        :keyword weight_decay: Value of weight decay when optimizer is 'sgd', 'adam', or 'adamw'. Must
         be a float in the range[0, 1].
        :paramtype weight_decay: float
        :keyword training_crop_size: Image crop size that is input to the neural network for the
         training dataset. Must be a positive integer.
        :paramtype training_crop_size: int
        :keyword validation_crop_size: Image crop size that is input to the neural network for the
         validation dataset. Must be a positive integer.
        :paramtype validation_crop_size: int
        :keyword validation_resize_size: Image size to which to resize before cropping for validation
         dataset. Must be a positive integer.
        :paramtype validation_resize_size: int
        :keyword weighted_loss: Weighted loss. The accepted values are 0 for no weighted loss.
         1 for weighted loss with sqrt.(class_weights). 2 for weighted loss with class_weights. Must be
         0 or 1 or 2.
        :paramtype weighted_loss: int
        """
        super(ImageModelSettingsClassification, self).__init__(**kwargs)
        self.training_crop_size = kwargs.get('training_crop_size', None)
        self.validation_crop_size = kwargs.get('validation_crop_size', None)
        self.validation_resize_size = kwargs.get('validation_resize_size', None)
        self.weighted_loss = kwargs.get('weighted_loss', None)


class ImageModelSettingsObjectDetection(ImageModelSettings):
    """Settings used for training the model.
For more information on the available settings please visit the official documentation:
https://docs.microsoft.com/en-us/azure/machine-learning/how-to-auto-train-image-models.

    :ivar advanced_settings: Settings for advanced scenarios.
    :vartype advanced_settings: str
    :ivar ams_gradient: Enable AMSGrad when optimizer is 'adam' or 'adamw'.
    :vartype ams_gradient: bool
    :ivar augmentations: Settings for using Augmentations.
    :vartype augmentations: str
    :ivar beta1: Value of 'beta1' when optimizer is 'adam' or 'adamw'. Must be a float in the range
     [0, 1].
    :vartype beta1: float
    :ivar beta2: Value of 'beta2' when optimizer is 'adam' or 'adamw'. Must be a float in the range
     [0, 1].
    :vartype beta2: float
    :ivar checkpoint_frequency: Frequency to store model checkpoints. Must be a positive integer.
    :vartype checkpoint_frequency: int
    :ivar checkpoint_model: The pretrained checkpoint model for incremental training.
    :vartype checkpoint_model: ~azure.mgmt.machinelearningservices.models.MLFlowModelJobInput
    :ivar checkpoint_run_id: The id of a previous run that has a pretrained checkpoint for
     incremental training.
    :vartype checkpoint_run_id: str
    :ivar distributed: Whether to use distributed training.
    :vartype distributed: bool
    :ivar early_stopping: Enable early stopping logic during training.
    :vartype early_stopping: bool
    :ivar early_stopping_delay: Minimum number of epochs or validation evaluations to wait before
     primary metric improvement
     is tracked for early stopping. Must be a positive integer.
    :vartype early_stopping_delay: int
    :ivar early_stopping_patience: Minimum number of epochs or validation evaluations with no
     primary metric improvement before
     the run is stopped. Must be a positive integer.
    :vartype early_stopping_patience: int
    :ivar enable_onnx_normalization: Enable normalization when exporting ONNX model.
    :vartype enable_onnx_normalization: bool
    :ivar evaluation_frequency: Frequency to evaluate validation dataset to get metric scores. Must
     be a positive integer.
    :vartype evaluation_frequency: int
    :ivar gradient_accumulation_step: Gradient accumulation means running a configured number of
     "GradAccumulationStep" steps without
     updating the model weights while accumulating the gradients of those steps, and then using
     the accumulated gradients to compute the weight updates. Must be a positive integer.
    :vartype gradient_accumulation_step: int
    :ivar layers_to_freeze: Number of layers to freeze for the model. Must be a positive integer.
     For instance, passing 2 as value for 'seresnext' means
     freezing layer0 and layer1. For a full list of models supported and details on layer freeze,
     please
     see: https://docs.microsoft.com/en-us/azure/machine-learning/how-to-auto-train-image-models.
    :vartype layers_to_freeze: int
    :ivar learning_rate: Initial learning rate. Must be a float in the range [0, 1].
    :vartype learning_rate: float
    :ivar learning_rate_scheduler: Type of learning rate scheduler. Must be 'warmup_cosine' or
     'step'. Possible values include: "None", "WarmupCosine", "Step".
    :vartype learning_rate_scheduler: str or
     ~azure.mgmt.machinelearningservices.models.LearningRateScheduler
    :ivar model_name: Name of the model to use for training.
     For more information on the available models please visit the official documentation:
     https://docs.microsoft.com/en-us/azure/machine-learning/how-to-auto-train-image-models.
    :vartype model_name: str
    :ivar momentum: Value of momentum when optimizer is 'sgd'. Must be a float in the range [0, 1].
    :vartype momentum: float
    :ivar nesterov: Enable nesterov when optimizer is 'sgd'.
    :vartype nesterov: bool
    :ivar number_of_epochs: Number of training epochs. Must be a positive integer.
    :vartype number_of_epochs: int
    :ivar number_of_workers: Number of data loader workers. Must be a non-negative integer.
    :vartype number_of_workers: int
    :ivar optimizer: Type of optimizer. Possible values include: "None", "Sgd", "Adam", "Adamw".
    :vartype optimizer: str or ~azure.mgmt.machinelearningservices.models.StochasticOptimizer
    :ivar random_seed: Random seed to be used when using deterministic training.
    :vartype random_seed: int
    :ivar step_lr_gamma: Value of gamma when learning rate scheduler is 'step'. Must be a float in
     the range [0, 1].
    :vartype step_lr_gamma: float
    :ivar step_lr_step_size: Value of step size when learning rate scheduler is 'step'. Must be a
     positive integer.
    :vartype step_lr_step_size: int
    :ivar training_batch_size: Training batch size. Must be a positive integer.
    :vartype training_batch_size: int
    :ivar validation_batch_size: Validation batch size. Must be a positive integer.
    :vartype validation_batch_size: int
    :ivar warmup_cosine_lr_cycles: Value of cosine cycle when learning rate scheduler is
     'warmup_cosine'. Must be a float in the range [0, 1].
    :vartype warmup_cosine_lr_cycles: float
    :ivar warmup_cosine_lr_warmup_epochs: Value of warmup epochs when learning rate scheduler is
     'warmup_cosine'. Must be a positive integer.
    :vartype warmup_cosine_lr_warmup_epochs: int
    :ivar weight_decay: Value of weight decay when optimizer is 'sgd', 'adam', or 'adamw'. Must be
     a float in the range[0, 1].
    :vartype weight_decay: float
    :ivar box_detections_per_image: Maximum number of detections per image, for all classes. Must
     be a positive integer.
     Note: This settings is not supported for the 'yolov5' algorithm.
    :vartype box_detections_per_image: int
    :ivar box_score_threshold: During inference, only return proposals with a classification score
     greater than
     BoxScoreThreshold. Must be a float in the range[0, 1].
    :vartype box_score_threshold: float
    :ivar image_size: Image size for train and validation. Must be a positive integer.
     Note: The training run may get into CUDA OOM if the size is too big.
     Note: This settings is only supported for the 'yolov5' algorithm.
    :vartype image_size: int
    :ivar max_size: Maximum size of the image to be rescaled before feeding it to the backbone.
     Must be a positive integer. Note: training run may get into CUDA OOM if the size is too big.
     Note: This settings is not supported for the 'yolov5' algorithm.
    :vartype max_size: int
    :ivar min_size: Minimum size of the image to be rescaled before feeding it to the backbone.
     Must be a positive integer. Note: training run may get into CUDA OOM if the size is too big.
     Note: This settings is not supported for the 'yolov5' algorithm.
    :vartype min_size: int
    :ivar model_size: Model size. Must be 'small', 'medium', 'large', or 'xlarge'.
     Note: training run may get into CUDA OOM if the model size is too big.
     Note: This settings is only supported for the 'yolov5' algorithm. Possible values include:
     "None", "Small", "Medium", "Large", "ExtraLarge".
    :vartype model_size: str or ~azure.mgmt.machinelearningservices.models.ModelSize
    :ivar multi_scale: Enable multi-scale image by varying image size by +/- 50%.
     Note: training run may get into CUDA OOM if no sufficient GPU memory.
     Note: This settings is only supported for the 'yolov5' algorithm.
    :vartype multi_scale: bool
    :ivar nms_iou_threshold: IOU threshold used during inference in NMS post processing. Must be a
     float in the range [0, 1].
    :vartype nms_iou_threshold: float
    :ivar tile_grid_size: The grid size to use for tiling each image. Note: TileGridSize must not
     be
     None to enable small object detection logic. A string containing two integers in mxn format.
     Note: This settings is not supported for the 'yolov5' algorithm.
    :vartype tile_grid_size: str
    :ivar tile_overlap_ratio: Overlap ratio between adjacent tiles in each dimension. Must be float
     in the range [0, 1).
     Note: This settings is not supported for the 'yolov5' algorithm.
    :vartype tile_overlap_ratio: float
    :ivar tile_predictions_nms_threshold: The IOU threshold to use to perform NMS while merging
     predictions from tiles and image.
     Used in validation/ inference. Must be float in the range [0, 1].
     Note: This settings is not supported for the 'yolov5' algorithm.
    :vartype tile_predictions_nms_threshold: float
    :ivar validation_iou_threshold: IOU threshold to use when computing validation metric. Must be
     float in the range [0, 1].
    :vartype validation_iou_threshold: float
    :ivar validation_metric_type: Metric computation method to use for validation metrics. Possible
     values include: "None", "Coco", "Voc", "CocoVoc".
    :vartype validation_metric_type: str or
     ~azure.mgmt.machinelearningservices.models.ValidationMetricType
    """

    _attribute_map = {
        'advanced_settings': {'key': 'advancedSettings', 'type': 'str'},
        'ams_gradient': {'key': 'amsGradient', 'type': 'bool'},
        'augmentations': {'key': 'augmentations', 'type': 'str'},
        'beta1': {'key': 'beta1', 'type': 'float'},
        'beta2': {'key': 'beta2', 'type': 'float'},
        'checkpoint_frequency': {'key': 'checkpointFrequency', 'type': 'int'},
        'checkpoint_model': {'key': 'checkpointModel', 'type': 'MLFlowModelJobInput'},
        'checkpoint_run_id': {'key': 'checkpointRunId', 'type': 'str'},
        'distributed': {'key': 'distributed', 'type': 'bool'},
        'early_stopping': {'key': 'earlyStopping', 'type': 'bool'},
        'early_stopping_delay': {'key': 'earlyStoppingDelay', 'type': 'int'},
        'early_stopping_patience': {'key': 'earlyStoppingPatience', 'type': 'int'},
        'enable_onnx_normalization': {'key': 'enableOnnxNormalization', 'type': 'bool'},
        'evaluation_frequency': {'key': 'evaluationFrequency', 'type': 'int'},
        'gradient_accumulation_step': {'key': 'gradientAccumulationStep', 'type': 'int'},
        'layers_to_freeze': {'key': 'layersToFreeze', 'type': 'int'},
        'learning_rate': {'key': 'learningRate', 'type': 'float'},
        'learning_rate_scheduler': {'key': 'learningRateScheduler', 'type': 'str'},
        'model_name': {'key': 'modelName', 'type': 'str'},
        'momentum': {'key': 'momentum', 'type': 'float'},
        'nesterov': {'key': 'nesterov', 'type': 'bool'},
        'number_of_epochs': {'key': 'numberOfEpochs', 'type': 'int'},
        'number_of_workers': {'key': 'numberOfWorkers', 'type': 'int'},
        'optimizer': {'key': 'optimizer', 'type': 'str'},
        'random_seed': {'key': 'randomSeed', 'type': 'int'},
        'step_lr_gamma': {'key': 'stepLRGamma', 'type': 'float'},
        'step_lr_step_size': {'key': 'stepLRStepSize', 'type': 'int'},
        'training_batch_size': {'key': 'trainingBatchSize', 'type': 'int'},
        'validation_batch_size': {'key': 'validationBatchSize', 'type': 'int'},
        'warmup_cosine_lr_cycles': {'key': 'warmupCosineLRCycles', 'type': 'float'},
        'warmup_cosine_lr_warmup_epochs': {'key': 'warmupCosineLRWarmupEpochs', 'type': 'int'},
        'weight_decay': {'key': 'weightDecay', 'type': 'float'},
        'box_detections_per_image': {'key': 'boxDetectionsPerImage', 'type': 'int'},
        'box_score_threshold': {'key': 'boxScoreThreshold', 'type': 'float'},
        'image_size': {'key': 'imageSize', 'type': 'int'},
        'max_size': {'key': 'maxSize', 'type': 'int'},
        'min_size': {'key': 'minSize', 'type': 'int'},
        'model_size': {'key': 'modelSize', 'type': 'str'},
        'multi_scale': {'key': 'multiScale', 'type': 'bool'},
        'nms_iou_threshold': {'key': 'nmsIouThreshold', 'type': 'float'},
        'tile_grid_size': {'key': 'tileGridSize', 'type': 'str'},
        'tile_overlap_ratio': {'key': 'tileOverlapRatio', 'type': 'float'},
        'tile_predictions_nms_threshold': {'key': 'tilePredictionsNmsThreshold', 'type': 'float'},
        'validation_iou_threshold': {'key': 'validationIouThreshold', 'type': 'float'},
        'validation_metric_type': {'key': 'validationMetricType', 'type': 'str'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword advanced_settings: Settings for advanced scenarios.
        :paramtype advanced_settings: str
        :keyword ams_gradient: Enable AMSGrad when optimizer is 'adam' or 'adamw'.
        :paramtype ams_gradient: bool
        :keyword augmentations: Settings for using Augmentations.
        :paramtype augmentations: str
        :keyword beta1: Value of 'beta1' when optimizer is 'adam' or 'adamw'. Must be a float in the
         range [0, 1].
        :paramtype beta1: float
        :keyword beta2: Value of 'beta2' when optimizer is 'adam' or 'adamw'. Must be a float in the
         range [0, 1].
        :paramtype beta2: float
        :keyword checkpoint_frequency: Frequency to store model checkpoints. Must be a positive
         integer.
        :paramtype checkpoint_frequency: int
        :keyword checkpoint_model: The pretrained checkpoint model for incremental training.
        :paramtype checkpoint_model: ~azure.mgmt.machinelearningservices.models.MLFlowModelJobInput
        :keyword checkpoint_run_id: The id of a previous run that has a pretrained checkpoint for
         incremental training.
        :paramtype checkpoint_run_id: str
        :keyword distributed: Whether to use distributed training.
        :paramtype distributed: bool
        :keyword early_stopping: Enable early stopping logic during training.
        :paramtype early_stopping: bool
        :keyword early_stopping_delay: Minimum number of epochs or validation evaluations to wait
         before primary metric improvement
         is tracked for early stopping. Must be a positive integer.
        :paramtype early_stopping_delay: int
        :keyword early_stopping_patience: Minimum number of epochs or validation evaluations with no
         primary metric improvement before
         the run is stopped. Must be a positive integer.
        :paramtype early_stopping_patience: int
        :keyword enable_onnx_normalization: Enable normalization when exporting ONNX model.
        :paramtype enable_onnx_normalization: bool
        :keyword evaluation_frequency: Frequency to evaluate validation dataset to get metric scores.
         Must be a positive integer.
        :paramtype evaluation_frequency: int
        :keyword gradient_accumulation_step: Gradient accumulation means running a configured number of
         "GradAccumulationStep" steps without
         updating the model weights while accumulating the gradients of those steps, and then using
         the accumulated gradients to compute the weight updates. Must be a positive integer.
        :paramtype gradient_accumulation_step: int
        :keyword layers_to_freeze: Number of layers to freeze for the model. Must be a positive
         integer.
         For instance, passing 2 as value for 'seresnext' means
         freezing layer0 and layer1. For a full list of models supported and details on layer freeze,
         please
         see: https://docs.microsoft.com/en-us/azure/machine-learning/how-to-auto-train-image-models.
        :paramtype layers_to_freeze: int
        :keyword learning_rate: Initial learning rate. Must be a float in the range [0, 1].
        :paramtype learning_rate: float
        :keyword learning_rate_scheduler: Type of learning rate scheduler. Must be 'warmup_cosine' or
         'step'. Possible values include: "None", "WarmupCosine", "Step".
        :paramtype learning_rate_scheduler: str or
         ~azure.mgmt.machinelearningservices.models.LearningRateScheduler
        :keyword model_name: Name of the model to use for training.
         For more information on the available models please visit the official documentation:
         https://docs.microsoft.com/en-us/azure/machine-learning/how-to-auto-train-image-models.
        :paramtype model_name: str
        :keyword momentum: Value of momentum when optimizer is 'sgd'. Must be a float in the range [0,
         1].
        :paramtype momentum: float
        :keyword nesterov: Enable nesterov when optimizer is 'sgd'.
        :paramtype nesterov: bool
        :keyword number_of_epochs: Number of training epochs. Must be a positive integer.
        :paramtype number_of_epochs: int
        :keyword number_of_workers: Number of data loader workers. Must be a non-negative integer.
        :paramtype number_of_workers: int
        :keyword optimizer: Type of optimizer. Possible values include: "None", "Sgd", "Adam", "Adamw".
        :paramtype optimizer: str or ~azure.mgmt.machinelearningservices.models.StochasticOptimizer
        :keyword random_seed: Random seed to be used when using deterministic training.
        :paramtype random_seed: int
        :keyword step_lr_gamma: Value of gamma when learning rate scheduler is 'step'. Must be a float
         in the range [0, 1].
        :paramtype step_lr_gamma: float
        :keyword step_lr_step_size: Value of step size when learning rate scheduler is 'step'. Must be
         a positive integer.
        :paramtype step_lr_step_size: int
        :keyword training_batch_size: Training batch size. Must be a positive integer.
        :paramtype training_batch_size: int
        :keyword validation_batch_size: Validation batch size. Must be a positive integer.
        :paramtype validation_batch_size: int
        :keyword warmup_cosine_lr_cycles: Value of cosine cycle when learning rate scheduler is
         'warmup_cosine'. Must be a float in the range [0, 1].
        :paramtype warmup_cosine_lr_cycles: float
        :keyword warmup_cosine_lr_warmup_epochs: Value of warmup epochs when learning rate scheduler is
         'warmup_cosine'. Must be a positive integer.
        :paramtype warmup_cosine_lr_warmup_epochs: int
        :keyword weight_decay: Value of weight decay when optimizer is 'sgd', 'adam', or 'adamw'. Must
         be a float in the range[0, 1].
        :paramtype weight_decay: float
        :keyword box_detections_per_image: Maximum number of detections per image, for all classes.
         Must be a positive integer.
         Note: This settings is not supported for the 'yolov5' algorithm.
        :paramtype box_detections_per_image: int
        :keyword box_score_threshold: During inference, only return proposals with a classification
         score greater than
         BoxScoreThreshold. Must be a float in the range[0, 1].
        :paramtype box_score_threshold: float
        :keyword image_size: Image size for train and validation. Must be a positive integer.
         Note: The training run may get into CUDA OOM if the size is too big.
         Note: This settings is only supported for the 'yolov5' algorithm.
        :paramtype image_size: int
        :keyword max_size: Maximum size of the image to be rescaled before feeding it to the backbone.
         Must be a positive integer. Note: training run may get into CUDA OOM if the size is too big.
         Note: This settings is not supported for the 'yolov5' algorithm.
        :paramtype max_size: int
        :keyword min_size: Minimum size of the image to be rescaled before feeding it to the backbone.
         Must be a positive integer. Note: training run may get into CUDA OOM if the size is too big.
         Note: This settings is not supported for the 'yolov5' algorithm.
        :paramtype min_size: int
        :keyword model_size: Model size. Must be 'small', 'medium', 'large', or 'xlarge'.
         Note: training run may get into CUDA OOM if the model size is too big.
         Note: This settings is only supported for the 'yolov5' algorithm. Possible values include:
         "None", "Small", "Medium", "Large", "ExtraLarge".
        :paramtype model_size: str or ~azure.mgmt.machinelearningservices.models.ModelSize
        :keyword multi_scale: Enable multi-scale image by varying image size by +/- 50%.
         Note: training run may get into CUDA OOM if no sufficient GPU memory.
         Note: This settings is only supported for the 'yolov5' algorithm.
        :paramtype multi_scale: bool
        :keyword nms_iou_threshold: IOU threshold used during inference in NMS post processing. Must be
         a float in the range [0, 1].
        :paramtype nms_iou_threshold: float
        :keyword tile_grid_size: The grid size to use for tiling each image. Note: TileGridSize must
         not be
         None to enable small object detection logic. A string containing two integers in mxn format.
         Note: This settings is not supported for the 'yolov5' algorithm.
        :paramtype tile_grid_size: str
        :keyword tile_overlap_ratio: Overlap ratio between adjacent tiles in each dimension. Must be
         float in the range [0, 1).
         Note: This settings is not supported for the 'yolov5' algorithm.
        :paramtype tile_overlap_ratio: float
        :keyword tile_predictions_nms_threshold: The IOU threshold to use to perform NMS while merging
         predictions from tiles and image.
         Used in validation/ inference. Must be float in the range [0, 1].
         Note: This settings is not supported for the 'yolov5' algorithm.
        :paramtype tile_predictions_nms_threshold: float
        :keyword validation_iou_threshold: IOU threshold to use when computing validation metric. Must
         be float in the range [0, 1].
        :paramtype validation_iou_threshold: float
        :keyword validation_metric_type: Metric computation method to use for validation metrics.
         Possible values include: "None", "Coco", "Voc", "CocoVoc".
        :paramtype validation_metric_type: str or
         ~azure.mgmt.machinelearningservices.models.ValidationMetricType
        """
        super(ImageModelSettingsObjectDetection, self).__init__(**kwargs)
        self.box_detections_per_image = kwargs.get('box_detections_per_image', None)
        self.box_score_threshold = kwargs.get('box_score_threshold', None)
        self.image_size = kwargs.get('image_size', None)
        self.max_size = kwargs.get('max_size', None)
        self.min_size = kwargs.get('min_size', None)
        self.model_size = kwargs.get('model_size', None)
        self.multi_scale = kwargs.get('multi_scale', None)
        self.nms_iou_threshold = kwargs.get('nms_iou_threshold', None)
        self.tile_grid_size = kwargs.get('tile_grid_size', None)
        self.tile_overlap_ratio = kwargs.get('tile_overlap_ratio', None)
        self.tile_predictions_nms_threshold = kwargs.get('tile_predictions_nms_threshold', None)
        self.validation_iou_threshold = kwargs.get('validation_iou_threshold', None)
        self.validation_metric_type = kwargs.get('validation_metric_type', None)


class ImageObjectDetection(AutoMLVertical, ImageObjectDetectionBase):
    """Image Object Detection. Object detection is used to identify objects in an image and locate each object with a
bounding box e.g. locate all dogs and cats in an image and draw a bounding box around each.

    All required parameters must be populated in order to send to Azure.

    :ivar limit_settings: Required. [Required] Limit settings for the AutoML job.
    :vartype limit_settings: ~azure.mgmt.machinelearningservices.models.ImageLimitSettings
    :ivar sweep_settings: Model sweeping and hyperparameter sweeping related settings.
    :vartype sweep_settings: ~azure.mgmt.machinelearningservices.models.ImageSweepSettings
    :ivar validation_data: Validation data inputs.
    :vartype validation_data: ~azure.mgmt.machinelearningservices.models.MLTableJobInput
    :ivar validation_data_size: The fraction of training dataset that needs to be set aside for
     validation purpose.
     Values between (0.0 , 1.0)
     Applied when validation dataset is not provided.
    :vartype validation_data_size: float
    :ivar model_settings: Settings used for training the model.
    :vartype model_settings:
     ~azure.mgmt.machinelearningservices.models.ImageModelSettingsObjectDetection
    :ivar search_space: Search space for sampling different combinations of models and their
     hyperparameters.
    :vartype search_space:
     list[~azure.mgmt.machinelearningservices.models.ImageModelDistributionSettingsObjectDetection]
    :ivar log_verbosity: Log verbosity for the job. Possible values include: "NotSet", "Debug",
     "Info", "Warning", "Error", "Critical".
    :vartype log_verbosity: str or ~azure.mgmt.machinelearningservices.models.LogVerbosity
    :ivar target_column_name: Target column name: This is prediction values column.
     Also known as label column name in context of classification tasks.
    :vartype target_column_name: str
    :ivar task_type: Required. [Required] Task type for AutoMLJob.Constant filled by server.
     Possible values include: "Classification", "Regression", "Forecasting", "ImageClassification",
     "ImageClassificationMultilabel", "ImageObjectDetection", "ImageInstanceSegmentation",
     "TextClassification", "TextClassificationMultilabel", "TextNER".
    :vartype task_type: str or ~azure.mgmt.machinelearningservices.models.TaskType
    :ivar training_data: Required. [Required] Training data input.
    :vartype training_data: ~azure.mgmt.machinelearningservices.models.MLTableJobInput
    :ivar primary_metric: Primary metric to optimize for this task. Possible values include:
     "MeanAveragePrecision".
    :vartype primary_metric: str or
     ~azure.mgmt.machinelearningservices.models.ObjectDetectionPrimaryMetrics
    """

    _validation = {
        'limit_settings': {'required': True},
        'task_type': {'required': True},
        'training_data': {'required': True},
    }

    _attribute_map = {
        'limit_settings': {'key': 'limitSettings', 'type': 'ImageLimitSettings'},
        'sweep_settings': {'key': 'sweepSettings', 'type': 'ImageSweepSettings'},
        'validation_data': {'key': 'validationData', 'type': 'MLTableJobInput'},
        'validation_data_size': {'key': 'validationDataSize', 'type': 'float'},
        'model_settings': {'key': 'modelSettings', 'type': 'ImageModelSettingsObjectDetection'},
        'search_space': {'key': 'searchSpace', 'type': '[ImageModelDistributionSettingsObjectDetection]'},
        'log_verbosity': {'key': 'logVerbosity', 'type': 'str'},
        'target_column_name': {'key': 'targetColumnName', 'type': 'str'},
        'task_type': {'key': 'taskType', 'type': 'str'},
        'training_data': {'key': 'trainingData', 'type': 'MLTableJobInput'},
        'primary_metric': {'key': 'primaryMetric', 'type': 'str'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword limit_settings: Required. [Required] Limit settings for the AutoML job.
        :paramtype limit_settings: ~azure.mgmt.machinelearningservices.models.ImageLimitSettings
        :keyword sweep_settings: Model sweeping and hyperparameter sweeping related settings.
        :paramtype sweep_settings: ~azure.mgmt.machinelearningservices.models.ImageSweepSettings
        :keyword validation_data: Validation data inputs.
        :paramtype validation_data: ~azure.mgmt.machinelearningservices.models.MLTableJobInput
        :keyword validation_data_size: The fraction of training dataset that needs to be set aside for
         validation purpose.
         Values between (0.0 , 1.0)
         Applied when validation dataset is not provided.
        :paramtype validation_data_size: float
        :keyword model_settings: Settings used for training the model.
        :paramtype model_settings:
         ~azure.mgmt.machinelearningservices.models.ImageModelSettingsObjectDetection
        :keyword search_space: Search space for sampling different combinations of models and their
         hyperparameters.
        :paramtype search_space:
         list[~azure.mgmt.machinelearningservices.models.ImageModelDistributionSettingsObjectDetection]
        :keyword log_verbosity: Log verbosity for the job. Possible values include: "NotSet", "Debug",
         "Info", "Warning", "Error", "Critical".
        :paramtype log_verbosity: str or ~azure.mgmt.machinelearningservices.models.LogVerbosity
        :keyword target_column_name: Target column name: This is prediction values column.
         Also known as label column name in context of classification tasks.
        :paramtype target_column_name: str
        :keyword training_data: Required. [Required] Training data input.
        :paramtype training_data: ~azure.mgmt.machinelearningservices.models.MLTableJobInput
        :keyword primary_metric: Primary metric to optimize for this task. Possible values include:
         "MeanAveragePrecision".
        :paramtype primary_metric: str or
         ~azure.mgmt.machinelearningservices.models.ObjectDetectionPrimaryMetrics
        """
        super(ImageObjectDetection, self).__init__(**kwargs)
        self.limit_settings = kwargs['limit_settings']
        self.sweep_settings = kwargs.get('sweep_settings', None)
        self.validation_data = kwargs.get('validation_data', None)
        self.validation_data_size = kwargs.get('validation_data_size', None)
        self.model_settings = kwargs.get('model_settings', None)
        self.search_space = kwargs.get('search_space', None)
        self.task_type = 'ImageObjectDetection'  # type: str
        self.primary_metric = kwargs.get('primary_metric', None)
        self.log_verbosity = kwargs.get('log_verbosity', None)
        self.target_column_name = kwargs.get('target_column_name', None)
        self.training_data = kwargs['training_data']


class ImageSweepSettings(msrest.serialization.Model):
    """Model sweeping and hyperparameter sweeping related settings.

    All required parameters must be populated in order to send to Azure.

    :ivar early_termination: Type of early termination policy.
    :vartype early_termination: ~azure.mgmt.machinelearningservices.models.EarlyTerminationPolicy
    :ivar sampling_algorithm: Required. [Required] Type of the hyperparameter sampling algorithms.
     Possible values include: "Grid", "Random", "Bayesian".
    :vartype sampling_algorithm: str or
     ~azure.mgmt.machinelearningservices.models.SamplingAlgorithmType
    """

    _validation = {
        'sampling_algorithm': {'required': True},
    }

    _attribute_map = {
        'early_termination': {'key': 'earlyTermination', 'type': 'EarlyTerminationPolicy'},
        'sampling_algorithm': {'key': 'samplingAlgorithm', 'type': 'str'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword early_termination: Type of early termination policy.
        :paramtype early_termination: ~azure.mgmt.machinelearningservices.models.EarlyTerminationPolicy
        :keyword sampling_algorithm: Required. [Required] Type of the hyperparameter sampling
         algorithms. Possible values include: "Grid", "Random", "Bayesian".
        :paramtype sampling_algorithm: str or
         ~azure.mgmt.machinelearningservices.models.SamplingAlgorithmType
        """
        super(ImageSweepSettings, self).__init__(**kwargs)
        self.early_termination = kwargs.get('early_termination', None)
        self.sampling_algorithm = kwargs['sampling_algorithm']


class IndexColumn(msrest.serialization.Model):
    """DTO object representing index column.

    :ivar column_name: Specifies the column name.
    :vartype column_name: str
    :ivar data_type: Specifies the data type. Possible values include: "String", "Integer", "Long",
     "Float", "Double", "Binary", "Datetime", "Boolean".
    :vartype data_type: str or ~azure.mgmt.machinelearningservices.models.FeatureDataType
    """

    _attribute_map = {
        'column_name': {'key': 'columnName', 'type': 'str'},
        'data_type': {'key': 'dataType', 'type': 'str'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword column_name: Specifies the column name.
        :paramtype column_name: str
        :keyword data_type: Specifies the data type. Possible values include: "String", "Integer",
         "Long", "Float", "Double", "Binary", "Datetime", "Boolean".
        :paramtype data_type: str or ~azure.mgmt.machinelearningservices.models.FeatureDataType
        """
        super(IndexColumn, self).__init__(**kwargs)
        self.column_name = kwargs.get('column_name', None)
        self.data_type = kwargs.get('data_type', None)


class InferenceContainerProperties(msrest.serialization.Model):
    """InferenceContainerProperties.

    :ivar liveness_route: The route to check the liveness of the inference server container.
    :vartype liveness_route: ~azure.mgmt.machinelearningservices.models.Route
    :ivar readiness_route: The route to check the readiness of the inference server container.
    :vartype readiness_route: ~azure.mgmt.machinelearningservices.models.Route
    :ivar scoring_route: The port to send the scoring requests to, within the inference server
     container.
    :vartype scoring_route: ~azure.mgmt.machinelearningservices.models.Route
    """

    _attribute_map = {
        'liveness_route': {'key': 'livenessRoute', 'type': 'Route'},
        'readiness_route': {'key': 'readinessRoute', 'type': 'Route'},
        'scoring_route': {'key': 'scoringRoute', 'type': 'Route'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword liveness_route: The route to check the liveness of the inference server container.
        :paramtype liveness_route: ~azure.mgmt.machinelearningservices.models.Route
        :keyword readiness_route: The route to check the readiness of the inference server container.
        :paramtype readiness_route: ~azure.mgmt.machinelearningservices.models.Route
        :keyword scoring_route: The port to send the scoring requests to, within the inference server
         container.
        :paramtype scoring_route: ~azure.mgmt.machinelearningservices.models.Route
        """
        super(InferenceContainerProperties, self).__init__(**kwargs)
        self.liveness_route = kwargs.get('liveness_route', None)
        self.readiness_route = kwargs.get('readiness_route', None)
        self.scoring_route = kwargs.get('scoring_route', None)


class InferenceEndpoint(TrackedResource):
    """InferenceEndpoint.

    Variables are only populated by the server, and will be ignored when sending a request.

    All required parameters must be populated in order to send to Azure.

    :ivar id: Fully qualified resource ID for the resource. Ex -
     /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}.
    :vartype id: str
    :ivar name: The name of the resource.
    :vartype name: str
    :ivar type: The type of the resource. E.g. "Microsoft.Compute/virtualMachines" or
     "Microsoft.Storage/storageAccounts".
    :vartype type: str
    :ivar system_data: Azure Resource Manager metadata containing createdBy and modifiedBy
     information.
    :vartype system_data: ~azure.mgmt.machinelearningservices.models.SystemData
    :ivar tags: A set of tags. Resource tags.
    :vartype tags: dict[str, str]
    :ivar location: Required. The geo-location where the resource lives.
    :vartype location: str
    :ivar identity: Managed service identity (system assigned and/or user assigned identities).
    :vartype identity: ~azure.mgmt.machinelearningservices.models.ManagedServiceIdentity
    :ivar kind: Metadata used by portal/tooling/etc to render different UX experiences for
     resources of the same type.
    :vartype kind: str
    :ivar properties: Required. [Required] Additional attributes of the entity.
    :vartype properties: ~azure.mgmt.machinelearningservices.models.InferenceEndpointProperties
    :ivar sku: Sku details required for ARM contract for Autoscaling.
    :vartype sku: ~azure.mgmt.machinelearningservices.models.Sku
    """

    _validation = {
        'id': {'readonly': True},
        'name': {'readonly': True},
        'type': {'readonly': True},
        'system_data': {'readonly': True},
        'location': {'required': True},
        'properties': {'required': True},
    }

    _attribute_map = {
        'id': {'key': 'id', 'type': 'str'},
        'name': {'key': 'name', 'type': 'str'},
        'type': {'key': 'type', 'type': 'str'},
        'system_data': {'key': 'systemData', 'type': 'SystemData'},
        'tags': {'key': 'tags', 'type': '{str}'},
        'location': {'key': 'location', 'type': 'str'},
        'identity': {'key': 'identity', 'type': 'ManagedServiceIdentity'},
        'kind': {'key': 'kind', 'type': 'str'},
        'properties': {'key': 'properties', 'type': 'InferenceEndpointProperties'},
        'sku': {'key': 'sku', 'type': 'Sku'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword tags: A set of tags. Resource tags.
        :paramtype tags: dict[str, str]
        :keyword location: Required. The geo-location where the resource lives.
        :paramtype location: str
        :keyword identity: Managed service identity (system assigned and/or user assigned identities).
        :paramtype identity: ~azure.mgmt.machinelearningservices.models.ManagedServiceIdentity
        :keyword kind: Metadata used by portal/tooling/etc to render different UX experiences for
         resources of the same type.
        :paramtype kind: str
        :keyword properties: Required. [Required] Additional attributes of the entity.
        :paramtype properties: ~azure.mgmt.machinelearningservices.models.InferenceEndpointProperties
        :keyword sku: Sku details required for ARM contract for Autoscaling.
        :paramtype sku: ~azure.mgmt.machinelearningservices.models.Sku
        """
        super(InferenceEndpoint, self).__init__(**kwargs)
        self.identity = kwargs.get('identity', None)
        self.kind = kwargs.get('kind', None)
        self.properties = kwargs['properties']
        self.sku = kwargs.get('sku', None)


class PropertiesBase(msrest.serialization.Model):
    """Base definition for pool resources.

    :ivar description: Description of the resource.
    :vartype description: str
    :ivar properties: Property dictionary. Properties can be added, but not removed or altered.
    :vartype properties: list[~azure.mgmt.machinelearningservices.models.StringKeyValuePair]
    """

    _attribute_map = {
        'description': {'key': 'description', 'type': 'str'},
        'properties': {'key': 'properties', 'type': '[StringKeyValuePair]'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword description: Description of the resource.
        :paramtype description: str
        :keyword properties: Property dictionary. Properties can be added, but not removed or altered.
        :paramtype properties: list[~azure.mgmt.machinelearningservices.models.StringKeyValuePair]
        """
        super(PropertiesBase, self).__init__(**kwargs)
        self.description = kwargs.get('description', None)
        self.properties = kwargs.get('properties', None)


class InferenceEndpointProperties(PropertiesBase):
    """InferenceEndpoint configuration.

    Variables are only populated by the server, and will be ignored when sending a request.

    All required parameters must be populated in order to send to Azure.

    :ivar description: Description of the resource.
    :vartype description: str
    :ivar properties: Property dictionary. Properties can be added, but not removed or altered.
    :vartype properties: list[~azure.mgmt.machinelearningservices.models.StringKeyValuePair]
    :ivar auth_mode: Required. [Required] Authentication mode for the endpoint. Possible values
     include: "AAD".
    :vartype auth_mode: str or ~azure.mgmt.machinelearningservices.models.AuthMode
    :ivar endpoint_uri: Endpoint URI for the inference endpoint.
    :vartype endpoint_uri: str
    :ivar group_name: Required. [Required] Group within the same pool with which this endpoint
     needs to be associated with.
    :vartype group_name: str
    :ivar provisioning_state: Provisioning state for the endpoint. Possible values include:
     "Creating", "Deleting", "Succeeded", "Failed", "Updating", "Canceled".
    :vartype provisioning_state: str or
     ~azure.mgmt.machinelearningservices.models.PoolProvisioningState
    :ivar request_configuration: RequestConfiguration for endpoint.
    :vartype request_configuration: ~azure.mgmt.machinelearningservices.models.RequestConfiguration
    """

    _validation = {
        'auth_mode': {'required': True},
        'endpoint_uri': {'readonly': True},
        'group_name': {'required': True, 'min_length': 1, 'pattern': r'[a-zA-Z0-9_]'},
        'provisioning_state': {'readonly': True},
    }

    _attribute_map = {
        'description': {'key': 'description', 'type': 'str'},
        'properties': {'key': 'properties', 'type': '[StringKeyValuePair]'},
        'auth_mode': {'key': 'authMode', 'type': 'str'},
        'endpoint_uri': {'key': 'endpointUri', 'type': 'str'},
        'group_name': {'key': 'groupName', 'type': 'str'},
        'provisioning_state': {'key': 'provisioningState', 'type': 'str'},
        'request_configuration': {'key': 'requestConfiguration', 'type': 'RequestConfiguration'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword description: Description of the resource.
        :paramtype description: str
        :keyword properties: Property dictionary. Properties can be added, but not removed or altered.
        :paramtype properties: list[~azure.mgmt.machinelearningservices.models.StringKeyValuePair]
        :keyword auth_mode: Required. [Required] Authentication mode for the endpoint. Possible values
         include: "AAD".
        :paramtype auth_mode: str or ~azure.mgmt.machinelearningservices.models.AuthMode
        :keyword group_name: Required. [Required] Group within the same pool with which this endpoint
         needs to be associated with.
        :paramtype group_name: str
        :keyword request_configuration: RequestConfiguration for endpoint.
        :paramtype request_configuration:
         ~azure.mgmt.machinelearningservices.models.RequestConfiguration
        """
        super(InferenceEndpointProperties, self).__init__(**kwargs)
        self.auth_mode = kwargs['auth_mode']
        self.endpoint_uri = None
        self.group_name = kwargs['group_name']
        self.provisioning_state = None
        self.request_configuration = kwargs.get('request_configuration', None)


class InferenceEndpointTrackedResourceArmPaginatedResult(msrest.serialization.Model):
    """A paginated list of InferenceEndpoint entities.

    :ivar next_link: The link to the next page of InferenceEndpoint objects. If null, there are no
     additional pages.
    :vartype next_link: str
    :ivar value: An array of objects of type InferenceEndpoint.
    :vartype value: list[~azure.mgmt.machinelearningservices.models.InferenceEndpoint]
    """

    _attribute_map = {
        'next_link': {'key': 'nextLink', 'type': 'str'},
        'value': {'key': 'value', 'type': '[InferenceEndpoint]'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword next_link: The link to the next page of InferenceEndpoint objects. If null, there are
         no additional pages.
        :paramtype next_link: str
        :keyword value: An array of objects of type InferenceEndpoint.
        :paramtype value: list[~azure.mgmt.machinelearningservices.models.InferenceEndpoint]
        """
        super(InferenceEndpointTrackedResourceArmPaginatedResult, self).__init__(**kwargs)
        self.next_link = kwargs.get('next_link', None)
        self.value = kwargs.get('value', None)


class InferenceGroup(TrackedResource):
    """InferenceGroup.

    Variables are only populated by the server, and will be ignored when sending a request.

    All required parameters must be populated in order to send to Azure.

    :ivar id: Fully qualified resource ID for the resource. Ex -
     /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}.
    :vartype id: str
    :ivar name: The name of the resource.
    :vartype name: str
    :ivar type: The type of the resource. E.g. "Microsoft.Compute/virtualMachines" or
     "Microsoft.Storage/storageAccounts".
    :vartype type: str
    :ivar system_data: Azure Resource Manager metadata containing createdBy and modifiedBy
     information.
    :vartype system_data: ~azure.mgmt.machinelearningservices.models.SystemData
    :ivar tags: A set of tags. Resource tags.
    :vartype tags: dict[str, str]
    :ivar location: Required. The geo-location where the resource lives.
    :vartype location: str
    :ivar identity: Managed service identity (system assigned and/or user assigned identities).
    :vartype identity: ~azure.mgmt.machinelearningservices.models.ManagedServiceIdentity
    :ivar kind: Metadata used by portal/tooling/etc to render different UX experiences for
     resources of the same type.
    :vartype kind: str
    :ivar properties: Required. [Required] Additional attributes of the entity.
    :vartype properties: ~azure.mgmt.machinelearningservices.models.InferenceGroupProperties
    :ivar sku: Sku details required for ARM contract for Autoscaling.
    :vartype sku: ~azure.mgmt.machinelearningservices.models.Sku
    """

    _validation = {
        'id': {'readonly': True},
        'name': {'readonly': True},
        'type': {'readonly': True},
        'system_data': {'readonly': True},
        'location': {'required': True},
        'properties': {'required': True},
    }

    _attribute_map = {
        'id': {'key': 'id', 'type': 'str'},
        'name': {'key': 'name', 'type': 'str'},
        'type': {'key': 'type', 'type': 'str'},
        'system_data': {'key': 'systemData', 'type': 'SystemData'},
        'tags': {'key': 'tags', 'type': '{str}'},
        'location': {'key': 'location', 'type': 'str'},
        'identity': {'key': 'identity', 'type': 'ManagedServiceIdentity'},
        'kind': {'key': 'kind', 'type': 'str'},
        'properties': {'key': 'properties', 'type': 'InferenceGroupProperties'},
        'sku': {'key': 'sku', 'type': 'Sku'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword tags: A set of tags. Resource tags.
        :paramtype tags: dict[str, str]
        :keyword location: Required. The geo-location where the resource lives.
        :paramtype location: str
        :keyword identity: Managed service identity (system assigned and/or user assigned identities).
        :paramtype identity: ~azure.mgmt.machinelearningservices.models.ManagedServiceIdentity
        :keyword kind: Metadata used by portal/tooling/etc to render different UX experiences for
         resources of the same type.
        :paramtype kind: str
        :keyword properties: Required. [Required] Additional attributes of the entity.
        :paramtype properties: ~azure.mgmt.machinelearningservices.models.InferenceGroupProperties
        :keyword sku: Sku details required for ARM contract for Autoscaling.
        :paramtype sku: ~azure.mgmt.machinelearningservices.models.Sku
        """
        super(InferenceGroup, self).__init__(**kwargs)
        self.identity = kwargs.get('identity', None)
        self.kind = kwargs.get('kind', None)
        self.properties = kwargs['properties']
        self.sku = kwargs.get('sku', None)


class InferenceGroupProperties(PropertiesBase):
    """Inference group configuration.

    Variables are only populated by the server, and will be ignored when sending a request.

    :ivar description: Description of the resource.
    :vartype description: str
    :ivar properties: Property dictionary. Properties can be added, but not removed or altered.
    :vartype properties: list[~azure.mgmt.machinelearningservices.models.StringKeyValuePair]
    :ivar environment_configuration: Gets or sets environment configuration for the inference
     group. Used if PoolType=ScaleUnit.
    :vartype environment_configuration:
     ~azure.mgmt.machinelearningservices.models.GroupEnvironmentConfiguration
    :ivar model_configuration: Gets or sets model configuration for the inference group. Used if
     PoolType=ScaleUnit.
    :vartype model_configuration:
     ~azure.mgmt.machinelearningservices.models.GroupModelConfiguration
    :ivar node_sku_type: Gets or sets compute instance type.
    :vartype node_sku_type: str
    :ivar provisioning_state: Provisioning state for the inference group. Possible values include:
     "Creating", "Deleting", "Succeeded", "Failed", "Updating", "Canceled".
    :vartype provisioning_state: str or
     ~azure.mgmt.machinelearningservices.models.PoolProvisioningState
    :ivar scale_unit_size: Gets or sets Scale Unit size.
    :vartype scale_unit_size: int
    """

    _validation = {
        'provisioning_state': {'readonly': True},
    }

    _attribute_map = {
        'description': {'key': 'description', 'type': 'str'},
        'properties': {'key': 'properties', 'type': '[StringKeyValuePair]'},
        'environment_configuration': {'key': 'environmentConfiguration', 'type': 'GroupEnvironmentConfiguration'},
        'model_configuration': {'key': 'modelConfiguration', 'type': 'GroupModelConfiguration'},
        'node_sku_type': {'key': 'nodeSkuType', 'type': 'str'},
        'provisioning_state': {'key': 'provisioningState', 'type': 'str'},
        'scale_unit_size': {'key': 'scaleUnitSize', 'type': 'int'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword description: Description of the resource.
        :paramtype description: str
        :keyword properties: Property dictionary. Properties can be added, but not removed or altered.
        :paramtype properties: list[~azure.mgmt.machinelearningservices.models.StringKeyValuePair]
        :keyword environment_configuration: Gets or sets environment configuration for the inference
         group. Used if PoolType=ScaleUnit.
        :paramtype environment_configuration:
         ~azure.mgmt.machinelearningservices.models.GroupEnvironmentConfiguration
        :keyword model_configuration: Gets or sets model configuration for the inference group. Used if
         PoolType=ScaleUnit.
        :paramtype model_configuration:
         ~azure.mgmt.machinelearningservices.models.GroupModelConfiguration
        :keyword node_sku_type: Gets or sets compute instance type.
        :paramtype node_sku_type: str
        :keyword scale_unit_size: Gets or sets Scale Unit size.
        :paramtype scale_unit_size: int
        """
        super(InferenceGroupProperties, self).__init__(**kwargs)
        self.environment_configuration = kwargs.get('environment_configuration', None)
        self.model_configuration = kwargs.get('model_configuration', None)
        self.node_sku_type = kwargs.get('node_sku_type', None)
        self.provisioning_state = None
        self.scale_unit_size = kwargs.get('scale_unit_size', None)


class InferenceGroupTrackedResourceArmPaginatedResult(msrest.serialization.Model):
    """A paginated list of InferenceGroup entities.

    :ivar next_link: The link to the next page of InferenceGroup objects. If null, there are no
     additional pages.
    :vartype next_link: str
    :ivar value: An array of objects of type InferenceGroup.
    :vartype value: list[~azure.mgmt.machinelearningservices.models.InferenceGroup]
    """

    _attribute_map = {
        'next_link': {'key': 'nextLink', 'type': 'str'},
        'value': {'key': 'value', 'type': '[InferenceGroup]'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword next_link: The link to the next page of InferenceGroup objects. If null, there are no
         additional pages.
        :paramtype next_link: str
        :keyword value: An array of objects of type InferenceGroup.
        :paramtype value: list[~azure.mgmt.machinelearningservices.models.InferenceGroup]
        """
        super(InferenceGroupTrackedResourceArmPaginatedResult, self).__init__(**kwargs)
        self.next_link = kwargs.get('next_link', None)
        self.value = kwargs.get('value', None)


class InferencePool(TrackedResource):
    """InferencePool.

    Variables are only populated by the server, and will be ignored when sending a request.

    All required parameters must be populated in order to send to Azure.

    :ivar id: Fully qualified resource ID for the resource. Ex -
     /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}.
    :vartype id: str
    :ivar name: The name of the resource.
    :vartype name: str
    :ivar type: The type of the resource. E.g. "Microsoft.Compute/virtualMachines" or
     "Microsoft.Storage/storageAccounts".
    :vartype type: str
    :ivar system_data: Azure Resource Manager metadata containing createdBy and modifiedBy
     information.
    :vartype system_data: ~azure.mgmt.machinelearningservices.models.SystemData
    :ivar tags: A set of tags. Resource tags.
    :vartype tags: dict[str, str]
    :ivar location: Required. The geo-location where the resource lives.
    :vartype location: str
    :ivar identity: Managed service identity (system assigned and/or user assigned identities).
    :vartype identity: ~azure.mgmt.machinelearningservices.models.ManagedServiceIdentity
    :ivar kind: Metadata used by portal/tooling/etc to render different UX experiences for
     resources of the same type.
    :vartype kind: str
    :ivar properties: Required. [Required] Additional attributes of the entity.
    :vartype properties: ~azure.mgmt.machinelearningservices.models.InferencePoolProperties
    :ivar sku: Sku details required for ARM contract for Autoscaling.
    :vartype sku: ~azure.mgmt.machinelearningservices.models.Sku
    """

    _validation = {
        'id': {'readonly': True},
        'name': {'readonly': True},
        'type': {'readonly': True},
        'system_data': {'readonly': True},
        'location': {'required': True},
        'properties': {'required': True},
    }

    _attribute_map = {
        'id': {'key': 'id', 'type': 'str'},
        'name': {'key': 'name', 'type': 'str'},
        'type': {'key': 'type', 'type': 'str'},
        'system_data': {'key': 'systemData', 'type': 'SystemData'},
        'tags': {'key': 'tags', 'type': '{str}'},
        'location': {'key': 'location', 'type': 'str'},
        'identity': {'key': 'identity', 'type': 'ManagedServiceIdentity'},
        'kind': {'key': 'kind', 'type': 'str'},
        'properties': {'key': 'properties', 'type': 'InferencePoolProperties'},
        'sku': {'key': 'sku', 'type': 'Sku'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword tags: A set of tags. Resource tags.
        :paramtype tags: dict[str, str]
        :keyword location: Required. The geo-location where the resource lives.
        :paramtype location: str
        :keyword identity: Managed service identity (system assigned and/or user assigned identities).
        :paramtype identity: ~azure.mgmt.machinelearningservices.models.ManagedServiceIdentity
        :keyword kind: Metadata used by portal/tooling/etc to render different UX experiences for
         resources of the same type.
        :paramtype kind: str
        :keyword properties: Required. [Required] Additional attributes of the entity.
        :paramtype properties: ~azure.mgmt.machinelearningservices.models.InferencePoolProperties
        :keyword sku: Sku details required for ARM contract for Autoscaling.
        :paramtype sku: ~azure.mgmt.machinelearningservices.models.Sku
        """
        super(InferencePool, self).__init__(**kwargs)
        self.identity = kwargs.get('identity', None)
        self.kind = kwargs.get('kind', None)
        self.properties = kwargs['properties']
        self.sku = kwargs.get('sku', None)


class InferencePoolProperties(PropertiesBase):
    """Inference pool configuration.

    Variables are only populated by the server, and will be ignored when sending a request.

    :ivar description: Description of the resource.
    :vartype description: str
    :ivar properties: Property dictionary. Properties can be added, but not removed or altered.
    :vartype properties: list[~azure.mgmt.machinelearningservices.models.StringKeyValuePair]
    :ivar provisioning_state: Provisioning state for the pool. Possible values include: "Creating",
     "Deleting", "Succeeded", "Failed", "Updating", "Canceled".
    :vartype provisioning_state: str or
     ~azure.mgmt.machinelearningservices.models.PoolProvisioningState
    :ivar scale_unit_configuration: Gets or sets ScaleUnitConfiguration for the inference pool.
     Used if PoolType=ScaleUnit.
    :vartype scale_unit_configuration:
     ~azure.mgmt.machinelearningservices.models.ScaleUnitConfiguration
    """

    _validation = {
        'provisioning_state': {'readonly': True},
    }

    _attribute_map = {
        'description': {'key': 'description', 'type': 'str'},
        'properties': {'key': 'properties', 'type': '[StringKeyValuePair]'},
        'provisioning_state': {'key': 'provisioningState', 'type': 'str'},
        'scale_unit_configuration': {'key': 'scaleUnitConfiguration', 'type': 'ScaleUnitConfiguration'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword description: Description of the resource.
        :paramtype description: str
        :keyword properties: Property dictionary. Properties can be added, but not removed or altered.
        :paramtype properties: list[~azure.mgmt.machinelearningservices.models.StringKeyValuePair]
        :keyword scale_unit_configuration: Gets or sets ScaleUnitConfiguration for the inference pool.
         Used if PoolType=ScaleUnit.
        :paramtype scale_unit_configuration:
         ~azure.mgmt.machinelearningservices.models.ScaleUnitConfiguration
        """
        super(InferencePoolProperties, self).__init__(**kwargs)
        self.provisioning_state = None
        self.scale_unit_configuration = kwargs.get('scale_unit_configuration', None)


class InferencePoolTrackedResourceArmPaginatedResult(msrest.serialization.Model):
    """A paginated list of InferencePool entities.

    :ivar next_link: The link to the next page of InferencePool objects. If null, there are no
     additional pages.
    :vartype next_link: str
    :ivar value: An array of objects of type InferencePool.
    :vartype value: list[~azure.mgmt.machinelearningservices.models.InferencePool]
    """

    _attribute_map = {
        'next_link': {'key': 'nextLink', 'type': 'str'},
        'value': {'key': 'value', 'type': '[InferencePool]'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword next_link: The link to the next page of InferencePool objects. If null, there are no
         additional pages.
        :paramtype next_link: str
        :keyword value: An array of objects of type InferencePool.
        :paramtype value: list[~azure.mgmt.machinelearningservices.models.InferencePool]
        """
        super(InferencePoolTrackedResourceArmPaginatedResult, self).__init__(**kwargs)
        self.next_link = kwargs.get('next_link', None)
        self.value = kwargs.get('value', None)


class InstanceTypeSchema(msrest.serialization.Model):
    """Instance type schema.

    :ivar node_selector: Node Selector.
    :vartype node_selector: dict[str, str]
    :ivar resources: Resource requests/limits for this instance type.
    :vartype resources: ~azure.mgmt.machinelearningservices.models.InstanceTypeSchemaResources
    """

    _attribute_map = {
        'node_selector': {'key': 'nodeSelector', 'type': '{str}'},
        'resources': {'key': 'resources', 'type': 'InstanceTypeSchemaResources'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword node_selector: Node Selector.
        :paramtype node_selector: dict[str, str]
        :keyword resources: Resource requests/limits for this instance type.
        :paramtype resources: ~azure.mgmt.machinelearningservices.models.InstanceTypeSchemaResources
        """
        super(InstanceTypeSchema, self).__init__(**kwargs)
        self.node_selector = kwargs.get('node_selector', None)
        self.resources = kwargs.get('resources', None)


class InstanceTypeSchemaResources(msrest.serialization.Model):
    """Resource requests/limits for this instance type.

    :ivar requests: Resource requests for this instance type.
    :vartype requests: dict[str, str]
    :ivar limits: Resource limits for this instance type.
    :vartype limits: dict[str, str]
    """

    _attribute_map = {
        'requests': {'key': 'requests', 'type': '{str}'},
        'limits': {'key': 'limits', 'type': '{str}'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword requests: Resource requests for this instance type.
        :paramtype requests: dict[str, str]
        :keyword limits: Resource limits for this instance type.
        :paramtype limits: dict[str, str]
        """
        super(InstanceTypeSchemaResources, self).__init__(**kwargs)
        self.requests = kwargs.get('requests', None)
        self.limits = kwargs.get('limits', None)


class IPRule(msrest.serialization.Model):
    """Contains an IPv4 address range in CIDR notation, such as '124.56.78.91' (simple IP address) or '124.56.78.0/24' (all addresses that start with 124.56.78). Value could be 'Allow' or  'Deny'.

    :ivar value: An IPv4 address range in CIDR notation, such as '124.56.78.91' (simple IP address)
     or '124.56.78.0/24' (all addresses that start with 124.56.78). Value could be 'Allow' or
     'Deny'.
    :vartype value: str
    """

    _attribute_map = {
        'value': {'key': 'value', 'type': 'str'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword value: An IPv4 address range in CIDR notation, such as '124.56.78.91' (simple IP
         address) or '124.56.78.0/24' (all addresses that start with 124.56.78). Value could be 'Allow'
         or  'Deny'.
        :paramtype value: str
        """
        super(IPRule, self).__init__(**kwargs)
        self.value = kwargs.get('value', None)


class JobBase(ProxyResource):
    """Azure Resource Manager resource envelope.

    Variables are only populated by the server, and will be ignored when sending a request.

    All required parameters must be populated in order to send to Azure.

    :ivar id: Fully qualified resource ID for the resource. Ex -
     /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}.
    :vartype id: str
    :ivar name: The name of the resource.
    :vartype name: str
    :ivar type: The type of the resource. E.g. "Microsoft.Compute/virtualMachines" or
     "Microsoft.Storage/storageAccounts".
    :vartype type: str
    :ivar system_data: Azure Resource Manager metadata containing createdBy and modifiedBy
     information.
    :vartype system_data: ~azure.mgmt.machinelearningservices.models.SystemData
    :ivar properties: Required. [Required] Additional attributes of the entity.
    :vartype properties: ~azure.mgmt.machinelearningservices.models.JobBaseProperties
    """

    _validation = {
        'id': {'readonly': True},
        'name': {'readonly': True},
        'type': {'readonly': True},
        'system_data': {'readonly': True},
        'properties': {'required': True},
    }

    _attribute_map = {
        'id': {'key': 'id', 'type': 'str'},
        'name': {'key': 'name', 'type': 'str'},
        'type': {'key': 'type', 'type': 'str'},
        'system_data': {'key': 'systemData', 'type': 'SystemData'},
        'properties': {'key': 'properties', 'type': 'JobBaseProperties'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword properties: Required. [Required] Additional attributes of the entity.
        :paramtype properties: ~azure.mgmt.machinelearningservices.models.JobBaseProperties
        """
        super(JobBase, self).__init__(**kwargs)
        self.properties = kwargs['properties']


class JobBaseResourceArmPaginatedResult(msrest.serialization.Model):
    """A paginated list of JobBase entities.

    :ivar next_link: The link to the next page of JobBase objects. If null, there are no additional
     pages.
    :vartype next_link: str
    :ivar value: An array of objects of type JobBase.
    :vartype value: list[~azure.mgmt.machinelearningservices.models.JobBase]
    """

    _attribute_map = {
        'next_link': {'key': 'nextLink', 'type': 'str'},
        'value': {'key': 'value', 'type': '[JobBase]'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword next_link: The link to the next page of JobBase objects. If null, there are no
         additional pages.
        :paramtype next_link: str
        :keyword value: An array of objects of type JobBase.
        :paramtype value: list[~azure.mgmt.machinelearningservices.models.JobBase]
        """
        super(JobBaseResourceArmPaginatedResult, self).__init__(**kwargs)
        self.next_link = kwargs.get('next_link', None)
        self.value = kwargs.get('value', None)


class JobResourceConfiguration(ResourceConfiguration):
    """JobResourceConfiguration.

    :ivar instance_count: Optional number of instances or nodes used by the compute target.
    :vartype instance_count: int
    :ivar instance_type: Optional type of VM used as supported by the compute target.
    :vartype instance_type: str
    :ivar properties: Additional properties bag.
    :vartype properties: dict[str, any]
    :ivar docker_args: Extra arguments to pass to the Docker run command. This would override any
     parameters that have already been set by the system, or in this section. This parameter is only
     supported for Azure ML compute types.
    :vartype docker_args: str
    :ivar docker_args_list: Extra arguments to pass to the Docker run command, as a collection.
     This would override any parameters that have already been set by the system, or in this
     section. This parameter is only supported for Azure ML compute types.
    :vartype docker_args_list: list[str]
    :ivar shm_size: Size of the docker container's shared memory block. This should be in the
     format of (number)(unit) where number as to be greater than 0 and the unit can be one of
     b(bytes), k(kilobytes), m(megabytes), or g(gigabytes).
    :vartype shm_size: str
    """

    _validation = {
        'shm_size': {'pattern': r'\d+[bBkKmMgG]'},
    }

    _attribute_map = {
        'instance_count': {'key': 'instanceCount', 'type': 'int'},
        'instance_type': {'key': 'instanceType', 'type': 'str'},
        'properties': {'key': 'properties', 'type': '{object}'},
        'docker_args': {'key': 'dockerArgs', 'type': 'str'},
        'docker_args_list': {'key': 'dockerArgsList', 'type': '[str]'},
        'shm_size': {'key': 'shmSize', 'type': 'str'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword instance_count: Optional number of instances or nodes used by the compute target.
        :paramtype instance_count: int
        :keyword instance_type: Optional type of VM used as supported by the compute target.
        :paramtype instance_type: str
        :keyword properties: Additional properties bag.
        :paramtype properties: dict[str, any]
        :keyword docker_args: Extra arguments to pass to the Docker run command. This would override
         any parameters that have already been set by the system, or in this section. This parameter is
         only supported for Azure ML compute types.
        :paramtype docker_args: str
        :keyword docker_args_list: Extra arguments to pass to the Docker run command, as a collection.
         This would override any parameters that have already been set by the system, or in this
         section. This parameter is only supported for Azure ML compute types.
        :paramtype docker_args_list: list[str]
        :keyword shm_size: Size of the docker container's shared memory block. This should be in the
         format of (number)(unit) where number as to be greater than 0 and the unit can be one of
         b(bytes), k(kilobytes), m(megabytes), or g(gigabytes).
        :paramtype shm_size: str
        """
        super(JobResourceConfiguration, self).__init__(**kwargs)
        self.docker_args = kwargs.get('docker_args', None)
        self.docker_args_list = kwargs.get('docker_args_list', None)
        self.shm_size = kwargs.get('shm_size', "2g")


class JobResources(msrest.serialization.Model):
    """JobResources.

    :ivar instance_types: List of instance types to choose from.
    :vartype instance_types: list[str]
    """

    _attribute_map = {
        'instance_types': {'key': 'instanceTypes', 'type': '[str]'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword instance_types: List of instance types to choose from.
        :paramtype instance_types: list[str]
        """
        super(JobResources, self).__init__(**kwargs)
        self.instance_types = kwargs.get('instance_types', None)


class JobScheduleAction(ScheduleActionBase):
    """JobScheduleAction.

    All required parameters must be populated in order to send to Azure.

    :ivar action_type: Required. [Required] Specifies the action type of the schedule.Constant
     filled by server. Possible values include: "CreateJob", "InvokeBatchEndpoint", "CreateMonitor".
    :vartype action_type: str or ~azure.mgmt.machinelearningservices.models.ScheduleActionType
    :ivar job_definition: Required. [Required] Defines Schedule action definition details.
    :vartype job_definition: ~azure.mgmt.machinelearningservices.models.JobBaseProperties
    """

    _validation = {
        'action_type': {'required': True},
        'job_definition': {'required': True},
    }

    _attribute_map = {
        'action_type': {'key': 'actionType', 'type': 'str'},
        'job_definition': {'key': 'jobDefinition', 'type': 'JobBaseProperties'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword job_definition: Required. [Required] Defines Schedule action definition details.
        :paramtype job_definition: ~azure.mgmt.machinelearningservices.models.JobBaseProperties
        """
        super(JobScheduleAction, self).__init__(**kwargs)
        self.action_type = 'CreateJob'  # type: str
        self.job_definition = kwargs['job_definition']


class JobService(msrest.serialization.Model):
    """Job endpoint definition.

    Variables are only populated by the server, and will be ignored when sending a request.

    :ivar endpoint: Url for endpoint.
    :vartype endpoint: str
    :ivar error_message: Any error in the service.
    :vartype error_message: str
    :ivar job_service_type: Endpoint type.
    :vartype job_service_type: str
    :ivar nodes: Nodes that user would like to start the service on.
     If Nodes is not set or set to null, the service will only be started on leader node.
    :vartype nodes: ~azure.mgmt.machinelearningservices.models.Nodes
    :ivar port: Port for endpoint.
    :vartype port: int
    :ivar properties: Additional properties to set on the endpoint.
    :vartype properties: dict[str, str]
    :ivar status: Status of endpoint.
    :vartype status: str
    """

    _validation = {
        'error_message': {'readonly': True},
        'status': {'readonly': True},
    }

    _attribute_map = {
        'endpoint': {'key': 'endpoint', 'type': 'str'},
        'error_message': {'key': 'errorMessage', 'type': 'str'},
        'job_service_type': {'key': 'jobServiceType', 'type': 'str'},
        'nodes': {'key': 'nodes', 'type': 'Nodes'},
        'port': {'key': 'port', 'type': 'int'},
        'properties': {'key': 'properties', 'type': '{str}'},
        'status': {'key': 'status', 'type': 'str'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword endpoint: Url for endpoint.
        :paramtype endpoint: str
        :keyword job_service_type: Endpoint type.
        :paramtype job_service_type: str
        :keyword nodes: Nodes that user would like to start the service on.
         If Nodes is not set or set to null, the service will only be started on leader node.
        :paramtype nodes: ~azure.mgmt.machinelearningservices.models.Nodes
        :keyword port: Port for endpoint.
        :paramtype port: int
        :keyword properties: Additional properties to set on the endpoint.
        :paramtype properties: dict[str, str]
        """
        super(JobService, self).__init__(**kwargs)
        self.endpoint = kwargs.get('endpoint', None)
        self.error_message = None
        self.job_service_type = kwargs.get('job_service_type', None)
        self.nodes = kwargs.get('nodes', None)
        self.port = kwargs.get('port', None)
        self.properties = kwargs.get('properties', None)
        self.status = None


class JupyterKernelConfig(msrest.serialization.Model):
    """Jupyter kernel configuration.

    :ivar argv: Argument to the the runtime.
    :vartype argv: list[str]
    :ivar display_name: Display name of the kernel.
    :vartype display_name: str
    :ivar language: Language of the kernel [Example value: python].
    :vartype language: str
    """

    _attribute_map = {
        'argv': {'key': 'argv', 'type': '[str]'},
        'display_name': {'key': 'displayName', 'type': 'str'},
        'language': {'key': 'language', 'type': 'str'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword argv: Argument to the the runtime.
        :paramtype argv: list[str]
        :keyword display_name: Display name of the kernel.
        :paramtype display_name: str
        :keyword language: Language of the kernel [Example value: python].
        :paramtype language: str
        """
        super(JupyterKernelConfig, self).__init__(**kwargs)
        self.argv = kwargs.get('argv', None)
        self.display_name = kwargs.get('display_name', None)
        self.language = kwargs.get('language', None)


class KeyVaultProperties(msrest.serialization.Model):
    """Customer Key vault properties.

    All required parameters must be populated in order to send to Azure.

    :ivar identity_client_id: Currently, we support only SystemAssigned MSI.
     We need this when we support UserAssignedIdentities.
    :vartype identity_client_id: str
    :ivar key_identifier: Required. KeyVault key identifier to encrypt the data.
    :vartype key_identifier: str
    :ivar key_vault_arm_id: Required. KeyVault Arm Id that contains the data encryption key.
    :vartype key_vault_arm_id: str
    """

    _validation = {
        'key_identifier': {'required': True, 'min_length': 1, 'pattern': r'[a-zA-Z0-9_]'},
        'key_vault_arm_id': {'required': True, 'min_length': 1, 'pattern': r'[a-zA-Z0-9_]'},
    }

    _attribute_map = {
        'identity_client_id': {'key': 'identityClientId', 'type': 'str'},
        'key_identifier': {'key': 'keyIdentifier', 'type': 'str'},
        'key_vault_arm_id': {'key': 'keyVaultArmId', 'type': 'str'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword identity_client_id: Currently, we support only SystemAssigned MSI.
         We need this when we support UserAssignedIdentities.
        :paramtype identity_client_id: str
        :keyword key_identifier: Required. KeyVault key identifier to encrypt the data.
        :paramtype key_identifier: str
        :keyword key_vault_arm_id: Required. KeyVault Arm Id that contains the data encryption key.
        :paramtype key_vault_arm_id: str
        """
        super(KeyVaultProperties, self).__init__(**kwargs)
        self.identity_client_id = kwargs.get('identity_client_id', None)
        self.key_identifier = kwargs['key_identifier']
        self.key_vault_arm_id = kwargs['key_vault_arm_id']


class KubernetesSchema(msrest.serialization.Model):
    """Kubernetes Compute Schema.

    :ivar properties: Properties of Kubernetes.
    :vartype properties: ~azure.mgmt.machinelearningservices.models.KubernetesProperties
    """

    _attribute_map = {
        'properties': {'key': 'properties', 'type': 'KubernetesProperties'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword properties: Properties of Kubernetes.
        :paramtype properties: ~azure.mgmt.machinelearningservices.models.KubernetesProperties
        """
        super(KubernetesSchema, self).__init__(**kwargs)
        self.properties = kwargs.get('properties', None)


class Kubernetes(Compute, KubernetesSchema):
    """A Machine Learning compute based on Kubernetes Compute.

    Variables are only populated by the server, and will be ignored when sending a request.

    All required parameters must be populated in order to send to Azure.

    :ivar properties: Properties of Kubernetes.
    :vartype properties: ~azure.mgmt.machinelearningservices.models.KubernetesProperties
    :ivar compute_type: Required. The type of compute.Constant filled by server. Possible values
     include: "AKS", "Kubernetes", "AmlCompute", "ComputeInstance", "DataFactory", "VirtualMachine",
     "HDInsight", "Databricks", "DataLakeAnalytics", "SynapseSpark".
    :vartype compute_type: str or ~azure.mgmt.machinelearningservices.models.ComputeType
    :ivar compute_location: Location for the underlying compute.
    :vartype compute_location: str
    :ivar provisioning_state: The provision state of the cluster. Valid values are Unknown,
     Updating, Provisioning, Succeeded, and Failed. Possible values include: "Unknown", "Updating",
     "Creating", "Deleting", "Succeeded", "Failed", "Canceled".
    :vartype provisioning_state: str or
     ~azure.mgmt.machinelearningservices.models.ProvisioningState
    :ivar description: The description of the Machine Learning compute.
    :vartype description: str
    :ivar created_on: The time at which the compute was created.
    :vartype created_on: ~datetime.datetime
    :ivar modified_on: The time at which the compute was last modified.
    :vartype modified_on: ~datetime.datetime
    :ivar resource_id: ARM resource id of the underlying compute.
    :vartype resource_id: str
    :ivar provisioning_errors: Errors during provisioning.
    :vartype provisioning_errors: list[~azure.mgmt.machinelearningservices.models.ErrorResponse]
    :ivar is_attached_compute: Indicating whether the compute was provisioned by user and brought
     from outside if true, or machine learning service provisioned it if false.
    :vartype is_attached_compute: bool
    :ivar disable_local_auth: Opt-out of local authentication and ensure customers can use only MSI
     and AAD exclusively for authentication.
    :vartype disable_local_auth: bool
    """

    _validation = {
        'compute_type': {'required': True},
        'provisioning_state': {'readonly': True},
        'created_on': {'readonly': True},
        'modified_on': {'readonly': True},
        'provisioning_errors': {'readonly': True},
        'is_attached_compute': {'readonly': True},
    }

    _attribute_map = {
        'properties': {'key': 'properties', 'type': 'KubernetesProperties'},
        'compute_type': {'key': 'computeType', 'type': 'str'},
        'compute_location': {'key': 'computeLocation', 'type': 'str'},
        'provisioning_state': {'key': 'provisioningState', 'type': 'str'},
        'description': {'key': 'description', 'type': 'str'},
        'created_on': {'key': 'createdOn', 'type': 'iso-8601'},
        'modified_on': {'key': 'modifiedOn', 'type': 'iso-8601'},
        'resource_id': {'key': 'resourceId', 'type': 'str'},
        'provisioning_errors': {'key': 'provisioningErrors', 'type': '[ErrorResponse]'},
        'is_attached_compute': {'key': 'isAttachedCompute', 'type': 'bool'},
        'disable_local_auth': {'key': 'disableLocalAuth', 'type': 'bool'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword properties: Properties of Kubernetes.
        :paramtype properties: ~azure.mgmt.machinelearningservices.models.KubernetesProperties
        :keyword compute_location: Location for the underlying compute.
        :paramtype compute_location: str
        :keyword description: The description of the Machine Learning compute.
        :paramtype description: str
        :keyword resource_id: ARM resource id of the underlying compute.
        :paramtype resource_id: str
        :keyword disable_local_auth: Opt-out of local authentication and ensure customers can use only
         MSI and AAD exclusively for authentication.
        :paramtype disable_local_auth: bool
        """
        super(Kubernetes, self).__init__(**kwargs)
        self.properties = kwargs.get('properties', None)
        self.compute_type = 'Kubernetes'  # type: str
        self.compute_location = kwargs.get('compute_location', None)
        self.provisioning_state = None
        self.description = kwargs.get('description', None)
        self.created_on = None
        self.modified_on = None
        self.resource_id = kwargs.get('resource_id', None)
        self.provisioning_errors = None
        self.is_attached_compute = None
        self.disable_local_auth = kwargs.get('disable_local_auth', None)


class OnlineDeploymentProperties(EndpointDeploymentPropertiesBase):
    """OnlineDeploymentProperties.

    You probably want to use the sub-classes and not this class directly. Known
    sub-classes are: KubernetesOnlineDeployment, ManagedOnlineDeployment.

    Variables are only populated by the server, and will be ignored when sending a request.

    All required parameters must be populated in order to send to Azure.

    :ivar code_configuration: Code configuration for the endpoint deployment.
    :vartype code_configuration: ~azure.mgmt.machinelearningservices.models.CodeConfiguration
    :ivar description: Description of the endpoint deployment.
    :vartype description: str
    :ivar environment_id: ARM resource ID or AssetId of the environment specification for the
     endpoint deployment.
    :vartype environment_id: str
    :ivar environment_variables: Environment variables configuration for the deployment.
    :vartype environment_variables: dict[str, str]
    :ivar properties: Property dictionary. Properties can be added, but not removed or altered.
    :vartype properties: dict[str, str]
    :ivar app_insights_enabled: If true, enables Application Insights logging.
    :vartype app_insights_enabled: bool
    :ivar data_collector: The mdc configuration, we disable mdc when it's null.
    :vartype data_collector: ~azure.mgmt.machinelearningservices.models.DataCollector
    :ivar egress_public_network_access: If Enabled, allow egress public network access. If
     Disabled, this will create secure egress. Default: Enabled. Possible values include: "Enabled",
     "Disabled".
    :vartype egress_public_network_access: str or
     ~azure.mgmt.machinelearningservices.models.EgressPublicNetworkAccessType
    :ivar endpoint_compute_type: Required. [Required] The compute type of the endpoint.Constant
     filled by server. Possible values include: "Managed", "Kubernetes", "AzureMLCompute".
    :vartype endpoint_compute_type: str or
     ~azure.mgmt.machinelearningservices.models.EndpointComputeType
    :ivar instance_type: Compute instance type. Default: Standard_F4s_v2.
    :vartype instance_type: str
    :ivar liveness_probe: Liveness probe monitors the health of the container regularly.
    :vartype liveness_probe: ~azure.mgmt.machinelearningservices.models.ProbeSettings
    :ivar model: The URI path to the model.
    :vartype model: str
    :ivar model_mount_path: The path to mount the model in custom container.
    :vartype model_mount_path: str
    :ivar provisioning_state: Provisioning state for the endpoint deployment. Possible values
     include: "Creating", "Deleting", "Scaling", "Updating", "Succeeded", "Failed", "Canceled".
    :vartype provisioning_state: str or
     ~azure.mgmt.machinelearningservices.models.DeploymentProvisioningState
    :ivar readiness_probe: Readiness probe validates if the container is ready to serve traffic.
     The properties and defaults are the same as liveness probe.
    :vartype readiness_probe: ~azure.mgmt.machinelearningservices.models.ProbeSettings
    :ivar request_settings: Request settings for the deployment.
    :vartype request_settings: ~azure.mgmt.machinelearningservices.models.OnlineRequestSettings
    :ivar scale_settings: Scale settings for the deployment.
     If it is null or not provided,
     it defaults to TargetUtilizationScaleSettings for KubernetesOnlineDeployment
     and to DefaultScaleSettings for ManagedOnlineDeployment.
    :vartype scale_settings: ~azure.mgmt.machinelearningservices.models.OnlineScaleSettings
    """

    _validation = {
        'endpoint_compute_type': {'required': True},
        'provisioning_state': {'readonly': True},
    }

    _attribute_map = {
        'code_configuration': {'key': 'codeConfiguration', 'type': 'CodeConfiguration'},
        'description': {'key': 'description', 'type': 'str'},
        'environment_id': {'key': 'environmentId', 'type': 'str'},
        'environment_variables': {'key': 'environmentVariables', 'type': '{str}'},
        'properties': {'key': 'properties', 'type': '{str}'},
        'app_insights_enabled': {'key': 'appInsightsEnabled', 'type': 'bool'},
        'data_collector': {'key': 'dataCollector', 'type': 'DataCollector'},
        'egress_public_network_access': {'key': 'egressPublicNetworkAccess', 'type': 'str'},
        'endpoint_compute_type': {'key': 'endpointComputeType', 'type': 'str'},
        'instance_type': {'key': 'instanceType', 'type': 'str'},
        'liveness_probe': {'key': 'livenessProbe', 'type': 'ProbeSettings'},
        'model': {'key': 'model', 'type': 'str'},
        'model_mount_path': {'key': 'modelMountPath', 'type': 'str'},
        'provisioning_state': {'key': 'provisioningState', 'type': 'str'},
        'readiness_probe': {'key': 'readinessProbe', 'type': 'ProbeSettings'},
        'request_settings': {'key': 'requestSettings', 'type': 'OnlineRequestSettings'},
        'scale_settings': {'key': 'scaleSettings', 'type': 'OnlineScaleSettings'},
    }

    _subtype_map = {
        'endpoint_compute_type': {'Kubernetes': 'KubernetesOnlineDeployment', 'Managed': 'ManagedOnlineDeployment'}
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword code_configuration: Code configuration for the endpoint deployment.
        :paramtype code_configuration: ~azure.mgmt.machinelearningservices.models.CodeConfiguration
        :keyword description: Description of the endpoint deployment.
        :paramtype description: str
        :keyword environment_id: ARM resource ID or AssetId of the environment specification for the
         endpoint deployment.
        :paramtype environment_id: str
        :keyword environment_variables: Environment variables configuration for the deployment.
        :paramtype environment_variables: dict[str, str]
        :keyword properties: Property dictionary. Properties can be added, but not removed or altered.
        :paramtype properties: dict[str, str]
        :keyword app_insights_enabled: If true, enables Application Insights logging.
        :paramtype app_insights_enabled: bool
        :keyword data_collector: The mdc configuration, we disable mdc when it's null.
        :paramtype data_collector: ~azure.mgmt.machinelearningservices.models.DataCollector
        :keyword egress_public_network_access: If Enabled, allow egress public network access. If
         Disabled, this will create secure egress. Default: Enabled. Possible values include: "Enabled",
         "Disabled".
        :paramtype egress_public_network_access: str or
         ~azure.mgmt.machinelearningservices.models.EgressPublicNetworkAccessType
        :keyword instance_type: Compute instance type. Default: Standard_F4s_v2.
        :paramtype instance_type: str
        :keyword liveness_probe: Liveness probe monitors the health of the container regularly.
        :paramtype liveness_probe: ~azure.mgmt.machinelearningservices.models.ProbeSettings
        :keyword model: The URI path to the model.
        :paramtype model: str
        :keyword model_mount_path: The path to mount the model in custom container.
        :paramtype model_mount_path: str
        :keyword readiness_probe: Readiness probe validates if the container is ready to serve traffic.
         The properties and defaults are the same as liveness probe.
        :paramtype readiness_probe: ~azure.mgmt.machinelearningservices.models.ProbeSettings
        :keyword request_settings: Request settings for the deployment.
        :paramtype request_settings: ~azure.mgmt.machinelearningservices.models.OnlineRequestSettings
        :keyword scale_settings: Scale settings for the deployment.
         If it is null or not provided,
         it defaults to TargetUtilizationScaleSettings for KubernetesOnlineDeployment
         and to DefaultScaleSettings for ManagedOnlineDeployment.
        :paramtype scale_settings: ~azure.mgmt.machinelearningservices.models.OnlineScaleSettings
        """
        super(OnlineDeploymentProperties, self).__init__(**kwargs)
        self.app_insights_enabled = kwargs.get('app_insights_enabled', False)
        self.data_collector = kwargs.get('data_collector', None)
        self.egress_public_network_access = kwargs.get('egress_public_network_access', None)
        self.endpoint_compute_type = 'OnlineDeploymentProperties'  # type: str
        self.instance_type = kwargs.get('instance_type', "Standard_F4s_v2")
        self.liveness_probe = kwargs.get('liveness_probe', None)
        self.model = kwargs.get('model', None)
        self.model_mount_path = kwargs.get('model_mount_path', None)
        self.provisioning_state = None
        self.readiness_probe = kwargs.get('readiness_probe', None)
        self.request_settings = kwargs.get('request_settings', None)
        self.scale_settings = kwargs.get('scale_settings', None)


class KubernetesOnlineDeployment(OnlineDeploymentProperties):
    """Properties specific to a KubernetesOnlineDeployment.

    Variables are only populated by the server, and will be ignored when sending a request.

    All required parameters must be populated in order to send to Azure.

    :ivar code_configuration: Code configuration for the endpoint deployment.
    :vartype code_configuration: ~azure.mgmt.machinelearningservices.models.CodeConfiguration
    :ivar description: Description of the endpoint deployment.
    :vartype description: str
    :ivar environment_id: ARM resource ID or AssetId of the environment specification for the
     endpoint deployment.
    :vartype environment_id: str
    :ivar environment_variables: Environment variables configuration for the deployment.
    :vartype environment_variables: dict[str, str]
    :ivar properties: Property dictionary. Properties can be added, but not removed or altered.
    :vartype properties: dict[str, str]
    :ivar app_insights_enabled: If true, enables Application Insights logging.
    :vartype app_insights_enabled: bool
    :ivar data_collector: The mdc configuration, we disable mdc when it's null.
    :vartype data_collector: ~azure.mgmt.machinelearningservices.models.DataCollector
    :ivar egress_public_network_access: If Enabled, allow egress public network access. If
     Disabled, this will create secure egress. Default: Enabled. Possible values include: "Enabled",
     "Disabled".
    :vartype egress_public_network_access: str or
     ~azure.mgmt.machinelearningservices.models.EgressPublicNetworkAccessType
    :ivar endpoint_compute_type: Required. [Required] The compute type of the endpoint.Constant
     filled by server. Possible values include: "Managed", "Kubernetes", "AzureMLCompute".
    :vartype endpoint_compute_type: str or
     ~azure.mgmt.machinelearningservices.models.EndpointComputeType
    :ivar instance_type: Compute instance type. Default: Standard_F4s_v2.
    :vartype instance_type: str
    :ivar liveness_probe: Liveness probe monitors the health of the container regularly.
    :vartype liveness_probe: ~azure.mgmt.machinelearningservices.models.ProbeSettings
    :ivar model: The URI path to the model.
    :vartype model: str
    :ivar model_mount_path: The path to mount the model in custom container.
    :vartype model_mount_path: str
    :ivar provisioning_state: Provisioning state for the endpoint deployment. Possible values
     include: "Creating", "Deleting", "Scaling", "Updating", "Succeeded", "Failed", "Canceled".
    :vartype provisioning_state: str or
     ~azure.mgmt.machinelearningservices.models.DeploymentProvisioningState
    :ivar readiness_probe: Readiness probe validates if the container is ready to serve traffic.
     The properties and defaults are the same as liveness probe.
    :vartype readiness_probe: ~azure.mgmt.machinelearningservices.models.ProbeSettings
    :ivar request_settings: Request settings for the deployment.
    :vartype request_settings: ~azure.mgmt.machinelearningservices.models.OnlineRequestSettings
    :ivar scale_settings: Scale settings for the deployment.
     If it is null or not provided,
     it defaults to TargetUtilizationScaleSettings for KubernetesOnlineDeployment
     and to DefaultScaleSettings for ManagedOnlineDeployment.
    :vartype scale_settings: ~azure.mgmt.machinelearningservices.models.OnlineScaleSettings
    :ivar container_resource_requirements: The resource requirements for the container (cpu and
     memory).
    :vartype container_resource_requirements:
     ~azure.mgmt.machinelearningservices.models.ContainerResourceRequirements
    """

    _validation = {
        'endpoint_compute_type': {'required': True},
        'provisioning_state': {'readonly': True},
    }

    _attribute_map = {
        'code_configuration': {'key': 'codeConfiguration', 'type': 'CodeConfiguration'},
        'description': {'key': 'description', 'type': 'str'},
        'environment_id': {'key': 'environmentId', 'type': 'str'},
        'environment_variables': {'key': 'environmentVariables', 'type': '{str}'},
        'properties': {'key': 'properties', 'type': '{str}'},
        'app_insights_enabled': {'key': 'appInsightsEnabled', 'type': 'bool'},
        'data_collector': {'key': 'dataCollector', 'type': 'DataCollector'},
        'egress_public_network_access': {'key': 'egressPublicNetworkAccess', 'type': 'str'},
        'endpoint_compute_type': {'key': 'endpointComputeType', 'type': 'str'},
        'instance_type': {'key': 'instanceType', 'type': 'str'},
        'liveness_probe': {'key': 'livenessProbe', 'type': 'ProbeSettings'},
        'model': {'key': 'model', 'type': 'str'},
        'model_mount_path': {'key': 'modelMountPath', 'type': 'str'},
        'provisioning_state': {'key': 'provisioningState', 'type': 'str'},
        'readiness_probe': {'key': 'readinessProbe', 'type': 'ProbeSettings'},
        'request_settings': {'key': 'requestSettings', 'type': 'OnlineRequestSettings'},
        'scale_settings': {'key': 'scaleSettings', 'type': 'OnlineScaleSettings'},
        'container_resource_requirements': {'key': 'containerResourceRequirements', 'type': 'ContainerResourceRequirements'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword code_configuration: Code configuration for the endpoint deployment.
        :paramtype code_configuration: ~azure.mgmt.machinelearningservices.models.CodeConfiguration
        :keyword description: Description of the endpoint deployment.
        :paramtype description: str
        :keyword environment_id: ARM resource ID or AssetId of the environment specification for the
         endpoint deployment.
        :paramtype environment_id: str
        :keyword environment_variables: Environment variables configuration for the deployment.
        :paramtype environment_variables: dict[str, str]
        :keyword properties: Property dictionary. Properties can be added, but not removed or altered.
        :paramtype properties: dict[str, str]
        :keyword app_insights_enabled: If true, enables Application Insights logging.
        :paramtype app_insights_enabled: bool
        :keyword data_collector: The mdc configuration, we disable mdc when it's null.
        :paramtype data_collector: ~azure.mgmt.machinelearningservices.models.DataCollector
        :keyword egress_public_network_access: If Enabled, allow egress public network access. If
         Disabled, this will create secure egress. Default: Enabled. Possible values include: "Enabled",
         "Disabled".
        :paramtype egress_public_network_access: str or
         ~azure.mgmt.machinelearningservices.models.EgressPublicNetworkAccessType
        :keyword instance_type: Compute instance type. Default: Standard_F4s_v2.
        :paramtype instance_type: str
        :keyword liveness_probe: Liveness probe monitors the health of the container regularly.
        :paramtype liveness_probe: ~azure.mgmt.machinelearningservices.models.ProbeSettings
        :keyword model: The URI path to the model.
        :paramtype model: str
        :keyword model_mount_path: The path to mount the model in custom container.
        :paramtype model_mount_path: str
        :keyword readiness_probe: Readiness probe validates if the container is ready to serve traffic.
         The properties and defaults are the same as liveness probe.
        :paramtype readiness_probe: ~azure.mgmt.machinelearningservices.models.ProbeSettings
        :keyword request_settings: Request settings for the deployment.
        :paramtype request_settings: ~azure.mgmt.machinelearningservices.models.OnlineRequestSettings
        :keyword scale_settings: Scale settings for the deployment.
         If it is null or not provided,
         it defaults to TargetUtilizationScaleSettings for KubernetesOnlineDeployment
         and to DefaultScaleSettings for ManagedOnlineDeployment.
        :paramtype scale_settings: ~azure.mgmt.machinelearningservices.models.OnlineScaleSettings
        :keyword container_resource_requirements: The resource requirements for the container (cpu and
         memory).
        :paramtype container_resource_requirements:
         ~azure.mgmt.machinelearningservices.models.ContainerResourceRequirements
        """
        super(KubernetesOnlineDeployment, self).__init__(**kwargs)
        self.endpoint_compute_type = 'Kubernetes'  # type: str
        self.container_resource_requirements = kwargs.get('container_resource_requirements', None)


class KubernetesProperties(msrest.serialization.Model):
    """Kubernetes properties.

    :ivar relay_connection_string: Relay connection string.
    :vartype relay_connection_string: str
    :ivar service_bus_connection_string: ServiceBus connection string.
    :vartype service_bus_connection_string: str
    :ivar extension_principal_id: Extension principal-id.
    :vartype extension_principal_id: str
    :ivar extension_instance_release_train: Extension instance release train.
    :vartype extension_instance_release_train: str
    :ivar vc_name: VC name.
    :vartype vc_name: str
    :ivar namespace: Compute namespace.
    :vartype namespace: str
    :ivar default_instance_type: Default instance type.
    :vartype default_instance_type: str
    :ivar instance_types: Instance Type Schema.
    :vartype instance_types: dict[str,
     ~azure.mgmt.machinelearningservices.models.InstanceTypeSchema]
    """

    _attribute_map = {
        'relay_connection_string': {'key': 'relayConnectionString', 'type': 'str'},
        'service_bus_connection_string': {'key': 'serviceBusConnectionString', 'type': 'str'},
        'extension_principal_id': {'key': 'extensionPrincipalId', 'type': 'str'},
        'extension_instance_release_train': {'key': 'extensionInstanceReleaseTrain', 'type': 'str'},
        'vc_name': {'key': 'vcName', 'type': 'str'},
        'namespace': {'key': 'namespace', 'type': 'str'},
        'default_instance_type': {'key': 'defaultInstanceType', 'type': 'str'},
        'instance_types': {'key': 'instanceTypes', 'type': '{InstanceTypeSchema}'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword relay_connection_string: Relay connection string.
        :paramtype relay_connection_string: str
        :keyword service_bus_connection_string: ServiceBus connection string.
        :paramtype service_bus_connection_string: str
        :keyword extension_principal_id: Extension principal-id.
        :paramtype extension_principal_id: str
        :keyword extension_instance_release_train: Extension instance release train.
        :paramtype extension_instance_release_train: str
        :keyword vc_name: VC name.
        :paramtype vc_name: str
        :keyword namespace: Compute namespace.
        :paramtype namespace: str
        :keyword default_instance_type: Default instance type.
        :paramtype default_instance_type: str
        :keyword instance_types: Instance Type Schema.
        :paramtype instance_types: dict[str,
         ~azure.mgmt.machinelearningservices.models.InstanceTypeSchema]
        """
        super(KubernetesProperties, self).__init__(**kwargs)
        self.relay_connection_string = kwargs.get('relay_connection_string', None)
        self.service_bus_connection_string = kwargs.get('service_bus_connection_string', None)
        self.extension_principal_id = kwargs.get('extension_principal_id', None)
        self.extension_instance_release_train = kwargs.get('extension_instance_release_train', None)
        self.vc_name = kwargs.get('vc_name', None)
        self.namespace = kwargs.get('namespace', "default")
        self.default_instance_type = kwargs.get('default_instance_type', None)
        self.instance_types = kwargs.get('instance_types', None)


class LabelGeneration(DataGenerationVertical):
    """LabelGeneration.

    All required parameters must be populated in order to send to Azure.

    :ivar data_generation_task_type: Required. [Required] DataGeneration Task type. Possible values
     include: "Conversation", "Math", "Nli", "NluQa", "Summarization".
    :vartype data_generation_task_type: str or
     ~azure.mgmt.machinelearningservices.models.DataGenerationTaskType
    :ivar data_generation_type: Required. [Required] Enum to determine the type of Data
     Generation.Constant filled by server. Possible values include: "LabelGeneration",
     "DataGeneration".
    :vartype data_generation_type: str or
     ~azure.mgmt.machinelearningservices.models.DataGenerationType
    :ivar prompt_settings: Prompt Settings.
    :vartype prompt_settings: ~azure.mgmt.machinelearningservices.models.PromptSettings
    :ivar teacher_model_endpoint: Required. [Required] Teacher Model Endpoint Details.
    :vartype teacher_model_endpoint:
     ~azure.mgmt.machinelearningservices.models.TeacherModelEndpoint
    :ivar teacher_model_settings:
    :vartype teacher_model_settings:
     ~azure.mgmt.machinelearningservices.models.TeacherModelSettings
    :ivar training_data: Training data for fine tuning.
    :vartype training_data: ~azure.mgmt.machinelearningservices.models.JobInput
    :ivar validation_data: Validation data for fine tuning.
    :vartype validation_data: ~azure.mgmt.machinelearningservices.models.JobInput
    """

    _validation = {
        'data_generation_task_type': {'required': True},
        'data_generation_type': {'required': True},
        'teacher_model_endpoint': {'required': True},
    }

    _attribute_map = {
        'data_generation_task_type': {'key': 'dataGenerationTaskType', 'type': 'str'},
        'data_generation_type': {'key': 'dataGenerationType', 'type': 'str'},
        'prompt_settings': {'key': 'promptSettings', 'type': 'PromptSettings'},
        'teacher_model_endpoint': {'key': 'teacherModelEndpoint', 'type': 'TeacherModelEndpoint'},
        'teacher_model_settings': {'key': 'teacherModelSettings', 'type': 'TeacherModelSettings'},
        'training_data': {'key': 'trainingData', 'type': 'JobInput'},
        'validation_data': {'key': 'validationData', 'type': 'JobInput'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword data_generation_task_type: Required. [Required] DataGeneration Task type. Possible
         values include: "Conversation", "Math", "Nli", "NluQa", "Summarization".
        :paramtype data_generation_task_type: str or
         ~azure.mgmt.machinelearningservices.models.DataGenerationTaskType
        :keyword prompt_settings: Prompt Settings.
        :paramtype prompt_settings: ~azure.mgmt.machinelearningservices.models.PromptSettings
        :keyword teacher_model_endpoint: Required. [Required] Teacher Model Endpoint Details.
        :paramtype teacher_model_endpoint:
         ~azure.mgmt.machinelearningservices.models.TeacherModelEndpoint
        :keyword teacher_model_settings:
        :paramtype teacher_model_settings:
         ~azure.mgmt.machinelearningservices.models.TeacherModelSettings
        :keyword training_data: Training data for fine tuning.
        :paramtype training_data: ~azure.mgmt.machinelearningservices.models.JobInput
        :keyword validation_data: Validation data for fine tuning.
        :paramtype validation_data: ~azure.mgmt.machinelearningservices.models.JobInput
        """
        super(LabelGeneration, self).__init__(**kwargs)
        self.data_generation_type = 'LabelGeneration'  # type: str
        self.training_data = kwargs.get('training_data', None)
        self.validation_data = kwargs.get('validation_data', None)


class OneLakeArtifact(msrest.serialization.Model):
    """OneLake artifact (data source) configuration.

    You probably want to use the sub-classes and not this class directly. Known
    sub-classes are: LakeHouseArtifact.

    All required parameters must be populated in order to send to Azure.

    :ivar artifact_name: Required. [Required] OneLake artifact name.
    :vartype artifact_name: str
    :ivar artifact_type: Required. [Required] OneLake artifact type.Constant filled by server.
     Possible values include: "LakeHouse".
    :vartype artifact_type: str or ~azure.mgmt.machinelearningservices.models.OneLakeArtifactType
    """

    _validation = {
        'artifact_name': {'required': True, 'min_length': 1, 'pattern': r'[a-zA-Z0-9_]'},
        'artifact_type': {'required': True},
    }

    _attribute_map = {
        'artifact_name': {'key': 'artifactName', 'type': 'str'},
        'artifact_type': {'key': 'artifactType', 'type': 'str'},
    }

    _subtype_map = {
        'artifact_type': {'LakeHouse': 'LakeHouseArtifact'}
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword artifact_name: Required. [Required] OneLake artifact name.
        :paramtype artifact_name: str
        """
        super(OneLakeArtifact, self).__init__(**kwargs)
        self.artifact_name = kwargs['artifact_name']
        self.artifact_type = None  # type: Optional[str]


class LakeHouseArtifact(OneLakeArtifact):
    """LakeHouseArtifact.

    All required parameters must be populated in order to send to Azure.

    :ivar artifact_name: Required. [Required] OneLake artifact name.
    :vartype artifact_name: str
    :ivar artifact_type: Required. [Required] OneLake artifact type.Constant filled by server.
     Possible values include: "LakeHouse".
    :vartype artifact_type: str or ~azure.mgmt.machinelearningservices.models.OneLakeArtifactType
    """

    _validation = {
        'artifact_name': {'required': True, 'min_length': 1, 'pattern': r'[a-zA-Z0-9_]'},
        'artifact_type': {'required': True},
    }

    _attribute_map = {
        'artifact_name': {'key': 'artifactName', 'type': 'str'},
        'artifact_type': {'key': 'artifactType', 'type': 'str'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword artifact_name: Required. [Required] OneLake artifact name.
        :paramtype artifact_name: str
        """
        super(LakeHouseArtifact, self).__init__(**kwargs)
        self.artifact_type = 'LakeHouse'  # type: str


class ListAmlUserFeatureResult(msrest.serialization.Model):
    """The List Aml user feature operation response.

    Variables are only populated by the server, and will be ignored when sending a request.

    :ivar value: The list of AML user facing features.
    :vartype value: list[~azure.mgmt.machinelearningservices.models.AmlUserFeature]
    :ivar next_link: The URI to fetch the next page of AML user features information. Call
     ListNext() with this to fetch the next page of AML user features information.
    :vartype next_link: str
    """

    _validation = {
        'value': {'readonly': True},
        'next_link': {'readonly': True},
    }

    _attribute_map = {
        'value': {'key': 'value', 'type': '[AmlUserFeature]'},
        'next_link': {'key': 'nextLink', 'type': 'str'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        """
        super(ListAmlUserFeatureResult, self).__init__(**kwargs)
        self.value = None
        self.next_link = None


class ListNotebookKeysResult(msrest.serialization.Model):
    """ListNotebookKeysResult.

    Variables are only populated by the server, and will be ignored when sending a request.

    :ivar primary_access_key: The primary access key of the Notebook.
    :vartype primary_access_key: str
    :ivar secondary_access_key: The secondary access key of the Notebook.
    :vartype secondary_access_key: str
    """

    _validation = {
        'primary_access_key': {'readonly': True},
        'secondary_access_key': {'readonly': True},
    }

    _attribute_map = {
        'primary_access_key': {'key': 'primaryAccessKey', 'type': 'str'},
        'secondary_access_key': {'key': 'secondaryAccessKey', 'type': 'str'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        """
        super(ListNotebookKeysResult, self).__init__(**kwargs)
        self.primary_access_key = None
        self.secondary_access_key = None


class ListStorageAccountKeysResult(msrest.serialization.Model):
    """ListStorageAccountKeysResult.

    Variables are only populated by the server, and will be ignored when sending a request.

    :ivar user_storage_key: The access key of the storage.
    :vartype user_storage_key: str
    """

    _validation = {
        'user_storage_key': {'readonly': True},
    }

    _attribute_map = {
        'user_storage_key': {'key': 'userStorageKey', 'type': 'str'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        """
        super(ListStorageAccountKeysResult, self).__init__(**kwargs)
        self.user_storage_key = None


class ListUsagesResult(msrest.serialization.Model):
    """The List Usages operation response.

    Variables are only populated by the server, and will be ignored when sending a request.

    :ivar value: The list of AML resource usages.
    :vartype value: list[~azure.mgmt.machinelearningservices.models.Usage]
    :ivar next_link: The URI to fetch the next page of AML resource usage information. Call
     ListNext() with this to fetch the next page of AML resource usage information.
    :vartype next_link: str
    """

    _validation = {
        'value': {'readonly': True},
        'next_link': {'readonly': True},
    }

    _attribute_map = {
        'value': {'key': 'value', 'type': '[Usage]'},
        'next_link': {'key': 'nextLink', 'type': 'str'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        """
        super(ListUsagesResult, self).__init__(**kwargs)
        self.value = None
        self.next_link = None


class ListWorkspaceKeysResult(msrest.serialization.Model):
    """ListWorkspaceKeysResult.

    Variables are only populated by the server, and will be ignored when sending a request.

    :ivar app_insights_instrumentation_key: The access key of the workspace app insights.
    :vartype app_insights_instrumentation_key: str
    :ivar container_registry_credentials:
    :vartype container_registry_credentials:
     ~azure.mgmt.machinelearningservices.models.RegistryListCredentialsResult
    :ivar notebook_access_keys:
    :vartype notebook_access_keys:
     ~azure.mgmt.machinelearningservices.models.ListNotebookKeysResult
    :ivar user_storage_arm_id: The arm Id key of the workspace storage.
    :vartype user_storage_arm_id: str
    :ivar user_storage_key: The access key of the workspace storage.
    :vartype user_storage_key: str
    """

    _validation = {
        'app_insights_instrumentation_key': {'readonly': True},
        'user_storage_arm_id': {'readonly': True},
        'user_storage_key': {'readonly': True},
    }

    _attribute_map = {
        'app_insights_instrumentation_key': {'key': 'appInsightsInstrumentationKey', 'type': 'str'},
        'container_registry_credentials': {'key': 'containerRegistryCredentials', 'type': 'RegistryListCredentialsResult'},
        'notebook_access_keys': {'key': 'notebookAccessKeys', 'type': 'ListNotebookKeysResult'},
        'user_storage_arm_id': {'key': 'userStorageArmId', 'type': 'str'},
        'user_storage_key': {'key': 'userStorageKey', 'type': 'str'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword container_registry_credentials:
        :paramtype container_registry_credentials:
         ~azure.mgmt.machinelearningservices.models.RegistryListCredentialsResult
        :keyword notebook_access_keys:
        :paramtype notebook_access_keys:
         ~azure.mgmt.machinelearningservices.models.ListNotebookKeysResult
        """
        super(ListWorkspaceKeysResult, self).__init__(**kwargs)
        self.app_insights_instrumentation_key = None
        self.container_registry_credentials = kwargs.get('container_registry_credentials', None)
        self.notebook_access_keys = kwargs.get('notebook_access_keys', None)
        self.user_storage_arm_id = None
        self.user_storage_key = None


class ListWorkspaceQuotas(msrest.serialization.Model):
    """The List WorkspaceQuotasByVMFamily operation response.

    Variables are only populated by the server, and will be ignored when sending a request.

    :ivar value: The list of Workspace Quotas by VM Family.
    :vartype value: list[~azure.mgmt.machinelearningservices.models.ResourceQuota]
    :ivar next_link: The URI to fetch the next page of workspace quota information by VM Family.
     Call ListNext() with this to fetch the next page of Workspace Quota information.
    :vartype next_link: str
    """

    _validation = {
        'value': {'readonly': True},
        'next_link': {'readonly': True},
    }

    _attribute_map = {
        'value': {'key': 'value', 'type': '[ResourceQuota]'},
        'next_link': {'key': 'nextLink', 'type': 'str'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        """
        super(ListWorkspaceQuotas, self).__init__(**kwargs)
        self.value = None
        self.next_link = None


class LiteralJobInput(JobInput):
    """Literal input type.

    All required parameters must be populated in order to send to Azure.

    :ivar description: Description for the input.
    :vartype description: str
    :ivar job_input_type: Required. [Required] Specifies the type of job.Constant filled by server.
     Possible values include: "literal", "uri_file", "uri_folder", "mltable", "custom_model",
     "mlflow_model", "triton_model".
    :vartype job_input_type: str or ~azure.mgmt.machinelearningservices.models.JobInputType
    :ivar value: Required. [Required] Literal value for the input.
    :vartype value: str
    """

    _validation = {
        'job_input_type': {'required': True},
        'value': {'required': True, 'min_length': 1, 'pattern': r'[a-zA-Z0-9_]'},
    }

    _attribute_map = {
        'description': {'key': 'description', 'type': 'str'},
        'job_input_type': {'key': 'jobInputType', 'type': 'str'},
        'value': {'key': 'value', 'type': 'str'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword description: Description for the input.
        :paramtype description: str
        :keyword value: Required. [Required] Literal value for the input.
        :paramtype value: str
        """
        super(LiteralJobInput, self).__init__(**kwargs)
        self.job_input_type = 'literal'  # type: str
        self.value = kwargs['value']


class ManagedComputeIdentity(MonitorComputeIdentityBase):
    """Managed compute identity definition.

    All required parameters must be populated in order to send to Azure.

    :ivar compute_identity_type: Required. [Required] Specifies the type of identity to use within
     the monitoring jobs.Constant filled by server. Possible values include: "AmlToken",
     "ManagedIdentity".
    :vartype compute_identity_type: str or
     ~azure.mgmt.machinelearningservices.models.MonitorComputeIdentityType
    :ivar identity: The identity which will be leveraged by the monitoring jobs.
    :vartype identity: ~azure.mgmt.machinelearningservices.models.ManagedServiceIdentity
    """

    _validation = {
        'compute_identity_type': {'required': True},
    }

    _attribute_map = {
        'compute_identity_type': {'key': 'computeIdentityType', 'type': 'str'},
        'identity': {'key': 'identity', 'type': 'ManagedServiceIdentity'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword identity: The identity which will be leveraged by the monitoring jobs.
        :paramtype identity: ~azure.mgmt.machinelearningservices.models.ManagedServiceIdentity
        """
        super(ManagedComputeIdentity, self).__init__(**kwargs)
        self.compute_identity_type = 'ManagedIdentity'  # type: str
        self.identity = kwargs.get('identity', None)


class ManagedIdentity(IdentityConfiguration):
    """Managed identity configuration.

    All required parameters must be populated in order to send to Azure.

    :ivar identity_type: Required. [Required] Specifies the type of identity framework.Constant
     filled by server. Possible values include: "Managed", "AMLToken", "UserIdentity".
    :vartype identity_type: str or
     ~azure.mgmt.machinelearningservices.models.IdentityConfigurationType
    :ivar client_id: Specifies a user-assigned identity by client ID. For system-assigned, do not
     set this field.
    :vartype client_id: str
    :ivar object_id: Specifies a user-assigned identity by object ID. For system-assigned, do not
     set this field.
    :vartype object_id: str
    :ivar resource_id: Specifies a user-assigned identity by ARM resource ID. For system-assigned,
     do not set this field.
    :vartype resource_id: str
    """

    _validation = {
        'identity_type': {'required': True},
    }

    _attribute_map = {
        'identity_type': {'key': 'identityType', 'type': 'str'},
        'client_id': {'key': 'clientId', 'type': 'str'},
        'object_id': {'key': 'objectId', 'type': 'str'},
        'resource_id': {'key': 'resourceId', 'type': 'str'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword client_id: Specifies a user-assigned identity by client ID. For system-assigned, do
         not set this field.
        :paramtype client_id: str
        :keyword object_id: Specifies a user-assigned identity by object ID. For system-assigned, do
         not set this field.
        :paramtype object_id: str
        :keyword resource_id: Specifies a user-assigned identity by ARM resource ID. For
         system-assigned, do not set this field.
        :paramtype resource_id: str
        """
        super(ManagedIdentity, self).__init__(**kwargs)
        self.identity_type = 'Managed'  # type: str
        self.client_id = kwargs.get('client_id', None)
        self.object_id = kwargs.get('object_id', None)
        self.resource_id = kwargs.get('resource_id', None)


class ManagedIdentityAuthTypeWorkspaceConnectionProperties(WorkspaceConnectionPropertiesV2):
    """ManagedIdentityAuthTypeWorkspaceConnectionProperties.

    Variables are only populated by the server, and will be ignored when sending a request.

    All required parameters must be populated in order to send to Azure.

    :ivar auth_type: Required. Authentication type of the connection target.Constant filled by
     server. Possible values include: "PAT", "ManagedIdentity", "UsernamePassword", "None", "SAS",
     "AccountKey", "ServicePrincipal", "AccessKey", "ApiKey", "CustomKeys", "OAuth2", "AAD".
    :vartype auth_type: str or ~azure.mgmt.machinelearningservices.models.ConnectionAuthType
    :ivar category: Category of the connection. Possible values include: "PythonFeed",
     "ContainerRegistry", "Git", "S3", "Snowflake", "AzureSqlDb", "AzureSynapseAnalytics",
     "AzureMySqlDb", "AzurePostgresDb", "ADLSGen2", "Redis", "ApiKey", "AzureOpenAI", "AIServices",
     "CognitiveSearch", "CognitiveService", "CustomKeys", "AzureBlob", "AzureOneLake", "CosmosDb",
     "CosmosDbMongoDbApi", "AzureDataExplorer", "AzureMariaDb", "AzureDatabricksDeltaLake",
     "AzureSqlMi", "AzureTableStorage", "AmazonRdsForOracle", "AmazonRdsForSqlServer",
     "AmazonRedshift", "Db2", "Drill", "GoogleBigQuery", "Greenplum", "Hbase", "Hive", "Impala",
     "Informix", "MariaDb", "MicrosoftAccess", "MySql", "Netezza", "Oracle", "Phoenix",
     "PostgreSql", "Presto", "SapOpenHub", "SapBw", "SapHana", "SapTable", "Spark", "SqlServer",
     "Sybase", "Teradata", "Vertica", "Pinecone", "Cassandra", "Couchbase", "MongoDbV2",
     "MongoDbAtlas", "AmazonS3Compatible", "FileServer", "FtpServer", "GoogleCloudStorage", "Hdfs",
     "OracleCloudStorage", "Sftp", "GenericHttp", "ODataRest", "Odbc", "GenericRest", "AmazonMws",
     "Concur", "Dynamics", "DynamicsAx", "DynamicsCrm", "GoogleAdWords", "Hubspot", "Jira",
     "Magento", "Marketo", "Office365", "Eloqua", "Responsys", "OracleServiceCloud", "PayPal",
     "QuickBooks", "Salesforce", "SalesforceServiceCloud", "SalesforceMarketingCloud",
     "SapCloudForCustomer", "SapEcc", "ServiceNow", "SharePointOnlineList", "Shopify", "Square",
     "WebTable", "Xero", "Zoho", "GenericContainerRegistry", "Elasticsearch", "OpenAI", "Serp",
     "BingLLMSearch", "Serverless", "ManagedOnlineEndpoint".
    :vartype category: str or ~azure.mgmt.machinelearningservices.models.ConnectionCategory
    :ivar created_by_workspace_arm_id:
    :vartype created_by_workspace_arm_id: str
    :ivar error:
    :vartype error: str
    :ivar expiry_time:
    :vartype expiry_time: ~datetime.datetime
    :ivar group: Group based on connection category. Possible values include: "Azure", "AzureAI",
     "Database", "NoSQL", "File", "GenericProtocol", "ServicesAndApps".
    :vartype group: str or ~azure.mgmt.machinelearningservices.models.ConnectionGroup
    :ivar is_shared_to_all:
    :vartype is_shared_to_all: bool
    :ivar metadata: Store user metadata for this connection.
    :vartype metadata: dict[str, str]
    :ivar pe_requirement: Possible values include: "Required", "NotRequired", "NotApplicable".
    :vartype pe_requirement: str or ~azure.mgmt.machinelearningservices.models.ManagedPERequirement
    :ivar pe_status: Possible values include: "Inactive", "Active", "NotApplicable".
    :vartype pe_status: str or ~azure.mgmt.machinelearningservices.models.ManagedPEStatus
    :ivar shared_user_list:
    :vartype shared_user_list: list[str]
    :ivar target:
    :vartype target: str
    :ivar use_workspace_managed_identity:
    :vartype use_workspace_managed_identity: bool
    :ivar credentials:
    :vartype credentials:
     ~azure.mgmt.machinelearningservices.models.WorkspaceConnectionManagedIdentity
    """

    _validation = {
        'auth_type': {'required': True},
        'created_by_workspace_arm_id': {'readonly': True},
        'group': {'readonly': True},
    }

    _attribute_map = {
        'auth_type': {'key': 'authType', 'type': 'str'},
        'category': {'key': 'category', 'type': 'str'},
        'created_by_workspace_arm_id': {'key': 'createdByWorkspaceArmId', 'type': 'str'},
        'error': {'key': 'error', 'type': 'str'},
        'expiry_time': {'key': 'expiryTime', 'type': 'iso-8601'},
        'group': {'key': 'group', 'type': 'str'},
        'is_shared_to_all': {'key': 'isSharedToAll', 'type': 'bool'},
        'metadata': {'key': 'metadata', 'type': '{str}'},
        'pe_requirement': {'key': 'peRequirement', 'type': 'str'},
        'pe_status': {'key': 'peStatus', 'type': 'str'},
        'shared_user_list': {'key': 'sharedUserList', 'type': '[str]'},
        'target': {'key': 'target', 'type': 'str'},
        'use_workspace_managed_identity': {'key': 'useWorkspaceManagedIdentity', 'type': 'bool'},
        'credentials': {'key': 'credentials', 'type': 'WorkspaceConnectionManagedIdentity'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword category: Category of the connection. Possible values include: "PythonFeed",
         "ContainerRegistry", "Git", "S3", "Snowflake", "AzureSqlDb", "AzureSynapseAnalytics",
         "AzureMySqlDb", "AzurePostgresDb", "ADLSGen2", "Redis", "ApiKey", "AzureOpenAI", "AIServices",
         "CognitiveSearch", "CognitiveService", "CustomKeys", "AzureBlob", "AzureOneLake", "CosmosDb",
         "CosmosDbMongoDbApi", "AzureDataExplorer", "AzureMariaDb", "AzureDatabricksDeltaLake",
         "AzureSqlMi", "AzureTableStorage", "AmazonRdsForOracle", "AmazonRdsForSqlServer",
         "AmazonRedshift", "Db2", "Drill", "GoogleBigQuery", "Greenplum", "Hbase", "Hive", "Impala",
         "Informix", "MariaDb", "MicrosoftAccess", "MySql", "Netezza", "Oracle", "Phoenix",
         "PostgreSql", "Presto", "SapOpenHub", "SapBw", "SapHana", "SapTable", "Spark", "SqlServer",
         "Sybase", "Teradata", "Vertica", "Pinecone", "Cassandra", "Couchbase", "MongoDbV2",
         "MongoDbAtlas", "AmazonS3Compatible", "FileServer", "FtpServer", "GoogleCloudStorage", "Hdfs",
         "OracleCloudStorage", "Sftp", "GenericHttp", "ODataRest", "Odbc", "GenericRest", "AmazonMws",
         "Concur", "Dynamics", "DynamicsAx", "DynamicsCrm", "GoogleAdWords", "Hubspot", "Jira",
         "Magento", "Marketo", "Office365", "Eloqua", "Responsys", "OracleServiceCloud", "PayPal",
         "QuickBooks", "Salesforce", "SalesforceServiceCloud", "SalesforceMarketingCloud",
         "SapCloudForCustomer", "SapEcc", "ServiceNow", "SharePointOnlineList", "Shopify", "Square",
         "WebTable", "Xero", "Zoho", "GenericContainerRegistry", "Elasticsearch", "OpenAI", "Serp",
         "BingLLMSearch", "Serverless", "ManagedOnlineEndpoint".
        :paramtype category: str or ~azure.mgmt.machinelearningservices.models.ConnectionCategory
        :keyword error:
        :paramtype error: str
        :keyword expiry_time:
        :paramtype expiry_time: ~datetime.datetime
        :keyword is_shared_to_all:
        :paramtype is_shared_to_all: bool
        :keyword metadata: Store user metadata for this connection.
        :paramtype metadata: dict[str, str]
        :keyword pe_requirement: Possible values include: "Required", "NotRequired", "NotApplicable".
        :paramtype pe_requirement: str or
         ~azure.mgmt.machinelearningservices.models.ManagedPERequirement
        :keyword pe_status: Possible values include: "Inactive", "Active", "NotApplicable".
        :paramtype pe_status: str or ~azure.mgmt.machinelearningservices.models.ManagedPEStatus
        :keyword shared_user_list:
        :paramtype shared_user_list: list[str]
        :keyword target:
        :paramtype target: str
        :keyword use_workspace_managed_identity:
        :paramtype use_workspace_managed_identity: bool
        :keyword credentials:
        :paramtype credentials:
         ~azure.mgmt.machinelearningservices.models.WorkspaceConnectionManagedIdentity
        """
        super(ManagedIdentityAuthTypeWorkspaceConnectionProperties, self).__init__(**kwargs)
        self.auth_type = 'ManagedIdentity'  # type: str
        self.credentials = kwargs.get('credentials', None)


class ManagedIdentityCredential(DataReferenceCredential):
    """Credential for user managed identity.

    All required parameters must be populated in order to send to Azure.

    :ivar credential_type: Required. [Required] Credential type used to authentication with
     storage.Constant filled by server. Possible values include: "SAS", "DockerCredentials",
     "ManagedIdentity", "NoCredentials".
    :vartype credential_type: str or
     ~azure.mgmt.machinelearningservices.models.DataReferenceCredentialType
    :ivar managed_identity_type: ManagedIdentityCredential identity type.
    :vartype managed_identity_type: str
    :ivar user_managed_identity_client_id: ClientId for the UAMI. For ManagedIdentityType =
     SystemManaged, this field is null.
    :vartype user_managed_identity_client_id: str
    :ivar user_managed_identity_principal_id: PrincipalId for the UAMI. For ManagedIdentityType =
     SystemManaged, this field is null.
    :vartype user_managed_identity_principal_id: str
    :ivar user_managed_identity_resource_id: Full arm scope for the Id. For ManagedIdentityType =
     SystemManaged, this field is null.
    :vartype user_managed_identity_resource_id: str
    :ivar user_managed_identity_tenant_id: TenantId for the UAMI. For ManagedIdentityType =
     SystemManaged, this field is null.
    :vartype user_managed_identity_tenant_id: str
    """

    _validation = {
        'credential_type': {'required': True},
    }

    _attribute_map = {
        'credential_type': {'key': 'credentialType', 'type': 'str'},
        'managed_identity_type': {'key': 'managedIdentityType', 'type': 'str'},
        'user_managed_identity_client_id': {'key': 'userManagedIdentityClientId', 'type': 'str'},
        'user_managed_identity_principal_id': {'key': 'userManagedIdentityPrincipalId', 'type': 'str'},
        'user_managed_identity_resource_id': {'key': 'userManagedIdentityResourceId', 'type': 'str'},
        'user_managed_identity_tenant_id': {'key': 'userManagedIdentityTenantId', 'type': 'str'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword managed_identity_type: ManagedIdentityCredential identity type.
        :paramtype managed_identity_type: str
        :keyword user_managed_identity_client_id: ClientId for the UAMI. For ManagedIdentityType =
         SystemManaged, this field is null.
        :paramtype user_managed_identity_client_id: str
        :keyword user_managed_identity_principal_id: PrincipalId for the UAMI. For ManagedIdentityType
         = SystemManaged, this field is null.
        :paramtype user_managed_identity_principal_id: str
        :keyword user_managed_identity_resource_id: Full arm scope for the Id. For ManagedIdentityType
         = SystemManaged, this field is null.
        :paramtype user_managed_identity_resource_id: str
        :keyword user_managed_identity_tenant_id: TenantId for the UAMI. For ManagedIdentityType =
         SystemManaged, this field is null.
        :paramtype user_managed_identity_tenant_id: str
        """
        super(ManagedIdentityCredential, self).__init__(**kwargs)
        self.credential_type = 'ManagedIdentity'  # type: str
        self.managed_identity_type = kwargs.get('managed_identity_type', None)
        self.user_managed_identity_client_id = kwargs.get('user_managed_identity_client_id', None)
        self.user_managed_identity_principal_id = kwargs.get('user_managed_identity_principal_id', None)
        self.user_managed_identity_resource_id = kwargs.get('user_managed_identity_resource_id', None)
        self.user_managed_identity_tenant_id = kwargs.get('user_managed_identity_tenant_id', None)


class ManagedNetworkProvisionOptions(msrest.serialization.Model):
    """Managed Network Provisioning options for managed network of a machine learning workspace.

    :ivar include_spark:
    :vartype include_spark: bool
    """

    _attribute_map = {
        'include_spark': {'key': 'includeSpark', 'type': 'bool'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword include_spark:
        :paramtype include_spark: bool
        """
        super(ManagedNetworkProvisionOptions, self).__init__(**kwargs)
        self.include_spark = kwargs.get('include_spark', None)


class ManagedNetworkProvisionStatus(msrest.serialization.Model):
    """Status of the Provisioning for the managed network of a machine learning workspace.

    :ivar spark_ready:
    :vartype spark_ready: bool
    :ivar status: Status for the managed network of a machine learning workspace. Possible values
     include: "Inactive", "Active".
    :vartype status: str or ~azure.mgmt.machinelearningservices.models.ManagedNetworkStatus
    """

    _attribute_map = {
        'spark_ready': {'key': 'sparkReady', 'type': 'bool'},
        'status': {'key': 'status', 'type': 'str'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword spark_ready:
        :paramtype spark_ready: bool
        :keyword status: Status for the managed network of a machine learning workspace. Possible
         values include: "Inactive", "Active".
        :paramtype status: str or ~azure.mgmt.machinelearningservices.models.ManagedNetworkStatus
        """
        super(ManagedNetworkProvisionStatus, self).__init__(**kwargs)
        self.spark_ready = kwargs.get('spark_ready', None)
        self.status = kwargs.get('status', None)


class ManagedNetworkSettings(msrest.serialization.Model):
    """Managed Network settings for a machine learning workspace.

    Variables are only populated by the server, and will be ignored when sending a request.

    :ivar firewall_public_ip_address: Public IP address assigned to the Azure Firewall.
    :vartype firewall_public_ip_address: str
    :ivar firewall_sku: Firewall Sku used for FQDN Rules. Possible values include: "Standard",
     "Basic".
    :vartype firewall_sku: str or ~azure.mgmt.machinelearningservices.models.FirewallSku
    :ivar isolation_mode: Isolation mode for the managed network of a machine learning workspace.
     Possible values include: "Disabled", "AllowInternetOutbound", "AllowOnlyApprovedOutbound".
    :vartype isolation_mode: str or ~azure.mgmt.machinelearningservices.models.IsolationMode
    :ivar network_id:
    :vartype network_id: str
    :ivar outbound_rules: Dictionary of :code:`<OutboundRule>`.
    :vartype outbound_rules: dict[str, ~azure.mgmt.machinelearningservices.models.OutboundRule]
    :ivar status: Status of the Provisioning for the managed network of a machine learning
     workspace.
    :vartype status: ~azure.mgmt.machinelearningservices.models.ManagedNetworkProvisionStatus
    :ivar changeable_isolation_modes:
    :vartype changeable_isolation_modes: list[str or
     ~azure.mgmt.machinelearningservices.models.IsolationMode]
    """

    _validation = {
        'firewall_public_ip_address': {'readonly': True},
        'network_id': {'readonly': True},
        'changeable_isolation_modes': {'readonly': True},
    }

    _attribute_map = {
        'firewall_public_ip_address': {'key': 'firewallPublicIpAddress', 'type': 'str'},
        'firewall_sku': {'key': 'firewallSku', 'type': 'str'},
        'isolation_mode': {'key': 'isolationMode', 'type': 'str'},
        'network_id': {'key': 'networkId', 'type': 'str'},
        'outbound_rules': {'key': 'outboundRules', 'type': '{OutboundRule}'},
        'status': {'key': 'status', 'type': 'ManagedNetworkProvisionStatus'},
        'changeable_isolation_modes': {'key': 'changeableIsolationModes', 'type': '[str]'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword firewall_sku: Firewall Sku used for FQDN Rules. Possible values include: "Standard",
         "Basic".
        :paramtype firewall_sku: str or ~azure.mgmt.machinelearningservices.models.FirewallSku
        :keyword isolation_mode: Isolation mode for the managed network of a machine learning
         workspace. Possible values include: "Disabled", "AllowInternetOutbound",
         "AllowOnlyApprovedOutbound".
        :paramtype isolation_mode: str or ~azure.mgmt.machinelearningservices.models.IsolationMode
        :keyword outbound_rules: Dictionary of :code:`<OutboundRule>`.
        :paramtype outbound_rules: dict[str, ~azure.mgmt.machinelearningservices.models.OutboundRule]
        :keyword status: Status of the Provisioning for the managed network of a machine learning
         workspace.
        :paramtype status: ~azure.mgmt.machinelearningservices.models.ManagedNetworkProvisionStatus
        """
        super(ManagedNetworkSettings, self).__init__(**kwargs)
        self.firewall_public_ip_address = None
        self.firewall_sku = kwargs.get('firewall_sku', None)
        self.isolation_mode = kwargs.get('isolation_mode', None)
        self.network_id = None
        self.outbound_rules = kwargs.get('outbound_rules', None)
        self.status = kwargs.get('status', None)
        self.changeable_isolation_modes = None


class ManagedOnlineDeployment(OnlineDeploymentProperties):
    """Properties specific to a ManagedOnlineDeployment.

    Variables are only populated by the server, and will be ignored when sending a request.

    All required parameters must be populated in order to send to Azure.

    :ivar code_configuration: Code configuration for the endpoint deployment.
    :vartype code_configuration: ~azure.mgmt.machinelearningservices.models.CodeConfiguration
    :ivar description: Description of the endpoint deployment.
    :vartype description: str
    :ivar environment_id: ARM resource ID or AssetId of the environment specification for the
     endpoint deployment.
    :vartype environment_id: str
    :ivar environment_variables: Environment variables configuration for the deployment.
    :vartype environment_variables: dict[str, str]
    :ivar properties: Property dictionary. Properties can be added, but not removed or altered.
    :vartype properties: dict[str, str]
    :ivar app_insights_enabled: If true, enables Application Insights logging.
    :vartype app_insights_enabled: bool
    :ivar data_collector: The mdc configuration, we disable mdc when it's null.
    :vartype data_collector: ~azure.mgmt.machinelearningservices.models.DataCollector
    :ivar egress_public_network_access: If Enabled, allow egress public network access. If
     Disabled, this will create secure egress. Default: Enabled. Possible values include: "Enabled",
     "Disabled".
    :vartype egress_public_network_access: str or
     ~azure.mgmt.machinelearningservices.models.EgressPublicNetworkAccessType
    :ivar endpoint_compute_type: Required. [Required] The compute type of the endpoint.Constant
     filled by server. Possible values include: "Managed", "Kubernetes", "AzureMLCompute".
    :vartype endpoint_compute_type: str or
     ~azure.mgmt.machinelearningservices.models.EndpointComputeType
    :ivar instance_type: Compute instance type. Default: Standard_F4s_v2.
    :vartype instance_type: str
    :ivar liveness_probe: Liveness probe monitors the health of the container regularly.
    :vartype liveness_probe: ~azure.mgmt.machinelearningservices.models.ProbeSettings
    :ivar model: The URI path to the model.
    :vartype model: str
    :ivar model_mount_path: The path to mount the model in custom container.
    :vartype model_mount_path: str
    :ivar provisioning_state: Provisioning state for the endpoint deployment. Possible values
     include: "Creating", "Deleting", "Scaling", "Updating", "Succeeded", "Failed", "Canceled".
    :vartype provisioning_state: str or
     ~azure.mgmt.machinelearningservices.models.DeploymentProvisioningState
    :ivar readiness_probe: Readiness probe validates if the container is ready to serve traffic.
     The properties and defaults are the same as liveness probe.
    :vartype readiness_probe: ~azure.mgmt.machinelearningservices.models.ProbeSettings
    :ivar request_settings: Request settings for the deployment.
    :vartype request_settings: ~azure.mgmt.machinelearningservices.models.OnlineRequestSettings
    :ivar scale_settings: Scale settings for the deployment.
     If it is null or not provided,
     it defaults to TargetUtilizationScaleSettings for KubernetesOnlineDeployment
     and to DefaultScaleSettings for ManagedOnlineDeployment.
    :vartype scale_settings: ~azure.mgmt.machinelearningservices.models.OnlineScaleSettings
    """

    _validation = {
        'endpoint_compute_type': {'required': True},
        'provisioning_state': {'readonly': True},
    }

    _attribute_map = {
        'code_configuration': {'key': 'codeConfiguration', 'type': 'CodeConfiguration'},
        'description': {'key': 'description', 'type': 'str'},
        'environment_id': {'key': 'environmentId', 'type': 'str'},
        'environment_variables': {'key': 'environmentVariables', 'type': '{str}'},
        'properties': {'key': 'properties', 'type': '{str}'},
        'app_insights_enabled': {'key': 'appInsightsEnabled', 'type': 'bool'},
        'data_collector': {'key': 'dataCollector', 'type': 'DataCollector'},
        'egress_public_network_access': {'key': 'egressPublicNetworkAccess', 'type': 'str'},
        'endpoint_compute_type': {'key': 'endpointComputeType', 'type': 'str'},
        'instance_type': {'key': 'instanceType', 'type': 'str'},
        'liveness_probe': {'key': 'livenessProbe', 'type': 'ProbeSettings'},
        'model': {'key': 'model', 'type': 'str'},
        'model_mount_path': {'key': 'modelMountPath', 'type': 'str'},
        'provisioning_state': {'key': 'provisioningState', 'type': 'str'},
        'readiness_probe': {'key': 'readinessProbe', 'type': 'ProbeSettings'},
        'request_settings': {'key': 'requestSettings', 'type': 'OnlineRequestSettings'},
        'scale_settings': {'key': 'scaleSettings', 'type': 'OnlineScaleSettings'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword code_configuration: Code configuration for the endpoint deployment.
        :paramtype code_configuration: ~azure.mgmt.machinelearningservices.models.CodeConfiguration
        :keyword description: Description of the endpoint deployment.
        :paramtype description: str
        :keyword environment_id: ARM resource ID or AssetId of the environment specification for the
         endpoint deployment.
        :paramtype environment_id: str
        :keyword environment_variables: Environment variables configuration for the deployment.
        :paramtype environment_variables: dict[str, str]
        :keyword properties: Property dictionary. Properties can be added, but not removed or altered.
        :paramtype properties: dict[str, str]
        :keyword app_insights_enabled: If true, enables Application Insights logging.
        :paramtype app_insights_enabled: bool
        :keyword data_collector: The mdc configuration, we disable mdc when it's null.
        :paramtype data_collector: ~azure.mgmt.machinelearningservices.models.DataCollector
        :keyword egress_public_network_access: If Enabled, allow egress public network access. If
         Disabled, this will create secure egress. Default: Enabled. Possible values include: "Enabled",
         "Disabled".
        :paramtype egress_public_network_access: str or
         ~azure.mgmt.machinelearningservices.models.EgressPublicNetworkAccessType
        :keyword instance_type: Compute instance type. Default: Standard_F4s_v2.
        :paramtype instance_type: str
        :keyword liveness_probe: Liveness probe monitors the health of the container regularly.
        :paramtype liveness_probe: ~azure.mgmt.machinelearningservices.models.ProbeSettings
        :keyword model: The URI path to the model.
        :paramtype model: str
        :keyword model_mount_path: The path to mount the model in custom container.
        :paramtype model_mount_path: str
        :keyword readiness_probe: Readiness probe validates if the container is ready to serve traffic.
         The properties and defaults are the same as liveness probe.
        :paramtype readiness_probe: ~azure.mgmt.machinelearningservices.models.ProbeSettings
        :keyword request_settings: Request settings for the deployment.
        :paramtype request_settings: ~azure.mgmt.machinelearningservices.models.OnlineRequestSettings
        :keyword scale_settings: Scale settings for the deployment.
         If it is null or not provided,
         it defaults to TargetUtilizationScaleSettings for KubernetesOnlineDeployment
         and to DefaultScaleSettings for ManagedOnlineDeployment.
        :paramtype scale_settings: ~azure.mgmt.machinelearningservices.models.OnlineScaleSettings
        """
        super(ManagedOnlineDeployment, self).__init__(**kwargs)
        self.endpoint_compute_type = 'Managed'  # type: str


class ManagedOnlineEndpointDeploymentResourceProperties(EndpointDeploymentResourceProperties):
    """ManagedOnlineEndpointDeploymentResourceProperties.

    Variables are only populated by the server, and will be ignored when sending a request.

    All required parameters must be populated in order to send to Azure.

    :ivar failure_reason: The failure reason if the creation failed.
    :vartype failure_reason: str
    :ivar provisioning_state: Read-only provision state status property. Possible values include:
     "NotStarted", "Failed", "Creating", "Updating", "Succeeded", "Deleting", "Accepted",
     "Canceled", "Scaling", "Disabled".
    :vartype provisioning_state: str or
     ~azure.mgmt.machinelearningservices.models.DefaultResourceProvisioningState
    :ivar type: Required. Kind of the deployment.Constant filled by server.
    :vartype type: str
    :ivar endpoint_compute_type: Enum to determine endpoint compute type. Possible values include:
     "Managed", "Kubernetes", "AzureMLCompute".
    :vartype endpoint_compute_type: str or
     ~azure.mgmt.machinelearningservices.models.EndpointComputeType
    :ivar model:
    :vartype model: str
    """

    _validation = {
        'provisioning_state': {'readonly': True},
        'type': {'required': True, 'min_length': 1, 'pattern': r'[a-zA-Z0-9_]'},
    }

    _attribute_map = {
        'failure_reason': {'key': 'failureReason', 'type': 'str'},
        'provisioning_state': {'key': 'provisioningState', 'type': 'str'},
        'type': {'key': 'type', 'type': 'str'},
        'endpoint_compute_type': {'key': 'endpointComputeType', 'type': 'str'},
        'model': {'key': 'model', 'type': 'str'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword failure_reason: The failure reason if the creation failed.
        :paramtype failure_reason: str
        :keyword endpoint_compute_type: Enum to determine endpoint compute type. Possible values
         include: "Managed", "Kubernetes", "AzureMLCompute".
        :paramtype endpoint_compute_type: str or
         ~azure.mgmt.machinelearningservices.models.EndpointComputeType
        :keyword model:
        :paramtype model: str
        """
        super(ManagedOnlineEndpointDeploymentResourceProperties, self).__init__(**kwargs)
        self.type = 'managedOnlineEndpoint'  # type: str
        self.endpoint_compute_type = kwargs.get('endpoint_compute_type', None)
        self.model = kwargs.get('model', None)


class ManagedOnlineEndpointResourceProperties(EndpointResourceProperties):
    """ManagedOnlineEndpointResourceProperties.

    Variables are only populated by the server, and will be ignored when sending a request.

    All required parameters must be populated in order to send to Azure.

    :ivar associated_resource_id: Byo resource id for creating the built-in model service
     endpoints.
    :vartype associated_resource_id: str
    :ivar deployments: Deployments info.
    :vartype deployments:
     list[~azure.mgmt.machinelearningservices.models.EndpointDeploymentResourcePropertiesBasicResource]
    :ivar endpoint_type: Required. Type of the endpoint.Constant filled by server. Possible values
     include: "Azure.OpenAI", "Azure.Speech", "Azure.ContentSafety", "Azure.Llama",
     "managedOnlineEndpoint", "serverlessEndpoint".
    :vartype endpoint_type: str or ~azure.mgmt.machinelearningservices.models.EndpointType
    :ivar endpoint_uri: Uri of the endpoint.
    :vartype endpoint_uri: str
    :ivar failure_reason: The failure reason if the creation failed.
    :vartype failure_reason: str
    :ivar location: Location of the endpoint.
     Since input dto and when parse endpoint resource share the same contract
     this Location field is just for parse the endpoint resource info
     we won't let customer specify the endpoint resource location since we will create it the same
     location as workspace.
    :vartype location: str
    :ivar name: Name of the endpoint.
    :vartype name: str
    :ivar provisioning_state: Read-only provision state status property. Possible values include:
     "NotStarted", "Failed", "Creating", "Updating", "Succeeded", "Deleting", "Accepted",
     "Canceled", "Scaling", "Disabled".
    :vartype provisioning_state: str or
     ~azure.mgmt.machinelearningservices.models.DefaultResourceProvisioningState
    :ivar should_create_ai_services_endpoint: Whether the proxy (non-byo) endpoint is a regular
     endpoint or a OneKeyV2 AI services account endpoint.
    :vartype should_create_ai_services_endpoint: bool
    :ivar auth_mode: Enum to determine endpoint authentication mode. Possible values include:
     "AMLToken", "Key", "AADToken".
    :vartype auth_mode: str or ~azure.mgmt.machinelearningservices.models.EndpointAuthMode
    :ivar compute:
    :vartype compute: str
    :ivar description:
    :vartype description: str
    :ivar mirror_traffic: Dictionary of :code:`<integer>`.
    :vartype mirror_traffic: dict[str, int]
    :ivar scoring_uri:
    :vartype scoring_uri: str
    :ivar traffic: Dictionary of :code:`<integer>`.
    :vartype traffic: dict[str, int]
    """

    _validation = {
        'endpoint_type': {'required': True},
        'provisioning_state': {'readonly': True},
    }

    _attribute_map = {
        'associated_resource_id': {'key': 'associatedResourceId', 'type': 'str'},
        'deployments': {'key': 'deployments', 'type': '[EndpointDeploymentResourcePropertiesBasicResource]'},
        'endpoint_type': {'key': 'endpointType', 'type': 'str'},
        'endpoint_uri': {'key': 'endpointUri', 'type': 'str'},
        'failure_reason': {'key': 'failureReason', 'type': 'str'},
        'location': {'key': 'location', 'type': 'str'},
        'name': {'key': 'name', 'type': 'str'},
        'provisioning_state': {'key': 'provisioningState', 'type': 'str'},
        'should_create_ai_services_endpoint': {'key': 'shouldCreateAiServicesEndpoint', 'type': 'bool'},
        'auth_mode': {'key': 'authMode', 'type': 'str'},
        'compute': {'key': 'compute', 'type': 'str'},
        'description': {'key': 'description', 'type': 'str'},
        'mirror_traffic': {'key': 'mirrorTraffic', 'type': '{int}'},
        'scoring_uri': {'key': 'scoringUri', 'type': 'str'},
        'traffic': {'key': 'traffic', 'type': '{int}'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword associated_resource_id: Byo resource id for creating the built-in model service
         endpoints.
        :paramtype associated_resource_id: str
        :keyword deployments: Deployments info.
        :paramtype deployments:
         list[~azure.mgmt.machinelearningservices.models.EndpointDeploymentResourcePropertiesBasicResource]
        :keyword endpoint_uri: Uri of the endpoint.
        :paramtype endpoint_uri: str
        :keyword failure_reason: The failure reason if the creation failed.
        :paramtype failure_reason: str
        :keyword location: Location of the endpoint.
         Since input dto and when parse endpoint resource share the same contract
         this Location field is just for parse the endpoint resource info
         we won't let customer specify the endpoint resource location since we will create it the same
         location as workspace.
        :paramtype location: str
        :keyword name: Name of the endpoint.
        :paramtype name: str
        :keyword should_create_ai_services_endpoint: Whether the proxy (non-byo) endpoint is a regular
         endpoint or a OneKeyV2 AI services account endpoint.
        :paramtype should_create_ai_services_endpoint: bool
        :keyword auth_mode: Enum to determine endpoint authentication mode. Possible values include:
         "AMLToken", "Key", "AADToken".
        :paramtype auth_mode: str or ~azure.mgmt.machinelearningservices.models.EndpointAuthMode
        :keyword compute:
        :paramtype compute: str
        :keyword description:
        :paramtype description: str
        :keyword mirror_traffic: Dictionary of :code:`<integer>`.
        :paramtype mirror_traffic: dict[str, int]
        :keyword scoring_uri:
        :paramtype scoring_uri: str
        :keyword traffic: Dictionary of :code:`<integer>`.
        :paramtype traffic: dict[str, int]
        """
        super(ManagedOnlineEndpointResourceProperties, self).__init__(**kwargs)
        self.endpoint_type = 'managedOnlineEndpoint'  # type: str
        self.auth_mode = kwargs.get('auth_mode', None)
        self.compute = kwargs.get('compute', None)
        self.description = kwargs.get('description', None)
        self.mirror_traffic = kwargs.get('mirror_traffic', None)
        self.scoring_uri = kwargs.get('scoring_uri', None)
        self.traffic = kwargs.get('traffic', None)


class ManagedResourceGroupAssignedIdentities(msrest.serialization.Model):
    """Details for managed resource group assigned identities.

    Variables are only populated by the server, and will be ignored when sending a request.

    :ivar principal_id: Identity principal Id.
    :vartype principal_id: str
    """

    _validation = {
        'principal_id': {'readonly': True},
    }

    _attribute_map = {
        'principal_id': {'key': 'principalId', 'type': 'str'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        """
        super(ManagedResourceGroupAssignedIdentities, self).__init__(**kwargs)
        self.principal_id = None


class ManagedResourceGroupSettings(msrest.serialization.Model):
    """Managed resource group settings.

    :ivar assigned_identities: List of assigned identities for the managed resource group.
    :vartype assigned_identities:
     list[~azure.mgmt.machinelearningservices.models.ManagedResourceGroupAssignedIdentities]
    """

    _attribute_map = {
        'assigned_identities': {'key': 'assignedIdentities', 'type': '[ManagedResourceGroupAssignedIdentities]'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword assigned_identities: List of assigned identities for the managed resource group.
        :paramtype assigned_identities:
         list[~azure.mgmt.machinelearningservices.models.ManagedResourceGroupAssignedIdentities]
        """
        super(ManagedResourceGroupSettings, self).__init__(**kwargs)
        self.assigned_identities = kwargs.get('assigned_identities', None)


class ManagedServiceIdentity(msrest.serialization.Model):
    """Managed service identity (system assigned and/or user assigned identities).

    Variables are only populated by the server, and will be ignored when sending a request.

    All required parameters must be populated in order to send to Azure.

    :ivar principal_id: The service principal ID of the system assigned identity. This property
     will only be provided for a system assigned identity.
    :vartype principal_id: str
    :ivar tenant_id: The tenant ID of the system assigned identity. This property will only be
     provided for a system assigned identity.
    :vartype tenant_id: str
    :ivar type: Required. Type of managed service identity (where both SystemAssigned and
     UserAssigned types are allowed). Possible values include: "None", "SystemAssigned",
     "UserAssigned", "SystemAssigned,UserAssigned".
    :vartype type: str or ~azure.mgmt.machinelearningservices.models.ManagedServiceIdentityType
    :ivar user_assigned_identities: The set of user assigned identities associated with the
     resource. The userAssignedIdentities dictionary keys will be ARM resource ids in the form:
     '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ManagedIdentity/userAssignedIdentities/{identityName}.
     The dictionary values can be empty objects ({}) in requests.
    :vartype user_assigned_identities: dict[str,
     ~azure.mgmt.machinelearningservices.models.UserAssignedIdentity]
    """

    _validation = {
        'principal_id': {'readonly': True},
        'tenant_id': {'readonly': True},
        'type': {'required': True},
    }

    _attribute_map = {
        'principal_id': {'key': 'principalId', 'type': 'str'},
        'tenant_id': {'key': 'tenantId', 'type': 'str'},
        'type': {'key': 'type', 'type': 'str'},
        'user_assigned_identities': {'key': 'userAssignedIdentities', 'type': '{UserAssignedIdentity}'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword type: Required. Type of managed service identity (where both SystemAssigned and
         UserAssigned types are allowed). Possible values include: "None", "SystemAssigned",
         "UserAssigned", "SystemAssigned,UserAssigned".
        :paramtype type: str or ~azure.mgmt.machinelearningservices.models.ManagedServiceIdentityType
        :keyword user_assigned_identities: The set of user assigned identities associated with the
         resource. The userAssignedIdentities dictionary keys will be ARM resource ids in the form:
         '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ManagedIdentity/userAssignedIdentities/{identityName}.
         The dictionary values can be empty objects ({}) in requests.
        :paramtype user_assigned_identities: dict[str,
         ~azure.mgmt.machinelearningservices.models.UserAssignedIdentity]
        """
        super(ManagedServiceIdentity, self).__init__(**kwargs)
        self.principal_id = None
        self.tenant_id = None
        self.type = kwargs['type']
        self.user_assigned_identities = kwargs.get('user_assigned_identities', None)


class MarketplacePlan(msrest.serialization.Model):
    """MarketplacePlan.

    Variables are only populated by the server, and will be ignored when sending a request.

    :ivar offer_id: The identifying name of the Offer of the Marketplace Plan.
    :vartype offer_id: str
    :ivar plan_id: The identifying name of the Plan of the Marketplace Plan.
    :vartype plan_id: str
    :ivar publisher_id: The identifying name of the Publisher of the Marketplace Plan.
    :vartype publisher_id: str
    """

    _validation = {
        'offer_id': {'readonly': True},
        'plan_id': {'readonly': True},
        'publisher_id': {'readonly': True},
    }

    _attribute_map = {
        'offer_id': {'key': 'offerId', 'type': 'str'},
        'plan_id': {'key': 'planId', 'type': 'str'},
        'publisher_id': {'key': 'publisherId', 'type': 'str'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        """
        super(MarketplacePlan, self).__init__(**kwargs)
        self.offer_id = None
        self.plan_id = None
        self.publisher_id = None


class MarketplaceSubscription(ProxyResource):
    """Azure Resource Manager resource envelope.

    Variables are only populated by the server, and will be ignored when sending a request.

    All required parameters must be populated in order to send to Azure.

    :ivar id: Fully qualified resource ID for the resource. Ex -
     /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}.
    :vartype id: str
    :ivar name: The name of the resource.
    :vartype name: str
    :ivar type: The type of the resource. E.g. "Microsoft.Compute/virtualMachines" or
     "Microsoft.Storage/storageAccounts".
    :vartype type: str
    :ivar system_data: Azure Resource Manager metadata containing createdBy and modifiedBy
     information.
    :vartype system_data: ~azure.mgmt.machinelearningservices.models.SystemData
    :ivar properties: Required. [Required] Additional attributes of the entity.
    :vartype properties:
     ~azure.mgmt.machinelearningservices.models.MarketplaceSubscriptionProperties
    """

    _validation = {
        'id': {'readonly': True},
        'name': {'readonly': True},
        'type': {'readonly': True},
        'system_data': {'readonly': True},
        'properties': {'required': True},
    }

    _attribute_map = {
        'id': {'key': 'id', 'type': 'str'},
        'name': {'key': 'name', 'type': 'str'},
        'type': {'key': 'type', 'type': 'str'},
        'system_data': {'key': 'systemData', 'type': 'SystemData'},
        'properties': {'key': 'properties', 'type': 'MarketplaceSubscriptionProperties'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword properties: Required. [Required] Additional attributes of the entity.
        :paramtype properties:
         ~azure.mgmt.machinelearningservices.models.MarketplaceSubscriptionProperties
        """
        super(MarketplaceSubscription, self).__init__(**kwargs)
        self.properties = kwargs['properties']


class MarketplaceSubscriptionProperties(msrest.serialization.Model):
    """MarketplaceSubscriptionProperties.

    Variables are only populated by the server, and will be ignored when sending a request.

    All required parameters must be populated in order to send to Azure.

    :ivar marketplace_plan: Marketplace Plan associated with the Marketplace Subscription.
    :vartype marketplace_plan: ~azure.mgmt.machinelearningservices.models.MarketplacePlan
    :ivar marketplace_subscription_status: Current status of the Marketplace Subscription. Possible
     values include: "Subscribed", "Suspended", "Unsubscribed".
    :vartype marketplace_subscription_status: str or
     ~azure.mgmt.machinelearningservices.models.MarketplaceSubscriptionStatus
    :ivar model_id: Required. [Required] Target Marketplace Model ID to create a Marketplace
     Subscription for.
    :vartype model_id: str
    :ivar provisioning_state: Provisioning State of the Marketplace Subscription. Possible values
     include: "Creating", "Deleting", "Succeeded", "Failed", "Updating", "Canceled".
    :vartype provisioning_state: str or
     ~azure.mgmt.machinelearningservices.models.MarketplaceSubscriptionProvisioningState
    """

    _validation = {
        'marketplace_plan': {'readonly': True},
        'marketplace_subscription_status': {'readonly': True},
        'model_id': {'required': True, 'min_length': 1, 'pattern': r'[a-zA-Z0-9_]'},
        'provisioning_state': {'readonly': True},
    }

    _attribute_map = {
        'marketplace_plan': {'key': 'marketplacePlan', 'type': 'MarketplacePlan'},
        'marketplace_subscription_status': {'key': 'marketplaceSubscriptionStatus', 'type': 'str'},
        'model_id': {'key': 'modelId', 'type': 'str'},
        'provisioning_state': {'key': 'provisioningState', 'type': 'str'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword model_id: Required. [Required] Target Marketplace Model ID to create a Marketplace
         Subscription for.
        :paramtype model_id: str
        """
        super(MarketplaceSubscriptionProperties, self).__init__(**kwargs)
        self.marketplace_plan = None
        self.marketplace_subscription_status = None
        self.model_id = kwargs['model_id']
        self.provisioning_state = None


class MarketplaceSubscriptionResourceArmPaginatedResult(msrest.serialization.Model):
    """A paginated list of MarketplaceSubscription entities.

    :ivar next_link: The link to the next page of MarketplaceSubscription objects. If null, there
     are no additional pages.
    :vartype next_link: str
    :ivar value: An array of objects of type MarketplaceSubscription.
    :vartype value: list[~azure.mgmt.machinelearningservices.models.MarketplaceSubscription]
    """

    _attribute_map = {
        'next_link': {'key': 'nextLink', 'type': 'str'},
        'value': {'key': 'value', 'type': '[MarketplaceSubscription]'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword next_link: The link to the next page of MarketplaceSubscription objects. If null,
         there are no additional pages.
        :paramtype next_link: str
        :keyword value: An array of objects of type MarketplaceSubscription.
        :paramtype value: list[~azure.mgmt.machinelearningservices.models.MarketplaceSubscription]
        """
        super(MarketplaceSubscriptionResourceArmPaginatedResult, self).__init__(**kwargs)
        self.next_link = kwargs.get('next_link', None)
        self.value = kwargs.get('value', None)


class MaterializationComputeResource(msrest.serialization.Model):
    """DTO object representing compute resource.

    :ivar instance_type: Specifies the instance type.
    :vartype instance_type: str
    """

    _attribute_map = {
        'instance_type': {'key': 'instanceType', 'type': 'str'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword instance_type: Specifies the instance type.
        :paramtype instance_type: str
        """
        super(MaterializationComputeResource, self).__init__(**kwargs)
        self.instance_type = kwargs.get('instance_type', None)


class MaterializationSettings(msrest.serialization.Model):
    """MaterializationSettings.

    :ivar notification: Specifies the notification details.
    :vartype notification: ~azure.mgmt.machinelearningservices.models.NotificationSetting
    :ivar resource: Specifies the compute resource settings.
    :vartype resource: ~azure.mgmt.machinelearningservices.models.MaterializationComputeResource
    :ivar schedule: Specifies the schedule details.
    :vartype schedule: ~azure.mgmt.machinelearningservices.models.RecurrenceTrigger
    :ivar spark_configuration: Specifies the spark compute settings.
    :vartype spark_configuration: dict[str, str]
    :ivar store_type: Specifies the stores to which materialization should happen. Possible values
     include: "None", "Online", "Offline", "OnlineAndOffline".
    :vartype store_type: str or ~azure.mgmt.machinelearningservices.models.MaterializationStoreType
    """

    _attribute_map = {
        'notification': {'key': 'notification', 'type': 'NotificationSetting'},
        'resource': {'key': 'resource', 'type': 'MaterializationComputeResource'},
        'schedule': {'key': 'schedule', 'type': 'RecurrenceTrigger'},
        'spark_configuration': {'key': 'sparkConfiguration', 'type': '{str}'},
        'store_type': {'key': 'storeType', 'type': 'str'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword notification: Specifies the notification details.
        :paramtype notification: ~azure.mgmt.machinelearningservices.models.NotificationSetting
        :keyword resource: Specifies the compute resource settings.
        :paramtype resource: ~azure.mgmt.machinelearningservices.models.MaterializationComputeResource
        :keyword schedule: Specifies the schedule details.
        :paramtype schedule: ~azure.mgmt.machinelearningservices.models.RecurrenceTrigger
        :keyword spark_configuration: Specifies the spark compute settings.
        :paramtype spark_configuration: dict[str, str]
        :keyword store_type: Specifies the stores to which materialization should happen. Possible
         values include: "None", "Online", "Offline", "OnlineAndOffline".
        :paramtype store_type: str or
         ~azure.mgmt.machinelearningservices.models.MaterializationStoreType
        """
        super(MaterializationSettings, self).__init__(**kwargs)
        self.notification = kwargs.get('notification', None)
        self.resource = kwargs.get('resource', None)
        self.schedule = kwargs.get('schedule', None)
        self.spark_configuration = kwargs.get('spark_configuration', None)
        self.store_type = kwargs.get('store_type', None)


class MedianStoppingPolicy(EarlyTerminationPolicy):
    """Defines an early termination policy based on running averages of the primary metric of all runs.

    All required parameters must be populated in order to send to Azure.

    :ivar delay_evaluation: Number of intervals by which to delay the first evaluation.
    :vartype delay_evaluation: int
    :ivar evaluation_interval: Interval (number of runs) between policy evaluations.
    :vartype evaluation_interval: int
    :ivar policy_type: Required. [Required] Name of policy configuration.Constant filled by server.
     Possible values include: "Bandit", "MedianStopping", "TruncationSelection".
    :vartype policy_type: str or
     ~azure.mgmt.machinelearningservices.models.EarlyTerminationPolicyType
    """

    _validation = {
        'policy_type': {'required': True},
    }

    _attribute_map = {
        'delay_evaluation': {'key': 'delayEvaluation', 'type': 'int'},
        'evaluation_interval': {'key': 'evaluationInterval', 'type': 'int'},
        'policy_type': {'key': 'policyType', 'type': 'str'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword delay_evaluation: Number of intervals by which to delay the first evaluation.
        :paramtype delay_evaluation: int
        :keyword evaluation_interval: Interval (number of runs) between policy evaluations.
        :paramtype evaluation_interval: int
        """
        super(MedianStoppingPolicy, self).__init__(**kwargs)
        self.policy_type = 'MedianStopping'  # type: str


class MLFlowModelJobInput(JobInput, AssetJobInput):
    """MLFlowModelJobInput.

    All required parameters must be populated in order to send to Azure.

    :ivar mode: Input Asset Delivery Mode. Possible values include: "ReadOnlyMount",
     "ReadWriteMount", "Download", "Direct", "EvalMount", "EvalDownload".
    :vartype mode: str or ~azure.mgmt.machinelearningservices.models.InputDeliveryMode
    :ivar uri: Required. [Required] Input Asset URI.
    :vartype uri: str
    :ivar description: Description for the input.
    :vartype description: str
    :ivar job_input_type: Required. [Required] Specifies the type of job.Constant filled by server.
     Possible values include: "literal", "uri_file", "uri_folder", "mltable", "custom_model",
     "mlflow_model", "triton_model".
    :vartype job_input_type: str or ~azure.mgmt.machinelearningservices.models.JobInputType
    """

    _validation = {
        'uri': {'required': True, 'min_length': 1, 'pattern': r'[a-zA-Z0-9_]'},
        'job_input_type': {'required': True},
    }

    _attribute_map = {
        'mode': {'key': 'mode', 'type': 'str'},
        'uri': {'key': 'uri', 'type': 'str'},
        'description': {'key': 'description', 'type': 'str'},
        'job_input_type': {'key': 'jobInputType', 'type': 'str'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword mode: Input Asset Delivery Mode. Possible values include: "ReadOnlyMount",
         "ReadWriteMount", "Download", "Direct", "EvalMount", "EvalDownload".
        :paramtype mode: str or ~azure.mgmt.machinelearningservices.models.InputDeliveryMode
        :keyword uri: Required. [Required] Input Asset URI.
        :paramtype uri: str
        :keyword description: Description for the input.
        :paramtype description: str
        """
        super(MLFlowModelJobInput, self).__init__(**kwargs)
        self.mode = kwargs.get('mode', None)
        self.uri = kwargs['uri']
        self.job_input_type = 'mlflow_model'  # type: str
        self.description = kwargs.get('description', None)


class MLFlowModelJobOutput(JobOutput, AssetJobOutput):
    """MLFlowModelJobOutput.

    All required parameters must be populated in order to send to Azure.

    :ivar asset_name: Output Asset Name.
    :vartype asset_name: str
    :ivar mode: Output Asset Delivery Mode. Possible values include: "ReadWriteMount", "Upload",
     "Direct".
    :vartype mode: str or ~azure.mgmt.machinelearningservices.models.OutputDeliveryMode
    :ivar uri: Output Asset URI.
    :vartype uri: str
    :ivar description: Description for the output.
    :vartype description: str
    :ivar job_output_type: Required. [Required] Specifies the type of job.Constant filled by
     server. Possible values include: "uri_file", "uri_folder", "mltable", "custom_model",
     "mlflow_model", "triton_model".
    :vartype job_output_type: str or ~azure.mgmt.machinelearningservices.models.JobOutputType
    """

    _validation = {
        'job_output_type': {'required': True},
    }

    _attribute_map = {
        'asset_name': {'key': 'assetName', 'type': 'str'},
        'mode': {'key': 'mode', 'type': 'str'},
        'uri': {'key': 'uri', 'type': 'str'},
        'description': {'key': 'description', 'type': 'str'},
        'job_output_type': {'key': 'jobOutputType', 'type': 'str'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword asset_name: Output Asset Name.
        :paramtype asset_name: str
        :keyword mode: Output Asset Delivery Mode. Possible values include: "ReadWriteMount", "Upload",
         "Direct".
        :paramtype mode: str or ~azure.mgmt.machinelearningservices.models.OutputDeliveryMode
        :keyword uri: Output Asset URI.
        :paramtype uri: str
        :keyword description: Description for the output.
        :paramtype description: str
        """
        super(MLFlowModelJobOutput, self).__init__(**kwargs)
        self.asset_name = kwargs.get('asset_name', None)
        self.mode = kwargs.get('mode', None)
        self.uri = kwargs.get('uri', None)
        self.job_output_type = 'mlflow_model'  # type: str
        self.description = kwargs.get('description', None)


class MLTableData(DataVersionBaseProperties):
    """MLTable data definition.

    All required parameters must be populated in order to send to Azure.

    :ivar description: The asset description text.
    :vartype description: str
    :ivar properties: The asset property dictionary.
    :vartype properties: dict[str, str]
    :ivar tags: A set of tags. Tag dictionary. Tags can be added, removed, and updated.
    :vartype tags: dict[str, str]
    :ivar is_anonymous: If the name version are system generated (anonymous registration).
    :vartype is_anonymous: bool
    :ivar is_archived: Is the asset archived?.
    :vartype is_archived: bool
    :ivar data_type: Required. [Required] Specifies the type of data.Constant filled by server.
     Possible values include: "uri_file", "uri_folder", "mltable".
    :vartype data_type: str or ~azure.mgmt.machinelearningservices.models.DataType
    :ivar data_uri: Required. [Required] Uri of the data. Example:
     https://go.microsoft.com/fwlink/?linkid=2202330.
    :vartype data_uri: str
    :ivar referenced_uris: Uris referenced in the MLTable definition (required for lineage).
    :vartype referenced_uris: list[str]
    """

    _validation = {
        'data_type': {'required': True},
        'data_uri': {'required': True, 'min_length': 1, 'pattern': r'[a-zA-Z0-9_]'},
    }

    _attribute_map = {
        'description': {'key': 'description', 'type': 'str'},
        'properties': {'key': 'properties', 'type': '{str}'},
        'tags': {'key': 'tags', 'type': '{str}'},
        'is_anonymous': {'key': 'isAnonymous', 'type': 'bool'},
        'is_archived': {'key': 'isArchived', 'type': 'bool'},
        'data_type': {'key': 'dataType', 'type': 'str'},
        'data_uri': {'key': 'dataUri', 'type': 'str'},
        'referenced_uris': {'key': 'referencedUris', 'type': '[str]'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword description: The asset description text.
        :paramtype description: str
        :keyword properties: The asset property dictionary.
        :paramtype properties: dict[str, str]
        :keyword tags: A set of tags. Tag dictionary. Tags can be added, removed, and updated.
        :paramtype tags: dict[str, str]
        :keyword is_anonymous: If the name version are system generated (anonymous registration).
        :paramtype is_anonymous: bool
        :keyword is_archived: Is the asset archived?.
        :paramtype is_archived: bool
        :keyword data_uri: Required. [Required] Uri of the data. Example:
         https://go.microsoft.com/fwlink/?linkid=2202330.
        :paramtype data_uri: str
        :keyword referenced_uris: Uris referenced in the MLTable definition (required for lineage).
        :paramtype referenced_uris: list[str]
        """
        super(MLTableData, self).__init__(**kwargs)
        self.data_type = 'mltable'  # type: str
        self.referenced_uris = kwargs.get('referenced_uris', None)


class MLTableJobInput(JobInput, AssetJobInput):
    """MLTableJobInput.

    All required parameters must be populated in order to send to Azure.

    :ivar mode: Input Asset Delivery Mode. Possible values include: "ReadOnlyMount",
     "ReadWriteMount", "Download", "Direct", "EvalMount", "EvalDownload".
    :vartype mode: str or ~azure.mgmt.machinelearningservices.models.InputDeliveryMode
    :ivar uri: Required. [Required] Input Asset URI.
    :vartype uri: str
    :ivar description: Description for the input.
    :vartype description: str
    :ivar job_input_type: Required. [Required] Specifies the type of job.Constant filled by server.
     Possible values include: "literal", "uri_file", "uri_folder", "mltable", "custom_model",
     "mlflow_model", "triton_model".
    :vartype job_input_type: str or ~azure.mgmt.machinelearningservices.models.JobInputType
    """

    _validation = {
        'uri': {'required': True, 'min_length': 1, 'pattern': r'[a-zA-Z0-9_]'},
        'job_input_type': {'required': True},
    }

    _attribute_map = {
        'mode': {'key': 'mode', 'type': 'str'},
        'uri': {'key': 'uri', 'type': 'str'},
        'description': {'key': 'description', 'type': 'str'},
        'job_input_type': {'key': 'jobInputType', 'type': 'str'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword mode: Input Asset Delivery Mode. Possible values include: "ReadOnlyMount",
         "ReadWriteMount", "Download", "Direct", "EvalMount", "EvalDownload".
        :paramtype mode: str or ~azure.mgmt.machinelearningservices.models.InputDeliveryMode
        :keyword uri: Required. [Required] Input Asset URI.
        :paramtype uri: str
        :keyword description: Description for the input.
        :paramtype description: str
        """
        super(MLTableJobInput, self).__init__(**kwargs)
        self.mode = kwargs.get('mode', None)
        self.uri = kwargs['uri']
        self.job_input_type = 'mltable'  # type: str
        self.description = kwargs.get('description', None)


class MLTableJobOutput(JobOutput, AssetJobOutput):
    """MLTableJobOutput.

    All required parameters must be populated in order to send to Azure.

    :ivar asset_name: Output Asset Name.
    :vartype asset_name: str
    :ivar mode: Output Asset Delivery Mode. Possible values include: "ReadWriteMount", "Upload",
     "Direct".
    :vartype mode: str or ~azure.mgmt.machinelearningservices.models.OutputDeliveryMode
    :ivar uri: Output Asset URI.
    :vartype uri: str
    :ivar description: Description for the output.
    :vartype description: str
    :ivar job_output_type: Required. [Required] Specifies the type of job.Constant filled by
     server. Possible values include: "uri_file", "uri_folder", "mltable", "custom_model",
     "mlflow_model", "triton_model".
    :vartype job_output_type: str or ~azure.mgmt.machinelearningservices.models.JobOutputType
    """

    _validation = {
        'job_output_type': {'required': True},
    }

    _attribute_map = {
        'asset_name': {'key': 'assetName', 'type': 'str'},
        'mode': {'key': 'mode', 'type': 'str'},
        'uri': {'key': 'uri', 'type': 'str'},
        'description': {'key': 'description', 'type': 'str'},
        'job_output_type': {'key': 'jobOutputType', 'type': 'str'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword asset_name: Output Asset Name.
        :paramtype asset_name: str
        :keyword mode: Output Asset Delivery Mode. Possible values include: "ReadWriteMount", "Upload",
         "Direct".
        :paramtype mode: str or ~azure.mgmt.machinelearningservices.models.OutputDeliveryMode
        :keyword uri: Output Asset URI.
        :paramtype uri: str
        :keyword description: Description for the output.
        :paramtype description: str
        """
        super(MLTableJobOutput, self).__init__(**kwargs)
        self.asset_name = kwargs.get('asset_name', None)
        self.mode = kwargs.get('mode', None)
        self.uri = kwargs.get('uri', None)
        self.job_output_type = 'mltable'  # type: str
        self.description = kwargs.get('description', None)


class ModelContainer(ProxyResource):
    """Azure Resource Manager resource envelope.

    Variables are only populated by the server, and will be ignored when sending a request.

    All required parameters must be populated in order to send to Azure.

    :ivar id: Fully qualified resource ID for the resource. Ex -
     /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}.
    :vartype id: str
    :ivar name: The name of the resource.
    :vartype name: str
    :ivar type: The type of the resource. E.g. "Microsoft.Compute/virtualMachines" or
     "Microsoft.Storage/storageAccounts".
    :vartype type: str
    :ivar system_data: Azure Resource Manager metadata containing createdBy and modifiedBy
     information.
    :vartype system_data: ~azure.mgmt.machinelearningservices.models.SystemData
    :ivar properties: Required. [Required] Additional attributes of the entity.
    :vartype properties: ~azure.mgmt.machinelearningservices.models.ModelContainerProperties
    """

    _validation = {
        'id': {'readonly': True},
        'name': {'readonly': True},
        'type': {'readonly': True},
        'system_data': {'readonly': True},
        'properties': {'required': True},
    }

    _attribute_map = {
        'id': {'key': 'id', 'type': 'str'},
        'name': {'key': 'name', 'type': 'str'},
        'type': {'key': 'type', 'type': 'str'},
        'system_data': {'key': 'systemData', 'type': 'SystemData'},
        'properties': {'key': 'properties', 'type': 'ModelContainerProperties'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword properties: Required. [Required] Additional attributes of the entity.
        :paramtype properties: ~azure.mgmt.machinelearningservices.models.ModelContainerProperties
        """
        super(ModelContainer, self).__init__(**kwargs)
        self.properties = kwargs['properties']


class ModelContainerProperties(AssetContainer):
    """ModelContainerProperties.

    Variables are only populated by the server, and will be ignored when sending a request.

    :ivar description: The asset description text.
    :vartype description: str
    :ivar properties: The asset property dictionary.
    :vartype properties: dict[str, str]
    :ivar tags: A set of tags. Tag dictionary. Tags can be added, removed, and updated.
    :vartype tags: dict[str, str]
    :ivar is_archived: Is the asset archived?.
    :vartype is_archived: bool
    :ivar latest_version: The latest version inside this container.
    :vartype latest_version: str
    :ivar next_version: The next auto incremental version.
    :vartype next_version: str
    :ivar provisioning_state: Provisioning state for the model container. Possible values include:
     "Succeeded", "Failed", "Canceled", "Creating", "Updating", "Deleting".
    :vartype provisioning_state: str or
     ~azure.mgmt.machinelearningservices.models.AssetProvisioningState
    """

    _validation = {
        'latest_version': {'readonly': True},
        'next_version': {'readonly': True},
        'provisioning_state': {'readonly': True},
    }

    _attribute_map = {
        'description': {'key': 'description', 'type': 'str'},
        'properties': {'key': 'properties', 'type': '{str}'},
        'tags': {'key': 'tags', 'type': '{str}'},
        'is_archived': {'key': 'isArchived', 'type': 'bool'},
        'latest_version': {'key': 'latestVersion', 'type': 'str'},
        'next_version': {'key': 'nextVersion', 'type': 'str'},
        'provisioning_state': {'key': 'provisioningState', 'type': 'str'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword description: The asset description text.
        :paramtype description: str
        :keyword properties: The asset property dictionary.
        :paramtype properties: dict[str, str]
        :keyword tags: A set of tags. Tag dictionary. Tags can be added, removed, and updated.
        :paramtype tags: dict[str, str]
        :keyword is_archived: Is the asset archived?.
        :paramtype is_archived: bool
        """
        super(ModelContainerProperties, self).__init__(**kwargs)
        self.provisioning_state = None


class ModelContainerResourceArmPaginatedResult(msrest.serialization.Model):
    """A paginated list of ModelContainer entities.

    :ivar next_link: The link to the next page of ModelContainer objects. If null, there are no
     additional pages.
    :vartype next_link: str
    :ivar value: An array of objects of type ModelContainer.
    :vartype value: list[~azure.mgmt.machinelearningservices.models.ModelContainer]
    """

    _attribute_map = {
        'next_link': {'key': 'nextLink', 'type': 'str'},
        'value': {'key': 'value', 'type': '[ModelContainer]'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword next_link: The link to the next page of ModelContainer objects. If null, there are no
         additional pages.
        :paramtype next_link: str
        :keyword value: An array of objects of type ModelContainer.
        :paramtype value: list[~azure.mgmt.machinelearningservices.models.ModelContainer]
        """
        super(ModelContainerResourceArmPaginatedResult, self).__init__(**kwargs)
        self.next_link = kwargs.get('next_link', None)
        self.value = kwargs.get('value', None)


class ModelSettings(msrest.serialization.Model):
    """ModelSettings.

    :ivar model_id: The unique model identifier that this ServerlessEndpoint should provision.
    :vartype model_id: str
    """

    _attribute_map = {
        'model_id': {'key': 'modelId', 'type': 'str'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword model_id: The unique model identifier that this ServerlessEndpoint should provision.
        :paramtype model_id: str
        """
        super(ModelSettings, self).__init__(**kwargs)
        self.model_id = kwargs.get('model_id', None)


class ModelVersion(ProxyResource):
    """Azure Resource Manager resource envelope.

    Variables are only populated by the server, and will be ignored when sending a request.

    All required parameters must be populated in order to send to Azure.

    :ivar id: Fully qualified resource ID for the resource. Ex -
     /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}.
    :vartype id: str
    :ivar name: The name of the resource.
    :vartype name: str
    :ivar type: The type of the resource. E.g. "Microsoft.Compute/virtualMachines" or
     "Microsoft.Storage/storageAccounts".
    :vartype type: str
    :ivar system_data: Azure Resource Manager metadata containing createdBy and modifiedBy
     information.
    :vartype system_data: ~azure.mgmt.machinelearningservices.models.SystemData
    :ivar properties: Required. [Required] Additional attributes of the entity.
    :vartype properties: ~azure.mgmt.machinelearningservices.models.ModelVersionProperties
    """

    _validation = {
        'id': {'readonly': True},
        'name': {'readonly': True},
        'type': {'readonly': True},
        'system_data': {'readonly': True},
        'properties': {'required': True},
    }

    _attribute_map = {
        'id': {'key': 'id', 'type': 'str'},
        'name': {'key': 'name', 'type': 'str'},
        'type': {'key': 'type', 'type': 'str'},
        'system_data': {'key': 'systemData', 'type': 'SystemData'},
        'properties': {'key': 'properties', 'type': 'ModelVersionProperties'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword properties: Required. [Required] Additional attributes of the entity.
        :paramtype properties: ~azure.mgmt.machinelearningservices.models.ModelVersionProperties
        """
        super(ModelVersion, self).__init__(**kwargs)
        self.properties = kwargs['properties']


class ModelVersionProperties(AssetBase):
    """Model asset version details.

    Variables are only populated by the server, and will be ignored when sending a request.

    :ivar description: The asset description text.
    :vartype description: str
    :ivar properties: The asset property dictionary.
    :vartype properties: dict[str, str]
    :ivar tags: A set of tags. Tag dictionary. Tags can be added, removed, and updated.
    :vartype tags: dict[str, str]
    :ivar is_anonymous: If the name version are system generated (anonymous registration).
    :vartype is_anonymous: bool
    :ivar is_archived: Is the asset archived?.
    :vartype is_archived: bool
    :ivar flavors: Mapping of model flavors to their properties.
    :vartype flavors: dict[str, ~azure.mgmt.machinelearningservices.models.FlavorData]
    :ivar job_name: Name of the training job which produced this model.
    :vartype job_name: str
    :ivar model_type: The storage format for this entity. Used for NCD.
    :vartype model_type: str
    :ivar model_uri: The URI path to the model contents.
    :vartype model_uri: str
    :ivar provisioning_state: Provisioning state for the model version. Possible values include:
     "Succeeded", "Failed", "Canceled", "Creating", "Updating", "Deleting".
    :vartype provisioning_state: str or
     ~azure.mgmt.machinelearningservices.models.AssetProvisioningState
    :ivar stage: Stage in the model lifecycle assigned to this model.
    :vartype stage: str
    """

    _validation = {
        'provisioning_state': {'readonly': True},
    }

    _attribute_map = {
        'description': {'key': 'description', 'type': 'str'},
        'properties': {'key': 'properties', 'type': '{str}'},
        'tags': {'key': 'tags', 'type': '{str}'},
        'is_anonymous': {'key': 'isAnonymous', 'type': 'bool'},
        'is_archived': {'key': 'isArchived', 'type': 'bool'},
        'flavors': {'key': 'flavors', 'type': '{FlavorData}'},
        'job_name': {'key': 'jobName', 'type': 'str'},
        'model_type': {'key': 'modelType', 'type': 'str'},
        'model_uri': {'key': 'modelUri', 'type': 'str'},
        'provisioning_state': {'key': 'provisioningState', 'type': 'str'},
        'stage': {'key': 'stage', 'type': 'str'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword description: The asset description text.
        :paramtype description: str
        :keyword properties: The asset property dictionary.
        :paramtype properties: dict[str, str]
        :keyword tags: A set of tags. Tag dictionary. Tags can be added, removed, and updated.
        :paramtype tags: dict[str, str]
        :keyword is_anonymous: If the name version are system generated (anonymous registration).
        :paramtype is_anonymous: bool
        :keyword is_archived: Is the asset archived?.
        :paramtype is_archived: bool
        :keyword flavors: Mapping of model flavors to their properties.
        :paramtype flavors: dict[str, ~azure.mgmt.machinelearningservices.models.FlavorData]
        :keyword job_name: Name of the training job which produced this model.
        :paramtype job_name: str
        :keyword model_type: The storage format for this entity. Used for NCD.
        :paramtype model_type: str
        :keyword model_uri: The URI path to the model contents.
        :paramtype model_uri: str
        :keyword stage: Stage in the model lifecycle assigned to this model.
        :paramtype stage: str
        """
        super(ModelVersionProperties, self).__init__(**kwargs)
        self.flavors = kwargs.get('flavors', None)
        self.job_name = kwargs.get('job_name', None)
        self.model_type = kwargs.get('model_type', None)
        self.model_uri = kwargs.get('model_uri', None)
        self.provisioning_state = None
        self.stage = kwargs.get('stage', None)


class ModelVersionResourceArmPaginatedResult(msrest.serialization.Model):
    """A paginated list of ModelVersion entities.

    :ivar next_link: The link to the next page of ModelVersion objects. If null, there are no
     additional pages.
    :vartype next_link: str
    :ivar value: An array of objects of type ModelVersion.
    :vartype value: list[~azure.mgmt.machinelearningservices.models.ModelVersion]
    """

    _attribute_map = {
        'next_link': {'key': 'nextLink', 'type': 'str'},
        'value': {'key': 'value', 'type': '[ModelVersion]'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword next_link: The link to the next page of ModelVersion objects. If null, there are no
         additional pages.
        :paramtype next_link: str
        :keyword value: An array of objects of type ModelVersion.
        :paramtype value: list[~azure.mgmt.machinelearningservices.models.ModelVersion]
        """
        super(ModelVersionResourceArmPaginatedResult, self).__init__(**kwargs)
        self.next_link = kwargs.get('next_link', None)
        self.value = kwargs.get('value', None)


class MonitorComputeConfigurationBase(msrest.serialization.Model):
    """Monitor compute configuration base definition.

    You probably want to use the sub-classes and not this class directly. Known
    sub-classes are: MonitorServerlessSparkCompute.

    All required parameters must be populated in order to send to Azure.

    :ivar compute_type: Required. [Required] Specifies the type of signal to monitor.Constant
     filled by server. Possible values include: "ServerlessSpark".
    :vartype compute_type: str or ~azure.mgmt.machinelearningservices.models.MonitorComputeType
    """

    _validation = {
        'compute_type': {'required': True},
    }

    _attribute_map = {
        'compute_type': {'key': 'computeType', 'type': 'str'},
    }

    _subtype_map = {
        'compute_type': {'ServerlessSpark': 'MonitorServerlessSparkCompute'}
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        """
        super(MonitorComputeConfigurationBase, self).__init__(**kwargs)
        self.compute_type = None  # type: Optional[str]


class MonitorDefinition(msrest.serialization.Model):
    """MonitorDefinition.

    All required parameters must be populated in order to send to Azure.

    :ivar alert_notification_settings: The monitor's notification settings.
    :vartype alert_notification_settings:
     ~azure.mgmt.machinelearningservices.models.MonitorNotificationSettings
    :ivar compute_configuration: Required. [Required] The ARM resource ID of the compute resource
     to run the monitoring job on.
    :vartype compute_configuration:
     ~azure.mgmt.machinelearningservices.models.MonitorComputeConfigurationBase
    :ivar monitoring_target: The entities targeted by the monitor.
    :vartype monitoring_target: ~azure.mgmt.machinelearningservices.models.MonitoringTarget
    :ivar signals: Required. [Required] The signals to monitor.
    :vartype signals: dict[str, ~azure.mgmt.machinelearningservices.models.MonitoringSignalBase]
    """

    _validation = {
        'compute_configuration': {'required': True},
        'signals': {'required': True},
    }

    _attribute_map = {
        'alert_notification_settings': {'key': 'alertNotificationSettings', 'type': 'MonitorNotificationSettings'},
        'compute_configuration': {'key': 'computeConfiguration', 'type': 'MonitorComputeConfigurationBase'},
        'monitoring_target': {'key': 'monitoringTarget', 'type': 'MonitoringTarget'},
        'signals': {'key': 'signals', 'type': '{MonitoringSignalBase}'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword alert_notification_settings: The monitor's notification settings.
        :paramtype alert_notification_settings:
         ~azure.mgmt.machinelearningservices.models.MonitorNotificationSettings
        :keyword compute_configuration: Required. [Required] The ARM resource ID of the compute
         resource to run the monitoring job on.
        :paramtype compute_configuration:
         ~azure.mgmt.machinelearningservices.models.MonitorComputeConfigurationBase
        :keyword monitoring_target: The entities targeted by the monitor.
        :paramtype monitoring_target: ~azure.mgmt.machinelearningservices.models.MonitoringTarget
        :keyword signals: Required. [Required] The signals to monitor.
        :paramtype signals: dict[str, ~azure.mgmt.machinelearningservices.models.MonitoringSignalBase]
        """
        super(MonitorDefinition, self).__init__(**kwargs)
        self.alert_notification_settings = kwargs.get('alert_notification_settings', None)
        self.compute_configuration = kwargs['compute_configuration']
        self.monitoring_target = kwargs.get('monitoring_target', None)
        self.signals = kwargs['signals']


class MonitorEmailNotificationSettings(msrest.serialization.Model):
    """MonitorEmailNotificationSettings.

    :ivar emails: The email recipient list which has a limitation of 499 characters in total.
    :vartype emails: list[str]
    """

    _attribute_map = {
        'emails': {'key': 'emails', 'type': '[str]'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword emails: The email recipient list which has a limitation of 499 characters in total.
        :paramtype emails: list[str]
        """
        super(MonitorEmailNotificationSettings, self).__init__(**kwargs)
        self.emails = kwargs.get('emails', None)


class MonitoringTarget(msrest.serialization.Model):
    """Monitoring target definition.

    All required parameters must be populated in order to send to Azure.

    :ivar deployment_id: Reference to the deployment asset targeted by this monitor.
    :vartype deployment_id: str
    :ivar model_id: Reference to the model asset targeted by this monitor.
    :vartype model_id: str
    :ivar task_type: Required. [Required] The machine learning task type of the monitored model.
     Possible values include: "Classification", "Regression".
    :vartype task_type: str or ~azure.mgmt.machinelearningservices.models.ModelTaskType
    """

    _validation = {
        'task_type': {'required': True},
    }

    _attribute_map = {
        'deployment_id': {'key': 'deploymentId', 'type': 'str'},
        'model_id': {'key': 'modelId', 'type': 'str'},
        'task_type': {'key': 'taskType', 'type': 'str'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword deployment_id: Reference to the deployment asset targeted by this monitor.
        :paramtype deployment_id: str
        :keyword model_id: Reference to the model asset targeted by this monitor.
        :paramtype model_id: str
        :keyword task_type: Required. [Required] The machine learning task type of the monitored model.
         Possible values include: "Classification", "Regression".
        :paramtype task_type: str or ~azure.mgmt.machinelearningservices.models.ModelTaskType
        """
        super(MonitoringTarget, self).__init__(**kwargs)
        self.deployment_id = kwargs.get('deployment_id', None)
        self.model_id = kwargs.get('model_id', None)
        self.task_type = kwargs['task_type']


class MonitoringThreshold(msrest.serialization.Model):
    """MonitoringThreshold.

    :ivar value: The threshold value. If null, the set default is dependent on the metric type.
    :vartype value: float
    """

    _attribute_map = {
        'value': {'key': 'value', 'type': 'float'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword value: The threshold value. If null, the set default is dependent on the metric type.
        :paramtype value: float
        """
        super(MonitoringThreshold, self).__init__(**kwargs)
        self.value = kwargs.get('value', None)


class MonitorNotificationSettings(msrest.serialization.Model):
    """MonitorNotificationSettings.

    :ivar email_notification_settings: The AML notification email settings.
    :vartype email_notification_settings:
     ~azure.mgmt.machinelearningservices.models.MonitorEmailNotificationSettings
    """

    _attribute_map = {
        'email_notification_settings': {'key': 'emailNotificationSettings', 'type': 'MonitorEmailNotificationSettings'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword email_notification_settings: The AML notification email settings.
        :paramtype email_notification_settings:
         ~azure.mgmt.machinelearningservices.models.MonitorEmailNotificationSettings
        """
        super(MonitorNotificationSettings, self).__init__(**kwargs)
        self.email_notification_settings = kwargs.get('email_notification_settings', None)


class MonitorServerlessSparkCompute(MonitorComputeConfigurationBase):
    """Monitor serverless spark compute definition.

    All required parameters must be populated in order to send to Azure.

    :ivar compute_type: Required. [Required] Specifies the type of signal to monitor.Constant
     filled by server. Possible values include: "ServerlessSpark".
    :vartype compute_type: str or ~azure.mgmt.machinelearningservices.models.MonitorComputeType
    :ivar compute_identity: Required. [Required] The identity scheme leveraged to by the spark jobs
     running on serverless Spark.
    :vartype compute_identity:
     ~azure.mgmt.machinelearningservices.models.MonitorComputeIdentityBase
    :ivar instance_type: Required. [Required] The instance type running the Spark job.
    :vartype instance_type: str
    :ivar runtime_version: Required. [Required] The Spark runtime version.
    :vartype runtime_version: str
    """

    _validation = {
        'compute_type': {'required': True},
        'compute_identity': {'required': True},
        'instance_type': {'required': True, 'min_length': 1, 'pattern': r'[a-zA-Z0-9_]'},
        'runtime_version': {'required': True, 'min_length': 1, 'pattern': r'^[0-9]+\.[0-9]+$'},
    }

    _attribute_map = {
        'compute_type': {'key': 'computeType', 'type': 'str'},
        'compute_identity': {'key': 'computeIdentity', 'type': 'MonitorComputeIdentityBase'},
        'instance_type': {'key': 'instanceType', 'type': 'str'},
        'runtime_version': {'key': 'runtimeVersion', 'type': 'str'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword compute_identity: Required. [Required] The identity scheme leveraged to by the spark
         jobs running on serverless Spark.
        :paramtype compute_identity:
         ~azure.mgmt.machinelearningservices.models.MonitorComputeIdentityBase
        :keyword instance_type: Required. [Required] The instance type running the Spark job.
        :paramtype instance_type: str
        :keyword runtime_version: Required. [Required] The Spark runtime version.
        :paramtype runtime_version: str
        """
        super(MonitorServerlessSparkCompute, self).__init__(**kwargs)
        self.compute_type = 'ServerlessSpark'  # type: str
        self.compute_identity = kwargs['compute_identity']
        self.instance_type = kwargs['instance_type']
        self.runtime_version = kwargs['runtime_version']


class Mpi(DistributionConfiguration):
    """MPI distribution configuration.

    All required parameters must be populated in order to send to Azure.

    :ivar distribution_type: Required. [Required] Specifies the type of distribution
     framework.Constant filled by server. Possible values include: "PyTorch", "TensorFlow", "Mpi".
    :vartype distribution_type: str or ~azure.mgmt.machinelearningservices.models.DistributionType
    :ivar process_count_per_instance: Number of processes per MPI node.
    :vartype process_count_per_instance: int
    """

    _validation = {
        'distribution_type': {'required': True},
    }

    _attribute_map = {
        'distribution_type': {'key': 'distributionType', 'type': 'str'},
        'process_count_per_instance': {'key': 'processCountPerInstance', 'type': 'int'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword process_count_per_instance: Number of processes per MPI node.
        :paramtype process_count_per_instance: int
        """
        super(Mpi, self).__init__(**kwargs)
        self.distribution_type = 'Mpi'  # type: str
        self.process_count_per_instance = kwargs.get('process_count_per_instance', None)


class NetworkAcls(msrest.serialization.Model):
    """NetworkAcls.

    :ivar default_action: The default action when no rule from ipRules and from virtualNetworkRules
     match. This is only used after the bypass property has been evaluated. Possible values include:
     "Deny", "Allow".
    :vartype default_action: str or ~azure.mgmt.machinelearningservices.models.DefaultActionType
    :ivar ip_rules: Rules governing the accessibility of a resource from a specific ip address or
     ip range.
    :vartype ip_rules: list[~azure.mgmt.machinelearningservices.models.IPRule]
    """

    _attribute_map = {
        'default_action': {'key': 'defaultAction', 'type': 'str'},
        'ip_rules': {'key': 'ipRules', 'type': '[IPRule]'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword default_action: The default action when no rule from ipRules and from
         virtualNetworkRules match. This is only used after the bypass property has been evaluated.
         Possible values include: "Deny", "Allow".
        :paramtype default_action: str or ~azure.mgmt.machinelearningservices.models.DefaultActionType
        :keyword ip_rules: Rules governing the accessibility of a resource from a specific ip address
         or ip range.
        :paramtype ip_rules: list[~azure.mgmt.machinelearningservices.models.IPRule]
        """
        super(NetworkAcls, self).__init__(**kwargs)
        self.default_action = kwargs.get('default_action', None)
        self.ip_rules = kwargs.get('ip_rules', None)


class NlpVertical(msrest.serialization.Model):
    """Abstract class for NLP related AutoML tasks.
NLP - Natural Language Processing.

    :ivar featurization_settings: Featurization inputs needed for AutoML job.
    :vartype featurization_settings:
     ~azure.mgmt.machinelearningservices.models.NlpVerticalFeaturizationSettings
    :ivar limit_settings: Execution constraints for AutoMLJob.
    :vartype limit_settings: ~azure.mgmt.machinelearningservices.models.NlpVerticalLimitSettings
    :ivar validation_data: Validation data inputs.
    :vartype validation_data: ~azure.mgmt.machinelearningservices.models.MLTableJobInput
    """

    _attribute_map = {
        'featurization_settings': {'key': 'featurizationSettings', 'type': 'NlpVerticalFeaturizationSettings'},
        'limit_settings': {'key': 'limitSettings', 'type': 'NlpVerticalLimitSettings'},
        'validation_data': {'key': 'validationData', 'type': 'MLTableJobInput'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword featurization_settings: Featurization inputs needed for AutoML job.
        :paramtype featurization_settings:
         ~azure.mgmt.machinelearningservices.models.NlpVerticalFeaturizationSettings
        :keyword limit_settings: Execution constraints for AutoMLJob.
        :paramtype limit_settings: ~azure.mgmt.machinelearningservices.models.NlpVerticalLimitSettings
        :keyword validation_data: Validation data inputs.
        :paramtype validation_data: ~azure.mgmt.machinelearningservices.models.MLTableJobInput
        """
        super(NlpVertical, self).__init__(**kwargs)
        self.featurization_settings = kwargs.get('featurization_settings', None)
        self.limit_settings = kwargs.get('limit_settings', None)
        self.validation_data = kwargs.get('validation_data', None)


class NlpVerticalFeaturizationSettings(FeaturizationSettings):
    """NlpVerticalFeaturizationSettings.

    :ivar dataset_language: Dataset language, useful for the text data.
    :vartype dataset_language: str
    """

    _attribute_map = {
        'dataset_language': {'key': 'datasetLanguage', 'type': 'str'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword dataset_language: Dataset language, useful for the text data.
        :paramtype dataset_language: str
        """
        super(NlpVerticalFeaturizationSettings, self).__init__(**kwargs)


class NlpVerticalLimitSettings(msrest.serialization.Model):
    """Job execution constraints.

    :ivar max_concurrent_trials: Maximum Concurrent AutoML iterations.
    :vartype max_concurrent_trials: int
    :ivar max_trials: Number of AutoML iterations.
    :vartype max_trials: int
    :ivar timeout: AutoML job timeout.
    :vartype timeout: ~datetime.timedelta
    """

    _attribute_map = {
        'max_concurrent_trials': {'key': 'maxConcurrentTrials', 'type': 'int'},
        'max_trials': {'key': 'maxTrials', 'type': 'int'},
        'timeout': {'key': 'timeout', 'type': 'duration'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword max_concurrent_trials: Maximum Concurrent AutoML iterations.
        :paramtype max_concurrent_trials: int
        :keyword max_trials: Number of AutoML iterations.
        :paramtype max_trials: int
        :keyword timeout: AutoML job timeout.
        :paramtype timeout: ~datetime.timedelta
        """
        super(NlpVerticalLimitSettings, self).__init__(**kwargs)
        self.max_concurrent_trials = kwargs.get('max_concurrent_trials', 1)
        self.max_trials = kwargs.get('max_trials', 1)
        self.timeout = kwargs.get('timeout', "P7D")


class NodeStateCounts(msrest.serialization.Model):
    """Counts of various compute node states on the amlCompute.

    Variables are only populated by the server, and will be ignored when sending a request.

    :ivar idle_node_count: Number of compute nodes in idle state.
    :vartype idle_node_count: int
    :ivar running_node_count: Number of compute nodes which are running jobs.
    :vartype running_node_count: int
    :ivar preparing_node_count: Number of compute nodes which are being prepared.
    :vartype preparing_node_count: int
    :ivar unusable_node_count: Number of compute nodes which are in unusable state.
    :vartype unusable_node_count: int
    :ivar leaving_node_count: Number of compute nodes which are leaving the amlCompute.
    :vartype leaving_node_count: int
    :ivar preempted_node_count: Number of compute nodes which are in preempted state.
    :vartype preempted_node_count: int
    """

    _validation = {
        'idle_node_count': {'readonly': True},
        'running_node_count': {'readonly': True},
        'preparing_node_count': {'readonly': True},
        'unusable_node_count': {'readonly': True},
        'leaving_node_count': {'readonly': True},
        'preempted_node_count': {'readonly': True},
    }

    _attribute_map = {
        'idle_node_count': {'key': 'idleNodeCount', 'type': 'int'},
        'running_node_count': {'key': 'runningNodeCount', 'type': 'int'},
        'preparing_node_count': {'key': 'preparingNodeCount', 'type': 'int'},
        'unusable_node_count': {'key': 'unusableNodeCount', 'type': 'int'},
        'leaving_node_count': {'key': 'leavingNodeCount', 'type': 'int'},
        'preempted_node_count': {'key': 'preemptedNodeCount', 'type': 'int'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        """
        super(NodeStateCounts, self).__init__(**kwargs)
        self.idle_node_count = None
        self.running_node_count = None
        self.preparing_node_count = None
        self.unusable_node_count = None
        self.leaving_node_count = None
        self.preempted_node_count = None


class NoneAuthTypeWorkspaceConnectionProperties(WorkspaceConnectionPropertiesV2):
    """NoneAuthTypeWorkspaceConnectionProperties.

    Variables are only populated by the server, and will be ignored when sending a request.

    All required parameters must be populated in order to send to Azure.

    :ivar auth_type: Required. Authentication type of the connection target.Constant filled by
     server. Possible values include: "PAT", "ManagedIdentity", "UsernamePassword", "None", "SAS",
     "AccountKey", "ServicePrincipal", "AccessKey", "ApiKey", "CustomKeys", "OAuth2", "AAD".
    :vartype auth_type: str or ~azure.mgmt.machinelearningservices.models.ConnectionAuthType
    :ivar category: Category of the connection. Possible values include: "PythonFeed",
     "ContainerRegistry", "Git", "S3", "Snowflake", "AzureSqlDb", "AzureSynapseAnalytics",
     "AzureMySqlDb", "AzurePostgresDb", "ADLSGen2", "Redis", "ApiKey", "AzureOpenAI", "AIServices",
     "CognitiveSearch", "CognitiveService", "CustomKeys", "AzureBlob", "AzureOneLake", "CosmosDb",
     "CosmosDbMongoDbApi", "AzureDataExplorer", "AzureMariaDb", "AzureDatabricksDeltaLake",
     "AzureSqlMi", "AzureTableStorage", "AmazonRdsForOracle", "AmazonRdsForSqlServer",
     "AmazonRedshift", "Db2", "Drill", "GoogleBigQuery", "Greenplum", "Hbase", "Hive", "Impala",
     "Informix", "MariaDb", "MicrosoftAccess", "MySql", "Netezza", "Oracle", "Phoenix",
     "PostgreSql", "Presto", "SapOpenHub", "SapBw", "SapHana", "SapTable", "Spark", "SqlServer",
     "Sybase", "Teradata", "Vertica", "Pinecone", "Cassandra", "Couchbase", "MongoDbV2",
     "MongoDbAtlas", "AmazonS3Compatible", "FileServer", "FtpServer", "GoogleCloudStorage", "Hdfs",
     "OracleCloudStorage", "Sftp", "GenericHttp", "ODataRest", "Odbc", "GenericRest", "AmazonMws",
     "Concur", "Dynamics", "DynamicsAx", "DynamicsCrm", "GoogleAdWords", "Hubspot", "Jira",
     "Magento", "Marketo", "Office365", "Eloqua", "Responsys", "OracleServiceCloud", "PayPal",
     "QuickBooks", "Salesforce", "SalesforceServiceCloud", "SalesforceMarketingCloud",
     "SapCloudForCustomer", "SapEcc", "ServiceNow", "SharePointOnlineList", "Shopify", "Square",
     "WebTable", "Xero", "Zoho", "GenericContainerRegistry", "Elasticsearch", "OpenAI", "Serp",
     "BingLLMSearch", "Serverless", "ManagedOnlineEndpoint".
    :vartype category: str or ~azure.mgmt.machinelearningservices.models.ConnectionCategory
    :ivar created_by_workspace_arm_id:
    :vartype created_by_workspace_arm_id: str
    :ivar error:
    :vartype error: str
    :ivar expiry_time:
    :vartype expiry_time: ~datetime.datetime
    :ivar group: Group based on connection category. Possible values include: "Azure", "AzureAI",
     "Database", "NoSQL", "File", "GenericProtocol", "ServicesAndApps".
    :vartype group: str or ~azure.mgmt.machinelearningservices.models.ConnectionGroup
    :ivar is_shared_to_all:
    :vartype is_shared_to_all: bool
    :ivar metadata: Store user metadata for this connection.
    :vartype metadata: dict[str, str]
    :ivar pe_requirement: Possible values include: "Required", "NotRequired", "NotApplicable".
    :vartype pe_requirement: str or ~azure.mgmt.machinelearningservices.models.ManagedPERequirement
    :ivar pe_status: Possible values include: "Inactive", "Active", "NotApplicable".
    :vartype pe_status: str or ~azure.mgmt.machinelearningservices.models.ManagedPEStatus
    :ivar shared_user_list:
    :vartype shared_user_list: list[str]
    :ivar target:
    :vartype target: str
    :ivar use_workspace_managed_identity:
    :vartype use_workspace_managed_identity: bool
    """

    _validation = {
        'auth_type': {'required': True},
        'created_by_workspace_arm_id': {'readonly': True},
        'group': {'readonly': True},
    }

    _attribute_map = {
        'auth_type': {'key': 'authType', 'type': 'str'},
        'category': {'key': 'category', 'type': 'str'},
        'created_by_workspace_arm_id': {'key': 'createdByWorkspaceArmId', 'type': 'str'},
        'error': {'key': 'error', 'type': 'str'},
        'expiry_time': {'key': 'expiryTime', 'type': 'iso-8601'},
        'group': {'key': 'group', 'type': 'str'},
        'is_shared_to_all': {'key': 'isSharedToAll', 'type': 'bool'},
        'metadata': {'key': 'metadata', 'type': '{str}'},
        'pe_requirement': {'key': 'peRequirement', 'type': 'str'},
        'pe_status': {'key': 'peStatus', 'type': 'str'},
        'shared_user_list': {'key': 'sharedUserList', 'type': '[str]'},
        'target': {'key': 'target', 'type': 'str'},
        'use_workspace_managed_identity': {'key': 'useWorkspaceManagedIdentity', 'type': 'bool'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword category: Category of the connection. Possible values include: "PythonFeed",
         "ContainerRegistry", "Git", "S3", "Snowflake", "AzureSqlDb", "AzureSynapseAnalytics",
         "AzureMySqlDb", "AzurePostgresDb", "ADLSGen2", "Redis", "ApiKey", "AzureOpenAI", "AIServices",
         "CognitiveSearch", "CognitiveService", "CustomKeys", "AzureBlob", "AzureOneLake", "CosmosDb",
         "CosmosDbMongoDbApi", "AzureDataExplorer", "AzureMariaDb", "AzureDatabricksDeltaLake",
         "AzureSqlMi", "AzureTableStorage", "AmazonRdsForOracle", "AmazonRdsForSqlServer",
         "AmazonRedshift", "Db2", "Drill", "GoogleBigQuery", "Greenplum", "Hbase", "Hive", "Impala",
         "Informix", "MariaDb", "MicrosoftAccess", "MySql", "Netezza", "Oracle", "Phoenix",
         "PostgreSql", "Presto", "SapOpenHub", "SapBw", "SapHana", "SapTable", "Spark", "SqlServer",
         "Sybase", "Teradata", "Vertica", "Pinecone", "Cassandra", "Couchbase", "MongoDbV2",
         "MongoDbAtlas", "AmazonS3Compatible", "FileServer", "FtpServer", "GoogleCloudStorage", "Hdfs",
         "OracleCloudStorage", "Sftp", "GenericHttp", "ODataRest", "Odbc", "GenericRest", "AmazonMws",
         "Concur", "Dynamics", "DynamicsAx", "DynamicsCrm", "GoogleAdWords", "Hubspot", "Jira",
         "Magento", "Marketo", "Office365", "Eloqua", "Responsys", "OracleServiceCloud", "PayPal",
         "QuickBooks", "Salesforce", "SalesforceServiceCloud", "SalesforceMarketingCloud",
         "SapCloudForCustomer", "SapEcc", "ServiceNow", "SharePointOnlineList", "Shopify", "Square",
         "WebTable", "Xero", "Zoho", "GenericContainerRegistry", "Elasticsearch", "OpenAI", "Serp",
         "BingLLMSearch", "Serverless", "ManagedOnlineEndpoint".
        :paramtype category: str or ~azure.mgmt.machinelearningservices.models.ConnectionCategory
        :keyword error:
        :paramtype error: str
        :keyword expiry_time:
        :paramtype expiry_time: ~datetime.datetime
        :keyword is_shared_to_all:
        :paramtype is_shared_to_all: bool
        :keyword metadata: Store user metadata for this connection.
        :paramtype metadata: dict[str, str]
        :keyword pe_requirement: Possible values include: "Required", "NotRequired", "NotApplicable".
        :paramtype pe_requirement: str or
         ~azure.mgmt.machinelearningservices.models.ManagedPERequirement
        :keyword pe_status: Possible values include: "Inactive", "Active", "NotApplicable".
        :paramtype pe_status: str or ~azure.mgmt.machinelearningservices.models.ManagedPEStatus
        :keyword shared_user_list:
        :paramtype shared_user_list: list[str]
        :keyword target:
        :paramtype target: str
        :keyword use_workspace_managed_identity:
        :paramtype use_workspace_managed_identity: bool
        """
        super(NoneAuthTypeWorkspaceConnectionProperties, self).__init__(**kwargs)
        self.auth_type = 'None'  # type: str


class NoneDatastoreCredentials(DatastoreCredentials):
    """Empty/none datastore credentials.

    All required parameters must be populated in order to send to Azure.

    :ivar credentials_type: Required. [Required] Credential type used to authentication with
     storage.Constant filled by server. Possible values include: "AccountKey", "Certificate",
     "None", "Sas", "ServicePrincipal".
    :vartype credentials_type: str or ~azure.mgmt.machinelearningservices.models.CredentialsType
    """

    _validation = {
        'credentials_type': {'required': True},
    }

    _attribute_map = {
        'credentials_type': {'key': 'credentialsType', 'type': 'str'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        """
        super(NoneDatastoreCredentials, self).__init__(**kwargs)
        self.credentials_type = 'None'  # type: str


class NotebookAccessTokenResult(msrest.serialization.Model):
    """NotebookAccessTokenResult.

    Variables are only populated by the server, and will be ignored when sending a request.

    :ivar access_token:
    :vartype access_token: str
    :ivar expires_in:
    :vartype expires_in: int
    :ivar host_name:
    :vartype host_name: str
    :ivar notebook_resource_id:
    :vartype notebook_resource_id: str
    :ivar public_dns:
    :vartype public_dns: str
    :ivar refresh_token:
    :vartype refresh_token: str
    :ivar scope:
    :vartype scope: str
    :ivar token_type:
    :vartype token_type: str
    """

    _validation = {
        'access_token': {'readonly': True},
        'expires_in': {'readonly': True},
        'host_name': {'readonly': True},
        'notebook_resource_id': {'readonly': True},
        'public_dns': {'readonly': True},
        'refresh_token': {'readonly': True},
        'scope': {'readonly': True},
        'token_type': {'readonly': True},
    }

    _attribute_map = {
        'access_token': {'key': 'accessToken', 'type': 'str'},
        'expires_in': {'key': 'expiresIn', 'type': 'int'},
        'host_name': {'key': 'hostName', 'type': 'str'},
        'notebook_resource_id': {'key': 'notebookResourceId', 'type': 'str'},
        'public_dns': {'key': 'publicDns', 'type': 'str'},
        'refresh_token': {'key': 'refreshToken', 'type': 'str'},
        'scope': {'key': 'scope', 'type': 'str'},
        'token_type': {'key': 'tokenType', 'type': 'str'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        """
        super(NotebookAccessTokenResult, self).__init__(**kwargs)
        self.access_token = None
        self.expires_in = None
        self.host_name = None
        self.notebook_resource_id = None
        self.public_dns = None
        self.refresh_token = None
        self.scope = None
        self.token_type = None


class NotebookPreparationError(msrest.serialization.Model):
    """NotebookPreparationError.

    :ivar error_message:
    :vartype error_message: str
    :ivar status_code:
    :vartype status_code: int
    """

    _attribute_map = {
        'error_message': {'key': 'errorMessage', 'type': 'str'},
        'status_code': {'key': 'statusCode', 'type': 'int'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword error_message:
        :paramtype error_message: str
        :keyword status_code:
        :paramtype status_code: int
        """
        super(NotebookPreparationError, self).__init__(**kwargs)
        self.error_message = kwargs.get('error_message', None)
        self.status_code = kwargs.get('status_code', None)


class NotebookResourceInfo(msrest.serialization.Model):
    """NotebookResourceInfo.

    :ivar fqdn:
    :vartype fqdn: str
    :ivar is_private_link_enabled:
    :vartype is_private_link_enabled: bool
    :ivar notebook_preparation_error: The error that occurs when preparing notebook.
    :vartype notebook_preparation_error:
     ~azure.mgmt.machinelearningservices.models.NotebookPreparationError
    :ivar resource_id: the data plane resourceId that used to initialize notebook component.
    :vartype resource_id: str
    """

    _attribute_map = {
        'fqdn': {'key': 'fqdn', 'type': 'str'},
        'is_private_link_enabled': {'key': 'isPrivateLinkEnabled', 'type': 'bool'},
        'notebook_preparation_error': {'key': 'notebookPreparationError', 'type': 'NotebookPreparationError'},
        'resource_id': {'key': 'resourceId', 'type': 'str'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword fqdn:
        :paramtype fqdn: str
        :keyword is_private_link_enabled:
        :paramtype is_private_link_enabled: bool
        :keyword notebook_preparation_error: The error that occurs when preparing notebook.
        :paramtype notebook_preparation_error:
         ~azure.mgmt.machinelearningservices.models.NotebookPreparationError
        :keyword resource_id: the data plane resourceId that used to initialize notebook component.
        :paramtype resource_id: str
        """
        super(NotebookResourceInfo, self).__init__(**kwargs)
        self.fqdn = kwargs.get('fqdn', None)
        self.is_private_link_enabled = kwargs.get('is_private_link_enabled', None)
        self.notebook_preparation_error = kwargs.get('notebook_preparation_error', None)
        self.resource_id = kwargs.get('resource_id', None)


class NotificationSetting(msrest.serialization.Model):
    """Configuration for notification.

    :ivar email_on: Send email notification to user on specified notification type.
    :vartype email_on: list[str or
     ~azure.mgmt.machinelearningservices.models.EmailNotificationEnableType]
    :ivar emails: This is the email recipient list which has a limitation of 499 characters in
     total concat with comma separator.
    :vartype emails: list[str]
    :ivar webhooks: Send webhook callback to a service. Key is a user-provided name for the
     webhook.
    :vartype webhooks: dict[str, ~azure.mgmt.machinelearningservices.models.Webhook]
    """

    _attribute_map = {
        'email_on': {'key': 'emailOn', 'type': '[str]'},
        'emails': {'key': 'emails', 'type': '[str]'},
        'webhooks': {'key': 'webhooks', 'type': '{Webhook}'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword email_on: Send email notification to user on specified notification type.
        :paramtype email_on: list[str or
         ~azure.mgmt.machinelearningservices.models.EmailNotificationEnableType]
        :keyword emails: This is the email recipient list which has a limitation of 499 characters in
         total concat with comma separator.
        :paramtype emails: list[str]
        :keyword webhooks: Send webhook callback to a service. Key is a user-provided name for the
         webhook.
        :paramtype webhooks: dict[str, ~azure.mgmt.machinelearningservices.models.Webhook]
        """
        super(NotificationSetting, self).__init__(**kwargs)
        self.email_on = kwargs.get('email_on', None)
        self.emails = kwargs.get('emails', None)
        self.webhooks = kwargs.get('webhooks', None)


class NumericalDataDriftMetricThreshold(DataDriftMetricThresholdBase):
    """NumericalDataDriftMetricThreshold.

    All required parameters must be populated in order to send to Azure.

    :ivar data_type: Required. [Required] Specifies the data type of the metric threshold.Constant
     filled by server. Possible values include: "Numerical", "Categorical".
    :vartype data_type: str or ~azure.mgmt.machinelearningservices.models.MonitoringFeatureDataType
    :ivar threshold: The threshold value. If null, a default value will be set depending on the
     selected metric.
    :vartype threshold: ~azure.mgmt.machinelearningservices.models.MonitoringThreshold
    :ivar metric: Required. [Required] The numerical data drift metric to calculate. Possible
     values include: "JensenShannonDistance", "PopulationStabilityIndex",
     "NormalizedWassersteinDistance", "TwoSampleKolmogorovSmirnovTest".
    :vartype metric: str or ~azure.mgmt.machinelearningservices.models.NumericalDataDriftMetric
    """

    _validation = {
        'data_type': {'required': True},
        'metric': {'required': True},
    }

    _attribute_map = {
        'data_type': {'key': 'dataType', 'type': 'str'},
        'threshold': {'key': 'threshold', 'type': 'MonitoringThreshold'},
        'metric': {'key': 'metric', 'type': 'str'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword threshold: The threshold value. If null, a default value will be set depending on the
         selected metric.
        :paramtype threshold: ~azure.mgmt.machinelearningservices.models.MonitoringThreshold
        :keyword metric: Required. [Required] The numerical data drift metric to calculate. Possible
         values include: "JensenShannonDistance", "PopulationStabilityIndex",
         "NormalizedWassersteinDistance", "TwoSampleKolmogorovSmirnovTest".
        :paramtype metric: str or ~azure.mgmt.machinelearningservices.models.NumericalDataDriftMetric
        """
        super(NumericalDataDriftMetricThreshold, self).__init__(**kwargs)
        self.data_type = 'Numerical'  # type: str
        self.metric = kwargs['metric']


class NumericalDataQualityMetricThreshold(DataQualityMetricThresholdBase):
    """NumericalDataQualityMetricThreshold.

    All required parameters must be populated in order to send to Azure.

    :ivar data_type: Required. [Required] Specifies the data type of the metric threshold.Constant
     filled by server. Possible values include: "Numerical", "Categorical".
    :vartype data_type: str or ~azure.mgmt.machinelearningservices.models.MonitoringFeatureDataType
    :ivar threshold: The threshold value. If null, a default value will be set depending on the
     selected metric.
    :vartype threshold: ~azure.mgmt.machinelearningservices.models.MonitoringThreshold
    :ivar metric: Required. [Required] The numerical data quality metric to calculate. Possible
     values include: "NullValueRate", "DataTypeErrorRate", "OutOfBoundsRate".
    :vartype metric: str or ~azure.mgmt.machinelearningservices.models.NumericalDataQualityMetric
    """

    _validation = {
        'data_type': {'required': True},
        'metric': {'required': True},
    }

    _attribute_map = {
        'data_type': {'key': 'dataType', 'type': 'str'},
        'threshold': {'key': 'threshold', 'type': 'MonitoringThreshold'},
        'metric': {'key': 'metric', 'type': 'str'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword threshold: The threshold value. If null, a default value will be set depending on the
         selected metric.
        :paramtype threshold: ~azure.mgmt.machinelearningservices.models.MonitoringThreshold
        :keyword metric: Required. [Required] The numerical data quality metric to calculate. Possible
         values include: "NullValueRate", "DataTypeErrorRate", "OutOfBoundsRate".
        :paramtype metric: str or ~azure.mgmt.machinelearningservices.models.NumericalDataQualityMetric
        """
        super(NumericalDataQualityMetricThreshold, self).__init__(**kwargs)
        self.data_type = 'Numerical'  # type: str
        self.metric = kwargs['metric']


class NumericalPredictionDriftMetricThreshold(PredictionDriftMetricThresholdBase):
    """NumericalPredictionDriftMetricThreshold.

    All required parameters must be populated in order to send to Azure.

    :ivar data_type: Required. [Required] Specifies the data type of the metric threshold.Constant
     filled by server. Possible values include: "Numerical", "Categorical".
    :vartype data_type: str or ~azure.mgmt.machinelearningservices.models.MonitoringFeatureDataType
    :ivar threshold: The threshold value. If null, a default value will be set depending on the
     selected metric.
    :vartype threshold: ~azure.mgmt.machinelearningservices.models.MonitoringThreshold
    :ivar metric: Required. [Required] The numerical prediction drift metric to calculate. Possible
     values include: "JensenShannonDistance", "PopulationStabilityIndex",
     "NormalizedWassersteinDistance", "TwoSampleKolmogorovSmirnovTest".
    :vartype metric: str or
     ~azure.mgmt.machinelearningservices.models.NumericalPredictionDriftMetric
    """

    _validation = {
        'data_type': {'required': True},
        'metric': {'required': True},
    }

    _attribute_map = {
        'data_type': {'key': 'dataType', 'type': 'str'},
        'threshold': {'key': 'threshold', 'type': 'MonitoringThreshold'},
        'metric': {'key': 'metric', 'type': 'str'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword threshold: The threshold value. If null, a default value will be set depending on the
         selected metric.
        :paramtype threshold: ~azure.mgmt.machinelearningservices.models.MonitoringThreshold
        :keyword metric: Required. [Required] The numerical prediction drift metric to calculate.
         Possible values include: "JensenShannonDistance", "PopulationStabilityIndex",
         "NormalizedWassersteinDistance", "TwoSampleKolmogorovSmirnovTest".
        :paramtype metric: str or
         ~azure.mgmt.machinelearningservices.models.NumericalPredictionDriftMetric
        """
        super(NumericalPredictionDriftMetricThreshold, self).__init__(**kwargs)
        self.data_type = 'Numerical'  # type: str
        self.metric = kwargs['metric']


class OAuth2AuthTypeWorkspaceConnectionProperties(WorkspaceConnectionPropertiesV2):
    """OAuth2AuthTypeWorkspaceConnectionProperties.

    Variables are only populated by the server, and will be ignored when sending a request.

    All required parameters must be populated in order to send to Azure.

    :ivar auth_type: Required. Authentication type of the connection target.Constant filled by
     server. Possible values include: "PAT", "ManagedIdentity", "UsernamePassword", "None", "SAS",
     "AccountKey", "ServicePrincipal", "AccessKey", "ApiKey", "CustomKeys", "OAuth2", "AAD".
    :vartype auth_type: str or ~azure.mgmt.machinelearningservices.models.ConnectionAuthType
    :ivar category: Category of the connection. Possible values include: "PythonFeed",
     "ContainerRegistry", "Git", "S3", "Snowflake", "AzureSqlDb", "AzureSynapseAnalytics",
     "AzureMySqlDb", "AzurePostgresDb", "ADLSGen2", "Redis", "ApiKey", "AzureOpenAI", "AIServices",
     "CognitiveSearch", "CognitiveService", "CustomKeys", "AzureBlob", "AzureOneLake", "CosmosDb",
     "CosmosDbMongoDbApi", "AzureDataExplorer", "AzureMariaDb", "AzureDatabricksDeltaLake",
     "AzureSqlMi", "AzureTableStorage", "AmazonRdsForOracle", "AmazonRdsForSqlServer",
     "AmazonRedshift", "Db2", "Drill", "GoogleBigQuery", "Greenplum", "Hbase", "Hive", "Impala",
     "Informix", "MariaDb", "MicrosoftAccess", "MySql", "Netezza", "Oracle", "Phoenix",
     "PostgreSql", "Presto", "SapOpenHub", "SapBw", "SapHana", "SapTable", "Spark", "SqlServer",
     "Sybase", "Teradata", "Vertica", "Pinecone", "Cassandra", "Couchbase", "MongoDbV2",
     "MongoDbAtlas", "AmazonS3Compatible", "FileServer", "FtpServer", "GoogleCloudStorage", "Hdfs",
     "OracleCloudStorage", "Sftp", "GenericHttp", "ODataRest", "Odbc", "GenericRest", "AmazonMws",
     "Concur", "Dynamics", "DynamicsAx", "DynamicsCrm", "GoogleAdWords", "Hubspot", "Jira",
     "Magento", "Marketo", "Office365", "Eloqua", "Responsys", "OracleServiceCloud", "PayPal",
     "QuickBooks", "Salesforce", "SalesforceServiceCloud", "SalesforceMarketingCloud",
     "SapCloudForCustomer", "SapEcc", "ServiceNow", "SharePointOnlineList", "Shopify", "Square",
     "WebTable", "Xero", "Zoho", "GenericContainerRegistry", "Elasticsearch", "OpenAI", "Serp",
     "BingLLMSearch", "Serverless", "ManagedOnlineEndpoint".
    :vartype category: str or ~azure.mgmt.machinelearningservices.models.ConnectionCategory
    :ivar created_by_workspace_arm_id:
    :vartype created_by_workspace_arm_id: str
    :ivar error:
    :vartype error: str
    :ivar expiry_time:
    :vartype expiry_time: ~datetime.datetime
    :ivar group: Group based on connection category. Possible values include: "Azure", "AzureAI",
     "Database", "NoSQL", "File", "GenericProtocol", "ServicesAndApps".
    :vartype group: str or ~azure.mgmt.machinelearningservices.models.ConnectionGroup
    :ivar is_shared_to_all:
    :vartype is_shared_to_all: bool
    :ivar metadata: Store user metadata for this connection.
    :vartype metadata: dict[str, str]
    :ivar pe_requirement: Possible values include: "Required", "NotRequired", "NotApplicable".
    :vartype pe_requirement: str or ~azure.mgmt.machinelearningservices.models.ManagedPERequirement
    :ivar pe_status: Possible values include: "Inactive", "Active", "NotApplicable".
    :vartype pe_status: str or ~azure.mgmt.machinelearningservices.models.ManagedPEStatus
    :ivar shared_user_list:
    :vartype shared_user_list: list[str]
    :ivar target:
    :vartype target: str
    :ivar use_workspace_managed_identity:
    :vartype use_workspace_managed_identity: bool
    :ivar credentials: ClientId and ClientSecret are required. Other properties are optional
     depending on each OAuth2 provider's implementation.
    :vartype credentials: ~azure.mgmt.machinelearningservices.models.WorkspaceConnectionOAuth2
    """

    _validation = {
        'auth_type': {'required': True},
        'created_by_workspace_arm_id': {'readonly': True},
        'group': {'readonly': True},
    }

    _attribute_map = {
        'auth_type': {'key': 'authType', 'type': 'str'},
        'category': {'key': 'category', 'type': 'str'},
        'created_by_workspace_arm_id': {'key': 'createdByWorkspaceArmId', 'type': 'str'},
        'error': {'key': 'error', 'type': 'str'},
        'expiry_time': {'key': 'expiryTime', 'type': 'iso-8601'},
        'group': {'key': 'group', 'type': 'str'},
        'is_shared_to_all': {'key': 'isSharedToAll', 'type': 'bool'},
        'metadata': {'key': 'metadata', 'type': '{str}'},
        'pe_requirement': {'key': 'peRequirement', 'type': 'str'},
        'pe_status': {'key': 'peStatus', 'type': 'str'},
        'shared_user_list': {'key': 'sharedUserList', 'type': '[str]'},
        'target': {'key': 'target', 'type': 'str'},
        'use_workspace_managed_identity': {'key': 'useWorkspaceManagedIdentity', 'type': 'bool'},
        'credentials': {'key': 'credentials', 'type': 'WorkspaceConnectionOAuth2'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword category: Category of the connection. Possible values include: "PythonFeed",
         "ContainerRegistry", "Git", "S3", "Snowflake", "AzureSqlDb", "AzureSynapseAnalytics",
         "AzureMySqlDb", "AzurePostgresDb", "ADLSGen2", "Redis", "ApiKey", "AzureOpenAI", "AIServices",
         "CognitiveSearch", "CognitiveService", "CustomKeys", "AzureBlob", "AzureOneLake", "CosmosDb",
         "CosmosDbMongoDbApi", "AzureDataExplorer", "AzureMariaDb", "AzureDatabricksDeltaLake",
         "AzureSqlMi", "AzureTableStorage", "AmazonRdsForOracle", "AmazonRdsForSqlServer",
         "AmazonRedshift", "Db2", "Drill", "GoogleBigQuery", "Greenplum", "Hbase", "Hive", "Impala",
         "Informix", "MariaDb", "MicrosoftAccess", "MySql", "Netezza", "Oracle", "Phoenix",
         "PostgreSql", "Presto", "SapOpenHub", "SapBw", "SapHana", "SapTable", "Spark", "SqlServer",
         "Sybase", "Teradata", "Vertica", "Pinecone", "Cassandra", "Couchbase", "MongoDbV2",
         "MongoDbAtlas", "AmazonS3Compatible", "FileServer", "FtpServer", "GoogleCloudStorage", "Hdfs",
         "OracleCloudStorage", "Sftp", "GenericHttp", "ODataRest", "Odbc", "GenericRest", "AmazonMws",
         "Concur", "Dynamics", "DynamicsAx", "DynamicsCrm", "GoogleAdWords", "Hubspot", "Jira",
         "Magento", "Marketo", "Office365", "Eloqua", "Responsys", "OracleServiceCloud", "PayPal",
         "QuickBooks", "Salesforce", "SalesforceServiceCloud", "SalesforceMarketingCloud",
         "SapCloudForCustomer", "SapEcc", "ServiceNow", "SharePointOnlineList", "Shopify", "Square",
         "WebTable", "Xero", "Zoho", "GenericContainerRegistry", "Elasticsearch", "OpenAI", "Serp",
         "BingLLMSearch", "Serverless", "ManagedOnlineEndpoint".
        :paramtype category: str or ~azure.mgmt.machinelearningservices.models.ConnectionCategory
        :keyword error:
        :paramtype error: str
        :keyword expiry_time:
        :paramtype expiry_time: ~datetime.datetime
        :keyword is_shared_to_all:
        :paramtype is_shared_to_all: bool
        :keyword metadata: Store user metadata for this connection.
        :paramtype metadata: dict[str, str]
        :keyword pe_requirement: Possible values include: "Required", "NotRequired", "NotApplicable".
        :paramtype pe_requirement: str or
         ~azure.mgmt.machinelearningservices.models.ManagedPERequirement
        :keyword pe_status: Possible values include: "Inactive", "Active", "NotApplicable".
        :paramtype pe_status: str or ~azure.mgmt.machinelearningservices.models.ManagedPEStatus
        :keyword shared_user_list:
        :paramtype shared_user_list: list[str]
        :keyword target:
        :paramtype target: str
        :keyword use_workspace_managed_identity:
        :paramtype use_workspace_managed_identity: bool
        :keyword credentials: ClientId and ClientSecret are required. Other properties are optional
         depending on each OAuth2 provider's implementation.
        :paramtype credentials: ~azure.mgmt.machinelearningservices.models.WorkspaceConnectionOAuth2
        """
        super(OAuth2AuthTypeWorkspaceConnectionProperties, self).__init__(**kwargs)
        self.auth_type = 'OAuth2'  # type: str
        self.credentials = kwargs.get('credentials', None)


class Objective(msrest.serialization.Model):
    """Optimization objective.

    All required parameters must be populated in order to send to Azure.

    :ivar goal: Required. [Required] Defines supported metric goals for hyperparameter tuning.
     Possible values include: "Minimize", "Maximize".
    :vartype goal: str or ~azure.mgmt.machinelearningservices.models.Goal
    :ivar primary_metric: Required. [Required] Name of the metric to optimize.
    :vartype primary_metric: str
    """

    _validation = {
        'goal': {'required': True},
        'primary_metric': {'required': True, 'min_length': 1, 'pattern': r'[a-zA-Z0-9_]'},
    }

    _attribute_map = {
        'goal': {'key': 'goal', 'type': 'str'},
        'primary_metric': {'key': 'primaryMetric', 'type': 'str'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword goal: Required. [Required] Defines supported metric goals for hyperparameter tuning.
         Possible values include: "Minimize", "Maximize".
        :paramtype goal: str or ~azure.mgmt.machinelearningservices.models.Goal
        :keyword primary_metric: Required. [Required] Name of the metric to optimize.
        :paramtype primary_metric: str
        """
        super(Objective, self).__init__(**kwargs)
        self.goal = kwargs['goal']
        self.primary_metric = kwargs['primary_metric']


class OneLakeDatastore(DatastoreProperties):
    """OneLake (Trident) datastore configuration.

    Variables are only populated by the server, and will be ignored when sending a request.

    All required parameters must be populated in order to send to Azure.

    :ivar description: The asset description text.
    :vartype description: str
    :ivar properties: The asset property dictionary.
    :vartype properties: dict[str, str]
    :ivar tags: A set of tags. Tag dictionary. Tags can be added, removed, and updated.
    :vartype tags: dict[str, str]
    :ivar credentials: Required. [Required] Account credentials.
    :vartype credentials: ~azure.mgmt.machinelearningservices.models.DatastoreCredentials
    :ivar datastore_type: Required. [Required] Storage type backing the datastore.Constant filled
     by server. Possible values include: "AzureBlob", "AzureDataLakeGen1", "AzureDataLakeGen2",
     "AzureFile", "OneLake".
    :vartype datastore_type: str or ~azure.mgmt.machinelearningservices.models.DatastoreType
    :ivar is_default: Readonly property to indicate if datastore is the workspace default
     datastore.
    :vartype is_default: bool
    :ivar artifact: Required. [Required] OneLake artifact backing the datastore.
    :vartype artifact: ~azure.mgmt.machinelearningservices.models.OneLakeArtifact
    :ivar endpoint: OneLake endpoint to use for the datastore.
    :vartype endpoint: str
    :ivar one_lake_workspace_name: Required. [Required] OneLake workspace name.
    :vartype one_lake_workspace_name: str
    :ivar service_data_access_auth_identity: Indicates which identity to use to authenticate
     service data access to customer's storage. Possible values include: "None",
     "WorkspaceSystemAssignedIdentity", "WorkspaceUserAssignedIdentity".
    :vartype service_data_access_auth_identity: str or
     ~azure.mgmt.machinelearningservices.models.ServiceDataAccessAuthIdentity
    """

    _validation = {
        'credentials': {'required': True},
        'datastore_type': {'required': True},
        'is_default': {'readonly': True},
        'artifact': {'required': True},
        'one_lake_workspace_name': {'required': True, 'min_length': 1, 'pattern': r'[a-zA-Z0-9_]'},
    }

    _attribute_map = {
        'description': {'key': 'description', 'type': 'str'},
        'properties': {'key': 'properties', 'type': '{str}'},
        'tags': {'key': 'tags', 'type': '{str}'},
        'credentials': {'key': 'credentials', 'type': 'DatastoreCredentials'},
        'datastore_type': {'key': 'datastoreType', 'type': 'str'},
        'is_default': {'key': 'isDefault', 'type': 'bool'},
        'artifact': {'key': 'artifact', 'type': 'OneLakeArtifact'},
        'endpoint': {'key': 'endpoint', 'type': 'str'},
        'one_lake_workspace_name': {'key': 'oneLakeWorkspaceName', 'type': 'str'},
        'service_data_access_auth_identity': {'key': 'serviceDataAccessAuthIdentity', 'type': 'str'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword description: The asset description text.
        :paramtype description: str
        :keyword properties: The asset property dictionary.
        :paramtype properties: dict[str, str]
        :keyword tags: A set of tags. Tag dictionary. Tags can be added, removed, and updated.
        :paramtype tags: dict[str, str]
        :keyword credentials: Required. [Required] Account credentials.
        :paramtype credentials: ~azure.mgmt.machinelearningservices.models.DatastoreCredentials
        :keyword artifact: Required. [Required] OneLake artifact backing the datastore.
        :paramtype artifact: ~azure.mgmt.machinelearningservices.models.OneLakeArtifact
        :keyword endpoint: OneLake endpoint to use for the datastore.
        :paramtype endpoint: str
        :keyword one_lake_workspace_name: Required. [Required] OneLake workspace name.
        :paramtype one_lake_workspace_name: str
        :keyword service_data_access_auth_identity: Indicates which identity to use to authenticate
         service data access to customer's storage. Possible values include: "None",
         "WorkspaceSystemAssignedIdentity", "WorkspaceUserAssignedIdentity".
        :paramtype service_data_access_auth_identity: str or
         ~azure.mgmt.machinelearningservices.models.ServiceDataAccessAuthIdentity
        """
        super(OneLakeDatastore, self).__init__(**kwargs)
        self.datastore_type = 'OneLake'  # type: str
        self.artifact = kwargs['artifact']
        self.endpoint = kwargs.get('endpoint', None)
        self.one_lake_workspace_name = kwargs['one_lake_workspace_name']
        self.service_data_access_auth_identity = kwargs.get('service_data_access_auth_identity', None)


class OnlineDeployment(TrackedResource):
    """OnlineDeployment.

    Variables are only populated by the server, and will be ignored when sending a request.

    All required parameters must be populated in order to send to Azure.

    :ivar id: Fully qualified resource ID for the resource. Ex -
     /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}.
    :vartype id: str
    :ivar name: The name of the resource.
    :vartype name: str
    :ivar type: The type of the resource. E.g. "Microsoft.Compute/virtualMachines" or
     "Microsoft.Storage/storageAccounts".
    :vartype type: str
    :ivar system_data: Azure Resource Manager metadata containing createdBy and modifiedBy
     information.
    :vartype system_data: ~azure.mgmt.machinelearningservices.models.SystemData
    :ivar tags: A set of tags. Resource tags.
    :vartype tags: dict[str, str]
    :ivar location: Required. The geo-location where the resource lives.
    :vartype location: str
    :ivar identity: Managed service identity (system assigned and/or user assigned identities).
    :vartype identity: ~azure.mgmt.machinelearningservices.models.ManagedServiceIdentity
    :ivar kind: Metadata used by portal/tooling/etc to render different UX experiences for
     resources of the same type.
    :vartype kind: str
    :ivar properties: Required. [Required] Additional attributes of the entity.
    :vartype properties: ~azure.mgmt.machinelearningservices.models.OnlineDeploymentProperties
    :ivar sku: Sku details required for ARM contract for Autoscaling.
    :vartype sku: ~azure.mgmt.machinelearningservices.models.Sku
    """

    _validation = {
        'id': {'readonly': True},
        'name': {'readonly': True},
        'type': {'readonly': True},
        'system_data': {'readonly': True},
        'location': {'required': True},
        'properties': {'required': True},
    }

    _attribute_map = {
        'id': {'key': 'id', 'type': 'str'},
        'name': {'key': 'name', 'type': 'str'},
        'type': {'key': 'type', 'type': 'str'},
        'system_data': {'key': 'systemData', 'type': 'SystemData'},
        'tags': {'key': 'tags', 'type': '{str}'},
        'location': {'key': 'location', 'type': 'str'},
        'identity': {'key': 'identity', 'type': 'ManagedServiceIdentity'},
        'kind': {'key': 'kind', 'type': 'str'},
        'properties': {'key': 'properties', 'type': 'OnlineDeploymentProperties'},
        'sku': {'key': 'sku', 'type': 'Sku'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword tags: A set of tags. Resource tags.
        :paramtype tags: dict[str, str]
        :keyword location: Required. The geo-location where the resource lives.
        :paramtype location: str
        :keyword identity: Managed service identity (system assigned and/or user assigned identities).
        :paramtype identity: ~azure.mgmt.machinelearningservices.models.ManagedServiceIdentity
        :keyword kind: Metadata used by portal/tooling/etc to render different UX experiences for
         resources of the same type.
        :paramtype kind: str
        :keyword properties: Required. [Required] Additional attributes of the entity.
        :paramtype properties: ~azure.mgmt.machinelearningservices.models.OnlineDeploymentProperties
        :keyword sku: Sku details required for ARM contract for Autoscaling.
        :paramtype sku: ~azure.mgmt.machinelearningservices.models.Sku
        """
        super(OnlineDeployment, self).__init__(**kwargs)
        self.identity = kwargs.get('identity', None)
        self.kind = kwargs.get('kind', None)
        self.properties = kwargs['properties']
        self.sku = kwargs.get('sku', None)


class OnlineDeploymentTrackedResourceArmPaginatedResult(msrest.serialization.Model):
    """A paginated list of OnlineDeployment entities.

    :ivar next_link: The link to the next page of OnlineDeployment objects. If null, there are no
     additional pages.
    :vartype next_link: str
    :ivar value: An array of objects of type OnlineDeployment.
    :vartype value: list[~azure.mgmt.machinelearningservices.models.OnlineDeployment]
    """

    _attribute_map = {
        'next_link': {'key': 'nextLink', 'type': 'str'},
        'value': {'key': 'value', 'type': '[OnlineDeployment]'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword next_link: The link to the next page of OnlineDeployment objects. If null, there are
         no additional pages.
        :paramtype next_link: str
        :keyword value: An array of objects of type OnlineDeployment.
        :paramtype value: list[~azure.mgmt.machinelearningservices.models.OnlineDeployment]
        """
        super(OnlineDeploymentTrackedResourceArmPaginatedResult, self).__init__(**kwargs)
        self.next_link = kwargs.get('next_link', None)
        self.value = kwargs.get('value', None)


class OnlineEndpoint(TrackedResource):
    """OnlineEndpoint.

    Variables are only populated by the server, and will be ignored when sending a request.

    All required parameters must be populated in order to send to Azure.

    :ivar id: Fully qualified resource ID for the resource. Ex -
     /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}.
    :vartype id: str
    :ivar name: The name of the resource.
    :vartype name: str
    :ivar type: The type of the resource. E.g. "Microsoft.Compute/virtualMachines" or
     "Microsoft.Storage/storageAccounts".
    :vartype type: str
    :ivar system_data: Azure Resource Manager metadata containing createdBy and modifiedBy
     information.
    :vartype system_data: ~azure.mgmt.machinelearningservices.models.SystemData
    :ivar tags: A set of tags. Resource tags.
    :vartype tags: dict[str, str]
    :ivar location: Required. The geo-location where the resource lives.
    :vartype location: str
    :ivar identity: Managed service identity (system assigned and/or user assigned identities).
    :vartype identity: ~azure.mgmt.machinelearningservices.models.ManagedServiceIdentity
    :ivar kind: Metadata used by portal/tooling/etc to render different UX experiences for
     resources of the same type.
    :vartype kind: str
    :ivar properties: Required. [Required] Additional attributes of the entity.
    :vartype properties: ~azure.mgmt.machinelearningservices.models.OnlineEndpointProperties
    :ivar sku: Sku details required for ARM contract for Autoscaling.
    :vartype sku: ~azure.mgmt.machinelearningservices.models.Sku
    """

    _validation = {
        'id': {'readonly': True},
        'name': {'readonly': True},
        'type': {'readonly': True},
        'system_data': {'readonly': True},
        'location': {'required': True},
        'properties': {'required': True},
    }

    _attribute_map = {
        'id': {'key': 'id', 'type': 'str'},
        'name': {'key': 'name', 'type': 'str'},
        'type': {'key': 'type', 'type': 'str'},
        'system_data': {'key': 'systemData', 'type': 'SystemData'},
        'tags': {'key': 'tags', 'type': '{str}'},
        'location': {'key': 'location', 'type': 'str'},
        'identity': {'key': 'identity', 'type': 'ManagedServiceIdentity'},
        'kind': {'key': 'kind', 'type': 'str'},
        'properties': {'key': 'properties', 'type': 'OnlineEndpointProperties'},
        'sku': {'key': 'sku', 'type': 'Sku'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword tags: A set of tags. Resource tags.
        :paramtype tags: dict[str, str]
        :keyword location: Required. The geo-location where the resource lives.
        :paramtype location: str
        :keyword identity: Managed service identity (system assigned and/or user assigned identities).
        :paramtype identity: ~azure.mgmt.machinelearningservices.models.ManagedServiceIdentity
        :keyword kind: Metadata used by portal/tooling/etc to render different UX experiences for
         resources of the same type.
        :paramtype kind: str
        :keyword properties: Required. [Required] Additional attributes of the entity.
        :paramtype properties: ~azure.mgmt.machinelearningservices.models.OnlineEndpointProperties
        :keyword sku: Sku details required for ARM contract for Autoscaling.
        :paramtype sku: ~azure.mgmt.machinelearningservices.models.Sku
        """
        super(OnlineEndpoint, self).__init__(**kwargs)
        self.identity = kwargs.get('identity', None)
        self.kind = kwargs.get('kind', None)
        self.properties = kwargs['properties']
        self.sku = kwargs.get('sku', None)


class OnlineEndpointProperties(EndpointPropertiesBase):
    """Online endpoint configuration.

    Variables are only populated by the server, and will be ignored when sending a request.

    All required parameters must be populated in order to send to Azure.

    :ivar auth_mode: Required. [Required] The authentication method for invoking the endpoint (data
     plane operation). Use 'Key' for key-based authentication. Use 'AMLToken' for Azure Machine
     Learning token-based authentication. Use 'AADToken' for Microsoft Entra token-based
     authentication. Possible values include: "AMLToken", "Key", "AADToken".
    :vartype auth_mode: str or ~azure.mgmt.machinelearningservices.models.EndpointAuthMode
    :ivar description: Description of the inference endpoint.
    :vartype description: str
    :ivar keys: EndpointAuthKeys to set initially on an Endpoint.
     This property will always be returned as null. AuthKey values must be retrieved using the
     ListKeys API.
    :vartype keys: ~azure.mgmt.machinelearningservices.models.EndpointAuthKeys
    :ivar properties: Property dictionary. Properties can be added, but not removed or altered.
    :vartype properties: dict[str, str]
    :ivar scoring_uri: Endpoint URI.
    :vartype scoring_uri: str
    :ivar swagger_uri: Endpoint Swagger URI.
    :vartype swagger_uri: str
    :ivar compute: ARM resource ID of the compute if it exists.
     optional.
    :vartype compute: str
    :ivar mirror_traffic: Percentage of traffic to be mirrored to each deployment without using
     returned scoring. Traffic values need to sum to utmost 50.
    :vartype mirror_traffic: dict[str, int]
    :ivar provisioning_state: Provisioning state for the endpoint. Possible values include:
     "Creating", "Deleting", "Succeeded", "Failed", "Updating", "Canceled".
    :vartype provisioning_state: str or
     ~azure.mgmt.machinelearningservices.models.EndpointProvisioningState
    :ivar public_network_access: Set to "Enabled" for endpoints that should allow public access
     when Private Link is enabled. Possible values include: "Enabled", "Disabled".
    :vartype public_network_access: str or
     ~azure.mgmt.machinelearningservices.models.PublicNetworkAccessType
    :ivar traffic: Percentage of traffic from endpoint to divert to each deployment. Traffic values
     need to sum to 100.
    :vartype traffic: dict[str, int]
    """

    _validation = {
        'auth_mode': {'required': True},
        'scoring_uri': {'readonly': True},
        'swagger_uri': {'readonly': True},
        'provisioning_state': {'readonly': True},
    }

    _attribute_map = {
        'auth_mode': {'key': 'authMode', 'type': 'str'},
        'description': {'key': 'description', 'type': 'str'},
        'keys': {'key': 'keys', 'type': 'EndpointAuthKeys'},
        'properties': {'key': 'properties', 'type': '{str}'},
        'scoring_uri': {'key': 'scoringUri', 'type': 'str'},
        'swagger_uri': {'key': 'swaggerUri', 'type': 'str'},
        'compute': {'key': 'compute', 'type': 'str'},
        'mirror_traffic': {'key': 'mirrorTraffic', 'type': '{int}'},
        'provisioning_state': {'key': 'provisioningState', 'type': 'str'},
        'public_network_access': {'key': 'publicNetworkAccess', 'type': 'str'},
        'traffic': {'key': 'traffic', 'type': '{int}'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword auth_mode: Required. [Required] The authentication method for invoking the endpoint
         (data plane operation). Use 'Key' for key-based authentication. Use 'AMLToken' for Azure
         Machine Learning token-based authentication. Use 'AADToken' for Microsoft Entra token-based
         authentication. Possible values include: "AMLToken", "Key", "AADToken".
        :paramtype auth_mode: str or ~azure.mgmt.machinelearningservices.models.EndpointAuthMode
        :keyword description: Description of the inference endpoint.
        :paramtype description: str
        :keyword keys: EndpointAuthKeys to set initially on an Endpoint.
         This property will always be returned as null. AuthKey values must be retrieved using the
         ListKeys API.
        :paramtype keys: ~azure.mgmt.machinelearningservices.models.EndpointAuthKeys
        :keyword properties: Property dictionary. Properties can be added, but not removed or altered.
        :paramtype properties: dict[str, str]
        :keyword compute: ARM resource ID of the compute if it exists.
         optional.
        :paramtype compute: str
        :keyword mirror_traffic: Percentage of traffic to be mirrored to each deployment without using
         returned scoring. Traffic values need to sum to utmost 50.
        :paramtype mirror_traffic: dict[str, int]
        :keyword public_network_access: Set to "Enabled" for endpoints that should allow public access
         when Private Link is enabled. Possible values include: "Enabled", "Disabled".
        :paramtype public_network_access: str or
         ~azure.mgmt.machinelearningservices.models.PublicNetworkAccessType
        :keyword traffic: Percentage of traffic from endpoint to divert to each deployment. Traffic
         values need to sum to 100.
        :paramtype traffic: dict[str, int]
        """
        super(OnlineEndpointProperties, self).__init__(**kwargs)
        self.compute = kwargs.get('compute', None)
        self.mirror_traffic = kwargs.get('mirror_traffic', None)
        self.provisioning_state = None
        self.public_network_access = kwargs.get('public_network_access', None)
        self.traffic = kwargs.get('traffic', None)


class OnlineEndpointTrackedResourceArmPaginatedResult(msrest.serialization.Model):
    """A paginated list of OnlineEndpoint entities.

    :ivar next_link: The link to the next page of OnlineEndpoint objects. If null, there are no
     additional pages.
    :vartype next_link: str
    :ivar value: An array of objects of type OnlineEndpoint.
    :vartype value: list[~azure.mgmt.machinelearningservices.models.OnlineEndpoint]
    """

    _attribute_map = {
        'next_link': {'key': 'nextLink', 'type': 'str'},
        'value': {'key': 'value', 'type': '[OnlineEndpoint]'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword next_link: The link to the next page of OnlineEndpoint objects. If null, there are no
         additional pages.
        :paramtype next_link: str
        :keyword value: An array of objects of type OnlineEndpoint.
        :paramtype value: list[~azure.mgmt.machinelearningservices.models.OnlineEndpoint]
        """
        super(OnlineEndpointTrackedResourceArmPaginatedResult, self).__init__(**kwargs)
        self.next_link = kwargs.get('next_link', None)
        self.value = kwargs.get('value', None)


class OnlineRequestSettings(msrest.serialization.Model):
    """Online deployment scoring requests configuration.

    :ivar max_concurrent_requests_per_instance: The number of maximum concurrent requests per node
     allowed per deployment. Defaults to 1.
    :vartype max_concurrent_requests_per_instance: int
    :ivar max_queue_wait: (Deprecated for Managed Online Endpoints) The maximum amount of time a
     request will stay in the queue in ISO 8601 format.
     Defaults to 500ms.
     (Now increase ``request_timeout_ms`` to account for any networking/queue delays).
    :vartype max_queue_wait: ~datetime.timedelta
    :ivar request_timeout: The scoring timeout in ISO 8601 format.
     Defaults to 5000ms.
    :vartype request_timeout: ~datetime.timedelta
    """

    _attribute_map = {
        'max_concurrent_requests_per_instance': {'key': 'maxConcurrentRequestsPerInstance', 'type': 'int'},
        'max_queue_wait': {'key': 'maxQueueWait', 'type': 'duration'},
        'request_timeout': {'key': 'requestTimeout', 'type': 'duration'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword max_concurrent_requests_per_instance: The number of maximum concurrent requests per
         node allowed per deployment. Defaults to 1.
        :paramtype max_concurrent_requests_per_instance: int
        :keyword max_queue_wait: (Deprecated for Managed Online Endpoints) The maximum amount of time a
         request will stay in the queue in ISO 8601 format.
         Defaults to 500ms.
         (Now increase ``request_timeout_ms`` to account for any networking/queue delays).
        :paramtype max_queue_wait: ~datetime.timedelta
        :keyword request_timeout: The scoring timeout in ISO 8601 format.
         Defaults to 5000ms.
        :paramtype request_timeout: ~datetime.timedelta
        """
        super(OnlineRequestSettings, self).__init__(**kwargs)
        self.max_concurrent_requests_per_instance = kwargs.get('max_concurrent_requests_per_instance', 1)
        self.max_queue_wait = kwargs.get('max_queue_wait', "PT0.5S")
        self.request_timeout = kwargs.get('request_timeout', "PT5S")


class OpenAIEndpointDeploymentResourceProperties(EndpointDeploymentResourceProperties, CognitiveServiceEndpointDeploymentResourceProperties):
    """OpenAIEndpointDeploymentResourceProperties.

    Variables are only populated by the server, and will be ignored when sending a request.

    All required parameters must be populated in order to send to Azure.

    :ivar model: Required. Model used for the endpoint deployment.
    :vartype model: ~azure.mgmt.machinelearningservices.models.EndpointDeploymentModel
    :ivar rai_policy_name: The name of RAI policy.
    :vartype rai_policy_name: str
    :ivar sku:
    :vartype sku: ~azure.mgmt.machinelearningservices.models.CognitiveServicesSku
    :ivar version_upgrade_option: Deployment model version upgrade option. Possible values include:
     "OnceNewDefaultVersionAvailable", "OnceCurrentVersionExpired", "NoAutoUpgrade".
    :vartype version_upgrade_option: str or
     ~azure.mgmt.machinelearningservices.models.DeploymentModelVersionUpgradeOption
    :ivar failure_reason: The failure reason if the creation failed.
    :vartype failure_reason: str
    :ivar provisioning_state: Read-only provision state status property. Possible values include:
     "NotStarted", "Failed", "Creating", "Updating", "Succeeded", "Deleting", "Accepted",
     "Canceled", "Scaling", "Disabled".
    :vartype provisioning_state: str or
     ~azure.mgmt.machinelearningservices.models.DefaultResourceProvisioningState
    :ivar type: Required. Kind of the deployment.Constant filled by server.
    :vartype type: str
    """

    _validation = {
        'model': {'required': True},
        'provisioning_state': {'readonly': True},
        'type': {'required': True, 'min_length': 1, 'pattern': r'[a-zA-Z0-9_]'},
    }

    _attribute_map = {
        'model': {'key': 'model', 'type': 'EndpointDeploymentModel'},
        'rai_policy_name': {'key': 'raiPolicyName', 'type': 'str'},
        'sku': {'key': 'sku', 'type': 'CognitiveServicesSku'},
        'version_upgrade_option': {'key': 'versionUpgradeOption', 'type': 'str'},
        'failure_reason': {'key': 'failureReason', 'type': 'str'},
        'provisioning_state': {'key': 'provisioningState', 'type': 'str'},
        'type': {'key': 'type', 'type': 'str'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword model: Required. Model used for the endpoint deployment.
        :paramtype model: ~azure.mgmt.machinelearningservices.models.EndpointDeploymentModel
        :keyword rai_policy_name: The name of RAI policy.
        :paramtype rai_policy_name: str
        :keyword sku:
        :paramtype sku: ~azure.mgmt.machinelearningservices.models.CognitiveServicesSku
        :keyword version_upgrade_option: Deployment model version upgrade option. Possible values
         include: "OnceNewDefaultVersionAvailable", "OnceCurrentVersionExpired", "NoAutoUpgrade".
        :paramtype version_upgrade_option: str or
         ~azure.mgmt.machinelearningservices.models.DeploymentModelVersionUpgradeOption
        :keyword failure_reason: The failure reason if the creation failed.
        :paramtype failure_reason: str
        """
        super(OpenAIEndpointDeploymentResourceProperties, self).__init__(**kwargs)
        self.model = kwargs['model']
        self.rai_policy_name = kwargs.get('rai_policy_name', None)
        self.sku = kwargs.get('sku', None)
        self.version_upgrade_option = kwargs.get('version_upgrade_option', None)
        self.type = 'Azure.OpenAI'  # type: str
        self.failure_reason = kwargs.get('failure_reason', None)
        self.provisioning_state = None


class OpenAIEndpointResourceProperties(EndpointResourceProperties):
    """OpenAIEndpointResourceProperties.

    Variables are only populated by the server, and will be ignored when sending a request.

    All required parameters must be populated in order to send to Azure.

    :ivar associated_resource_id: Byo resource id for creating the built-in model service
     endpoints.
    :vartype associated_resource_id: str
    :ivar deployments: Deployments info.
    :vartype deployments:
     list[~azure.mgmt.machinelearningservices.models.EndpointDeploymentResourcePropertiesBasicResource]
    :ivar endpoint_type: Required. Type of the endpoint.Constant filled by server. Possible values
     include: "Azure.OpenAI", "Azure.Speech", "Azure.ContentSafety", "Azure.Llama",
     "managedOnlineEndpoint", "serverlessEndpoint".
    :vartype endpoint_type: str or ~azure.mgmt.machinelearningservices.models.EndpointType
    :ivar endpoint_uri: Uri of the endpoint.
    :vartype endpoint_uri: str
    :ivar failure_reason: The failure reason if the creation failed.
    :vartype failure_reason: str
    :ivar location: Location of the endpoint.
     Since input dto and when parse endpoint resource share the same contract
     this Location field is just for parse the endpoint resource info
     we won't let customer specify the endpoint resource location since we will create it the same
     location as workspace.
    :vartype location: str
    :ivar name: Name of the endpoint.
    :vartype name: str
    :ivar provisioning_state: Read-only provision state status property. Possible values include:
     "NotStarted", "Failed", "Creating", "Updating", "Succeeded", "Deleting", "Accepted",
     "Canceled", "Scaling", "Disabled".
    :vartype provisioning_state: str or
     ~azure.mgmt.machinelearningservices.models.DefaultResourceProvisioningState
    :ivar should_create_ai_services_endpoint: Whether the proxy (non-byo) endpoint is a regular
     endpoint or a OneKeyV2 AI services account endpoint.
    :vartype should_create_ai_services_endpoint: bool
    """

    _validation = {
        'endpoint_type': {'required': True},
        'provisioning_state': {'readonly': True},
    }

    _attribute_map = {
        'associated_resource_id': {'key': 'associatedResourceId', 'type': 'str'},
        'deployments': {'key': 'deployments', 'type': '[EndpointDeploymentResourcePropertiesBasicResource]'},
        'endpoint_type': {'key': 'endpointType', 'type': 'str'},
        'endpoint_uri': {'key': 'endpointUri', 'type': 'str'},
        'failure_reason': {'key': 'failureReason', 'type': 'str'},
        'location': {'key': 'location', 'type': 'str'},
        'name': {'key': 'name', 'type': 'str'},
        'provisioning_state': {'key': 'provisioningState', 'type': 'str'},
        'should_create_ai_services_endpoint': {'key': 'shouldCreateAiServicesEndpoint', 'type': 'bool'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword associated_resource_id: Byo resource id for creating the built-in model service
         endpoints.
        :paramtype associated_resource_id: str
        :keyword deployments: Deployments info.
        :paramtype deployments:
         list[~azure.mgmt.machinelearningservices.models.EndpointDeploymentResourcePropertiesBasicResource]
        :keyword endpoint_uri: Uri of the endpoint.
        :paramtype endpoint_uri: str
        :keyword failure_reason: The failure reason if the creation failed.
        :paramtype failure_reason: str
        :keyword location: Location of the endpoint.
         Since input dto and when parse endpoint resource share the same contract
         this Location field is just for parse the endpoint resource info
         we won't let customer specify the endpoint resource location since we will create it the same
         location as workspace.
        :paramtype location: str
        :keyword name: Name of the endpoint.
        :paramtype name: str
        :keyword should_create_ai_services_endpoint: Whether the proxy (non-byo) endpoint is a regular
         endpoint or a OneKeyV2 AI services account endpoint.
        :paramtype should_create_ai_services_endpoint: bool
        """
        super(OpenAIEndpointResourceProperties, self).__init__(**kwargs)
        self.endpoint_type = 'Azure.OpenAI'  # type: str


class Operation(msrest.serialization.Model):
    """Details of a REST API operation, returned from the Resource Provider Operations API.

    Variables are only populated by the server, and will be ignored when sending a request.

    :ivar name: The name of the operation, as per Resource-Based Access Control (RBAC). Examples:
     "Microsoft.Compute/virtualMachines/write", "Microsoft.Compute/virtualMachines/capture/action".
    :vartype name: str
    :ivar is_data_action: Whether the operation applies to data-plane. This is "true" for
     data-plane operations and "false" for ARM/control-plane operations.
    :vartype is_data_action: bool
    :ivar display: Localized display information for this particular operation.
    :vartype display: ~azure.mgmt.machinelearningservices.models.OperationDisplay
    :ivar origin: The intended executor of the operation; as in Resource Based Access Control
     (RBAC) and audit logs UX. Default value is "user,system". Possible values include: "user",
     "system", "user,system".
    :vartype origin: str or ~azure.mgmt.machinelearningservices.models.Origin
    :ivar action_type: Enum. Indicates the action type. "Internal" refers to actions that are for
     internal only APIs. Possible values include: "Internal".
    :vartype action_type: str or ~azure.mgmt.machinelearningservices.models.ActionType
    """

    _validation = {
        'name': {'readonly': True},
        'is_data_action': {'readonly': True},
        'origin': {'readonly': True},
        'action_type': {'readonly': True},
    }

    _attribute_map = {
        'name': {'key': 'name', 'type': 'str'},
        'is_data_action': {'key': 'isDataAction', 'type': 'bool'},
        'display': {'key': 'display', 'type': 'OperationDisplay'},
        'origin': {'key': 'origin', 'type': 'str'},
        'action_type': {'key': 'actionType', 'type': 'str'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword display: Localized display information for this particular operation.
        :paramtype display: ~azure.mgmt.machinelearningservices.models.OperationDisplay
        """
        super(Operation, self).__init__(**kwargs)
        self.name = None
        self.is_data_action = None
        self.display = kwargs.get('display', None)
        self.origin = None
        self.action_type = None


class OperationDisplay(msrest.serialization.Model):
    """Localized display information for this particular operation.

    Variables are only populated by the server, and will be ignored when sending a request.

    :ivar provider: The localized friendly form of the resource provider name, e.g. "Microsoft
     Monitoring Insights" or "Microsoft Compute".
    :vartype provider: str
    :ivar resource: The localized friendly name of the resource type related to this operation.
     E.g. "Virtual Machines" or "Job Schedule Collections".
    :vartype resource: str
    :ivar operation: The concise, localized friendly name for the operation; suitable for
     dropdowns. E.g. "Create or Update Virtual Machine", "Restart Virtual Machine".
    :vartype operation: str
    :ivar description: The short, localized friendly description of the operation; suitable for
     tool tips and detailed views.
    :vartype description: str
    """

    _validation = {
        'provider': {'readonly': True},
        'resource': {'readonly': True},
        'operation': {'readonly': True},
        'description': {'readonly': True},
    }

    _attribute_map = {
        'provider': {'key': 'provider', 'type': 'str'},
        'resource': {'key': 'resource', 'type': 'str'},
        'operation': {'key': 'operation', 'type': 'str'},
        'description': {'key': 'description', 'type': 'str'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        """
        super(OperationDisplay, self).__init__(**kwargs)
        self.provider = None
        self.resource = None
        self.operation = None
        self.description = None


class OperationListResult(msrest.serialization.Model):
    """A list of REST API operations supported by an Azure Resource Provider. It contains an URL link to get the next set of results.

    Variables are only populated by the server, and will be ignored when sending a request.

    :ivar value: List of operations supported by the resource provider.
    :vartype value: list[~azure.mgmt.machinelearningservices.models.Operation]
    :ivar next_link: URL to get the next set of operation list results (if there are any).
    :vartype next_link: str
    """

    _validation = {
        'value': {'readonly': True},
        'next_link': {'readonly': True},
    }

    _attribute_map = {
        'value': {'key': 'value', 'type': '[Operation]'},
        'next_link': {'key': 'nextLink', 'type': 'str'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        """
        super(OperationListResult, self).__init__(**kwargs)
        self.value = None
        self.next_link = None


class OsPatchingStatus(msrest.serialization.Model):
    """Returns metadata about the os patching.

    :ivar patch_status: The os patching status. Possible values include: "CompletedWithWarnings",
     "Failed", "InProgress", "Succeeded", "Unknown".
    :vartype patch_status: str or ~azure.mgmt.machinelearningservices.models.PatchStatus
    :ivar latest_patch_time: Time of the latest os patching.
    :vartype latest_patch_time: str
    :ivar reboot_pending: Specifies whether this compute instance is pending for reboot to finish
     os patching.
    :vartype reboot_pending: bool
    :ivar scheduled_reboot_time: Time of scheduled reboot.
    :vartype scheduled_reboot_time: str
    :ivar os_patching_errors: Collection of errors encountered when doing os patching.
    :vartype os_patching_errors: list[~azure.mgmt.machinelearningservices.models.ErrorResponse]
    """

    _attribute_map = {
        'patch_status': {'key': 'patchStatus', 'type': 'str'},
        'latest_patch_time': {'key': 'latestPatchTime', 'type': 'str'},
        'reboot_pending': {'key': 'rebootPending', 'type': 'bool'},
        'scheduled_reboot_time': {'key': 'scheduledRebootTime', 'type': 'str'},
        'os_patching_errors': {'key': 'osPatchingErrors', 'type': '[ErrorResponse]'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword patch_status: The os patching status. Possible values include:
         "CompletedWithWarnings", "Failed", "InProgress", "Succeeded", "Unknown".
        :paramtype patch_status: str or ~azure.mgmt.machinelearningservices.models.PatchStatus
        :keyword latest_patch_time: Time of the latest os patching.
        :paramtype latest_patch_time: str
        :keyword reboot_pending: Specifies whether this compute instance is pending for reboot to
         finish os patching.
        :paramtype reboot_pending: bool
        :keyword scheduled_reboot_time: Time of scheduled reboot.
        :paramtype scheduled_reboot_time: str
        :keyword os_patching_errors: Collection of errors encountered when doing os patching.
        :paramtype os_patching_errors: list[~azure.mgmt.machinelearningservices.models.ErrorResponse]
        """
        super(OsPatchingStatus, self).__init__(**kwargs)
        self.patch_status = kwargs.get('patch_status', None)
        self.latest_patch_time = kwargs.get('latest_patch_time', None)
        self.reboot_pending = kwargs.get('reboot_pending', None)
        self.scheduled_reboot_time = kwargs.get('scheduled_reboot_time', None)
        self.os_patching_errors = kwargs.get('os_patching_errors', None)


class OutboundRuleBasicResource(Resource):
    """OutboundRuleBasicResource.

    Variables are only populated by the server, and will be ignored when sending a request.

    All required parameters must be populated in order to send to Azure.

    :ivar id: Fully qualified resource ID for the resource. Ex -
     /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}.
    :vartype id: str
    :ivar name: The name of the resource.
    :vartype name: str
    :ivar type: The type of the resource. E.g. "Microsoft.Compute/virtualMachines" or
     "Microsoft.Storage/storageAccounts".
    :vartype type: str
    :ivar system_data: Azure Resource Manager metadata containing createdBy and modifiedBy
     information.
    :vartype system_data: ~azure.mgmt.machinelearningservices.models.SystemData
    :ivar properties: Required. Outbound Rule for the managed network of a machine learning
     workspace.
    :vartype properties: ~azure.mgmt.machinelearningservices.models.OutboundRule
    """

    _validation = {
        'id': {'readonly': True},
        'name': {'readonly': True},
        'type': {'readonly': True},
        'system_data': {'readonly': True},
        'properties': {'required': True},
    }

    _attribute_map = {
        'id': {'key': 'id', 'type': 'str'},
        'name': {'key': 'name', 'type': 'str'},
        'type': {'key': 'type', 'type': 'str'},
        'system_data': {'key': 'systemData', 'type': 'SystemData'},
        'properties': {'key': 'properties', 'type': 'OutboundRule'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword properties: Required. Outbound Rule for the managed network of a machine learning
         workspace.
        :paramtype properties: ~azure.mgmt.machinelearningservices.models.OutboundRule
        """
        super(OutboundRuleBasicResource, self).__init__(**kwargs)
        self.properties = kwargs['properties']


class OutboundRuleListResult(msrest.serialization.Model):
    """List of outbound rules for the managed network of a machine learning workspace.

    :ivar next_link: The link to the next page constructed using the continuationToken.  If null,
     there are no additional pages.
    :vartype next_link: str
    :ivar value: The list of machine learning workspaces. Since this list may be incomplete, the
     nextLink field should be used to request the next list of machine learning workspaces.
    :vartype value: list[~azure.mgmt.machinelearningservices.models.OutboundRuleBasicResource]
    """

    _attribute_map = {
        'next_link': {'key': 'nextLink', 'type': 'str'},
        'value': {'key': 'value', 'type': '[OutboundRuleBasicResource]'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword next_link: The link to the next page constructed using the continuationToken.  If
         null, there are no additional pages.
        :paramtype next_link: str
        :keyword value: The list of machine learning workspaces. Since this list may be incomplete, the
         nextLink field should be used to request the next list of machine learning workspaces.
        :paramtype value: list[~azure.mgmt.machinelearningservices.models.OutboundRuleBasicResource]
        """
        super(OutboundRuleListResult, self).__init__(**kwargs)
        self.next_link = kwargs.get('next_link', None)
        self.value = kwargs.get('value', None)


class OutputPathAssetReference(AssetReferenceBase):
    """Reference to an asset via its path in a job output.

    All required parameters must be populated in order to send to Azure.

    :ivar reference_type: Required. [Required] Specifies the type of asset reference.Constant
     filled by server. Possible values include: "Id", "DataPath", "OutputPath".
    :vartype reference_type: str or ~azure.mgmt.machinelearningservices.models.ReferenceType
    :ivar job_id: ARM resource ID of the job.
    :vartype job_id: str
    :ivar path: The path of the file/directory in the job output.
    :vartype path: str
    """

    _validation = {
        'reference_type': {'required': True},
    }

    _attribute_map = {
        'reference_type': {'key': 'referenceType', 'type': 'str'},
        'job_id': {'key': 'jobId', 'type': 'str'},
        'path': {'key': 'path', 'type': 'str'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword job_id: ARM resource ID of the job.
        :paramtype job_id: str
        :keyword path: The path of the file/directory in the job output.
        :paramtype path: str
        """
        super(OutputPathAssetReference, self).__init__(**kwargs)
        self.reference_type = 'OutputPath'  # type: str
        self.job_id = kwargs.get('job_id', None)
        self.path = kwargs.get('path', None)


class PackageDetails(msrest.serialization.Model):
    """PackageDetails.

    :ivar install_path: Install path.
    :vartype install_path: str
    :ivar installed_version: Installed version.
    :vartype installed_version: str
    :ivar name: Package or dependency name.
    :vartype name: str
    :ivar patched_version: Patched version.
    :vartype patched_version: str
    """

    _attribute_map = {
        'install_path': {'key': 'installPath', 'type': 'str'},
        'installed_version': {'key': 'installedVersion', 'type': 'str'},
        'name': {'key': 'name', 'type': 'str'},
        'patched_version': {'key': 'patchedVersion', 'type': 'str'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword install_path: Install path.
        :paramtype install_path: str
        :keyword installed_version: Installed version.
        :paramtype installed_version: str
        :keyword name: Package or dependency name.
        :paramtype name: str
        :keyword patched_version: Patched version.
        :paramtype patched_version: str
        """
        super(PackageDetails, self).__init__(**kwargs)
        self.install_path = kwargs.get('install_path', None)
        self.installed_version = kwargs.get('installed_version', None)
        self.name = kwargs.get('name', None)
        self.patched_version = kwargs.get('patched_version', None)


class PaginatedComputeResourcesList(msrest.serialization.Model):
    """Paginated list of Machine Learning compute objects wrapped in ARM resource envelope.

    :ivar value: An array of Machine Learning compute objects wrapped in ARM resource envelope.
    :vartype value: list[~azure.mgmt.machinelearningservices.models.ComputeResource]
    :ivar next_link: A continuation link (absolute URI) to the next page of results in the list.
    :vartype next_link: str
    """

    _attribute_map = {
        'value': {'key': 'value', 'type': '[ComputeResource]'},
        'next_link': {'key': 'nextLink', 'type': 'str'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword value: An array of Machine Learning compute objects wrapped in ARM resource envelope.
        :paramtype value: list[~azure.mgmt.machinelearningservices.models.ComputeResource]
        :keyword next_link: A continuation link (absolute URI) to the next page of results in the list.
        :paramtype next_link: str
        """
        super(PaginatedComputeResourcesList, self).__init__(**kwargs)
        self.value = kwargs.get('value', None)
        self.next_link = kwargs.get('next_link', None)


class PartialBatchDeployment(msrest.serialization.Model):
    """Mutable batch inference settings per deployment.

    :ivar description: Description of the endpoint deployment.
    :vartype description: str
    """

    _attribute_map = {
        'description': {'key': 'description', 'type': 'str'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword description: Description of the endpoint deployment.
        :paramtype description: str
        """
        super(PartialBatchDeployment, self).__init__(**kwargs)
        self.description = kwargs.get('description', None)


class PartialBatchDeploymentPartialMinimalTrackedResourceWithProperties(msrest.serialization.Model):
    """Strictly used in update requests.

    :ivar properties: Additional attributes of the entity.
    :vartype properties: ~azure.mgmt.machinelearningservices.models.PartialBatchDeployment
    :ivar tags: A set of tags. Resource tags.
    :vartype tags: dict[str, str]
    """

    _attribute_map = {
        'properties': {'key': 'properties', 'type': 'PartialBatchDeployment'},
        'tags': {'key': 'tags', 'type': '{str}'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword properties: Additional attributes of the entity.
        :paramtype properties: ~azure.mgmt.machinelearningservices.models.PartialBatchDeployment
        :keyword tags: A set of tags. Resource tags.
        :paramtype tags: dict[str, str]
        """
        super(PartialBatchDeploymentPartialMinimalTrackedResourceWithProperties, self).__init__(**kwargs)
        self.properties = kwargs.get('properties', None)
        self.tags = kwargs.get('tags', None)


class PartialManagedServiceIdentity(msrest.serialization.Model):
    """Managed service identity (system assigned and/or user assigned identities).

    :ivar type: Managed service identity (system assigned and/or user assigned identities).
     Possible values include: "None", "SystemAssigned", "UserAssigned",
     "SystemAssigned,UserAssigned".
    :vartype type: str or ~azure.mgmt.machinelearningservices.models.ManagedServiceIdentityType
    :ivar user_assigned_identities: The set of user assigned identities associated with the
     resource. The userAssignedIdentities dictionary keys will be ARM resource ids in the form:
     '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ManagedIdentity/userAssignedIdentities/{identityName}.
     The dictionary values can be empty objects ({}) in requests.
    :vartype user_assigned_identities: dict[str, any]
    """

    _attribute_map = {
        'type': {'key': 'type', 'type': 'str'},
        'user_assigned_identities': {'key': 'userAssignedIdentities', 'type': '{object}'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword type: Managed service identity (system assigned and/or user assigned identities).
         Possible values include: "None", "SystemAssigned", "UserAssigned",
         "SystemAssigned,UserAssigned".
        :paramtype type: str or ~azure.mgmt.machinelearningservices.models.ManagedServiceIdentityType
        :keyword user_assigned_identities: The set of user assigned identities associated with the
         resource. The userAssignedIdentities dictionary keys will be ARM resource ids in the form:
         '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ManagedIdentity/userAssignedIdentities/{identityName}.
         The dictionary values can be empty objects ({}) in requests.
        :paramtype user_assigned_identities: dict[str, any]
        """
        super(PartialManagedServiceIdentity, self).__init__(**kwargs)
        self.type = kwargs.get('type', None)
        self.user_assigned_identities = kwargs.get('user_assigned_identities', None)


class PartialMinimalTrackedResource(msrest.serialization.Model):
    """Strictly used in update requests.

    :ivar tags: A set of tags. Resource tags.
    :vartype tags: dict[str, str]
    """

    _attribute_map = {
        'tags': {'key': 'tags', 'type': '{str}'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword tags: A set of tags. Resource tags.
        :paramtype tags: dict[str, str]
        """
        super(PartialMinimalTrackedResource, self).__init__(**kwargs)
        self.tags = kwargs.get('tags', None)


class PartialMinimalTrackedResourceWithIdentity(PartialMinimalTrackedResource):
    """Strictly used in update requests.

    :ivar tags: A set of tags. Resource tags.
    :vartype tags: dict[str, str]
    :ivar identity: Managed service identity (system assigned and/or user assigned identities).
    :vartype identity: ~azure.mgmt.machinelearningservices.models.PartialManagedServiceIdentity
    """

    _attribute_map = {
        'tags': {'key': 'tags', 'type': '{str}'},
        'identity': {'key': 'identity', 'type': 'PartialManagedServiceIdentity'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword tags: A set of tags. Resource tags.
        :paramtype tags: dict[str, str]
        :keyword identity: Managed service identity (system assigned and/or user assigned identities).
        :paramtype identity: ~azure.mgmt.machinelearningservices.models.PartialManagedServiceIdentity
        """
        super(PartialMinimalTrackedResourceWithIdentity, self).__init__(**kwargs)
        self.identity = kwargs.get('identity', None)


class PartialMinimalTrackedResourceWithSku(PartialMinimalTrackedResource):
    """Strictly used in update requests.

    :ivar tags: A set of tags. Resource tags.
    :vartype tags: dict[str, str]
    :ivar sku: Sku details required for ARM contract for Autoscaling.
    :vartype sku: ~azure.mgmt.machinelearningservices.models.PartialSku
    """

    _attribute_map = {
        'tags': {'key': 'tags', 'type': '{str}'},
        'sku': {'key': 'sku', 'type': 'PartialSku'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword tags: A set of tags. Resource tags.
        :paramtype tags: dict[str, str]
        :keyword sku: Sku details required for ARM contract for Autoscaling.
        :paramtype sku: ~azure.mgmt.machinelearningservices.models.PartialSku
        """
        super(PartialMinimalTrackedResourceWithSku, self).__init__(**kwargs)
        self.sku = kwargs.get('sku', None)


class PartialMinimalTrackedResourceWithSkuAndIdentity(PartialMinimalTrackedResource):
    """Strictly used in update requests.

    :ivar tags: A set of tags. Resource tags.
    :vartype tags: dict[str, str]
    :ivar identity: Managed service identity (system assigned and/or user assigned identities).
    :vartype identity: ~azure.mgmt.machinelearningservices.models.PartialManagedServiceIdentity
    :ivar sku: Sku details required for ARM contract for Autoscaling.
    :vartype sku: ~azure.mgmt.machinelearningservices.models.PartialSku
    """

    _attribute_map = {
        'tags': {'key': 'tags', 'type': '{str}'},
        'identity': {'key': 'identity', 'type': 'PartialManagedServiceIdentity'},
        'sku': {'key': 'sku', 'type': 'PartialSku'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword tags: A set of tags. Resource tags.
        :paramtype tags: dict[str, str]
        :keyword identity: Managed service identity (system assigned and/or user assigned identities).
        :paramtype identity: ~azure.mgmt.machinelearningservices.models.PartialManagedServiceIdentity
        :keyword sku: Sku details required for ARM contract for Autoscaling.
        :paramtype sku: ~azure.mgmt.machinelearningservices.models.PartialSku
        """
        super(PartialMinimalTrackedResourceWithSkuAndIdentity, self).__init__(**kwargs)
        self.identity = kwargs.get('identity', None)
        self.sku = kwargs.get('sku', None)


class PartialRegistryPartialTrackedResource(msrest.serialization.Model):
    """Strictly used in update requests.

    :ivar identity: Managed service identity (system assigned and/or user assigned identities).
    :vartype identity:
     ~azure.mgmt.machinelearningservices.models.RegistryPartialManagedServiceIdentity
    :ivar sku: Sku details required for ARM contract for Autoscaling.
    :vartype sku: ~azure.mgmt.machinelearningservices.models.PartialSku
    :ivar tags: A set of tags. Resource tags.
    :vartype tags: dict[str, str]
    """

    _attribute_map = {
        'identity': {'key': 'identity', 'type': 'RegistryPartialManagedServiceIdentity'},
        'sku': {'key': 'sku', 'type': 'PartialSku'},
        'tags': {'key': 'tags', 'type': '{str}'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword identity: Managed service identity (system assigned and/or user assigned identities).
        :paramtype identity:
         ~azure.mgmt.machinelearningservices.models.RegistryPartialManagedServiceIdentity
        :keyword sku: Sku details required for ARM contract for Autoscaling.
        :paramtype sku: ~azure.mgmt.machinelearningservices.models.PartialSku
        :keyword tags: A set of tags. Resource tags.
        :paramtype tags: dict[str, str]
        """
        super(PartialRegistryPartialTrackedResource, self).__init__(**kwargs)
        self.identity = kwargs.get('identity', None)
        self.sku = kwargs.get('sku', None)
        self.tags = kwargs.get('tags', None)


class PartialSku(msrest.serialization.Model):
    """Common SKU definition.

    :ivar capacity: If the SKU supports scale out/in then the capacity integer should be included.
     If scale out/in is not possible for the resource this may be omitted.
    :vartype capacity: int
    :ivar family: If the service has different generations of hardware, for the same SKU, then that
     can be captured here.
    :vartype family: str
    :ivar name: The name of the SKU. Ex - P3. It is typically a letter+number code.
    :vartype name: str
    :ivar size: The SKU size. When the name field is the combination of tier and some other value,
     this would be the standalone code.
    :vartype size: str
    :ivar tier: This field is required to be implemented by the Resource Provider if the service
     has more than one tier, but is not required on a PUT. Possible values include: "Free", "Basic",
     "Standard", "Premium".
    :vartype tier: str or ~azure.mgmt.machinelearningservices.models.SkuTier
    """

    _attribute_map = {
        'capacity': {'key': 'capacity', 'type': 'int'},
        'family': {'key': 'family', 'type': 'str'},
        'name': {'key': 'name', 'type': 'str'},
        'size': {'key': 'size', 'type': 'str'},
        'tier': {'key': 'tier', 'type': 'str'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword capacity: If the SKU supports scale out/in then the capacity integer should be
         included. If scale out/in is not possible for the resource this may be omitted.
        :paramtype capacity: int
        :keyword family: If the service has different generations of hardware, for the same SKU, then
         that can be captured here.
        :paramtype family: str
        :keyword name: The name of the SKU. Ex - P3. It is typically a letter+number code.
        :paramtype name: str
        :keyword size: The SKU size. When the name field is the combination of tier and some other
         value, this would be the standalone code.
        :paramtype size: str
        :keyword tier: This field is required to be implemented by the Resource Provider if the service
         has more than one tier, but is not required on a PUT. Possible values include: "Free", "Basic",
         "Standard", "Premium".
        :paramtype tier: str or ~azure.mgmt.machinelearningservices.models.SkuTier
        """
        super(PartialSku, self).__init__(**kwargs)
        self.capacity = kwargs.get('capacity', None)
        self.family = kwargs.get('family', None)
        self.name = kwargs.get('name', None)
        self.size = kwargs.get('size', None)
        self.tier = kwargs.get('tier', None)


class Password(msrest.serialization.Model):
    """Password.

    Variables are only populated by the server, and will be ignored when sending a request.

    :ivar name:
    :vartype name: str
    :ivar value:
    :vartype value: str
    """

    _validation = {
        'name': {'readonly': True},
        'value': {'readonly': True},
    }

    _attribute_map = {
        'name': {'key': 'name', 'type': 'str'},
        'value': {'key': 'value', 'type': 'str'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        """
        super(Password, self).__init__(**kwargs)
        self.name = None
        self.value = None


class PATAuthTypeWorkspaceConnectionProperties(WorkspaceConnectionPropertiesV2):
    """PATAuthTypeWorkspaceConnectionProperties.

    Variables are only populated by the server, and will be ignored when sending a request.

    All required parameters must be populated in order to send to Azure.

    :ivar auth_type: Required. Authentication type of the connection target.Constant filled by
     server. Possible values include: "PAT", "ManagedIdentity", "UsernamePassword", "None", "SAS",
     "AccountKey", "ServicePrincipal", "AccessKey", "ApiKey", "CustomKeys", "OAuth2", "AAD".
    :vartype auth_type: str or ~azure.mgmt.machinelearningservices.models.ConnectionAuthType
    :ivar category: Category of the connection. Possible values include: "PythonFeed",
     "ContainerRegistry", "Git", "S3", "Snowflake", "AzureSqlDb", "AzureSynapseAnalytics",
     "AzureMySqlDb", "AzurePostgresDb", "ADLSGen2", "Redis", "ApiKey", "AzureOpenAI", "AIServices",
     "CognitiveSearch", "CognitiveService", "CustomKeys", "AzureBlob", "AzureOneLake", "CosmosDb",
     "CosmosDbMongoDbApi", "AzureDataExplorer", "AzureMariaDb", "AzureDatabricksDeltaLake",
     "AzureSqlMi", "AzureTableStorage", "AmazonRdsForOracle", "AmazonRdsForSqlServer",
     "AmazonRedshift", "Db2", "Drill", "GoogleBigQuery", "Greenplum", "Hbase", "Hive", "Impala",
     "Informix", "MariaDb", "MicrosoftAccess", "MySql", "Netezza", "Oracle", "Phoenix",
     "PostgreSql", "Presto", "SapOpenHub", "SapBw", "SapHana", "SapTable", "Spark", "SqlServer",
     "Sybase", "Teradata", "Vertica", "Pinecone", "Cassandra", "Couchbase", "MongoDbV2",
     "MongoDbAtlas", "AmazonS3Compatible", "FileServer", "FtpServer", "GoogleCloudStorage", "Hdfs",
     "OracleCloudStorage", "Sftp", "GenericHttp", "ODataRest", "Odbc", "GenericRest", "AmazonMws",
     "Concur", "Dynamics", "DynamicsAx", "DynamicsCrm", "GoogleAdWords", "Hubspot", "Jira",
     "Magento", "Marketo", "Office365", "Eloqua", "Responsys", "OracleServiceCloud", "PayPal",
     "QuickBooks", "Salesforce", "SalesforceServiceCloud", "SalesforceMarketingCloud",
     "SapCloudForCustomer", "SapEcc", "ServiceNow", "SharePointOnlineList", "Shopify", "Square",
     "WebTable", "Xero", "Zoho", "GenericContainerRegistry", "Elasticsearch", "OpenAI", "Serp",
     "BingLLMSearch", "Serverless", "ManagedOnlineEndpoint".
    :vartype category: str or ~azure.mgmt.machinelearningservices.models.ConnectionCategory
    :ivar created_by_workspace_arm_id:
    :vartype created_by_workspace_arm_id: str
    :ivar error:
    :vartype error: str
    :ivar expiry_time:
    :vartype expiry_time: ~datetime.datetime
    :ivar group: Group based on connection category. Possible values include: "Azure", "AzureAI",
     "Database", "NoSQL", "File", "GenericProtocol", "ServicesAndApps".
    :vartype group: str or ~azure.mgmt.machinelearningservices.models.ConnectionGroup
    :ivar is_shared_to_all:
    :vartype is_shared_to_all: bool
    :ivar metadata: Store user metadata for this connection.
    :vartype metadata: dict[str, str]
    :ivar pe_requirement: Possible values include: "Required", "NotRequired", "NotApplicable".
    :vartype pe_requirement: str or ~azure.mgmt.machinelearningservices.models.ManagedPERequirement
    :ivar pe_status: Possible values include: "Inactive", "Active", "NotApplicable".
    :vartype pe_status: str or ~azure.mgmt.machinelearningservices.models.ManagedPEStatus
    :ivar shared_user_list:
    :vartype shared_user_list: list[str]
    :ivar target:
    :vartype target: str
    :ivar use_workspace_managed_identity:
    :vartype use_workspace_managed_identity: bool
    :ivar credentials:
    :vartype credentials:
     ~azure.mgmt.machinelearningservices.models.WorkspaceConnectionPersonalAccessToken
    """

    _validation = {
        'auth_type': {'required': True},
        'created_by_workspace_arm_id': {'readonly': True},
        'group': {'readonly': True},
    }

    _attribute_map = {
        'auth_type': {'key': 'authType', 'type': 'str'},
        'category': {'key': 'category', 'type': 'str'},
        'created_by_workspace_arm_id': {'key': 'createdByWorkspaceArmId', 'type': 'str'},
        'error': {'key': 'error', 'type': 'str'},
        'expiry_time': {'key': 'expiryTime', 'type': 'iso-8601'},
        'group': {'key': 'group', 'type': 'str'},
        'is_shared_to_all': {'key': 'isSharedToAll', 'type': 'bool'},
        'metadata': {'key': 'metadata', 'type': '{str}'},
        'pe_requirement': {'key': 'peRequirement', 'type': 'str'},
        'pe_status': {'key': 'peStatus', 'type': 'str'},
        'shared_user_list': {'key': 'sharedUserList', 'type': '[str]'},
        'target': {'key': 'target', 'type': 'str'},
        'use_workspace_managed_identity': {'key': 'useWorkspaceManagedIdentity', 'type': 'bool'},
        'credentials': {'key': 'credentials', 'type': 'WorkspaceConnectionPersonalAccessToken'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword category: Category of the connection. Possible values include: "PythonFeed",
         "ContainerRegistry", "Git", "S3", "Snowflake", "AzureSqlDb", "AzureSynapseAnalytics",
         "AzureMySqlDb", "AzurePostgresDb", "ADLSGen2", "Redis", "ApiKey", "AzureOpenAI", "AIServices",
         "CognitiveSearch", "CognitiveService", "CustomKeys", "AzureBlob", "AzureOneLake", "CosmosDb",
         "CosmosDbMongoDbApi", "AzureDataExplorer", "AzureMariaDb", "AzureDatabricksDeltaLake",
         "AzureSqlMi", "AzureTableStorage", "AmazonRdsForOracle", "AmazonRdsForSqlServer",
         "AmazonRedshift", "Db2", "Drill", "GoogleBigQuery", "Greenplum", "Hbase", "Hive", "Impala",
         "Informix", "MariaDb", "MicrosoftAccess", "MySql", "Netezza", "Oracle", "Phoenix",
         "PostgreSql", "Presto", "SapOpenHub", "SapBw", "SapHana", "SapTable", "Spark", "SqlServer",
         "Sybase", "Teradata", "Vertica", "Pinecone", "Cassandra", "Couchbase", "MongoDbV2",
         "MongoDbAtlas", "AmazonS3Compatible", "FileServer", "FtpServer", "GoogleCloudStorage", "Hdfs",
         "OracleCloudStorage", "Sftp", "GenericHttp", "ODataRest", "Odbc", "GenericRest", "AmazonMws",
         "Concur", "Dynamics", "DynamicsAx", "DynamicsCrm", "GoogleAdWords", "Hubspot", "Jira",
         "Magento", "Marketo", "Office365", "Eloqua", "Responsys", "OracleServiceCloud", "PayPal",
         "QuickBooks", "Salesforce", "SalesforceServiceCloud", "SalesforceMarketingCloud",
         "SapCloudForCustomer", "SapEcc", "ServiceNow", "SharePointOnlineList", "Shopify", "Square",
         "WebTable", "Xero", "Zoho", "GenericContainerRegistry", "Elasticsearch", "OpenAI", "Serp",
         "BingLLMSearch", "Serverless", "ManagedOnlineEndpoint".
        :paramtype category: str or ~azure.mgmt.machinelearningservices.models.ConnectionCategory
        :keyword error:
        :paramtype error: str
        :keyword expiry_time:
        :paramtype expiry_time: ~datetime.datetime
        :keyword is_shared_to_all:
        :paramtype is_shared_to_all: bool
        :keyword metadata: Store user metadata for this connection.
        :paramtype metadata: dict[str, str]
        :keyword pe_requirement: Possible values include: "Required", "NotRequired", "NotApplicable".
        :paramtype pe_requirement: str or
         ~azure.mgmt.machinelearningservices.models.ManagedPERequirement
        :keyword pe_status: Possible values include: "Inactive", "Active", "NotApplicable".
        :paramtype pe_status: str or ~azure.mgmt.machinelearningservices.models.ManagedPEStatus
        :keyword shared_user_list:
        :paramtype shared_user_list: list[str]
        :keyword target:
        :paramtype target: str
        :keyword use_workspace_managed_identity:
        :paramtype use_workspace_managed_identity: bool
        :keyword credentials:
        :paramtype credentials:
         ~azure.mgmt.machinelearningservices.models.WorkspaceConnectionPersonalAccessToken
        """
        super(PATAuthTypeWorkspaceConnectionProperties, self).__init__(**kwargs)
        self.auth_type = 'PAT'  # type: str
        self.credentials = kwargs.get('credentials', None)


class PendingUploadCredentialDto(msrest.serialization.Model):
    """PendingUploadCredentialDto.

    You probably want to use the sub-classes and not this class directly. Known
    sub-classes are: SASCredentialDto.

    All required parameters must be populated in order to send to Azure.

    :ivar credential_type: Required. [Required] Credential type used to authentication with
     storage.Constant filled by server. Possible values include: "SAS".
    :vartype credential_type: str or
     ~azure.mgmt.machinelearningservices.models.PendingUploadCredentialType
    """

    _validation = {
        'credential_type': {'required': True},
    }

    _attribute_map = {
        'credential_type': {'key': 'credentialType', 'type': 'str'},
    }

    _subtype_map = {
        'credential_type': {'SAS': 'SASCredentialDto'}
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        """
        super(PendingUploadCredentialDto, self).__init__(**kwargs)
        self.credential_type = None  # type: Optional[str]


class PendingUploadRequestDto(msrest.serialization.Model):
    """PendingUploadRequestDto.

    :ivar pending_upload_id: If PendingUploadId = null then random guid will be used.
    :vartype pending_upload_id: str
    :ivar pending_upload_type: TemporaryBlobReference is the only supported type. Possible values
     include: "None", "TemporaryBlobReference".
    :vartype pending_upload_type: str or
     ~azure.mgmt.machinelearningservices.models.PendingUploadType
    """

    _attribute_map = {
        'pending_upload_id': {'key': 'pendingUploadId', 'type': 'str'},
        'pending_upload_type': {'key': 'pendingUploadType', 'type': 'str'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword pending_upload_id: If PendingUploadId = null then random guid will be used.
        :paramtype pending_upload_id: str
        :keyword pending_upload_type: TemporaryBlobReference is the only supported type. Possible
         values include: "None", "TemporaryBlobReference".
        :paramtype pending_upload_type: str or
         ~azure.mgmt.machinelearningservices.models.PendingUploadType
        """
        super(PendingUploadRequestDto, self).__init__(**kwargs)
        self.pending_upload_id = kwargs.get('pending_upload_id', None)
        self.pending_upload_type = kwargs.get('pending_upload_type', None)


class PendingUploadResponseDto(msrest.serialization.Model):
    """PendingUploadResponseDto.

    :ivar blob_reference_for_consumption: Container level read, write, list SAS.
    :vartype blob_reference_for_consumption:
     ~azure.mgmt.machinelearningservices.models.BlobReferenceForConsumptionDto
    :ivar pending_upload_id: ID for this upload request.
    :vartype pending_upload_id: str
    :ivar pending_upload_type: TemporaryBlobReference is the only supported type. Possible values
     include: "None", "TemporaryBlobReference".
    :vartype pending_upload_type: str or
     ~azure.mgmt.machinelearningservices.models.PendingUploadType
    """

    _attribute_map = {
        'blob_reference_for_consumption': {'key': 'blobReferenceForConsumption', 'type': 'BlobReferenceForConsumptionDto'},
        'pending_upload_id': {'key': 'pendingUploadId', 'type': 'str'},
        'pending_upload_type': {'key': 'pendingUploadType', 'type': 'str'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword blob_reference_for_consumption: Container level read, write, list SAS.
        :paramtype blob_reference_for_consumption:
         ~azure.mgmt.machinelearningservices.models.BlobReferenceForConsumptionDto
        :keyword pending_upload_id: ID for this upload request.
        :paramtype pending_upload_id: str
        :keyword pending_upload_type: TemporaryBlobReference is the only supported type. Possible
         values include: "None", "TemporaryBlobReference".
        :paramtype pending_upload_type: str or
         ~azure.mgmt.machinelearningservices.models.PendingUploadType
        """
        super(PendingUploadResponseDto, self).__init__(**kwargs)
        self.blob_reference_for_consumption = kwargs.get('blob_reference_for_consumption', None)
        self.pending_upload_id = kwargs.get('pending_upload_id', None)
        self.pending_upload_type = kwargs.get('pending_upload_type', None)


class PersonalComputeInstanceSettings(msrest.serialization.Model):
    """Settings for a personal compute instance.

    :ivar assigned_user: A user explicitly assigned to a personal compute instance.
    :vartype assigned_user: ~azure.mgmt.machinelearningservices.models.AssignedUser
    """

    _attribute_map = {
        'assigned_user': {'key': 'assignedUser', 'type': 'AssignedUser'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword assigned_user: A user explicitly assigned to a personal compute instance.
        :paramtype assigned_user: ~azure.mgmt.machinelearningservices.models.AssignedUser
        """
        super(PersonalComputeInstanceSettings, self).__init__(**kwargs)
        self.assigned_user = kwargs.get('assigned_user', None)


class PipelineJob(JobBaseProperties):
    """Pipeline Job definition: defines generic to MFE attributes.

    Variables are only populated by the server, and will be ignored when sending a request.

    All required parameters must be populated in order to send to Azure.

    :ivar description: The asset description text.
    :vartype description: str
    :ivar properties: The asset property dictionary.
    :vartype properties: dict[str, str]
    :ivar tags: A set of tags. Tag dictionary. Tags can be added, removed, and updated.
    :vartype tags: dict[str, str]
    :ivar component_id: ARM resource ID of the component resource.
    :vartype component_id: str
    :ivar compute_id: ARM resource ID of the compute resource.
    :vartype compute_id: str
    :ivar display_name: Display name of job.
    :vartype display_name: str
    :ivar experiment_name: The name of the experiment the job belongs to. If not set, the job is
     placed in the "Default" experiment.
    :vartype experiment_name: str
    :ivar identity: Identity configuration. If set, this should be one of AmlToken,
     ManagedIdentity, UserIdentity or null.
     Defaults to AmlToken if null.
    :vartype identity: ~azure.mgmt.machinelearningservices.models.IdentityConfiguration
    :ivar is_archived: Is the asset archived?.
    :vartype is_archived: bool
    :ivar job_type: Required. [Required] Specifies the type of job.Constant filled by server.
     Possible values include: "AutoML", "Command", "Sweep", "Pipeline", "Spark", "FineTuning",
     "Distillation".
    :vartype job_type: str or ~azure.mgmt.machinelearningservices.models.JobType
    :ivar notification_setting: Notification setting for the job.
    :vartype notification_setting: ~azure.mgmt.machinelearningservices.models.NotificationSetting
    :ivar parent_job_name: Parent job name.
    :vartype parent_job_name: str
    :ivar services: List of JobEndpoints.
     For local jobs, a job endpoint will have an endpoint value of FileStreamObject.
    :vartype services: dict[str, ~azure.mgmt.machinelearningservices.models.JobService]
    :ivar status: Status of the job. Possible values include: "NotStarted", "Starting",
     "Provisioning", "Preparing", "Queued", "Running", "Finalizing", "CancelRequested", "Completed",
     "Failed", "Canceled", "NotResponding", "Paused", "Unknown".
    :vartype status: str or ~azure.mgmt.machinelearningservices.models.JobStatus
    :ivar inputs: Inputs for the pipeline job.
    :vartype inputs: dict[str, ~azure.mgmt.machinelearningservices.models.JobInput]
    :ivar jobs: Jobs construct the Pipeline Job.
    :vartype jobs: dict[str, any]
    :ivar outputs: Outputs for the pipeline job.
    :vartype outputs: dict[str, ~azure.mgmt.machinelearningservices.models.JobOutput]
    :ivar settings: Pipeline settings, for things like ContinueRunOnStepFailure etc.
    :vartype settings: any
    :ivar source_job_id: ARM resource ID of source job.
    :vartype source_job_id: str
    """

    _validation = {
        'job_type': {'required': True},
        'status': {'readonly': True},
    }

    _attribute_map = {
        'description': {'key': 'description', 'type': 'str'},
        'properties': {'key': 'properties', 'type': '{str}'},
        'tags': {'key': 'tags', 'type': '{str}'},
        'component_id': {'key': 'componentId', 'type': 'str'},
        'compute_id': {'key': 'computeId', 'type': 'str'},
        'display_name': {'key': 'displayName', 'type': 'str'},
        'experiment_name': {'key': 'experimentName', 'type': 'str'},
        'identity': {'key': 'identity', 'type': 'IdentityConfiguration'},
        'is_archived': {'key': 'isArchived', 'type': 'bool'},
        'job_type': {'key': 'jobType', 'type': 'str'},
        'notification_setting': {'key': 'notificationSetting', 'type': 'NotificationSetting'},
        'parent_job_name': {'key': 'parentJobName', 'type': 'str'},
        'services': {'key': 'services', 'type': '{JobService}'},
        'status': {'key': 'status', 'type': 'str'},
        'inputs': {'key': 'inputs', 'type': '{JobInput}'},
        'jobs': {'key': 'jobs', 'type': '{object}'},
        'outputs': {'key': 'outputs', 'type': '{JobOutput}'},
        'settings': {'key': 'settings', 'type': 'object'},
        'source_job_id': {'key': 'sourceJobId', 'type': 'str'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword description: The asset description text.
        :paramtype description: str
        :keyword properties: The asset property dictionary.
        :paramtype properties: dict[str, str]
        :keyword tags: A set of tags. Tag dictionary. Tags can be added, removed, and updated.
        :paramtype tags: dict[str, str]
        :keyword component_id: ARM resource ID of the component resource.
        :paramtype component_id: str
        :keyword compute_id: ARM resource ID of the compute resource.
        :paramtype compute_id: str
        :keyword display_name: Display name of job.
        :paramtype display_name: str
        :keyword experiment_name: The name of the experiment the job belongs to. If not set, the job is
         placed in the "Default" experiment.
        :paramtype experiment_name: str
        :keyword identity: Identity configuration. If set, this should be one of AmlToken,
         ManagedIdentity, UserIdentity or null.
         Defaults to AmlToken if null.
        :paramtype identity: ~azure.mgmt.machinelearningservices.models.IdentityConfiguration
        :keyword is_archived: Is the asset archived?.
        :paramtype is_archived: bool
        :keyword notification_setting: Notification setting for the job.
        :paramtype notification_setting: ~azure.mgmt.machinelearningservices.models.NotificationSetting
        :keyword parent_job_name: Parent job name.
        :paramtype parent_job_name: str
        :keyword services: List of JobEndpoints.
         For local jobs, a job endpoint will have an endpoint value of FileStreamObject.
        :paramtype services: dict[str, ~azure.mgmt.machinelearningservices.models.JobService]
        :keyword inputs: Inputs for the pipeline job.
        :paramtype inputs: dict[str, ~azure.mgmt.machinelearningservices.models.JobInput]
        :keyword jobs: Jobs construct the Pipeline Job.
        :paramtype jobs: dict[str, any]
        :keyword outputs: Outputs for the pipeline job.
        :paramtype outputs: dict[str, ~azure.mgmt.machinelearningservices.models.JobOutput]
        :keyword settings: Pipeline settings, for things like ContinueRunOnStepFailure etc.
        :paramtype settings: any
        :keyword source_job_id: ARM resource ID of source job.
        :paramtype source_job_id: str
        """
        super(PipelineJob, self).__init__(**kwargs)
        self.job_type = 'Pipeline'  # type: str
        self.inputs = kwargs.get('inputs', None)
        self.jobs = kwargs.get('jobs', None)
        self.outputs = kwargs.get('outputs', None)
        self.settings = kwargs.get('settings', None)
        self.source_job_id = kwargs.get('source_job_id', None)


class PredictionDriftMonitoringSignal(MonitoringSignalBase):
    """PredictionDriftMonitoringSignal.

    All required parameters must be populated in order to send to Azure.

    :ivar notification_types: The current notification mode for this signal.
    :vartype notification_types: list[str or
     ~azure.mgmt.machinelearningservices.models.MonitoringNotificationType]
    :ivar properties: Property dictionary. Properties can be added, but not removed or altered.
    :vartype properties: dict[str, str]
    :ivar signal_type: Required. [Required] Specifies the type of signal to monitor.Constant filled
     by server. Possible values include: "DataDrift", "PredictionDrift", "DataQuality",
     "FeatureAttributionDrift", "Custom".
    :vartype signal_type: str or ~azure.mgmt.machinelearningservices.models.MonitoringSignalType
    :ivar feature_data_type_override: A dictionary that maps feature names to their respective data
     types.
    :vartype feature_data_type_override: dict[str, str or
     ~azure.mgmt.machinelearningservices.models.MonitoringFeatureDataType]
    :ivar metric_thresholds: Required. [Required] A list of metrics to calculate and their
     associated thresholds.
    :vartype metric_thresholds:
     list[~azure.mgmt.machinelearningservices.models.PredictionDriftMetricThresholdBase]
    :ivar production_data: Required. [Required] The data which drift will be calculated for.
    :vartype production_data: ~azure.mgmt.machinelearningservices.models.MonitoringInputDataBase
    :ivar reference_data: Required. [Required] The data to calculate drift against.
    :vartype reference_data: ~azure.mgmt.machinelearningservices.models.MonitoringInputDataBase
    """

    _validation = {
        'signal_type': {'required': True},
        'metric_thresholds': {'required': True},
        'production_data': {'required': True},
        'reference_data': {'required': True},
    }

    _attribute_map = {
        'notification_types': {'key': 'notificationTypes', 'type': '[str]'},
        'properties': {'key': 'properties', 'type': '{str}'},
        'signal_type': {'key': 'signalType', 'type': 'str'},
        'feature_data_type_override': {'key': 'featureDataTypeOverride', 'type': '{str}'},
        'metric_thresholds': {'key': 'metricThresholds', 'type': '[PredictionDriftMetricThresholdBase]'},
        'production_data': {'key': 'productionData', 'type': 'MonitoringInputDataBase'},
        'reference_data': {'key': 'referenceData', 'type': 'MonitoringInputDataBase'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword notification_types: The current notification mode for this signal.
        :paramtype notification_types: list[str or
         ~azure.mgmt.machinelearningservices.models.MonitoringNotificationType]
        :keyword properties: Property dictionary. Properties can be added, but not removed or altered.
        :paramtype properties: dict[str, str]
        :keyword feature_data_type_override: A dictionary that maps feature names to their respective
         data types.
        :paramtype feature_data_type_override: dict[str, str or
         ~azure.mgmt.machinelearningservices.models.MonitoringFeatureDataType]
        :keyword metric_thresholds: Required. [Required] A list of metrics to calculate and their
         associated thresholds.
        :paramtype metric_thresholds:
         list[~azure.mgmt.machinelearningservices.models.PredictionDriftMetricThresholdBase]
        :keyword production_data: Required. [Required] The data which drift will be calculated for.
        :paramtype production_data: ~azure.mgmt.machinelearningservices.models.MonitoringInputDataBase
        :keyword reference_data: Required. [Required] The data to calculate drift against.
        :paramtype reference_data: ~azure.mgmt.machinelearningservices.models.MonitoringInputDataBase
        """
        super(PredictionDriftMonitoringSignal, self).__init__(**kwargs)
        self.signal_type = 'PredictionDrift'  # type: str
        self.feature_data_type_override = kwargs.get('feature_data_type_override', None)
        self.metric_thresholds = kwargs['metric_thresholds']
        self.production_data = kwargs['production_data']
        self.reference_data = kwargs['reference_data']


class PrivateEndpoint(msrest.serialization.Model):
    """The Private Endpoint resource.

    Variables are only populated by the server, and will be ignored when sending a request.

    :ivar id: The ARM identifier for Private Endpoint.
    :vartype id: str
    """

    _validation = {
        'id': {'readonly': True},
    }

    _attribute_map = {
        'id': {'key': 'id', 'type': 'str'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        """
        super(PrivateEndpoint, self).__init__(**kwargs)
        self.id = None


class PrivateEndpointConnection(Resource):
    """The Private Endpoint Connection resource.

    Variables are only populated by the server, and will be ignored when sending a request.

    :ivar id: Fully qualified resource ID for the resource. Ex -
     /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}.
    :vartype id: str
    :ivar name: The name of the resource.
    :vartype name: str
    :ivar type: The type of the resource. E.g. "Microsoft.Compute/virtualMachines" or
     "Microsoft.Storage/storageAccounts".
    :vartype type: str
    :ivar system_data: Azure Resource Manager metadata containing createdBy and modifiedBy
     information.
    :vartype system_data: ~azure.mgmt.machinelearningservices.models.SystemData
    :ivar identity: Managed service identity (system assigned and/or user assigned identities).
    :vartype identity: ~azure.mgmt.machinelearningservices.models.ManagedServiceIdentity
    :ivar location: Same as workspace location.
    :vartype location: str
    :ivar sku: Optional. This field is required to be implemented by the RP because AML is
     supporting more than one tier.
    :vartype sku: ~azure.mgmt.machinelearningservices.models.Sku
    :ivar tags: A set of tags. Dictionary of :code:`<string>`.
    :vartype tags: dict[str, str]
    :ivar private_endpoint: The Private Endpoint resource.
    :vartype private_endpoint:
     ~azure.mgmt.machinelearningservices.models.WorkspacePrivateEndpointResource
    :ivar private_link_service_connection_state: The connection state.
    :vartype private_link_service_connection_state:
     ~azure.mgmt.machinelearningservices.models.PrivateLinkServiceConnectionState
    :ivar provisioning_state: The current provisioning state. Possible values include: "Succeeded",
     "Creating", "Deleting", "Failed".
    :vartype provisioning_state: str or
     ~azure.mgmt.machinelearningservices.models.PrivateEndpointConnectionProvisioningState
    """

    _validation = {
        'id': {'readonly': True},
        'name': {'readonly': True},
        'type': {'readonly': True},
        'system_data': {'readonly': True},
    }

    _attribute_map = {
        'id': {'key': 'id', 'type': 'str'},
        'name': {'key': 'name', 'type': 'str'},
        'type': {'key': 'type', 'type': 'str'},
        'system_data': {'key': 'systemData', 'type': 'SystemData'},
        'identity': {'key': 'identity', 'type': 'ManagedServiceIdentity'},
        'location': {'key': 'location', 'type': 'str'},
        'sku': {'key': 'sku', 'type': 'Sku'},
        'tags': {'key': 'tags', 'type': '{str}'},
        'private_endpoint': {'key': 'properties.privateEndpoint', 'type': 'WorkspacePrivateEndpointResource'},
        'private_link_service_connection_state': {'key': 'properties.privateLinkServiceConnectionState', 'type': 'PrivateLinkServiceConnectionState'},
        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword identity: Managed service identity (system assigned and/or user assigned identities).
        :paramtype identity: ~azure.mgmt.machinelearningservices.models.ManagedServiceIdentity
        :keyword location: Same as workspace location.
        :paramtype location: str
        :keyword sku: Optional. This field is required to be implemented by the RP because AML is
         supporting more than one tier.
        :paramtype sku: ~azure.mgmt.machinelearningservices.models.Sku
        :keyword tags: A set of tags. Dictionary of :code:`<string>`.
        :paramtype tags: dict[str, str]
        :keyword private_endpoint: The Private Endpoint resource.
        :paramtype private_endpoint:
         ~azure.mgmt.machinelearningservices.models.WorkspacePrivateEndpointResource
        :keyword private_link_service_connection_state: The connection state.
        :paramtype private_link_service_connection_state:
         ~azure.mgmt.machinelearningservices.models.PrivateLinkServiceConnectionState
        :keyword provisioning_state: The current provisioning state. Possible values include:
         "Succeeded", "Creating", "Deleting", "Failed".
        :paramtype provisioning_state: str or
         ~azure.mgmt.machinelearningservices.models.PrivateEndpointConnectionProvisioningState
        """
        super(PrivateEndpointConnection, self).__init__(**kwargs)
        self.identity = kwargs.get('identity', None)
        self.location = kwargs.get('location', None)
        self.sku = kwargs.get('sku', None)
        self.tags = kwargs.get('tags', None)
        self.private_endpoint = kwargs.get('private_endpoint', None)
        self.private_link_service_connection_state = kwargs.get('private_link_service_connection_state', None)
        self.provisioning_state = kwargs.get('provisioning_state', None)


class PrivateEndpointConnectionListResult(msrest.serialization.Model):
    """List of private endpoint connection associated with the specified workspace.

    :ivar value: Array of private endpoint connections.
    :vartype value: list[~azure.mgmt.machinelearningservices.models.PrivateEndpointConnection]
    """

    _attribute_map = {
        'value': {'key': 'value', 'type': '[PrivateEndpointConnection]'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword value: Array of private endpoint connections.
        :paramtype value: list[~azure.mgmt.machinelearningservices.models.PrivateEndpointConnection]
        """
        super(PrivateEndpointConnectionListResult, self).__init__(**kwargs)
        self.value = kwargs.get('value', None)


class PrivateEndpointDestination(msrest.serialization.Model):
    """Private Endpoint destination for a Private Endpoint Outbound Rule for the managed network of a machine learning workspace.

    :ivar service_resource_id:
    :vartype service_resource_id: str
    :ivar spark_enabled:
    :vartype spark_enabled: bool
    :ivar spark_status: Type of a managed network Outbound Rule of a machine learning workspace.
     Possible values include: "Inactive", "Active".
    :vartype spark_status: str or ~azure.mgmt.machinelearningservices.models.RuleStatus
    :ivar subresource_target:
    :vartype subresource_target: str
    """

    _attribute_map = {
        'service_resource_id': {'key': 'serviceResourceId', 'type': 'str'},
        'spark_enabled': {'key': 'sparkEnabled', 'type': 'bool'},
        'spark_status': {'key': 'sparkStatus', 'type': 'str'},
        'subresource_target': {'key': 'subresourceTarget', 'type': 'str'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword service_resource_id:
        :paramtype service_resource_id: str
        :keyword spark_enabled:
        :paramtype spark_enabled: bool
        :keyword spark_status: Type of a managed network Outbound Rule of a machine learning workspace.
         Possible values include: "Inactive", "Active".
        :paramtype spark_status: str or ~azure.mgmt.machinelearningservices.models.RuleStatus
        :keyword subresource_target:
        :paramtype subresource_target: str
        """
        super(PrivateEndpointDestination, self).__init__(**kwargs)
        self.service_resource_id = kwargs.get('service_resource_id', None)
        self.spark_enabled = kwargs.get('spark_enabled', None)
        self.spark_status = kwargs.get('spark_status', None)
        self.subresource_target = kwargs.get('subresource_target', None)


class PrivateEndpointOutboundRule(OutboundRule):
    """Private Endpoint Outbound Rule for the managed network of a machine learning workspace.

    Variables are only populated by the server, and will be ignored when sending a request.

    All required parameters must be populated in order to send to Azure.

    :ivar category: Category of a managed network Outbound Rule of a machine learning workspace.
     Possible values include: "Required", "Recommended", "UserDefined", "Dependency".
    :vartype category: str or ~azure.mgmt.machinelearningservices.models.RuleCategory
    :ivar parent_rule_names:
    :vartype parent_rule_names: list[str]
    :ivar status: Type of a managed network Outbound Rule of a machine learning workspace. Possible
     values include: "Inactive", "Active".
    :vartype status: str or ~azure.mgmt.machinelearningservices.models.RuleStatus
    :ivar type: Required. Type of a managed network Outbound Rule of a machine learning
     workspace.Constant filled by server. Possible values include: "FQDN", "PrivateEndpoint",
     "ServiceTag".
    :vartype type: str or ~azure.mgmt.machinelearningservices.models.RuleType
    :ivar destination: Private Endpoint destination for a Private Endpoint Outbound Rule for the
     managed network of a machine learning workspace.
    :vartype destination: ~azure.mgmt.machinelearningservices.models.PrivateEndpointDestination
    :ivar fqdns:
    :vartype fqdns: list[str]
    """

    _validation = {
        'parent_rule_names': {'readonly': True},
        'type': {'required': True},
    }

    _attribute_map = {
        'category': {'key': 'category', 'type': 'str'},
        'parent_rule_names': {'key': 'parentRuleNames', 'type': '[str]'},
        'status': {'key': 'status', 'type': 'str'},
        'type': {'key': 'type', 'type': 'str'},
        'destination': {'key': 'destination', 'type': 'PrivateEndpointDestination'},
        'fqdns': {'key': 'fqdns', 'type': '[str]'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword category: Category of a managed network Outbound Rule of a machine learning workspace.
         Possible values include: "Required", "Recommended", "UserDefined", "Dependency".
        :paramtype category: str or ~azure.mgmt.machinelearningservices.models.RuleCategory
        :keyword status: Type of a managed network Outbound Rule of a machine learning workspace.
         Possible values include: "Inactive", "Active".
        :paramtype status: str or ~azure.mgmt.machinelearningservices.models.RuleStatus
        :keyword destination: Private Endpoint destination for a Private Endpoint Outbound Rule for the
         managed network of a machine learning workspace.
        :paramtype destination: ~azure.mgmt.machinelearningservices.models.PrivateEndpointDestination
        :keyword fqdns:
        :paramtype fqdns: list[str]
        """
        super(PrivateEndpointOutboundRule, self).__init__(**kwargs)
        self.type = 'PrivateEndpoint'  # type: str
        self.destination = kwargs.get('destination', None)
        self.fqdns = kwargs.get('fqdns', None)


class PrivateEndpointResource(PrivateEndpoint):
    """The PE network resource that is linked to this PE connection.

    Variables are only populated by the server, and will be ignored when sending a request.

    :ivar id: The ARM identifier for Private Endpoint.
    :vartype id: str
    :ivar subnet_arm_id: The subnetId that the private endpoint is connected to.
    :vartype subnet_arm_id: str
    """

    _validation = {
        'id': {'readonly': True},
    }

    _attribute_map = {
        'id': {'key': 'id', 'type': 'str'},
        'subnet_arm_id': {'key': 'subnetArmId', 'type': 'str'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword subnet_arm_id: The subnetId that the private endpoint is connected to.
        :paramtype subnet_arm_id: str
        """
        super(PrivateEndpointResource, self).__init__(**kwargs)
        self.subnet_arm_id = kwargs.get('subnet_arm_id', None)


class PrivateLinkResource(Resource):
    """A private link resource.

    Variables are only populated by the server, and will be ignored when sending a request.

    :ivar id: Fully qualified resource ID for the resource. Ex -
     /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}.
    :vartype id: str
    :ivar name: The name of the resource.
    :vartype name: str
    :ivar type: The type of the resource. E.g. "Microsoft.Compute/virtualMachines" or
     "Microsoft.Storage/storageAccounts".
    :vartype type: str
    :ivar system_data: Azure Resource Manager metadata containing createdBy and modifiedBy
     information.
    :vartype system_data: ~azure.mgmt.machinelearningservices.models.SystemData
    :ivar identity: Managed service identity (system assigned and/or user assigned identities).
    :vartype identity: ~azure.mgmt.machinelearningservices.models.ManagedServiceIdentity
    :ivar location: Same as workspace location.
    :vartype location: str
    :ivar sku: Optional. This field is required to be implemented by the RP because AML is
     supporting more than one tier.
    :vartype sku: ~azure.mgmt.machinelearningservices.models.Sku
    :ivar tags: A set of tags. Dictionary of :code:`<string>`.
    :vartype tags: dict[str, str]
    :ivar group_id: The private link resource group id.
    :vartype group_id: str
    :ivar required_members: The private link resource required member names.
    :vartype required_members: list[str]
    :ivar required_zone_names: The private link resource Private link DNS zone name.
    :vartype required_zone_names: list[str]
    """

    _validation = {
        'id': {'readonly': True},
        'name': {'readonly': True},
        'type': {'readonly': True},
        'system_data': {'readonly': True},
    }

    _attribute_map = {
        'id': {'key': 'id', 'type': 'str'},
        'name': {'key': 'name', 'type': 'str'},
        'type': {'key': 'type', 'type': 'str'},
        'system_data': {'key': 'systemData', 'type': 'SystemData'},
        'identity': {'key': 'identity', 'type': 'ManagedServiceIdentity'},
        'location': {'key': 'location', 'type': 'str'},
        'sku': {'key': 'sku', 'type': 'Sku'},
        'tags': {'key': 'tags', 'type': '{str}'},
        'group_id': {'key': 'properties.groupId', 'type': 'str'},
        'required_members': {'key': 'properties.requiredMembers', 'type': '[str]'},
        'required_zone_names': {'key': 'properties.requiredZoneNames', 'type': '[str]'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword identity: Managed service identity (system assigned and/or user assigned identities).
        :paramtype identity: ~azure.mgmt.machinelearningservices.models.ManagedServiceIdentity
        :keyword location: Same as workspace location.
        :paramtype location: str
        :keyword sku: Optional. This field is required to be implemented by the RP because AML is
         supporting more than one tier.
        :paramtype sku: ~azure.mgmt.machinelearningservices.models.Sku
        :keyword tags: A set of tags. Dictionary of :code:`<string>`.
        :paramtype tags: dict[str, str]
        :keyword group_id: The private link resource group id.
        :paramtype group_id: str
        :keyword required_members: The private link resource required member names.
        :paramtype required_members: list[str]
        :keyword required_zone_names: The private link resource Private link DNS zone name.
        :paramtype required_zone_names: list[str]
        """
        super(PrivateLinkResource, self).__init__(**kwargs)
        self.identity = kwargs.get('identity', None)
        self.location = kwargs.get('location', None)
        self.sku = kwargs.get('sku', None)
        self.tags = kwargs.get('tags', None)
        self.group_id = kwargs.get('group_id', None)
        self.required_members = kwargs.get('required_members', None)
        self.required_zone_names = kwargs.get('required_zone_names', None)


class PrivateLinkResourceListResult(msrest.serialization.Model):
    """A list of private link resources.

    :ivar value:
    :vartype value: list[~azure.mgmt.machinelearningservices.models.PrivateLinkResource]
    """

    _attribute_map = {
        'value': {'key': 'value', 'type': '[PrivateLinkResource]'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword value:
        :paramtype value: list[~azure.mgmt.machinelearningservices.models.PrivateLinkResource]
        """
        super(PrivateLinkResourceListResult, self).__init__(**kwargs)
        self.value = kwargs.get('value', None)


class PrivateLinkServiceConnectionState(msrest.serialization.Model):
    """A collection of information about the state of the connection between service consumer and provider.

    :ivar actions_required: Some RP chose "None". Other RPs use this for region expansion.
    :vartype actions_required: str
    :ivar description: User-defined message that, per NRP doc, may be used for approval-related
     message.
    :vartype description: str
    :ivar status: Connection status of the service consumer with the service provider. Possible
     values include: "Approved", "Pending", "Rejected", "Disconnected", "Timeout".
    :vartype status: str or
     ~azure.mgmt.machinelearningservices.models.EndpointServiceConnectionStatus
    """

    _attribute_map = {
        'actions_required': {'key': 'actionsRequired', 'type': 'str'},
        'description': {'key': 'description', 'type': 'str'},
        'status': {'key': 'status', 'type': 'str'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword actions_required: Some RP chose "None". Other RPs use this for region expansion.
        :paramtype actions_required: str
        :keyword description: User-defined message that, per NRP doc, may be used for approval-related
         message.
        :paramtype description: str
        :keyword status: Connection status of the service consumer with the service provider. Possible
         values include: "Approved", "Pending", "Rejected", "Disconnected", "Timeout".
        :paramtype status: str or
         ~azure.mgmt.machinelearningservices.models.EndpointServiceConnectionStatus
        """
        super(PrivateLinkServiceConnectionState, self).__init__(**kwargs)
        self.actions_required = kwargs.get('actions_required', None)
        self.description = kwargs.get('description', None)
        self.status = kwargs.get('status', None)


class ProbeSettings(msrest.serialization.Model):
    """Deployment container liveness/readiness probe configuration.

    :ivar failure_threshold: The number of failures to allow before returning an unhealthy status.
    :vartype failure_threshold: int
    :ivar initial_delay: The delay before the first probe in ISO 8601 format.
    :vartype initial_delay: ~datetime.timedelta
    :ivar period: The length of time between probes in ISO 8601 format.
    :vartype period: ~datetime.timedelta
    :ivar success_threshold: The number of successful probes before returning a healthy status.
    :vartype success_threshold: int
    :ivar timeout: The probe timeout in ISO 8601 format.
    :vartype timeout: ~datetime.timedelta
    """

    _attribute_map = {
        'failure_threshold': {'key': 'failureThreshold', 'type': 'int'},
        'initial_delay': {'key': 'initialDelay', 'type': 'duration'},
        'period': {'key': 'period', 'type': 'duration'},
        'success_threshold': {'key': 'successThreshold', 'type': 'int'},
        'timeout': {'key': 'timeout', 'type': 'duration'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword failure_threshold: The number of failures to allow before returning an unhealthy
         status.
        :paramtype failure_threshold: int
        :keyword initial_delay: The delay before the first probe in ISO 8601 format.
        :paramtype initial_delay: ~datetime.timedelta
        :keyword period: The length of time between probes in ISO 8601 format.
        :paramtype period: ~datetime.timedelta
        :keyword success_threshold: The number of successful probes before returning a healthy status.
        :paramtype success_threshold: int
        :keyword timeout: The probe timeout in ISO 8601 format.
        :paramtype timeout: ~datetime.timedelta
        """
        super(ProbeSettings, self).__init__(**kwargs)
        self.failure_threshold = kwargs.get('failure_threshold', 30)
        self.initial_delay = kwargs.get('initial_delay', None)
        self.period = kwargs.get('period', "PT10S")
        self.success_threshold = kwargs.get('success_threshold', 1)
        self.timeout = kwargs.get('timeout', "PT2S")


class PromptSettings(msrest.serialization.Model):
    """PromptSettings.

    :ivar enable_chain_of_density:
    :vartype enable_chain_of_density: bool
    :ivar enable_chain_of_thought:
    :vartype enable_chain_of_thought: bool
    :ivar max_len_summary:
    :vartype max_len_summary: int
    """

    _attribute_map = {
        'enable_chain_of_density': {'key': 'enableChainOfDensity', 'type': 'bool'},
        'enable_chain_of_thought': {'key': 'enableChainOfThought', 'type': 'bool'},
        'max_len_summary': {'key': 'maxLenSummary', 'type': 'int'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword enable_chain_of_density:
        :paramtype enable_chain_of_density: bool
        :keyword enable_chain_of_thought:
        :paramtype enable_chain_of_thought: bool
        :keyword max_len_summary:
        :paramtype max_len_summary: int
        """
        super(PromptSettings, self).__init__(**kwargs)
        self.enable_chain_of_density = kwargs.get('enable_chain_of_density', None)
        self.enable_chain_of_thought = kwargs.get('enable_chain_of_thought', None)
        self.max_len_summary = kwargs.get('max_len_summary', None)


class PTUDeploymentUsage(msrest.serialization.Model):
    """PTUDeploymentUsage.

    :ivar collection_quota_usage: Usage number from the collection level quota.
    :vartype collection_quota_usage: long
    :ivar deployment_name: Deployment name.
    :vartype deployment_name: str
    :ivar resource_group: Resource group name.
    :vartype resource_group: str
    :ivar usage: Usage number from subscription level quota.
    :vartype usage: long
    :ivar workspace_name: Workspace name.
    :vartype workspace_name: str
    """

    _attribute_map = {
        'collection_quota_usage': {'key': 'collectionQuotaUsage', 'type': 'long'},
        'deployment_name': {'key': 'deploymentName', 'type': 'str'},
        'resource_group': {'key': 'resourceGroup', 'type': 'str'},
        'usage': {'key': 'usage', 'type': 'long'},
        'workspace_name': {'key': 'workspaceName', 'type': 'str'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword collection_quota_usage: Usage number from the collection level quota.
        :paramtype collection_quota_usage: long
        :keyword deployment_name: Deployment name.
        :paramtype deployment_name: str
        :keyword resource_group: Resource group name.
        :paramtype resource_group: str
        :keyword usage: Usage number from subscription level quota.
        :paramtype usage: long
        :keyword workspace_name: Workspace name.
        :paramtype workspace_name: str
        """
        super(PTUDeploymentUsage, self).__init__(**kwargs)
        self.collection_quota_usage = kwargs.get('collection_quota_usage', None)
        self.deployment_name = kwargs.get('deployment_name', None)
        self.resource_group = kwargs.get('resource_group', None)
        self.usage = kwargs.get('usage', None)
        self.workspace_name = kwargs.get('workspace_name', None)


class PyTorch(DistributionConfiguration):
    """PyTorch distribution configuration.

    All required parameters must be populated in order to send to Azure.

    :ivar distribution_type: Required. [Required] Specifies the type of distribution
     framework.Constant filled by server. Possible values include: "PyTorch", "TensorFlow", "Mpi".
    :vartype distribution_type: str or ~azure.mgmt.machinelearningservices.models.DistributionType
    :ivar process_count_per_instance: Number of processes per node.
    :vartype process_count_per_instance: int
    """

    _validation = {
        'distribution_type': {'required': True},
    }

    _attribute_map = {
        'distribution_type': {'key': 'distributionType', 'type': 'str'},
        'process_count_per_instance': {'key': 'processCountPerInstance', 'type': 'int'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword process_count_per_instance: Number of processes per node.
        :paramtype process_count_per_instance: int
        """
        super(PyTorch, self).__init__(**kwargs)
        self.distribution_type = 'PyTorch'  # type: str
        self.process_count_per_instance = kwargs.get('process_count_per_instance', None)


class QueueSettings(msrest.serialization.Model):
    """QueueSettings.

    :ivar job_tier: Controls the compute job tier. Possible values include: "Null", "Spot",
     "Basic", "Standard", "Premium".
    :vartype job_tier: str or ~azure.mgmt.machinelearningservices.models.JobTier
    """

    _attribute_map = {
        'job_tier': {'key': 'jobTier', 'type': 'str'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword job_tier: Controls the compute job tier. Possible values include: "Null", "Spot",
         "Basic", "Standard", "Premium".
        :paramtype job_tier: str or ~azure.mgmt.machinelearningservices.models.JobTier
        """
        super(QueueSettings, self).__init__(**kwargs)
        self.job_tier = kwargs.get('job_tier', None)


class QuotaBaseProperties(msrest.serialization.Model):
    """The properties for Quota update or retrieval.

    :ivar id: Specifies the resource ID.
    :vartype id: str
    :ivar type: Specifies the resource type.
    :vartype type: str
    :ivar limit: The maximum permitted quota of the resource.
    :vartype limit: long
    :ivar unit: An enum describing the unit of quota measurement. Possible values include: "Count".
    :vartype unit: str or ~azure.mgmt.machinelearningservices.models.QuotaUnit
    """

    _attribute_map = {
        'id': {'key': 'id', 'type': 'str'},
        'type': {'key': 'type', 'type': 'str'},
        'limit': {'key': 'limit', 'type': 'long'},
        'unit': {'key': 'unit', 'type': 'str'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword id: Specifies the resource ID.
        :paramtype id: str
        :keyword type: Specifies the resource type.
        :paramtype type: str
        :keyword limit: The maximum permitted quota of the resource.
        :paramtype limit: long
        :keyword unit: An enum describing the unit of quota measurement. Possible values include:
         "Count".
        :paramtype unit: str or ~azure.mgmt.machinelearningservices.models.QuotaUnit
        """
        super(QuotaBaseProperties, self).__init__(**kwargs)
        self.id = kwargs.get('id', None)
        self.type = kwargs.get('type', None)
        self.limit = kwargs.get('limit', None)
        self.unit = kwargs.get('unit', None)


class QuotaUpdateParameters(msrest.serialization.Model):
    """Quota update parameters.

    :ivar value: The list for update quota.
    :vartype value: list[~azure.mgmt.machinelearningservices.models.QuotaBaseProperties]
    :ivar location: Region of workspace quota to be updated.
    :vartype location: str
    """

    _attribute_map = {
        'value': {'key': 'value', 'type': '[QuotaBaseProperties]'},
        'location': {'key': 'location', 'type': 'str'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword value: The list for update quota.
        :paramtype value: list[~azure.mgmt.machinelearningservices.models.QuotaBaseProperties]
        :keyword location: Region of workspace quota to be updated.
        :paramtype location: str
        """
        super(QuotaUpdateParameters, self).__init__(**kwargs)
        self.value = kwargs.get('value', None)
        self.location = kwargs.get('location', None)


class RaiBlocklistConfig(msrest.serialization.Model):
    """Azure OpenAI blocklist config.

    :ivar blocking: If blocking would occur.
    :vartype blocking: bool
    :ivar blocklist_name: Name of ContentFilter.
    :vartype blocklist_name: str
    """

    _attribute_map = {
        'blocking': {'key': 'blocking', 'type': 'bool'},
        'blocklist_name': {'key': 'blocklistName', 'type': 'str'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword blocking: If blocking would occur.
        :paramtype blocking: bool
        :keyword blocklist_name: Name of ContentFilter.
        :paramtype blocklist_name: str
        """
        super(RaiBlocklistConfig, self).__init__(**kwargs)
        self.blocking = kwargs.get('blocking', None)
        self.blocklist_name = kwargs.get('blocklist_name', None)


class RaiBlocklistItemBulkRequest(msrest.serialization.Model):
    """The Cognitive Services RaiBlocklist Item request body.

    :ivar name:
    :vartype name: str
    :ivar properties: Properties of Cognitive Services RaiBlocklist Item.
    :vartype properties: ~azure.mgmt.machinelearningservices.models.RaiBlocklistItemProperties
    """

    _attribute_map = {
        'name': {'key': 'name', 'type': 'str'},
        'properties': {'key': 'properties', 'type': 'RaiBlocklistItemProperties'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword name:
        :paramtype name: str
        :keyword properties: Properties of Cognitive Services RaiBlocklist Item.
        :paramtype properties: ~azure.mgmt.machinelearningservices.models.RaiBlocklistItemProperties
        """
        super(RaiBlocklistItemBulkRequest, self).__init__(**kwargs)
        self.name = kwargs.get('name', None)
        self.properties = kwargs.get('properties', None)


class RaiBlocklistItemProperties(msrest.serialization.Model):
    """RAI Custom Blocklist Item properties.

    :ivar is_regex: If the pattern is a regex pattern.
    :vartype is_regex: bool
    :ivar pattern: Pattern to match against.
    :vartype pattern: str
    """

    _attribute_map = {
        'is_regex': {'key': 'isRegex', 'type': 'bool'},
        'pattern': {'key': 'pattern', 'type': 'str'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword is_regex: If the pattern is a regex pattern.
        :paramtype is_regex: bool
        :keyword pattern: Pattern to match against.
        :paramtype pattern: str
        """
        super(RaiBlocklistItemProperties, self).__init__(**kwargs)
        self.is_regex = kwargs.get('is_regex', None)
        self.pattern = kwargs.get('pattern', None)


class RaiBlocklistItemPropertiesBasicResource(Resource):
    """RaiBlocklistItemPropertiesBasicResource.

    Variables are only populated by the server, and will be ignored when sending a request.

    All required parameters must be populated in order to send to Azure.

    :ivar id: Fully qualified resource ID for the resource. Ex -
     /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}.
    :vartype id: str
    :ivar name: The name of the resource.
    :vartype name: str
    :ivar type: The type of the resource. E.g. "Microsoft.Compute/virtualMachines" or
     "Microsoft.Storage/storageAccounts".
    :vartype type: str
    :ivar system_data: Azure Resource Manager metadata containing createdBy and modifiedBy
     information.
    :vartype system_data: ~azure.mgmt.machinelearningservices.models.SystemData
    :ivar properties: Required. RAI Custom Blocklist Item properties.
    :vartype properties: ~azure.mgmt.machinelearningservices.models.RaiBlocklistItemProperties
    """

    _validation = {
        'id': {'readonly': True},
        'name': {'readonly': True},
        'type': {'readonly': True},
        'system_data': {'readonly': True},
        'properties': {'required': True},
    }

    _attribute_map = {
        'id': {'key': 'id', 'type': 'str'},
        'name': {'key': 'name', 'type': 'str'},
        'type': {'key': 'type', 'type': 'str'},
        'system_data': {'key': 'systemData', 'type': 'SystemData'},
        'properties': {'key': 'properties', 'type': 'RaiBlocklistItemProperties'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword properties: Required. RAI Custom Blocklist Item properties.
        :paramtype properties: ~azure.mgmt.machinelearningservices.models.RaiBlocklistItemProperties
        """
        super(RaiBlocklistItemPropertiesBasicResource, self).__init__(**kwargs)
        self.properties = kwargs['properties']


class RaiBlocklistItemPropertiesBasicResourceArmPaginatedResult(msrest.serialization.Model):
    """RaiBlocklistItemPropertiesBasicResourceArmPaginatedResult.

    :ivar next_link:
    :vartype next_link: str
    :ivar value:
    :vartype value:
     list[~azure.mgmt.machinelearningservices.models.RaiBlocklistItemPropertiesBasicResource]
    """

    _attribute_map = {
        'next_link': {'key': 'nextLink', 'type': 'str'},
        'value': {'key': 'value', 'type': '[RaiBlocklistItemPropertiesBasicResource]'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword next_link:
        :paramtype next_link: str
        :keyword value:
        :paramtype value:
         list[~azure.mgmt.machinelearningservices.models.RaiBlocklistItemPropertiesBasicResource]
        """
        super(RaiBlocklistItemPropertiesBasicResourceArmPaginatedResult, self).__init__(**kwargs)
        self.next_link = kwargs.get('next_link', None)
        self.value = kwargs.get('value', None)


class RaiBlocklistProperties(msrest.serialization.Model):
    """RAI Custom Blocklist properties.

    :ivar description: Description of the block list.
    :vartype description: str
    """

    _attribute_map = {
        'description': {'key': 'description', 'type': 'str'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword description: Description of the block list.
        :paramtype description: str
        """
        super(RaiBlocklistProperties, self).__init__(**kwargs)
        self.description = kwargs.get('description', None)


class RaiBlocklistPropertiesBasicResource(Resource):
    """RaiBlocklistPropertiesBasicResource.

    Variables are only populated by the server, and will be ignored when sending a request.

    All required parameters must be populated in order to send to Azure.

    :ivar id: Fully qualified resource ID for the resource. Ex -
     /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}.
    :vartype id: str
    :ivar name: The name of the resource.
    :vartype name: str
    :ivar type: The type of the resource. E.g. "Microsoft.Compute/virtualMachines" or
     "Microsoft.Storage/storageAccounts".
    :vartype type: str
    :ivar system_data: Azure Resource Manager metadata containing createdBy and modifiedBy
     information.
    :vartype system_data: ~azure.mgmt.machinelearningservices.models.SystemData
    :ivar properties: Required. RAI Custom Blocklist properties.
    :vartype properties: ~azure.mgmt.machinelearningservices.models.RaiBlocklistProperties
    """

    _validation = {
        'id': {'readonly': True},
        'name': {'readonly': True},
        'type': {'readonly': True},
        'system_data': {'readonly': True},
        'properties': {'required': True},
    }

    _attribute_map = {
        'id': {'key': 'id', 'type': 'str'},
        'name': {'key': 'name', 'type': 'str'},
        'type': {'key': 'type', 'type': 'str'},
        'system_data': {'key': 'systemData', 'type': 'SystemData'},
        'properties': {'key': 'properties', 'type': 'RaiBlocklistProperties'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword properties: Required. RAI Custom Blocklist properties.
        :paramtype properties: ~azure.mgmt.machinelearningservices.models.RaiBlocklistProperties
        """
        super(RaiBlocklistPropertiesBasicResource, self).__init__(**kwargs)
        self.properties = kwargs['properties']


class RaiBlocklistPropertiesBasicResourceArmPaginatedResult(msrest.serialization.Model):
    """RaiBlocklistPropertiesBasicResourceArmPaginatedResult.

    :ivar next_link:
    :vartype next_link: str
    :ivar value:
    :vartype value:
     list[~azure.mgmt.machinelearningservices.models.RaiBlocklistPropertiesBasicResource]
    """

    _attribute_map = {
        'next_link': {'key': 'nextLink', 'type': 'str'},
        'value': {'key': 'value', 'type': '[RaiBlocklistPropertiesBasicResource]'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword next_link:
        :paramtype next_link: str
        :keyword value:
        :paramtype value:
         list[~azure.mgmt.machinelearningservices.models.RaiBlocklistPropertiesBasicResource]
        """
        super(RaiBlocklistPropertiesBasicResourceArmPaginatedResult, self).__init__(**kwargs)
        self.next_link = kwargs.get('next_link', None)
        self.value = kwargs.get('value', None)


class RaiPolicyContentFilter(msrest.serialization.Model):
    """Azure OpenAI Content Filter.

    :ivar allowed_content_level: Level at which content is filtered. Possible values include:
     "Low", "Medium", "High".
    :vartype allowed_content_level: str or
     ~azure.mgmt.machinelearningservices.models.AllowedContentLevel
    :ivar blocking: If blocking would occur.
    :vartype blocking: bool
    :ivar enabled: If the ContentFilter is enabled.
    :vartype enabled: bool
    :ivar name: Name of ContentFilter.
    :vartype name: str
    :ivar source: Content source to apply the Content Filters. Possible values include: "Prompt",
     "Completion".
    :vartype source: str or ~azure.mgmt.machinelearningservices.models.RaiPolicyContentSource
    """

    _attribute_map = {
        'allowed_content_level': {'key': 'allowedContentLevel', 'type': 'str'},
        'blocking': {'key': 'blocking', 'type': 'bool'},
        'enabled': {'key': 'enabled', 'type': 'bool'},
        'name': {'key': 'name', 'type': 'str'},
        'source': {'key': 'source', 'type': 'str'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword allowed_content_level: Level at which content is filtered. Possible values include:
         "Low", "Medium", "High".
        :paramtype allowed_content_level: str or
         ~azure.mgmt.machinelearningservices.models.AllowedContentLevel
        :keyword blocking: If blocking would occur.
        :paramtype blocking: bool
        :keyword enabled: If the ContentFilter is enabled.
        :paramtype enabled: bool
        :keyword name: Name of ContentFilter.
        :paramtype name: str
        :keyword source: Content source to apply the Content Filters. Possible values include:
         "Prompt", "Completion".
        :paramtype source: str or ~azure.mgmt.machinelearningservices.models.RaiPolicyContentSource
        """
        super(RaiPolicyContentFilter, self).__init__(**kwargs)
        self.allowed_content_level = kwargs.get('allowed_content_level', None)
        self.blocking = kwargs.get('blocking', None)
        self.enabled = kwargs.get('enabled', None)
        self.name = kwargs.get('name', None)
        self.source = kwargs.get('source', None)


class RaiPolicyProperties(msrest.serialization.Model):
    """Azure OpenAI Content Filters properties.

    :ivar base_policy_name: Name of the base Content Filters.
    :vartype base_policy_name: str
    :ivar completion_blocklists:
    :vartype completion_blocklists:
     list[~azure.mgmt.machinelearningservices.models.RaiBlocklistConfig]
    :ivar content_filters:
    :vartype content_filters:
     list[~azure.mgmt.machinelearningservices.models.RaiPolicyContentFilter]
    :ivar mode: Content Filters mode. Possible values include: "Default", "Deferred", "Blocking".
    :vartype mode: str or ~azure.mgmt.machinelearningservices.models.RaiPolicyMode
    :ivar prompt_blocklists:
    :vartype prompt_blocklists: list[~azure.mgmt.machinelearningservices.models.RaiBlocklistConfig]
    :ivar type: Content Filters policy type. Possible values include: "UserManaged",
     "SystemManaged".
    :vartype type: str or ~azure.mgmt.machinelearningservices.models.RaiPolicyType
    """

    _attribute_map = {
        'base_policy_name': {'key': 'basePolicyName', 'type': 'str'},
        'completion_blocklists': {'key': 'completionBlocklists', 'type': '[RaiBlocklistConfig]'},
        'content_filters': {'key': 'contentFilters', 'type': '[RaiPolicyContentFilter]'},
        'mode': {'key': 'mode', 'type': 'str'},
        'prompt_blocklists': {'key': 'promptBlocklists', 'type': '[RaiBlocklistConfig]'},
        'type': {'key': 'type', 'type': 'str'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword base_policy_name: Name of the base Content Filters.
        :paramtype base_policy_name: str
        :keyword completion_blocklists:
        :paramtype completion_blocklists:
         list[~azure.mgmt.machinelearningservices.models.RaiBlocklistConfig]
        :keyword content_filters:
        :paramtype content_filters:
         list[~azure.mgmt.machinelearningservices.models.RaiPolicyContentFilter]
        :keyword mode: Content Filters mode. Possible values include: "Default", "Deferred",
         "Blocking".
        :paramtype mode: str or ~azure.mgmt.machinelearningservices.models.RaiPolicyMode
        :keyword prompt_blocklists:
        :paramtype prompt_blocklists:
         list[~azure.mgmt.machinelearningservices.models.RaiBlocklistConfig]
        :keyword type: Content Filters policy type. Possible values include: "UserManaged",
         "SystemManaged".
        :paramtype type: str or ~azure.mgmt.machinelearningservices.models.RaiPolicyType
        """
        super(RaiPolicyProperties, self).__init__(**kwargs)
        self.base_policy_name = kwargs.get('base_policy_name', None)
        self.completion_blocklists = kwargs.get('completion_blocklists', None)
        self.content_filters = kwargs.get('content_filters', None)
        self.mode = kwargs.get('mode', None)
        self.prompt_blocklists = kwargs.get('prompt_blocklists', None)
        self.type = kwargs.get('type', None)


class RaiPolicyPropertiesBasicResource(Resource):
    """Azure OpenAI Content Filters resource.

    Variables are only populated by the server, and will be ignored when sending a request.

    All required parameters must be populated in order to send to Azure.

    :ivar id: Fully qualified resource ID for the resource. Ex -
     /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}.
    :vartype id: str
    :ivar name: The name of the resource.
    :vartype name: str
    :ivar type: The type of the resource. E.g. "Microsoft.Compute/virtualMachines" or
     "Microsoft.Storage/storageAccounts".
    :vartype type: str
    :ivar system_data: Azure Resource Manager metadata containing createdBy and modifiedBy
     information.
    :vartype system_data: ~azure.mgmt.machinelearningservices.models.SystemData
    :ivar properties: Required. Azure OpenAI Content Filters properties.
    :vartype properties: ~azure.mgmt.machinelearningservices.models.RaiPolicyProperties
    """

    _validation = {
        'id': {'readonly': True},
        'name': {'readonly': True},
        'type': {'readonly': True},
        'system_data': {'readonly': True},
        'properties': {'required': True},
    }

    _attribute_map = {
        'id': {'key': 'id', 'type': 'str'},
        'name': {'key': 'name', 'type': 'str'},
        'type': {'key': 'type', 'type': 'str'},
        'system_data': {'key': 'systemData', 'type': 'SystemData'},
        'properties': {'key': 'properties', 'type': 'RaiPolicyProperties'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword properties: Required. Azure OpenAI Content Filters properties.
        :paramtype properties: ~azure.mgmt.machinelearningservices.models.RaiPolicyProperties
        """
        super(RaiPolicyPropertiesBasicResource, self).__init__(**kwargs)
        self.properties = kwargs['properties']


class RaiPolicyPropertiesBasicResourceArmPaginatedResult(msrest.serialization.Model):
    """Azure OpenAI Content Filters resource list.

    :ivar next_link:
    :vartype next_link: str
    :ivar value:
    :vartype value:
     list[~azure.mgmt.machinelearningservices.models.RaiPolicyPropertiesBasicResource]
    """

    _attribute_map = {
        'next_link': {'key': 'nextLink', 'type': 'str'},
        'value': {'key': 'value', 'type': '[RaiPolicyPropertiesBasicResource]'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword next_link:
        :paramtype next_link: str
        :keyword value:
        :paramtype value:
         list[~azure.mgmt.machinelearningservices.models.RaiPolicyPropertiesBasicResource]
        """
        super(RaiPolicyPropertiesBasicResourceArmPaginatedResult, self).__init__(**kwargs)
        self.next_link = kwargs.get('next_link', None)
        self.value = kwargs.get('value', None)


class RandomSamplingAlgorithm(SamplingAlgorithm):
    """Defines a Sampling Algorithm that generates values randomly.

    All required parameters must be populated in order to send to Azure.

    :ivar sampling_algorithm_type: Required. [Required] The algorithm used for generating
     hyperparameter values, along with configuration properties.Constant filled by server. Possible
     values include: "Grid", "Random", "Bayesian".
    :vartype sampling_algorithm_type: str or
     ~azure.mgmt.machinelearningservices.models.SamplingAlgorithmType
    :ivar rule: The specific type of random algorithm. Possible values include: "Random", "Sobol".
    :vartype rule: str or ~azure.mgmt.machinelearningservices.models.RandomSamplingAlgorithmRule
    :ivar seed: An optional integer to use as the seed for random number generation.
    :vartype seed: int
    """

    _validation = {
        'sampling_algorithm_type': {'required': True},
    }

    _attribute_map = {
        'sampling_algorithm_type': {'key': 'samplingAlgorithmType', 'type': 'str'},
        'rule': {'key': 'rule', 'type': 'str'},
        'seed': {'key': 'seed', 'type': 'int'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword rule: The specific type of random algorithm. Possible values include: "Random",
         "Sobol".
        :paramtype rule: str or ~azure.mgmt.machinelearningservices.models.RandomSamplingAlgorithmRule
        :keyword seed: An optional integer to use as the seed for random number generation.
        :paramtype seed: int
        """
        super(RandomSamplingAlgorithm, self).__init__(**kwargs)
        self.sampling_algorithm_type = 'Random'  # type: str
        self.rule = kwargs.get('rule', None)
        self.seed = kwargs.get('seed', None)


class Recurrence(msrest.serialization.Model):
    """The workflow trigger recurrence for ComputeStartStop schedule type.

    :ivar frequency: [Required] The frequency to trigger schedule. Possible values include:
     "Minute", "Hour", "Day", "Week", "Month".
    :vartype frequency: str or
     ~azure.mgmt.machinelearningservices.models.ComputeRecurrenceFrequency
    :ivar interval: [Required] Specifies schedule interval in conjunction with frequency.
    :vartype interval: int
    :ivar start_time: The start time in yyyy-MM-ddTHH:mm:ss format.
    :vartype start_time: str
    :ivar time_zone: Specifies time zone in which the schedule runs.
     TimeZone should follow Windows time zone format. Refer:
     https://docs.microsoft.com/en-us/windows-hardware/manufacture/desktop/default-time-zones?view=windows-11.
    :vartype time_zone: str
    :ivar schedule: [Required] The recurrence schedule.
    :vartype schedule: ~azure.mgmt.machinelearningservices.models.ComputeRecurrenceSchedule
    """

    _attribute_map = {
        'frequency': {'key': 'frequency', 'type': 'str'},
        'interval': {'key': 'interval', 'type': 'int'},
        'start_time': {'key': 'startTime', 'type': 'str'},
        'time_zone': {'key': 'timeZone', 'type': 'str'},
        'schedule': {'key': 'schedule', 'type': 'ComputeRecurrenceSchedule'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword frequency: [Required] The frequency to trigger schedule. Possible values include:
         "Minute", "Hour", "Day", "Week", "Month".
        :paramtype frequency: str or
         ~azure.mgmt.machinelearningservices.models.ComputeRecurrenceFrequency
        :keyword interval: [Required] Specifies schedule interval in conjunction with frequency.
        :paramtype interval: int
        :keyword start_time: The start time in yyyy-MM-ddTHH:mm:ss format.
        :paramtype start_time: str
        :keyword time_zone: Specifies time zone in which the schedule runs.
         TimeZone should follow Windows time zone format. Refer:
         https://docs.microsoft.com/en-us/windows-hardware/manufacture/desktop/default-time-zones?view=windows-11.
        :paramtype time_zone: str
        :keyword schedule: [Required] The recurrence schedule.
        :paramtype schedule: ~azure.mgmt.machinelearningservices.models.ComputeRecurrenceSchedule
        """
        super(Recurrence, self).__init__(**kwargs)
        self.frequency = kwargs.get('frequency', None)
        self.interval = kwargs.get('interval', None)
        self.start_time = kwargs.get('start_time', None)
        self.time_zone = kwargs.get('time_zone', "UTC")
        self.schedule = kwargs.get('schedule', None)


class RecurrenceSchedule(msrest.serialization.Model):
    """RecurrenceSchedule.

    All required parameters must be populated in order to send to Azure.

    :ivar hours: Required. [Required] List of hours for the schedule.
    :vartype hours: list[int]
    :ivar minutes: Required. [Required] List of minutes for the schedule.
    :vartype minutes: list[int]
    :ivar month_days: List of month days for the schedule.
    :vartype month_days: list[int]
    :ivar week_days: List of days for the schedule.
    :vartype week_days: list[str or ~azure.mgmt.machinelearningservices.models.WeekDay]
    """

    _validation = {
        'hours': {'required': True},
        'minutes': {'required': True},
    }

    _attribute_map = {
        'hours': {'key': 'hours', 'type': '[int]'},
        'minutes': {'key': 'minutes', 'type': '[int]'},
        'month_days': {'key': 'monthDays', 'type': '[int]'},
        'week_days': {'key': 'weekDays', 'type': '[str]'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword hours: Required. [Required] List of hours for the schedule.
        :paramtype hours: list[int]
        :keyword minutes: Required. [Required] List of minutes for the schedule.
        :paramtype minutes: list[int]
        :keyword month_days: List of month days for the schedule.
        :paramtype month_days: list[int]
        :keyword week_days: List of days for the schedule.
        :paramtype week_days: list[str or ~azure.mgmt.machinelearningservices.models.WeekDay]
        """
        super(RecurrenceSchedule, self).__init__(**kwargs)
        self.hours = kwargs['hours']
        self.minutes = kwargs['minutes']
        self.month_days = kwargs.get('month_days', None)
        self.week_days = kwargs.get('week_days', None)


class RecurrenceTrigger(TriggerBase):
    """RecurrenceTrigger.

    All required parameters must be populated in order to send to Azure.

    :ivar end_time: Specifies end time of schedule in ISO 8601, but without a UTC offset. Refer
     https://en.wikipedia.org/wiki/ISO_8601.
     Recommented format would be "2022-06-01T00:00:01"
     If not present, the schedule will run indefinitely.
    :vartype end_time: str
    :ivar start_time: Specifies start time of schedule in ISO 8601 format, but without a UTC
     offset.
    :vartype start_time: str
    :ivar time_zone: Specifies time zone in which the schedule runs.
     TimeZone should follow Windows time zone format. Refer:
     https://docs.microsoft.com/en-us/windows-hardware/manufacture/desktop/default-time-zones?view=windows-11.
    :vartype time_zone: str
    :ivar trigger_type: Required. [Required].Constant filled by server. Possible values include:
     "Recurrence", "Cron".
    :vartype trigger_type: str or ~azure.mgmt.machinelearningservices.models.TriggerType
    :ivar frequency: Required. [Required] The frequency to trigger schedule. Possible values
     include: "Minute", "Hour", "Day", "Week", "Month".
    :vartype frequency: str or ~azure.mgmt.machinelearningservices.models.RecurrenceFrequency
    :ivar interval: Required. [Required] Specifies schedule interval in conjunction with frequency.
    :vartype interval: int
    :ivar schedule: The recurrence schedule.
    :vartype schedule: ~azure.mgmt.machinelearningservices.models.RecurrenceSchedule
    """

    _validation = {
        'trigger_type': {'required': True},
        'frequency': {'required': True},
        'interval': {'required': True},
    }

    _attribute_map = {
        'end_time': {'key': 'endTime', 'type': 'str'},
        'start_time': {'key': 'startTime', 'type': 'str'},
        'time_zone': {'key': 'timeZone', 'type': 'str'},
        'trigger_type': {'key': 'triggerType', 'type': 'str'},
        'frequency': {'key': 'frequency', 'type': 'str'},
        'interval': {'key': 'interval', 'type': 'int'},
        'schedule': {'key': 'schedule', 'type': 'RecurrenceSchedule'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword end_time: Specifies end time of schedule in ISO 8601, but without a UTC offset. Refer
         https://en.wikipedia.org/wiki/ISO_8601.
         Recommented format would be "2022-06-01T00:00:01"
         If not present, the schedule will run indefinitely.
        :paramtype end_time: str
        :keyword start_time: Specifies start time of schedule in ISO 8601 format, but without a UTC
         offset.
        :paramtype start_time: str
        :keyword time_zone: Specifies time zone in which the schedule runs.
         TimeZone should follow Windows time zone format. Refer:
         https://docs.microsoft.com/en-us/windows-hardware/manufacture/desktop/default-time-zones?view=windows-11.
        :paramtype time_zone: str
        :keyword frequency: Required. [Required] The frequency to trigger schedule. Possible values
         include: "Minute", "Hour", "Day", "Week", "Month".
        :paramtype frequency: str or ~azure.mgmt.machinelearningservices.models.RecurrenceFrequency
        :keyword interval: Required. [Required] Specifies schedule interval in conjunction with
         frequency.
        :paramtype interval: int
        :keyword schedule: The recurrence schedule.
        :paramtype schedule: ~azure.mgmt.machinelearningservices.models.RecurrenceSchedule
        """
        super(RecurrenceTrigger, self).__init__(**kwargs)
        self.trigger_type = 'Recurrence'  # type: str
        self.frequency = kwargs['frequency']
        self.interval = kwargs['interval']
        self.schedule = kwargs.get('schedule', None)


class RegenerateEndpointKeysRequest(msrest.serialization.Model):
    """RegenerateEndpointKeysRequest.

    All required parameters must be populated in order to send to Azure.

    :ivar key_type: Required. [Required] Specification for which type of key to generate. Primary
     or Secondary. Possible values include: "Primary", "Secondary".
    :vartype key_type: str or ~azure.mgmt.machinelearningservices.models.KeyType
    :ivar key_value: The value the key is set to.
    :vartype key_value: str
    """

    _validation = {
        'key_type': {'required': True},
    }

    _attribute_map = {
        'key_type': {'key': 'keyType', 'type': 'str'},
        'key_value': {'key': 'keyValue', 'type': 'str'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword key_type: Required. [Required] Specification for which type of key to generate.
         Primary or Secondary. Possible values include: "Primary", "Secondary".
        :paramtype key_type: str or ~azure.mgmt.machinelearningservices.models.KeyType
        :keyword key_value: The value the key is set to.
        :paramtype key_value: str
        """
        super(RegenerateEndpointKeysRequest, self).__init__(**kwargs)
        self.key_type = kwargs['key_type']
        self.key_value = kwargs.get('key_value', None)


class RegenerateServiceAccountKeyContent(msrest.serialization.Model):
    """RegenerateServiceAccountKeyContent.

    :ivar key_name: Possible values include: "Key1", "Key2".
    :vartype key_name: str or ~azure.mgmt.machinelearningservices.models.ServiceAccountKeyName
    """

    _attribute_map = {
        'key_name': {'key': 'keyName', 'type': 'str'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword key_name: Possible values include: "Key1", "Key2".
        :paramtype key_name: str or ~azure.mgmt.machinelearningservices.models.ServiceAccountKeyName
        """
        super(RegenerateServiceAccountKeyContent, self).__init__(**kwargs)
        self.key_name = kwargs.get('key_name', None)


class Registry(TrackedResource):
    """Registry.

    Variables are only populated by the server, and will be ignored when sending a request.

    All required parameters must be populated in order to send to Azure.

    :ivar id: Fully qualified resource ID for the resource. Ex -
     /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}.
    :vartype id: str
    :ivar name: The name of the resource.
    :vartype name: str
    :ivar type: The type of the resource. E.g. "Microsoft.Compute/virtualMachines" or
     "Microsoft.Storage/storageAccounts".
    :vartype type: str
    :ivar system_data: Azure Resource Manager metadata containing createdBy and modifiedBy
     information.
    :vartype system_data: ~azure.mgmt.machinelearningservices.models.SystemData
    :ivar tags: A set of tags. Resource tags.
    :vartype tags: dict[str, str]
    :ivar location: Required. The geo-location where the resource lives.
    :vartype location: str
    :ivar identity: Managed service identity (system assigned and/or user assigned identities).
    :vartype identity: ~azure.mgmt.machinelearningservices.models.ManagedServiceIdentity
    :ivar kind: Metadata used by portal/tooling/etc to render different UX experiences for
     resources of the same type.
    :vartype kind: str
    :ivar sku: Sku details required for ARM contract for Autoscaling.
    :vartype sku: ~azure.mgmt.machinelearningservices.models.Sku
    :ivar discovery_url: Discovery URL for the Registry.
    :vartype discovery_url: str
    :ivar intellectual_property_publisher: IntellectualPropertyPublisher for the registry.
    :vartype intellectual_property_publisher: str
    :ivar managed_resource_group: ResourceId of the managed RG if the registry has system created
     resources.
    :vartype managed_resource_group: ~azure.mgmt.machinelearningservices.models.ArmResourceId
    :ivar managed_resource_group_settings: Managed resource group specific settings.
    :vartype managed_resource_group_settings:
     ~azure.mgmt.machinelearningservices.models.ManagedResourceGroupSettings
    :ivar ml_flow_registry_uri: MLFlow Registry URI for the Registry.
    :vartype ml_flow_registry_uri: str
    :ivar registry_private_endpoint_connections: Private endpoint connections info used for pending
     connections in private link portal.
    :vartype registry_private_endpoint_connections:
     list[~azure.mgmt.machinelearningservices.models.RegistryPrivateEndpointConnection]
    :ivar public_network_access: Is the Registry accessible from the internet?
     Possible values: "Enabled" or "Disabled".
    :vartype public_network_access: str
    :ivar region_details: Details of each region the registry is in.
    :vartype region_details:
     list[~azure.mgmt.machinelearningservices.models.RegistryRegionArmDetails]
    """

    _validation = {
        'id': {'readonly': True},
        'name': {'readonly': True},
        'type': {'readonly': True},
        'system_data': {'readonly': True},
        'location': {'required': True},
    }

    _attribute_map = {
        'id': {'key': 'id', 'type': 'str'},
        'name': {'key': 'name', 'type': 'str'},
        'type': {'key': 'type', 'type': 'str'},
        'system_data': {'key': 'systemData', 'type': 'SystemData'},
        'tags': {'key': 'tags', 'type': '{str}'},
        'location': {'key': 'location', 'type': 'str'},
        'identity': {'key': 'identity', 'type': 'ManagedServiceIdentity'},
        'kind': {'key': 'kind', 'type': 'str'},
        'sku': {'key': 'sku', 'type': 'Sku'},
        'discovery_url': {'key': 'properties.discoveryUrl', 'type': 'str'},
        'intellectual_property_publisher': {'key': 'properties.intellectualPropertyPublisher', 'type': 'str'},
        'managed_resource_group': {'key': 'properties.managedResourceGroup', 'type': 'ArmResourceId'},
        'managed_resource_group_settings': {'key': 'properties.managedResourceGroupSettings', 'type': 'ManagedResourceGroupSettings'},
        'ml_flow_registry_uri': {'key': 'properties.mlFlowRegistryUri', 'type': 'str'},
        'registry_private_endpoint_connections': {'key': 'properties.registryPrivateEndpointConnections', 'type': '[RegistryPrivateEndpointConnection]'},
        'public_network_access': {'key': 'properties.publicNetworkAccess', 'type': 'str'},
        'region_details': {'key': 'properties.regionDetails', 'type': '[RegistryRegionArmDetails]'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword tags: A set of tags. Resource tags.
        :paramtype tags: dict[str, str]
        :keyword location: Required. The geo-location where the resource lives.
        :paramtype location: str
        :keyword identity: Managed service identity (system assigned and/or user assigned identities).
        :paramtype identity: ~azure.mgmt.machinelearningservices.models.ManagedServiceIdentity
        :keyword kind: Metadata used by portal/tooling/etc to render different UX experiences for
         resources of the same type.
        :paramtype kind: str
        :keyword sku: Sku details required for ARM contract for Autoscaling.
        :paramtype sku: ~azure.mgmt.machinelearningservices.models.Sku
        :keyword discovery_url: Discovery URL for the Registry.
        :paramtype discovery_url: str
        :keyword intellectual_property_publisher: IntellectualPropertyPublisher for the registry.
        :paramtype intellectual_property_publisher: str
        :keyword managed_resource_group: ResourceId of the managed RG if the registry has system
         created resources.
        :paramtype managed_resource_group: ~azure.mgmt.machinelearningservices.models.ArmResourceId
        :keyword managed_resource_group_settings: Managed resource group specific settings.
        :paramtype managed_resource_group_settings:
         ~azure.mgmt.machinelearningservices.models.ManagedResourceGroupSettings
        :keyword ml_flow_registry_uri: MLFlow Registry URI for the Registry.
        :paramtype ml_flow_registry_uri: str
        :keyword registry_private_endpoint_connections: Private endpoint connections info used for
         pending connections in private link portal.
        :paramtype registry_private_endpoint_connections:
         list[~azure.mgmt.machinelearningservices.models.RegistryPrivateEndpointConnection]
        :keyword public_network_access: Is the Registry accessible from the internet?
         Possible values: "Enabled" or "Disabled".
        :paramtype public_network_access: str
        :keyword region_details: Details of each region the registry is in.
        :paramtype region_details:
         list[~azure.mgmt.machinelearningservices.models.RegistryRegionArmDetails]
        """
        super(Registry, self).__init__(**kwargs)
        self.identity = kwargs.get('identity', None)
        self.kind = kwargs.get('kind', None)
        self.sku = kwargs.get('sku', None)
        self.discovery_url = kwargs.get('discovery_url', None)
        self.intellectual_property_publisher = kwargs.get('intellectual_property_publisher', None)
        self.managed_resource_group = kwargs.get('managed_resource_group', None)
        self.managed_resource_group_settings = kwargs.get('managed_resource_group_settings', None)
        self.ml_flow_registry_uri = kwargs.get('ml_flow_registry_uri', None)
        self.registry_private_endpoint_connections = kwargs.get('registry_private_endpoint_connections', None)
        self.public_network_access = kwargs.get('public_network_access', None)
        self.region_details = kwargs.get('region_details', None)


class RegistryListCredentialsResult(msrest.serialization.Model):
    """RegistryListCredentialsResult.

    Variables are only populated by the server, and will be ignored when sending a request.

    :ivar location: The location of the workspace ACR.
    :vartype location: str
    :ivar passwords:
    :vartype passwords: list[~azure.mgmt.machinelearningservices.models.Password]
    :ivar username: The username of the workspace ACR.
    :vartype username: str
    """

    _validation = {
        'location': {'readonly': True},
        'username': {'readonly': True},
    }

    _attribute_map = {
        'location': {'key': 'location', 'type': 'str'},
        'passwords': {'key': 'passwords', 'type': '[Password]'},
        'username': {'key': 'username', 'type': 'str'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword passwords:
        :paramtype passwords: list[~azure.mgmt.machinelearningservices.models.Password]
        """
        super(RegistryListCredentialsResult, self).__init__(**kwargs)
        self.location = None
        self.passwords = kwargs.get('passwords', None)
        self.username = None


class RegistryPartialManagedServiceIdentity(ManagedServiceIdentity):
    """Managed service identity (system assigned and/or user assigned identities).

    Variables are only populated by the server, and will be ignored when sending a request.

    All required parameters must be populated in order to send to Azure.

    :ivar principal_id: The service principal ID of the system assigned identity. This property
     will only be provided for a system assigned identity.
    :vartype principal_id: str
    :ivar tenant_id: The tenant ID of the system assigned identity. This property will only be
     provided for a system assigned identity.
    :vartype tenant_id: str
    :ivar type: Required. Type of managed service identity (where both SystemAssigned and
     UserAssigned types are allowed). Possible values include: "None", "SystemAssigned",
     "UserAssigned", "SystemAssigned,UserAssigned".
    :vartype type: str or ~azure.mgmt.machinelearningservices.models.ManagedServiceIdentityType
    :ivar user_assigned_identities: The set of user assigned identities associated with the
     resource. The userAssignedIdentities dictionary keys will be ARM resource ids in the form:
     '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ManagedIdentity/userAssignedIdentities/{identityName}.
     The dictionary values can be empty objects ({}) in requests.
    :vartype user_assigned_identities: dict[str,
     ~azure.mgmt.machinelearningservices.models.UserAssignedIdentity]
    """

    _validation = {
        'principal_id': {'readonly': True},
        'tenant_id': {'readonly': True},
        'type': {'required': True},
    }

    _attribute_map = {
        'principal_id': {'key': 'principalId', 'type': 'str'},
        'tenant_id': {'key': 'tenantId', 'type': 'str'},
        'type': {'key': 'type', 'type': 'str'},
        'user_assigned_identities': {'key': 'userAssignedIdentities', 'type': '{UserAssignedIdentity}'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword type: Required. Type of managed service identity (where both SystemAssigned and
         UserAssigned types are allowed). Possible values include: "None", "SystemAssigned",
         "UserAssigned", "SystemAssigned,UserAssigned".
        :paramtype type: str or ~azure.mgmt.machinelearningservices.models.ManagedServiceIdentityType
        :keyword user_assigned_identities: The set of user assigned identities associated with the
         resource. The userAssignedIdentities dictionary keys will be ARM resource ids in the form:
         '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ManagedIdentity/userAssignedIdentities/{identityName}.
         The dictionary values can be empty objects ({}) in requests.
        :paramtype user_assigned_identities: dict[str,
         ~azure.mgmt.machinelearningservices.models.UserAssignedIdentity]
        """
        super(RegistryPartialManagedServiceIdentity, self).__init__(**kwargs)


class RegistryPrivateEndpointConnection(msrest.serialization.Model):
    """Private endpoint connection definition.

    :ivar id: This is the private endpoint connection name created on SRP
     Full resource id:
     /subscriptions/{subId}/resourceGroups/{rgName}/providers/Microsoft.MachineLearningServices/{resourceType}/{resourceName}/registryPrivateEndpointConnections/{peConnectionName}.
    :vartype id: str
    :ivar location: Same as workspace location.
    :vartype location: str
    :ivar group_ids: The group ids.
    :vartype group_ids: list[str]
    :ivar private_endpoint: The PE network resource that is linked to this PE connection.
    :vartype private_endpoint: ~azure.mgmt.machinelearningservices.models.PrivateEndpointResource
    :ivar registry_private_link_service_connection_state: The connection state.
    :vartype registry_private_link_service_connection_state:
     ~azure.mgmt.machinelearningservices.models.RegistryPrivateLinkServiceConnectionState
    :ivar provisioning_state: One of null, "Succeeded", "Provisioning", "Failed". While not
     approved, it's null.
    :vartype provisioning_state: str
    """

    _attribute_map = {
        'id': {'key': 'id', 'type': 'str'},
        'location': {'key': 'location', 'type': 'str'},
        'group_ids': {'key': 'properties.groupIds', 'type': '[str]'},
        'private_endpoint': {'key': 'properties.privateEndpoint', 'type': 'PrivateEndpointResource'},
        'registry_private_link_service_connection_state': {'key': 'properties.registryPrivateLinkServiceConnectionState', 'type': 'RegistryPrivateLinkServiceConnectionState'},
        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword id: This is the private endpoint connection name created on SRP
         Full resource id:
         /subscriptions/{subId}/resourceGroups/{rgName}/providers/Microsoft.MachineLearningServices/{resourceType}/{resourceName}/registryPrivateEndpointConnections/{peConnectionName}.
        :paramtype id: str
        :keyword location: Same as workspace location.
        :paramtype location: str
        :keyword group_ids: The group ids.
        :paramtype group_ids: list[str]
        :keyword private_endpoint: The PE network resource that is linked to this PE connection.
        :paramtype private_endpoint: ~azure.mgmt.machinelearningservices.models.PrivateEndpointResource
        :keyword registry_private_link_service_connection_state: The connection state.
        :paramtype registry_private_link_service_connection_state:
         ~azure.mgmt.machinelearningservices.models.RegistryPrivateLinkServiceConnectionState
        :keyword provisioning_state: One of null, "Succeeded", "Provisioning", "Failed". While not
         approved, it's null.
        :paramtype provisioning_state: str
        """
        super(RegistryPrivateEndpointConnection, self).__init__(**kwargs)
        self.id = kwargs.get('id', None)
        self.location = kwargs.get('location', None)
        self.group_ids = kwargs.get('group_ids', None)
        self.private_endpoint = kwargs.get('private_endpoint', None)
        self.registry_private_link_service_connection_state = kwargs.get('registry_private_link_service_connection_state', None)
        self.provisioning_state = kwargs.get('provisioning_state', None)


class RegistryPrivateLinkServiceConnectionState(msrest.serialization.Model):
    """The connection state.

    :ivar actions_required: Some RP chose "None". Other RPs use this for region expansion.
    :vartype actions_required: str
    :ivar description: User-defined message that, per NRP doc, may be used for approval-related
     message.
    :vartype description: str
    :ivar status: Connection status of the service consumer with the service provider. Possible
     values include: "Approved", "Pending", "Rejected", "Disconnected", "Timeout".
    :vartype status: str or
     ~azure.mgmt.machinelearningservices.models.EndpointServiceConnectionStatus
    """

    _attribute_map = {
        'actions_required': {'key': 'actionsRequired', 'type': 'str'},
        'description': {'key': 'description', 'type': 'str'},
        'status': {'key': 'status', 'type': 'str'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword actions_required: Some RP chose "None". Other RPs use this for region expansion.
        :paramtype actions_required: str
        :keyword description: User-defined message that, per NRP doc, may be used for approval-related
         message.
        :paramtype description: str
        :keyword status: Connection status of the service consumer with the service provider. Possible
         values include: "Approved", "Pending", "Rejected", "Disconnected", "Timeout".
        :paramtype status: str or
         ~azure.mgmt.machinelearningservices.models.EndpointServiceConnectionStatus
        """
        super(RegistryPrivateLinkServiceConnectionState, self).__init__(**kwargs)
        self.actions_required = kwargs.get('actions_required', None)
        self.description = kwargs.get('description', None)
        self.status = kwargs.get('status', None)


class RegistryRegionArmDetails(msrest.serialization.Model):
    """Details for each region the registry is in.

    :ivar acr_details: List of ACR accounts.
    :vartype acr_details: list[~azure.mgmt.machinelearningservices.models.AcrDetails]
    :ivar location: The location where the registry exists.
    :vartype location: str
    :ivar storage_account_details: List of storage accounts.
    :vartype storage_account_details:
     list[~azure.mgmt.machinelearningservices.models.StorageAccountDetails]
    """

    _attribute_map = {
        'acr_details': {'key': 'acrDetails', 'type': '[AcrDetails]'},
        'location': {'key': 'location', 'type': 'str'},
        'storage_account_details': {'key': 'storageAccountDetails', 'type': '[StorageAccountDetails]'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword acr_details: List of ACR accounts.
        :paramtype acr_details: list[~azure.mgmt.machinelearningservices.models.AcrDetails]
        :keyword location: The location where the registry exists.
        :paramtype location: str
        :keyword storage_account_details: List of storage accounts.
        :paramtype storage_account_details:
         list[~azure.mgmt.machinelearningservices.models.StorageAccountDetails]
        """
        super(RegistryRegionArmDetails, self).__init__(**kwargs)
        self.acr_details = kwargs.get('acr_details', None)
        self.location = kwargs.get('location', None)
        self.storage_account_details = kwargs.get('storage_account_details', None)


class RegistryTrackedResourceArmPaginatedResult(msrest.serialization.Model):
    """A paginated list of Registry entities.

    :ivar next_link: The link to the next page of Registry objects. If null, there are no
     additional pages.
    :vartype next_link: str
    :ivar value: An array of objects of type Registry.
    :vartype value: list[~azure.mgmt.machinelearningservices.models.Registry]
    """

    _attribute_map = {
        'next_link': {'key': 'nextLink', 'type': 'str'},
        'value': {'key': 'value', 'type': '[Registry]'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword next_link: The link to the next page of Registry objects. If null, there are no
         additional pages.
        :paramtype next_link: str
        :keyword value: An array of objects of type Registry.
        :paramtype value: list[~azure.mgmt.machinelearningservices.models.Registry]
        """
        super(RegistryTrackedResourceArmPaginatedResult, self).__init__(**kwargs)
        self.next_link = kwargs.get('next_link', None)
        self.value = kwargs.get('value', None)


class Regression(AutoMLVertical, TableVertical):
    """Regression task in AutoML Table vertical.

    All required parameters must be populated in order to send to Azure.

    :ivar cv_split_column_names: Columns to use for CVSplit data.
    :vartype cv_split_column_names: list[str]
    :ivar featurization_settings: Featurization inputs needed for AutoML job.
    :vartype featurization_settings:
     ~azure.mgmt.machinelearningservices.models.TableVerticalFeaturizationSettings
    :ivar limit_settings: Execution constraints for AutoMLJob.
    :vartype limit_settings: ~azure.mgmt.machinelearningservices.models.TableVerticalLimitSettings
    :ivar n_cross_validations: Number of cross validation folds to be applied on training dataset
     when validation dataset is not provided.
    :vartype n_cross_validations: ~azure.mgmt.machinelearningservices.models.NCrossValidations
    :ivar test_data: Test data input.
    :vartype test_data: ~azure.mgmt.machinelearningservices.models.MLTableJobInput
    :ivar test_data_size: The fraction of test dataset that needs to be set aside for validation
     purpose.
     Values between (0.0 , 1.0)
     Applied when validation dataset is not provided.
    :vartype test_data_size: float
    :ivar validation_data: Validation data inputs.
    :vartype validation_data: ~azure.mgmt.machinelearningservices.models.MLTableJobInput
    :ivar validation_data_size: The fraction of training dataset that needs to be set aside for
     validation purpose.
     Values between (0.0 , 1.0)
     Applied when validation dataset is not provided.
    :vartype validation_data_size: float
    :ivar weight_column_name: The name of the sample weight column. Automated ML supports a
     weighted column as an input, causing rows in the data to be weighted up or down.
    :vartype weight_column_name: str
    :ivar log_verbosity: Log verbosity for the job. Possible values include: "NotSet", "Debug",
     "Info", "Warning", "Error", "Critical".
    :vartype log_verbosity: str or ~azure.mgmt.machinelearningservices.models.LogVerbosity
    :ivar target_column_name: Target column name: This is prediction values column.
     Also known as label column name in context of classification tasks.
    :vartype target_column_name: str
    :ivar task_type: Required. [Required] Task type for AutoMLJob.Constant filled by server.
     Possible values include: "Classification", "Regression", "Forecasting", "ImageClassification",
     "ImageClassificationMultilabel", "ImageObjectDetection", "ImageInstanceSegmentation",
     "TextClassification", "TextClassificationMultilabel", "TextNER".
    :vartype task_type: str or ~azure.mgmt.machinelearningservices.models.TaskType
    :ivar training_data: Required. [Required] Training data input.
    :vartype training_data: ~azure.mgmt.machinelearningservices.models.MLTableJobInput
    :ivar primary_metric: Primary metric for regression task. Possible values include:
     "SpearmanCorrelation", "NormalizedRootMeanSquaredError", "R2Score",
     "NormalizedMeanAbsoluteError".
    :vartype primary_metric: str or
     ~azure.mgmt.machinelearningservices.models.RegressionPrimaryMetrics
    :ivar training_settings: Inputs for training phase for an AutoML Job.
    :vartype training_settings:
     ~azure.mgmt.machinelearningservices.models.RegressionTrainingSettings
    """

    _validation = {
        'task_type': {'required': True},
        'training_data': {'required': True},
    }

    _attribute_map = {
        'cv_split_column_names': {'key': 'cvSplitColumnNames', 'type': '[str]'},
        'featurization_settings': {'key': 'featurizationSettings', 'type': 'TableVerticalFeaturizationSettings'},
        'limit_settings': {'key': 'limitSettings', 'type': 'TableVerticalLimitSettings'},
        'n_cross_validations': {'key': 'nCrossValidations', 'type': 'NCrossValidations'},
        'test_data': {'key': 'testData', 'type': 'MLTableJobInput'},
        'test_data_size': {'key': 'testDataSize', 'type': 'float'},
        'validation_data': {'key': 'validationData', 'type': 'MLTableJobInput'},
        'validation_data_size': {'key': 'validationDataSize', 'type': 'float'},
        'weight_column_name': {'key': 'weightColumnName', 'type': 'str'},
        'log_verbosity': {'key': 'logVerbosity', 'type': 'str'},
        'target_column_name': {'key': 'targetColumnName', 'type': 'str'},
        'task_type': {'key': 'taskType', 'type': 'str'},
        'training_data': {'key': 'trainingData', 'type': 'MLTableJobInput'},
        'primary_metric': {'key': 'primaryMetric', 'type': 'str'},
        'training_settings': {'key': 'trainingSettings', 'type': 'RegressionTrainingSettings'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword cv_split_column_names: Columns to use for CVSplit data.
        :paramtype cv_split_column_names: list[str]
        :keyword featurization_settings: Featurization inputs needed for AutoML job.
        :paramtype featurization_settings:
         ~azure.mgmt.machinelearningservices.models.TableVerticalFeaturizationSettings
        :keyword limit_settings: Execution constraints for AutoMLJob.
        :paramtype limit_settings:
         ~azure.mgmt.machinelearningservices.models.TableVerticalLimitSettings
        :keyword n_cross_validations: Number of cross validation folds to be applied on training
         dataset
         when validation dataset is not provided.
        :paramtype n_cross_validations: ~azure.mgmt.machinelearningservices.models.NCrossValidations
        :keyword test_data: Test data input.
        :paramtype test_data: ~azure.mgmt.machinelearningservices.models.MLTableJobInput
        :keyword test_data_size: The fraction of test dataset that needs to be set aside for validation
         purpose.
         Values between (0.0 , 1.0)
         Applied when validation dataset is not provided.
        :paramtype test_data_size: float
        :keyword validation_data: Validation data inputs.
        :paramtype validation_data: ~azure.mgmt.machinelearningservices.models.MLTableJobInput
        :keyword validation_data_size: The fraction of training dataset that needs to be set aside for
         validation purpose.
         Values between (0.0 , 1.0)
         Applied when validation dataset is not provided.
        :paramtype validation_data_size: float
        :keyword weight_column_name: The name of the sample weight column. Automated ML supports a
         weighted column as an input, causing rows in the data to be weighted up or down.
        :paramtype weight_column_name: str
        :keyword log_verbosity: Log verbosity for the job. Possible values include: "NotSet", "Debug",
         "Info", "Warning", "Error", "Critical".
        :paramtype log_verbosity: str or ~azure.mgmt.machinelearningservices.models.LogVerbosity
        :keyword target_column_name: Target column name: This is prediction values column.
         Also known as label column name in context of classification tasks.
        :paramtype target_column_name: str
        :keyword training_data: Required. [Required] Training data input.
        :paramtype training_data: ~azure.mgmt.machinelearningservices.models.MLTableJobInput
        :keyword primary_metric: Primary metric for regression task. Possible values include:
         "SpearmanCorrelation", "NormalizedRootMeanSquaredError", "R2Score",
         "NormalizedMeanAbsoluteError".
        :paramtype primary_metric: str or
         ~azure.mgmt.machinelearningservices.models.RegressionPrimaryMetrics
        :keyword training_settings: Inputs for training phase for an AutoML Job.
        :paramtype training_settings:
         ~azure.mgmt.machinelearningservices.models.RegressionTrainingSettings
        """
        super(Regression, self).__init__(**kwargs)
        self.cv_split_column_names = kwargs.get('cv_split_column_names', None)
        self.featurization_settings = kwargs.get('featurization_settings', None)
        self.limit_settings = kwargs.get('limit_settings', None)
        self.n_cross_validations = kwargs.get('n_cross_validations', None)
        self.test_data = kwargs.get('test_data', None)
        self.test_data_size = kwargs.get('test_data_size', None)
        self.validation_data = kwargs.get('validation_data', None)
        self.validation_data_size = kwargs.get('validation_data_size', None)
        self.weight_column_name = kwargs.get('weight_column_name', None)
        self.task_type = 'Regression'  # type: str
        self.primary_metric = kwargs.get('primary_metric', None)
        self.training_settings = kwargs.get('training_settings', None)
        self.log_verbosity = kwargs.get('log_verbosity', None)
        self.target_column_name = kwargs.get('target_column_name', None)
        self.training_data = kwargs['training_data']


class RegressionTrainingSettings(TrainingSettings):
    """Regression Training related configuration.

    :ivar enable_dnn_training: Enable recommendation of DNN models.
    :vartype enable_dnn_training: bool
    :ivar enable_model_explainability: Flag to turn on explainability on best model.
    :vartype enable_model_explainability: bool
    :ivar enable_onnx_compatible_models: Flag for enabling onnx compatible models.
    :vartype enable_onnx_compatible_models: bool
    :ivar enable_stack_ensemble: Enable stack ensemble run.
    :vartype enable_stack_ensemble: bool
    :ivar enable_vote_ensemble: Enable voting ensemble run.
    :vartype enable_vote_ensemble: bool
    :ivar ensemble_model_download_timeout: During VotingEnsemble and StackEnsemble model
     generation, multiple fitted models from the previous child runs are downloaded.
     Configure this parameter with a higher value than 300 secs, if more time is needed.
    :vartype ensemble_model_download_timeout: ~datetime.timedelta
    :ivar stack_ensemble_settings: Stack ensemble settings for stack ensemble run.
    :vartype stack_ensemble_settings:
     ~azure.mgmt.machinelearningservices.models.StackEnsembleSettings
    :ivar allowed_training_algorithms: Allowed models for regression task.
    :vartype allowed_training_algorithms: list[str or
     ~azure.mgmt.machinelearningservices.models.RegressionModels]
    :ivar blocked_training_algorithms: Blocked models for regression task.
    :vartype blocked_training_algorithms: list[str or
     ~azure.mgmt.machinelearningservices.models.RegressionModels]
    """

    _attribute_map = {
        'enable_dnn_training': {'key': 'enableDnnTraining', 'type': 'bool'},
        'enable_model_explainability': {'key': 'enableModelExplainability', 'type': 'bool'},
        'enable_onnx_compatible_models': {'key': 'enableOnnxCompatibleModels', 'type': 'bool'},
        'enable_stack_ensemble': {'key': 'enableStackEnsemble', 'type': 'bool'},
        'enable_vote_ensemble': {'key': 'enableVoteEnsemble', 'type': 'bool'},
        'ensemble_model_download_timeout': {'key': 'ensembleModelDownloadTimeout', 'type': 'duration'},
        'stack_ensemble_settings': {'key': 'stackEnsembleSettings', 'type': 'StackEnsembleSettings'},
        'allowed_training_algorithms': {'key': 'allowedTrainingAlgorithms', 'type': '[str]'},
        'blocked_training_algorithms': {'key': 'blockedTrainingAlgorithms', 'type': '[str]'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword enable_dnn_training: Enable recommendation of DNN models.
        :paramtype enable_dnn_training: bool
        :keyword enable_model_explainability: Flag to turn on explainability on best model.
        :paramtype enable_model_explainability: bool
        :keyword enable_onnx_compatible_models: Flag for enabling onnx compatible models.
        :paramtype enable_onnx_compatible_models: bool
        :keyword enable_stack_ensemble: Enable stack ensemble run.
        :paramtype enable_stack_ensemble: bool
        :keyword enable_vote_ensemble: Enable voting ensemble run.
        :paramtype enable_vote_ensemble: bool
        :keyword ensemble_model_download_timeout: During VotingEnsemble and StackEnsemble model
         generation, multiple fitted models from the previous child runs are downloaded.
         Configure this parameter with a higher value than 300 secs, if more time is needed.
        :paramtype ensemble_model_download_timeout: ~datetime.timedelta
        :keyword stack_ensemble_settings: Stack ensemble settings for stack ensemble run.
        :paramtype stack_ensemble_settings:
         ~azure.mgmt.machinelearningservices.models.StackEnsembleSettings
        :keyword allowed_training_algorithms: Allowed models for regression task.
        :paramtype allowed_training_algorithms: list[str or
         ~azure.mgmt.machinelearningservices.models.RegressionModels]
        :keyword blocked_training_algorithms: Blocked models for regression task.
        :paramtype blocked_training_algorithms: list[str or
         ~azure.mgmt.machinelearningservices.models.RegressionModels]
        """
        super(RegressionTrainingSettings, self).__init__(**kwargs)
        self.allowed_training_algorithms = kwargs.get('allowed_training_algorithms', None)
        self.blocked_training_algorithms = kwargs.get('blocked_training_algorithms', None)


class RequestConfiguration(msrest.serialization.Model):
    """Scoring requests configuration.

    :ivar max_concurrent_requests_per_instance: The number of maximum concurrent requests per node
     allowed per deployment. Defaults to 1.
    :vartype max_concurrent_requests_per_instance: int
    :ivar request_timeout: The scoring timeout in ISO 8601 format.
     Defaults to 5000ms.
    :vartype request_timeout: ~datetime.timedelta
    """

    _attribute_map = {
        'max_concurrent_requests_per_instance': {'key': 'maxConcurrentRequestsPerInstance', 'type': 'int'},
        'request_timeout': {'key': 'requestTimeout', 'type': 'duration'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword max_concurrent_requests_per_instance: The number of maximum concurrent requests per
         node allowed per deployment. Defaults to 1.
        :paramtype max_concurrent_requests_per_instance: int
        :keyword request_timeout: The scoring timeout in ISO 8601 format.
         Defaults to 5000ms.
        :paramtype request_timeout: ~datetime.timedelta
        """
        super(RequestConfiguration, self).__init__(**kwargs)
        self.max_concurrent_requests_per_instance = kwargs.get('max_concurrent_requests_per_instance', 1)
        self.request_timeout = kwargs.get('request_timeout', "PT5S")


class RequestLogging(msrest.serialization.Model):
    """RequestLogging.

    :ivar capture_headers: For payload logging, we only collect payload by default. If customers
     also want to collect the specified headers, they can set them in captureHeaders so that backend
     will collect those headers along with payload.
    :vartype capture_headers: list[str]
    """

    _attribute_map = {
        'capture_headers': {'key': 'captureHeaders', 'type': '[str]'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword capture_headers: For payload logging, we only collect payload by default. If customers
         also want to collect the specified headers, they can set them in captureHeaders so that backend
         will collect those headers along with payload.
        :paramtype capture_headers: list[str]
        """
        super(RequestLogging, self).__init__(**kwargs)
        self.capture_headers = kwargs.get('capture_headers', None)


class ResizeSchema(msrest.serialization.Model):
    """Schema for Compute Instance resize.

    :ivar target_vm_size: The name of the virtual machine size.
    :vartype target_vm_size: str
    """

    _attribute_map = {
        'target_vm_size': {'key': 'targetVMSize', 'type': 'str'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword target_vm_size: The name of the virtual machine size.
        :paramtype target_vm_size: str
        """
        super(ResizeSchema, self).__init__(**kwargs)
        self.target_vm_size = kwargs.get('target_vm_size', None)


class ResourceId(msrest.serialization.Model):
    """Represents a resource ID. For example, for a subnet, it is the resource URL for the subnet.

    All required parameters must be populated in order to send to Azure.

    :ivar id: Required. The ID of the resource.
    :vartype id: str
    """

    _validation = {
        'id': {'required': True},
    }

    _attribute_map = {
        'id': {'key': 'id', 'type': 'str'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword id: Required. The ID of the resource.
        :paramtype id: str
        """
        super(ResourceId, self).__init__(**kwargs)
        self.id = kwargs['id']


class ResourceName(msrest.serialization.Model):
    """The Resource Name.

    Variables are only populated by the server, and will be ignored when sending a request.

    :ivar value: The name of the resource.
    :vartype value: str
    :ivar localized_value: The localized name of the resource.
    :vartype localized_value: str
    """

    _validation = {
        'value': {'readonly': True},
        'localized_value': {'readonly': True},
    }

    _attribute_map = {
        'value': {'key': 'value', 'type': 'str'},
        'localized_value': {'key': 'localizedValue', 'type': 'str'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        """
        super(ResourceName, self).__init__(**kwargs)
        self.value = None
        self.localized_value = None


class ResourceQuota(msrest.serialization.Model):
    """The quota assigned to a resource.

    Variables are only populated by the server, and will be ignored when sending a request.

    :ivar id: Specifies the resource ID.
    :vartype id: str
    :ivar aml_workspace_location: Region of the AML workspace in the id.
    :vartype aml_workspace_location: str
    :ivar type: Specifies the resource type.
    :vartype type: str
    :ivar name: Name of the resource.
    :vartype name: ~azure.mgmt.machinelearningservices.models.ResourceName
    :ivar limit: The maximum permitted quota of the resource.
    :vartype limit: long
    :ivar unit: An enum describing the unit of quota measurement. Possible values include: "Count".
    :vartype unit: str or ~azure.mgmt.machinelearningservices.models.QuotaUnit
    """

    _validation = {
        'id': {'readonly': True},
        'aml_workspace_location': {'readonly': True},
        'type': {'readonly': True},
        'name': {'readonly': True},
        'limit': {'readonly': True},
        'unit': {'readonly': True},
    }

    _attribute_map = {
        'id': {'key': 'id', 'type': 'str'},
        'aml_workspace_location': {'key': 'amlWorkspaceLocation', 'type': 'str'},
        'type': {'key': 'type', 'type': 'str'},
        'name': {'key': 'name', 'type': 'ResourceName'},
        'limit': {'key': 'limit', 'type': 'long'},
        'unit': {'key': 'unit', 'type': 'str'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        """
        super(ResourceQuota, self).__init__(**kwargs)
        self.id = None
        self.aml_workspace_location = None
        self.type = None
        self.name = None
        self.limit = None
        self.unit = None


class RollingInputData(MonitoringInputDataBase):
    """Rolling input data definition.

    All required parameters must be populated in order to send to Azure.

    :ivar columns: Mapping of column names to special uses.
    :vartype columns: dict[str, str]
    :ivar data_context: The context metadata of the data source.
    :vartype data_context: str
    :ivar input_data_type: Required. [Required] Specifies the type of signal to monitor.Constant
     filled by server. Possible values include: "Static", "Rolling", "Fixed".
    :vartype input_data_type: str or
     ~azure.mgmt.machinelearningservices.models.MonitoringInputDataType
    :ivar job_input_type: Required. [Required] Specifies the type of job. Possible values include:
     "literal", "uri_file", "uri_folder", "mltable", "custom_model", "mlflow_model", "triton_model".
    :vartype job_input_type: str or ~azure.mgmt.machinelearningservices.models.JobInputType
    :ivar uri: Required. [Required] Input Asset URI.
    :vartype uri: str
    :ivar preprocessing_component_id: Reference to the component asset used to preprocess the data.
    :vartype preprocessing_component_id: str
    :ivar window_offset: Required. [Required] The time offset between the end of the data window
     and the monitor's current run time.
    :vartype window_offset: ~datetime.timedelta
    :ivar window_size: Required. [Required] The size of the rolling data window.
    :vartype window_size: ~datetime.timedelta
    """

    _validation = {
        'input_data_type': {'required': True},
        'job_input_type': {'required': True},
        'uri': {'required': True, 'min_length': 1, 'pattern': r'[a-zA-Z0-9_]'},
        'window_offset': {'required': True},
        'window_size': {'required': True},
    }

    _attribute_map = {
        'columns': {'key': 'columns', 'type': '{str}'},
        'data_context': {'key': 'dataContext', 'type': 'str'},
        'input_data_type': {'key': 'inputDataType', 'type': 'str'},
        'job_input_type': {'key': 'jobInputType', 'type': 'str'},
        'uri': {'key': 'uri', 'type': 'str'},
        'preprocessing_component_id': {'key': 'preprocessingComponentId', 'type': 'str'},
        'window_offset': {'key': 'windowOffset', 'type': 'duration'},
        'window_size': {'key': 'windowSize', 'type': 'duration'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword columns: Mapping of column names to special uses.
        :paramtype columns: dict[str, str]
        :keyword data_context: The context metadata of the data source.
        :paramtype data_context: str
        :keyword job_input_type: Required. [Required] Specifies the type of job. Possible values
         include: "literal", "uri_file", "uri_folder", "mltable", "custom_model", "mlflow_model",
         "triton_model".
        :paramtype job_input_type: str or ~azure.mgmt.machinelearningservices.models.JobInputType
        :keyword uri: Required. [Required] Input Asset URI.
        :paramtype uri: str
        :keyword preprocessing_component_id: Reference to the component asset used to preprocess the
         data.
        :paramtype preprocessing_component_id: str
        :keyword window_offset: Required. [Required] The time offset between the end of the data window
         and the monitor's current run time.
        :paramtype window_offset: ~datetime.timedelta
        :keyword window_size: Required. [Required] The size of the rolling data window.
        :paramtype window_size: ~datetime.timedelta
        """
        super(RollingInputData, self).__init__(**kwargs)
        self.input_data_type = 'Rolling'  # type: str
        self.preprocessing_component_id = kwargs.get('preprocessing_component_id', None)
        self.window_offset = kwargs['window_offset']
        self.window_size = kwargs['window_size']


class Route(msrest.serialization.Model):
    """Route.

    All required parameters must be populated in order to send to Azure.

    :ivar path: Required. [Required] The path for the route.
    :vartype path: str
    :ivar port: Required. [Required] The port for the route.
    :vartype port: int
    """

    _validation = {
        'path': {'required': True, 'min_length': 1, 'pattern': r'[a-zA-Z0-9_]'},
        'port': {'required': True},
    }

    _attribute_map = {
        'path': {'key': 'path', 'type': 'str'},
        'port': {'key': 'port', 'type': 'int'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword path: Required. [Required] The path for the route.
        :paramtype path: str
        :keyword port: Required. [Required] The port for the route.
        :paramtype port: int
        """
        super(Route, self).__init__(**kwargs)
        self.path = kwargs['path']
        self.port = kwargs['port']


class SASAuthTypeWorkspaceConnectionProperties(WorkspaceConnectionPropertiesV2):
    """SASAuthTypeWorkspaceConnectionProperties.

    Variables are only populated by the server, and will be ignored when sending a request.

    All required parameters must be populated in order to send to Azure.

    :ivar auth_type: Required. Authentication type of the connection target.Constant filled by
     server. Possible values include: "PAT", "ManagedIdentity", "UsernamePassword", "None", "SAS",
     "AccountKey", "ServicePrincipal", "AccessKey", "ApiKey", "CustomKeys", "OAuth2", "AAD".
    :vartype auth_type: str or ~azure.mgmt.machinelearningservices.models.ConnectionAuthType
    :ivar category: Category of the connection. Possible values include: "PythonFeed",
     "ContainerRegistry", "Git", "S3", "Snowflake", "AzureSqlDb", "AzureSynapseAnalytics",
     "AzureMySqlDb", "AzurePostgresDb", "ADLSGen2", "Redis", "ApiKey", "AzureOpenAI", "AIServices",
     "CognitiveSearch", "CognitiveService", "CustomKeys", "AzureBlob", "AzureOneLake", "CosmosDb",
     "CosmosDbMongoDbApi", "AzureDataExplorer", "AzureMariaDb", "AzureDatabricksDeltaLake",
     "AzureSqlMi", "AzureTableStorage", "AmazonRdsForOracle", "AmazonRdsForSqlServer",
     "AmazonRedshift", "Db2", "Drill", "GoogleBigQuery", "Greenplum", "Hbase", "Hive", "Impala",
     "Informix", "MariaDb", "MicrosoftAccess", "MySql", "Netezza", "Oracle", "Phoenix",
     "PostgreSql", "Presto", "SapOpenHub", "SapBw", "SapHana", "SapTable", "Spark", "SqlServer",
     "Sybase", "Teradata", "Vertica", "Pinecone", "Cassandra", "Couchbase", "MongoDbV2",
     "MongoDbAtlas", "AmazonS3Compatible", "FileServer", "FtpServer", "GoogleCloudStorage", "Hdfs",
     "OracleCloudStorage", "Sftp", "GenericHttp", "ODataRest", "Odbc", "GenericRest", "AmazonMws",
     "Concur", "Dynamics", "DynamicsAx", "DynamicsCrm", "GoogleAdWords", "Hubspot", "Jira",
     "Magento", "Marketo", "Office365", "Eloqua", "Responsys", "OracleServiceCloud", "PayPal",
     "QuickBooks", "Salesforce", "SalesforceServiceCloud", "SalesforceMarketingCloud",
     "SapCloudForCustomer", "SapEcc", "ServiceNow", "SharePointOnlineList", "Shopify", "Square",
     "WebTable", "Xero", "Zoho", "GenericContainerRegistry", "Elasticsearch", "OpenAI", "Serp",
     "BingLLMSearch", "Serverless", "ManagedOnlineEndpoint".
    :vartype category: str or ~azure.mgmt.machinelearningservices.models.ConnectionCategory
    :ivar created_by_workspace_arm_id:
    :vartype created_by_workspace_arm_id: str
    :ivar error:
    :vartype error: str
    :ivar expiry_time:
    :vartype expiry_time: ~datetime.datetime
    :ivar group: Group based on connection category. Possible values include: "Azure", "AzureAI",
     "Database", "NoSQL", "File", "GenericProtocol", "ServicesAndApps".
    :vartype group: str or ~azure.mgmt.machinelearningservices.models.ConnectionGroup
    :ivar is_shared_to_all:
    :vartype is_shared_to_all: bool
    :ivar metadata: Store user metadata for this connection.
    :vartype metadata: dict[str, str]
    :ivar pe_requirement: Possible values include: "Required", "NotRequired", "NotApplicable".
    :vartype pe_requirement: str or ~azure.mgmt.machinelearningservices.models.ManagedPERequirement
    :ivar pe_status: Possible values include: "Inactive", "Active", "NotApplicable".
    :vartype pe_status: str or ~azure.mgmt.machinelearningservices.models.ManagedPEStatus
    :ivar shared_user_list:
    :vartype shared_user_list: list[str]
    :ivar target:
    :vartype target: str
    :ivar use_workspace_managed_identity:
    :vartype use_workspace_managed_identity: bool
    :ivar credentials:
    :vartype credentials:
     ~azure.mgmt.machinelearningservices.models.WorkspaceConnectionSharedAccessSignature
    """

    _validation = {
        'auth_type': {'required': True},
        'created_by_workspace_arm_id': {'readonly': True},
        'group': {'readonly': True},
    }

    _attribute_map = {
        'auth_type': {'key': 'authType', 'type': 'str'},
        'category': {'key': 'category', 'type': 'str'},
        'created_by_workspace_arm_id': {'key': 'createdByWorkspaceArmId', 'type': 'str'},
        'error': {'key': 'error', 'type': 'str'},
        'expiry_time': {'key': 'expiryTime', 'type': 'iso-8601'},
        'group': {'key': 'group', 'type': 'str'},
        'is_shared_to_all': {'key': 'isSharedToAll', 'type': 'bool'},
        'metadata': {'key': 'metadata', 'type': '{str}'},
        'pe_requirement': {'key': 'peRequirement', 'type': 'str'},
        'pe_status': {'key': 'peStatus', 'type': 'str'},
        'shared_user_list': {'key': 'sharedUserList', 'type': '[str]'},
        'target': {'key': 'target', 'type': 'str'},
        'use_workspace_managed_identity': {'key': 'useWorkspaceManagedIdentity', 'type': 'bool'},
        'credentials': {'key': 'credentials', 'type': 'WorkspaceConnectionSharedAccessSignature'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword category: Category of the connection. Possible values include: "PythonFeed",
         "ContainerRegistry", "Git", "S3", "Snowflake", "AzureSqlDb", "AzureSynapseAnalytics",
         "AzureMySqlDb", "AzurePostgresDb", "ADLSGen2", "Redis", "ApiKey", "AzureOpenAI", "AIServices",
         "CognitiveSearch", "CognitiveService", "CustomKeys", "AzureBlob", "AzureOneLake", "CosmosDb",
         "CosmosDbMongoDbApi", "AzureDataExplorer", "AzureMariaDb", "AzureDatabricksDeltaLake",
         "AzureSqlMi", "AzureTableStorage", "AmazonRdsForOracle", "AmazonRdsForSqlServer",
         "AmazonRedshift", "Db2", "Drill", "GoogleBigQuery", "Greenplum", "Hbase", "Hive", "Impala",
         "Informix", "MariaDb", "MicrosoftAccess", "MySql", "Netezza", "Oracle", "Phoenix",
         "PostgreSql", "Presto", "SapOpenHub", "SapBw", "SapHana", "SapTable", "Spark", "SqlServer",
         "Sybase", "Teradata", "Vertica", "Pinecone", "Cassandra", "Couchbase", "MongoDbV2",
         "MongoDbAtlas", "AmazonS3Compatible", "FileServer", "FtpServer", "GoogleCloudStorage", "Hdfs",
         "OracleCloudStorage", "Sftp", "GenericHttp", "ODataRest", "Odbc", "GenericRest", "AmazonMws",
         "Concur", "Dynamics", "DynamicsAx", "DynamicsCrm", "GoogleAdWords", "Hubspot", "Jira",
         "Magento", "Marketo", "Office365", "Eloqua", "Responsys", "OracleServiceCloud", "PayPal",
         "QuickBooks", "Salesforce", "SalesforceServiceCloud", "SalesforceMarketingCloud",
         "SapCloudForCustomer", "SapEcc", "ServiceNow", "SharePointOnlineList", "Shopify", "Square",
         "WebTable", "Xero", "Zoho", "GenericContainerRegistry", "Elasticsearch", "OpenAI", "Serp",
         "BingLLMSearch", "Serverless", "ManagedOnlineEndpoint".
        :paramtype category: str or ~azure.mgmt.machinelearningservices.models.ConnectionCategory
        :keyword error:
        :paramtype error: str
        :keyword expiry_time:
        :paramtype expiry_time: ~datetime.datetime
        :keyword is_shared_to_all:
        :paramtype is_shared_to_all: bool
        :keyword metadata: Store user metadata for this connection.
        :paramtype metadata: dict[str, str]
        :keyword pe_requirement: Possible values include: "Required", "NotRequired", "NotApplicable".
        :paramtype pe_requirement: str or
         ~azure.mgmt.machinelearningservices.models.ManagedPERequirement
        :keyword pe_status: Possible values include: "Inactive", "Active", "NotApplicable".
        :paramtype pe_status: str or ~azure.mgmt.machinelearningservices.models.ManagedPEStatus
        :keyword shared_user_list:
        :paramtype shared_user_list: list[str]
        :keyword target:
        :paramtype target: str
        :keyword use_workspace_managed_identity:
        :paramtype use_workspace_managed_identity: bool
        :keyword credentials:
        :paramtype credentials:
         ~azure.mgmt.machinelearningservices.models.WorkspaceConnectionSharedAccessSignature
        """
        super(SASAuthTypeWorkspaceConnectionProperties, self).__init__(**kwargs)
        self.auth_type = 'SAS'  # type: str
        self.credentials = kwargs.get('credentials', None)


class SASCredential(DataReferenceCredential):
    """Access with full SAS uri.

    All required parameters must be populated in order to send to Azure.

    :ivar credential_type: Required. [Required] Credential type used to authentication with
     storage.Constant filled by server. Possible values include: "SAS", "DockerCredentials",
     "ManagedIdentity", "NoCredentials".
    :vartype credential_type: str or
     ~azure.mgmt.machinelearningservices.models.DataReferenceCredentialType
    :ivar sas_uri: Full SAS Uri, including the storage, container/blob path and SAS token.
    :vartype sas_uri: str
    """

    _validation = {
        'credential_type': {'required': True},
    }

    _attribute_map = {
        'credential_type': {'key': 'credentialType', 'type': 'str'},
        'sas_uri': {'key': 'sasUri', 'type': 'str'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword sas_uri: Full SAS Uri, including the storage, container/blob path and SAS token.
        :paramtype sas_uri: str
        """
        super(SASCredential, self).__init__(**kwargs)
        self.credential_type = 'SAS'  # type: str
        self.sas_uri = kwargs.get('sas_uri', None)


class SASCredentialDto(PendingUploadCredentialDto):
    """SASCredentialDto.

    All required parameters must be populated in order to send to Azure.

    :ivar credential_type: Required. [Required] Credential type used to authentication with
     storage.Constant filled by server. Possible values include: "SAS".
    :vartype credential_type: str or
     ~azure.mgmt.machinelearningservices.models.PendingUploadCredentialType
    :ivar sas_uri: Full SAS Uri, including the storage, container/blob path and SAS token.
    :vartype sas_uri: str
    """

    _validation = {
        'credential_type': {'required': True},
    }

    _attribute_map = {
        'credential_type': {'key': 'credentialType', 'type': 'str'},
        'sas_uri': {'key': 'sasUri', 'type': 'str'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword sas_uri: Full SAS Uri, including the storage, container/blob path and SAS token.
        :paramtype sas_uri: str
        """
        super(SASCredentialDto, self).__init__(**kwargs)
        self.credential_type = 'SAS'  # type: str
        self.sas_uri = kwargs.get('sas_uri', None)


class SasDatastoreCredentials(DatastoreCredentials):
    """SAS datastore credentials configuration.

    All required parameters must be populated in order to send to Azure.

    :ivar credentials_type: Required. [Required] Credential type used to authentication with
     storage.Constant filled by server. Possible values include: "AccountKey", "Certificate",
     "None", "Sas", "ServicePrincipal".
    :vartype credentials_type: str or ~azure.mgmt.machinelearningservices.models.CredentialsType
    :ivar secrets: Required. [Required] Storage container secrets.
    :vartype secrets: ~azure.mgmt.machinelearningservices.models.SasDatastoreSecrets
    """

    _validation = {
        'credentials_type': {'required': True},
        'secrets': {'required': True},
    }

    _attribute_map = {
        'credentials_type': {'key': 'credentialsType', 'type': 'str'},
        'secrets': {'key': 'secrets', 'type': 'SasDatastoreSecrets'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword secrets: Required. [Required] Storage container secrets.
        :paramtype secrets: ~azure.mgmt.machinelearningservices.models.SasDatastoreSecrets
        """
        super(SasDatastoreCredentials, self).__init__(**kwargs)
        self.credentials_type = 'Sas'  # type: str
        self.secrets = kwargs['secrets']


class SasDatastoreSecrets(DatastoreSecrets):
    """Datastore SAS secrets.

    All required parameters must be populated in order to send to Azure.

    :ivar secrets_type: Required. [Required] Credential type used to authentication with
     storage.Constant filled by server. Possible values include: "AccountKey", "Certificate", "Sas",
     "ServicePrincipal".
    :vartype secrets_type: str or ~azure.mgmt.machinelearningservices.models.SecretsType
    :ivar sas_token: Storage container SAS token.
    :vartype sas_token: str
    """

    _validation = {
        'secrets_type': {'required': True},
    }

    _attribute_map = {
        'secrets_type': {'key': 'secretsType', 'type': 'str'},
        'sas_token': {'key': 'sasToken', 'type': 'str'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword sas_token: Storage container SAS token.
        :paramtype sas_token: str
        """
        super(SasDatastoreSecrets, self).__init__(**kwargs)
        self.secrets_type = 'Sas'  # type: str
        self.sas_token = kwargs.get('sas_token', None)


class ScaleSettings(msrest.serialization.Model):
    """scale settings for AML Compute.

    All required parameters must be populated in order to send to Azure.

    :ivar max_node_count: Required. Max number of nodes to use.
    :vartype max_node_count: int
    :ivar min_node_count: Min number of nodes to use.
    :vartype min_node_count: int
    :ivar node_idle_time_before_scale_down: Node Idle Time before scaling down amlCompute. This
     string needs to be in the RFC Format.
    :vartype node_idle_time_before_scale_down: ~datetime.timedelta
    """

    _validation = {
        'max_node_count': {'required': True},
    }

    _attribute_map = {
        'max_node_count': {'key': 'maxNodeCount', 'type': 'int'},
        'min_node_count': {'key': 'minNodeCount', 'type': 'int'},
        'node_idle_time_before_scale_down': {'key': 'nodeIdleTimeBeforeScaleDown', 'type': 'duration'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword max_node_count: Required. Max number of nodes to use.
        :paramtype max_node_count: int
        :keyword min_node_count: Min number of nodes to use.
        :paramtype min_node_count: int
        :keyword node_idle_time_before_scale_down: Node Idle Time before scaling down amlCompute. This
         string needs to be in the RFC Format.
        :paramtype node_idle_time_before_scale_down: ~datetime.timedelta
        """
        super(ScaleSettings, self).__init__(**kwargs)
        self.max_node_count = kwargs['max_node_count']
        self.min_node_count = kwargs.get('min_node_count', 0)
        self.node_idle_time_before_scale_down = kwargs.get('node_idle_time_before_scale_down', None)


class ScaleSettingsInformation(msrest.serialization.Model):
    """Desired scale settings for the amlCompute.

    :ivar scale_settings: scale settings for AML Compute.
    :vartype scale_settings: ~azure.mgmt.machinelearningservices.models.ScaleSettings
    """

    _attribute_map = {
        'scale_settings': {'key': 'scaleSettings', 'type': 'ScaleSettings'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword scale_settings: scale settings for AML Compute.
        :paramtype scale_settings: ~azure.mgmt.machinelearningservices.models.ScaleSettings
        """
        super(ScaleSettingsInformation, self).__init__(**kwargs)
        self.scale_settings = kwargs.get('scale_settings', None)


class ScaleUnitConfiguration(msrest.serialization.Model):
    """Configuration for ScaleUnit pool.

    :ivar disable_public_egress: Gets or sets a value indicating whether PublicEgress is disabled.
    :vartype disable_public_egress: bool
    :ivar registries: Gets or sets a list of Registry sources that will be used to confirm
     identity, storage, ACR.
    :vartype registries: list[str]
    """

    _attribute_map = {
        'disable_public_egress': {'key': 'disablePublicEgress', 'type': 'bool'},
        'registries': {'key': 'registries', 'type': '[str]'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword disable_public_egress: Gets or sets a value indicating whether PublicEgress is
         disabled.
        :paramtype disable_public_egress: bool
        :keyword registries: Gets or sets a list of Registry sources that will be used to confirm
         identity, storage, ACR.
        :paramtype registries: list[str]
        """
        super(ScaleUnitConfiguration, self).__init__(**kwargs)
        self.disable_public_egress = kwargs.get('disable_public_egress', False)
        self.registries = kwargs.get('registries', None)


class Schedule(ProxyResource):
    """Azure Resource Manager resource envelope.

    Variables are only populated by the server, and will be ignored when sending a request.

    All required parameters must be populated in order to send to Azure.

    :ivar id: Fully qualified resource ID for the resource. Ex -
     /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}.
    :vartype id: str
    :ivar name: The name of the resource.
    :vartype name: str
    :ivar type: The type of the resource. E.g. "Microsoft.Compute/virtualMachines" or
     "Microsoft.Storage/storageAccounts".
    :vartype type: str
    :ivar system_data: Azure Resource Manager metadata containing createdBy and modifiedBy
     information.
    :vartype system_data: ~azure.mgmt.machinelearningservices.models.SystemData
    :ivar properties: Required. [Required] Additional attributes of the entity.
    :vartype properties: ~azure.mgmt.machinelearningservices.models.ScheduleProperties
    """

    _validation = {
        'id': {'readonly': True},
        'name': {'readonly': True},
        'type': {'readonly': True},
        'system_data': {'readonly': True},
        'properties': {'required': True},
    }

    _attribute_map = {
        'id': {'key': 'id', 'type': 'str'},
        'name': {'key': 'name', 'type': 'str'},
        'type': {'key': 'type', 'type': 'str'},
        'system_data': {'key': 'systemData', 'type': 'SystemData'},
        'properties': {'key': 'properties', 'type': 'ScheduleProperties'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword properties: Required. [Required] Additional attributes of the entity.
        :paramtype properties: ~azure.mgmt.machinelearningservices.models.ScheduleProperties
        """
        super(Schedule, self).__init__(**kwargs)
        self.properties = kwargs['properties']


class ScheduleBase(msrest.serialization.Model):
    """ScheduleBase.

    :ivar id: A system assigned id for the schedule.
    :vartype id: str
    :ivar provisioning_status: The current deployment state of schedule. Possible values include:
     "Completed", "Provisioning", "Failed".
    :vartype provisioning_status: str or
     ~azure.mgmt.machinelearningservices.models.ScheduleProvisioningState
    :ivar status: Is the schedule enabled or disabled?. Possible values include: "Enabled",
     "Disabled".
    :vartype status: str or ~azure.mgmt.machinelearningservices.models.ScheduleStatus
    """

    _attribute_map = {
        'id': {'key': 'id', 'type': 'str'},
        'provisioning_status': {'key': 'provisioningStatus', 'type': 'str'},
        'status': {'key': 'status', 'type': 'str'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword id: A system assigned id for the schedule.
        :paramtype id: str
        :keyword provisioning_status: The current deployment state of schedule. Possible values
         include: "Completed", "Provisioning", "Failed".
        :paramtype provisioning_status: str or
         ~azure.mgmt.machinelearningservices.models.ScheduleProvisioningState
        :keyword status: Is the schedule enabled or disabled?. Possible values include: "Enabled",
         "Disabled".
        :paramtype status: str or ~azure.mgmt.machinelearningservices.models.ScheduleStatus
        """
        super(ScheduleBase, self).__init__(**kwargs)
        self.id = kwargs.get('id', None)
        self.provisioning_status = kwargs.get('provisioning_status', None)
        self.status = kwargs.get('status', None)


class ScheduleProperties(ResourceBase):
    """Base definition of a schedule.

    Variables are only populated by the server, and will be ignored when sending a request.

    All required parameters must be populated in order to send to Azure.

    :ivar description: The asset description text.
    :vartype description: str
    :ivar properties: The asset property dictionary.
    :vartype properties: dict[str, str]
    :ivar tags: A set of tags. Tag dictionary. Tags can be added, removed, and updated.
    :vartype tags: dict[str, str]
    :ivar action: Required. [Required] Specifies the action of the schedule.
    :vartype action: ~azure.mgmt.machinelearningservices.models.ScheduleActionBase
    :ivar display_name: Display name of schedule.
    :vartype display_name: str
    :ivar is_enabled: Is the schedule enabled?.
    :vartype is_enabled: bool
    :ivar provisioning_state: Provisioning state for the schedule. Possible values include:
     "Creating", "Updating", "Deleting", "Succeeded", "Failed", "Canceled".
    :vartype provisioning_state: str or
     ~azure.mgmt.machinelearningservices.models.ScheduleProvisioningStatus
    :ivar trigger: Required. [Required] Specifies the trigger details.
    :vartype trigger: ~azure.mgmt.machinelearningservices.models.TriggerBase
    """

    _validation = {
        'action': {'required': True},
        'provisioning_state': {'readonly': True},
        'trigger': {'required': True},
    }

    _attribute_map = {
        'description': {'key': 'description', 'type': 'str'},
        'properties': {'key': 'properties', 'type': '{str}'},
        'tags': {'key': 'tags', 'type': '{str}'},
        'action': {'key': 'action', 'type': 'ScheduleActionBase'},
        'display_name': {'key': 'displayName', 'type': 'str'},
        'is_enabled': {'key': 'isEnabled', 'type': 'bool'},
        'provisioning_state': {'key': 'provisioningState', 'type': 'str'},
        'trigger': {'key': 'trigger', 'type': 'TriggerBase'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword description: The asset description text.
        :paramtype description: str
        :keyword properties: The asset property dictionary.
        :paramtype properties: dict[str, str]
        :keyword tags: A set of tags. Tag dictionary. Tags can be added, removed, and updated.
        :paramtype tags: dict[str, str]
        :keyword action: Required. [Required] Specifies the action of the schedule.
        :paramtype action: ~azure.mgmt.machinelearningservices.models.ScheduleActionBase
        :keyword display_name: Display name of schedule.
        :paramtype display_name: str
        :keyword is_enabled: Is the schedule enabled?.
        :paramtype is_enabled: bool
        :keyword trigger: Required. [Required] Specifies the trigger details.
        :paramtype trigger: ~azure.mgmt.machinelearningservices.models.TriggerBase
        """
        super(ScheduleProperties, self).__init__(**kwargs)
        self.action = kwargs['action']
        self.display_name = kwargs.get('display_name', None)
        self.is_enabled = kwargs.get('is_enabled', True)
        self.provisioning_state = None
        self.trigger = kwargs['trigger']


class ScheduleResourceArmPaginatedResult(msrest.serialization.Model):
    """A paginated list of Schedule entities.

    :ivar next_link: The link to the next page of Schedule objects. If null, there are no
     additional pages.
    :vartype next_link: str
    :ivar value: An array of objects of type Schedule.
    :vartype value: list[~azure.mgmt.machinelearningservices.models.Schedule]
    """

    _attribute_map = {
        'next_link': {'key': 'nextLink', 'type': 'str'},
        'value': {'key': 'value', 'type': '[Schedule]'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword next_link: The link to the next page of Schedule objects. If null, there are no
         additional pages.
        :paramtype next_link: str
        :keyword value: An array of objects of type Schedule.
        :paramtype value: list[~azure.mgmt.machinelearningservices.models.Schedule]
        """
        super(ScheduleResourceArmPaginatedResult, self).__init__(**kwargs)
        self.next_link = kwargs.get('next_link', None)
        self.value = kwargs.get('value', None)


class ScriptReference(msrest.serialization.Model):
    """Script reference.

    :ivar script_source: The storage source of the script: inline, workspace.
    :vartype script_source: str
    :ivar script_data: The location of scripts in the mounted volume.
    :vartype script_data: str
    :ivar script_arguments: Optional command line arguments passed to the script to run.
    :vartype script_arguments: str
    :ivar timeout: Optional time period passed to timeout command.
    :vartype timeout: str
    """

    _attribute_map = {
        'script_source': {'key': 'scriptSource', 'type': 'str'},
        'script_data': {'key': 'scriptData', 'type': 'str'},
        'script_arguments': {'key': 'scriptArguments', 'type': 'str'},
        'timeout': {'key': 'timeout', 'type': 'str'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword script_source: The storage source of the script: inline, workspace.
        :paramtype script_source: str
        :keyword script_data: The location of scripts in the mounted volume.
        :paramtype script_data: str
        :keyword script_arguments: Optional command line arguments passed to the script to run.
        :paramtype script_arguments: str
        :keyword timeout: Optional time period passed to timeout command.
        :paramtype timeout: str
        """
        super(ScriptReference, self).__init__(**kwargs)
        self.script_source = kwargs.get('script_source', None)
        self.script_data = kwargs.get('script_data', None)
        self.script_arguments = kwargs.get('script_arguments', None)
        self.timeout = kwargs.get('timeout', None)


class ScriptsToExecute(msrest.serialization.Model):
    """Customized setup scripts.

    :ivar startup_script: Script that's run every time the machine starts.
    :vartype startup_script: ~azure.mgmt.machinelearningservices.models.ScriptReference
    :ivar creation_script: Script that's run only once during provision of the compute.
    :vartype creation_script: ~azure.mgmt.machinelearningservices.models.ScriptReference
    """

    _attribute_map = {
        'startup_script': {'key': 'startupScript', 'type': 'ScriptReference'},
        'creation_script': {'key': 'creationScript', 'type': 'ScriptReference'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword startup_script: Script that's run every time the machine starts.
        :paramtype startup_script: ~azure.mgmt.machinelearningservices.models.ScriptReference
        :keyword creation_script: Script that's run only once during provision of the compute.
        :paramtype creation_script: ~azure.mgmt.machinelearningservices.models.ScriptReference
        """
        super(ScriptsToExecute, self).__init__(**kwargs)
        self.startup_script = kwargs.get('startup_script', None)
        self.creation_script = kwargs.get('creation_script', None)


class SecretExpiry(msrest.serialization.Model):
    """Secret expiration configuration.

    :ivar expirable_secret: Indicates if the secret is expirable.
    :vartype expirable_secret: bool
    :ivar expire_after_hours: Number of hours after which the secret will expire.
    :vartype expire_after_hours: int
    """

    _attribute_map = {
        'expirable_secret': {'key': 'expirableSecret', 'type': 'bool'},
        'expire_after_hours': {'key': 'expireAfterHours', 'type': 'int'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword expirable_secret: Indicates if the secret is expirable.
        :paramtype expirable_secret: bool
        :keyword expire_after_hours: Number of hours after which the secret will expire.
        :paramtype expire_after_hours: int
        """
        super(SecretExpiry, self).__init__(**kwargs)
        self.expirable_secret = kwargs.get('expirable_secret', False)
        self.expire_after_hours = kwargs.get('expire_after_hours', 1)


class ServerlessComputeSettings(msrest.serialization.Model):
    """ServerlessComputeSettings.

    :ivar serverless_compute_custom_subnet: The resource ID of an existing virtual network subnet
     in which serverless compute nodes should be deployed.
    :vartype serverless_compute_custom_subnet: str
    :ivar serverless_compute_no_public_ip: The flag to signal if serverless compute nodes deployed
     in custom vNet would have no public IP addresses for a workspace with private endpoint.
    :vartype serverless_compute_no_public_ip: bool
    """

    _attribute_map = {
        'serverless_compute_custom_subnet': {'key': 'serverlessComputeCustomSubnet', 'type': 'str'},
        'serverless_compute_no_public_ip': {'key': 'serverlessComputeNoPublicIP', 'type': 'bool'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword serverless_compute_custom_subnet: The resource ID of an existing virtual network
         subnet in which serverless compute nodes should be deployed.
        :paramtype serverless_compute_custom_subnet: str
        :keyword serverless_compute_no_public_ip: The flag to signal if serverless compute nodes
         deployed in custom vNet would have no public IP addresses for a workspace with private
         endpoint.
        :paramtype serverless_compute_no_public_ip: bool
        """
        super(ServerlessComputeSettings, self).__init__(**kwargs)
        self.serverless_compute_custom_subnet = kwargs.get('serverless_compute_custom_subnet', None)
        self.serverless_compute_no_public_ip = kwargs.get('serverless_compute_no_public_ip', None)


class ServerlessEndpoint(TrackedResource):
    """ServerlessEndpoint.

    Variables are only populated by the server, and will be ignored when sending a request.

    All required parameters must be populated in order to send to Azure.

    :ivar id: Fully qualified resource ID for the resource. Ex -
     /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}.
    :vartype id: str
    :ivar name: The name of the resource.
    :vartype name: str
    :ivar type: The type of the resource. E.g. "Microsoft.Compute/virtualMachines" or
     "Microsoft.Storage/storageAccounts".
    :vartype type: str
    :ivar system_data: Azure Resource Manager metadata containing createdBy and modifiedBy
     information.
    :vartype system_data: ~azure.mgmt.machinelearningservices.models.SystemData
    :ivar tags: A set of tags. Resource tags.
    :vartype tags: dict[str, str]
    :ivar location: Required. The geo-location where the resource lives.
    :vartype location: str
    :ivar identity: Managed service identity (system assigned and/or user assigned identities).
    :vartype identity: ~azure.mgmt.machinelearningservices.models.ManagedServiceIdentity
    :ivar kind: Metadata used by portal/tooling/etc to render different UX experiences for
     resources of the same type.
    :vartype kind: str
    :ivar properties: Required. [Required] Additional attributes of the entity.
    :vartype properties: ~azure.mgmt.machinelearningservices.models.ServerlessEndpointProperties
    :ivar sku: Sku details required for ARM contract for Autoscaling.
    :vartype sku: ~azure.mgmt.machinelearningservices.models.Sku
    """

    _validation = {
        'id': {'readonly': True},
        'name': {'readonly': True},
        'type': {'readonly': True},
        'system_data': {'readonly': True},
        'location': {'required': True},
        'properties': {'required': True},
    }

    _attribute_map = {
        'id': {'key': 'id', 'type': 'str'},
        'name': {'key': 'name', 'type': 'str'},
        'type': {'key': 'type', 'type': 'str'},
        'system_data': {'key': 'systemData', 'type': 'SystemData'},
        'tags': {'key': 'tags', 'type': '{str}'},
        'location': {'key': 'location', 'type': 'str'},
        'identity': {'key': 'identity', 'type': 'ManagedServiceIdentity'},
        'kind': {'key': 'kind', 'type': 'str'},
        'properties': {'key': 'properties', 'type': 'ServerlessEndpointProperties'},
        'sku': {'key': 'sku', 'type': 'Sku'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword tags: A set of tags. Resource tags.
        :paramtype tags: dict[str, str]
        :keyword location: Required. The geo-location where the resource lives.
        :paramtype location: str
        :keyword identity: Managed service identity (system assigned and/or user assigned identities).
        :paramtype identity: ~azure.mgmt.machinelearningservices.models.ManagedServiceIdentity
        :keyword kind: Metadata used by portal/tooling/etc to render different UX experiences for
         resources of the same type.
        :paramtype kind: str
        :keyword properties: Required. [Required] Additional attributes of the entity.
        :paramtype properties: ~azure.mgmt.machinelearningservices.models.ServerlessEndpointProperties
        :keyword sku: Sku details required for ARM contract for Autoscaling.
        :paramtype sku: ~azure.mgmt.machinelearningservices.models.Sku
        """
        super(ServerlessEndpoint, self).__init__(**kwargs)
        self.identity = kwargs.get('identity', None)
        self.kind = kwargs.get('kind', None)
        self.properties = kwargs['properties']
        self.sku = kwargs.get('sku', None)


class ServerlessEndpointCapacityReservation(msrest.serialization.Model):
    """ServerlessEndpointCapacityReservation.

    All required parameters must be populated in order to send to Azure.

    :ivar capacity_reservation_group_id: Required.
    :vartype capacity_reservation_group_id: str
    :ivar endpoint_reserved_capacity:
    :vartype endpoint_reserved_capacity: int
    """

    _validation = {
        'capacity_reservation_group_id': {'required': True, 'min_length': 1, 'pattern': r'[a-zA-Z0-9_]'},
    }

    _attribute_map = {
        'capacity_reservation_group_id': {'key': 'capacityReservationGroupId', 'type': 'str'},
        'endpoint_reserved_capacity': {'key': 'endpointReservedCapacity', 'type': 'int'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword capacity_reservation_group_id: Required.
        :paramtype capacity_reservation_group_id: str
        :keyword endpoint_reserved_capacity:
        :paramtype endpoint_reserved_capacity: int
        """
        super(ServerlessEndpointCapacityReservation, self).__init__(**kwargs)
        self.capacity_reservation_group_id = kwargs['capacity_reservation_group_id']
        self.endpoint_reserved_capacity = kwargs.get('endpoint_reserved_capacity', None)


class ServerlessEndpointContentSafety(msrest.serialization.Model):
    """ServerlessEndpointContentSafety.

    All required parameters must be populated in order to send to Azure.

    :ivar content_safety_status: Required. Specifies the status of content safety. Possible values
     include: "Enabled", "Disabled".
    :vartype content_safety_status: str or
     ~azure.mgmt.machinelearningservices.models.ContentSafetyStatus
    """

    _validation = {
        'content_safety_status': {'required': True},
    }

    _attribute_map = {
        'content_safety_status': {'key': 'contentSafetyStatus', 'type': 'str'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword content_safety_status: Required. Specifies the status of content safety. Possible
         values include: "Enabled", "Disabled".
        :paramtype content_safety_status: str or
         ~azure.mgmt.machinelearningservices.models.ContentSafetyStatus
        """
        super(ServerlessEndpointContentSafety, self).__init__(**kwargs)
        self.content_safety_status = kwargs['content_safety_status']


class ServerlessEndpointInferenceEndpoint(msrest.serialization.Model):
    """ServerlessEndpointInferenceEndpoint.

    Variables are only populated by the server, and will be ignored when sending a request.

    All required parameters must be populated in order to send to Azure.

    :ivar headers: Dictionary of :code:`<string>`.
    :vartype headers: dict[str, str]
    :ivar uri: Required.
    :vartype uri: str
    """

    _validation = {
        'headers': {'readonly': True},
        'uri': {'required': True},
    }

    _attribute_map = {
        'headers': {'key': 'headers', 'type': '{str}'},
        'uri': {'key': 'uri', 'type': 'str'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword uri: Required.
        :paramtype uri: str
        """
        super(ServerlessEndpointInferenceEndpoint, self).__init__(**kwargs)
        self.headers = None
        self.uri = kwargs['uri']


class ServerlessEndpointModelSettings(msrest.serialization.Model):
    """ServerlessEndpointModelSettings.

    All required parameters must be populated in order to send to Azure.

    :ivar model_id: Required.
    :vartype model_id: str
    """

    _validation = {
        'model_id': {'required': True, 'min_length': 1, 'pattern': r'[a-zA-Z0-9_]'},
    }

    _attribute_map = {
        'model_id': {'key': 'modelId', 'type': 'str'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword model_id: Required.
        :paramtype model_id: str
        """
        super(ServerlessEndpointModelSettings, self).__init__(**kwargs)
        self.model_id = kwargs['model_id']


class ServerlessEndpointProperties(msrest.serialization.Model):
    """ServerlessEndpointProperties.

    Variables are only populated by the server, and will be ignored when sending a request.

    All required parameters must be populated in order to send to Azure.

    :ivar auth_mode: Required. [Required] Specifies the authentication mode for the Serverless
     endpoint. Possible values include: "Key", "AAD", "KeyAndAAD".
    :vartype auth_mode: str or
     ~azure.mgmt.machinelearningservices.models.ServerlessInferenceEndpointAuthMode
    :ivar content_safety: Specifies the content safety options. If omitted, the default content
     safety settings will be configured.
    :vartype content_safety: ~azure.mgmt.machinelearningservices.models.ContentSafety
    :ivar endpoint_state: The current state of the ServerlessEndpoint. Possible values include:
     "Unknown", "Creating", "Deleting", "Suspending", "Reinstating", "Online", "Suspended",
     "CreationFailed", "DeletionFailed".
    :vartype endpoint_state: str or
     ~azure.mgmt.machinelearningservices.models.ServerlessEndpointState
    :ivar inference_endpoint: The inference uri to target when making requests against the
     serverless endpoint.
    :vartype inference_endpoint:
     ~azure.mgmt.machinelearningservices.models.ServerlessInferenceEndpoint
    :ivar marketplace_subscription_id: The MarketplaceSubscription Azure ID associated to this
     ServerlessEndpoint.
    :vartype marketplace_subscription_id: str
    :ivar model_settings: The model settings (model id) for the model being serviced on the
     ServerlessEndpoint.
    :vartype model_settings: ~azure.mgmt.machinelearningservices.models.ModelSettings
    :ivar provisioning_state: Provisioning state for the endpoint. Possible values include:
     "Creating", "Deleting", "Succeeded", "Failed", "Updating", "Canceled".
    :vartype provisioning_state: str or
     ~azure.mgmt.machinelearningservices.models.EndpointProvisioningState
    """

    _validation = {
        'auth_mode': {'required': True},
        'endpoint_state': {'readonly': True},
        'inference_endpoint': {'readonly': True},
        'marketplace_subscription_id': {'readonly': True},
        'provisioning_state': {'readonly': True},
    }

    _attribute_map = {
        'auth_mode': {'key': 'authMode', 'type': 'str'},
        'content_safety': {'key': 'contentSafety', 'type': 'ContentSafety'},
        'endpoint_state': {'key': 'endpointState', 'type': 'str'},
        'inference_endpoint': {'key': 'inferenceEndpoint', 'type': 'ServerlessInferenceEndpoint'},
        'marketplace_subscription_id': {'key': 'marketplaceSubscriptionId', 'type': 'str'},
        'model_settings': {'key': 'modelSettings', 'type': 'ModelSettings'},
        'provisioning_state': {'key': 'provisioningState', 'type': 'str'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword auth_mode: Required. [Required] Specifies the authentication mode for the Serverless
         endpoint. Possible values include: "Key", "AAD", "KeyAndAAD".
        :paramtype auth_mode: str or
         ~azure.mgmt.machinelearningservices.models.ServerlessInferenceEndpointAuthMode
        :keyword content_safety: Specifies the content safety options. If omitted, the default content
         safety settings will be configured.
        :paramtype content_safety: ~azure.mgmt.machinelearningservices.models.ContentSafety
        :keyword model_settings: The model settings (model id) for the model being serviced on the
         ServerlessEndpoint.
        :paramtype model_settings: ~azure.mgmt.machinelearningservices.models.ModelSettings
        """
        super(ServerlessEndpointProperties, self).__init__(**kwargs)
        self.auth_mode = kwargs['auth_mode']
        self.content_safety = kwargs.get('content_safety', None)
        self.endpoint_state = None
        self.inference_endpoint = None
        self.marketplace_subscription_id = None
        self.model_settings = kwargs.get('model_settings', None)
        self.provisioning_state = None


class ServerlessEndpointResourceProperties(EndpointResourceProperties):
    """ServerlessEndpointResourceProperties.

    Variables are only populated by the server, and will be ignored when sending a request.

    All required parameters must be populated in order to send to Azure.

    :ivar associated_resource_id: Byo resource id for creating the built-in model service
     endpoints.
    :vartype associated_resource_id: str
    :ivar deployments: Deployments info.
    :vartype deployments:
     list[~azure.mgmt.machinelearningservices.models.EndpointDeploymentResourcePropertiesBasicResource]
    :ivar endpoint_type: Required. Type of the endpoint.Constant filled by server. Possible values
     include: "Azure.OpenAI", "Azure.Speech", "Azure.ContentSafety", "Azure.Llama",
     "managedOnlineEndpoint", "serverlessEndpoint".
    :vartype endpoint_type: str or ~azure.mgmt.machinelearningservices.models.EndpointType
    :ivar endpoint_uri: Uri of the endpoint.
    :vartype endpoint_uri: str
    :ivar failure_reason: The failure reason if the creation failed.
    :vartype failure_reason: str
    :ivar location: Location of the endpoint.
     Since input dto and when parse endpoint resource share the same contract
     this Location field is just for parse the endpoint resource info
     we won't let customer specify the endpoint resource location since we will create it the same
     location as workspace.
    :vartype location: str
    :ivar name: Name of the endpoint.
    :vartype name: str
    :ivar provisioning_state: Read-only provision state status property. Possible values include:
     "NotStarted", "Failed", "Creating", "Updating", "Succeeded", "Deleting", "Accepted",
     "Canceled", "Scaling", "Disabled".
    :vartype provisioning_state: str or
     ~azure.mgmt.machinelearningservices.models.DefaultResourceProvisioningState
    :ivar should_create_ai_services_endpoint: Whether the proxy (non-byo) endpoint is a regular
     endpoint or a OneKeyV2 AI services account endpoint.
    :vartype should_create_ai_services_endpoint: bool
    :ivar auth_mode: Possible values include: "Key", "AAD", "KeyAndAAD".
    :vartype auth_mode: str or
     ~azure.mgmt.machinelearningservices.models.ServerlessInferenceEndpointAuthMode
    :ivar capacity_reservation:
    :vartype capacity_reservation:
     ~azure.mgmt.machinelearningservices.models.ServerlessEndpointCapacityReservation
    :ivar content_safety:
    :vartype content_safety:
     ~azure.mgmt.machinelearningservices.models.ServerlessEndpointContentSafety
    :ivar endpoint_state: State of the Serverless Endpoint. Possible values include: "Unknown",
     "Creating", "Deleting", "Suspending", "Reinstating", "Online", "Suspended", "CreationFailed",
     "DeletionFailed".
    :vartype endpoint_state: str or
     ~azure.mgmt.machinelearningservices.models.ServerlessEndpointState
    :ivar inference_endpoint:
    :vartype inference_endpoint:
     ~azure.mgmt.machinelearningservices.models.ServerlessEndpointInferenceEndpoint
    :ivar marketplace_subscription_id:
    :vartype marketplace_subscription_id: str
    :ivar metadata: Anything.
    :vartype metadata: any
    :ivar model_settings:
    :vartype model_settings:
     ~azure.mgmt.machinelearningservices.models.ServerlessEndpointModelSettings
    :ivar offer:
    :vartype offer: ~azure.mgmt.machinelearningservices.models.ServerlessOffer
    """

    _validation = {
        'endpoint_type': {'required': True},
        'provisioning_state': {'readonly': True},
    }

    _attribute_map = {
        'associated_resource_id': {'key': 'associatedResourceId', 'type': 'str'},
        'deployments': {'key': 'deployments', 'type': '[EndpointDeploymentResourcePropertiesBasicResource]'},
        'endpoint_type': {'key': 'endpointType', 'type': 'str'},
        'endpoint_uri': {'key': 'endpointUri', 'type': 'str'},
        'failure_reason': {'key': 'failureReason', 'type': 'str'},
        'location': {'key': 'location', 'type': 'str'},
        'name': {'key': 'name', 'type': 'str'},
        'provisioning_state': {'key': 'provisioningState', 'type': 'str'},
        'should_create_ai_services_endpoint': {'key': 'shouldCreateAiServicesEndpoint', 'type': 'bool'},
        'auth_mode': {'key': 'authMode', 'type': 'str'},
        'capacity_reservation': {'key': 'capacityReservation', 'type': 'ServerlessEndpointCapacityReservation'},
        'content_safety': {'key': 'contentSafety', 'type': 'ServerlessEndpointContentSafety'},
        'endpoint_state': {'key': 'endpointState', 'type': 'str'},
        'inference_endpoint': {'key': 'inferenceEndpoint', 'type': 'ServerlessEndpointInferenceEndpoint'},
        'marketplace_subscription_id': {'key': 'marketplaceSubscriptionId', 'type': 'str'},
        'metadata': {'key': 'metadata', 'type': 'object'},
        'model_settings': {'key': 'modelSettings', 'type': 'ServerlessEndpointModelSettings'},
        'offer': {'key': 'offer', 'type': 'ServerlessOffer'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword associated_resource_id: Byo resource id for creating the built-in model service
         endpoints.
        :paramtype associated_resource_id: str
        :keyword deployments: Deployments info.
        :paramtype deployments:
         list[~azure.mgmt.machinelearningservices.models.EndpointDeploymentResourcePropertiesBasicResource]
        :keyword endpoint_uri: Uri of the endpoint.
        :paramtype endpoint_uri: str
        :keyword failure_reason: The failure reason if the creation failed.
        :paramtype failure_reason: str
        :keyword location: Location of the endpoint.
         Since input dto and when parse endpoint resource share the same contract
         this Location field is just for parse the endpoint resource info
         we won't let customer specify the endpoint resource location since we will create it the same
         location as workspace.
        :paramtype location: str
        :keyword name: Name of the endpoint.
        :paramtype name: str
        :keyword should_create_ai_services_endpoint: Whether the proxy (non-byo) endpoint is a regular
         endpoint or a OneKeyV2 AI services account endpoint.
        :paramtype should_create_ai_services_endpoint: bool
        :keyword auth_mode: Possible values include: "Key", "AAD", "KeyAndAAD".
        :paramtype auth_mode: str or
         ~azure.mgmt.machinelearningservices.models.ServerlessInferenceEndpointAuthMode
        :keyword capacity_reservation:
        :paramtype capacity_reservation:
         ~azure.mgmt.machinelearningservices.models.ServerlessEndpointCapacityReservation
        :keyword content_safety:
        :paramtype content_safety:
         ~azure.mgmt.machinelearningservices.models.ServerlessEndpointContentSafety
        :keyword endpoint_state: State of the Serverless Endpoint. Possible values include: "Unknown",
         "Creating", "Deleting", "Suspending", "Reinstating", "Online", "Suspended", "CreationFailed",
         "DeletionFailed".
        :paramtype endpoint_state: str or
         ~azure.mgmt.machinelearningservices.models.ServerlessEndpointState
        :keyword inference_endpoint:
        :paramtype inference_endpoint:
         ~azure.mgmt.machinelearningservices.models.ServerlessEndpointInferenceEndpoint
        :keyword marketplace_subscription_id:
        :paramtype marketplace_subscription_id: str
        :keyword metadata: Anything.
        :paramtype metadata: any
        :keyword model_settings:
        :paramtype model_settings:
         ~azure.mgmt.machinelearningservices.models.ServerlessEndpointModelSettings
        :keyword offer:
        :paramtype offer: ~azure.mgmt.machinelearningservices.models.ServerlessOffer
        """
        super(ServerlessEndpointResourceProperties, self).__init__(**kwargs)
        self.endpoint_type = 'serverlessEndpoint'  # type: str
        self.auth_mode = kwargs.get('auth_mode', None)
        self.capacity_reservation = kwargs.get('capacity_reservation', None)
        self.content_safety = kwargs.get('content_safety', None)
        self.endpoint_state = kwargs.get('endpoint_state', None)
        self.inference_endpoint = kwargs.get('inference_endpoint', None)
        self.marketplace_subscription_id = kwargs.get('marketplace_subscription_id', None)
        self.metadata = kwargs.get('metadata', None)
        self.model_settings = kwargs.get('model_settings', None)
        self.offer = kwargs.get('offer', None)


class ServerlessEndpointTrackedResourceArmPaginatedResult(msrest.serialization.Model):
    """A paginated list of ServerlessEndpoint entities.

    :ivar next_link: The link to the next page of ServerlessEndpoint objects. If null, there are no
     additional pages.
    :vartype next_link: str
    :ivar value: An array of objects of type ServerlessEndpoint.
    :vartype value: list[~azure.mgmt.machinelearningservices.models.ServerlessEndpoint]
    """

    _attribute_map = {
        'next_link': {'key': 'nextLink', 'type': 'str'},
        'value': {'key': 'value', 'type': '[ServerlessEndpoint]'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword next_link: The link to the next page of ServerlessEndpoint objects. If null, there are
         no additional pages.
        :paramtype next_link: str
        :keyword value: An array of objects of type ServerlessEndpoint.
        :paramtype value: list[~azure.mgmt.machinelearningservices.models.ServerlessEndpoint]
        """
        super(ServerlessEndpointTrackedResourceArmPaginatedResult, self).__init__(**kwargs)
        self.next_link = kwargs.get('next_link', None)
        self.value = kwargs.get('value', None)


class ServerlessInferenceEndpoint(msrest.serialization.Model):
    """ServerlessInferenceEndpoint.

    Variables are only populated by the server, and will be ignored when sending a request.

    All required parameters must be populated in order to send to Azure.

    :ivar headers: Specifies any required headers to target this serverless endpoint.
    :vartype headers: dict[str, str]
    :ivar uri: Required. [Required] The inference uri to target when making requests against the
     Serverless Endpoint.
    :vartype uri: str
    """

    _validation = {
        'headers': {'readonly': True},
        'uri': {'required': True},
    }

    _attribute_map = {
        'headers': {'key': 'headers', 'type': '{str}'},
        'uri': {'key': 'uri', 'type': 'str'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword uri: Required. [Required] The inference uri to target when making requests against the
         Serverless Endpoint.
        :paramtype uri: str
        """
        super(ServerlessInferenceEndpoint, self).__init__(**kwargs)
        self.headers = None
        self.uri = kwargs['uri']


class ServerlessOffer(msrest.serialization.Model):
    """ServerlessOffer.

    All required parameters must be populated in order to send to Azure.

    :ivar offer_name: Required.
    :vartype offer_name: str
    :ivar publisher: Required.
    :vartype publisher: str
    """

    _validation = {
        'offer_name': {'required': True, 'min_length': 1, 'pattern': r'[a-zA-Z0-9_]'},
        'publisher': {'required': True, 'min_length': 1, 'pattern': r'[a-zA-Z0-9_]'},
    }

    _attribute_map = {
        'offer_name': {'key': 'offerName', 'type': 'str'},
        'publisher': {'key': 'publisher', 'type': 'str'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword offer_name: Required.
        :paramtype offer_name: str
        :keyword publisher: Required.
        :paramtype publisher: str
        """
        super(ServerlessOffer, self).__init__(**kwargs)
        self.offer_name = kwargs['offer_name']
        self.publisher = kwargs['publisher']


class ServiceManagedResourcesSettings(msrest.serialization.Model):
    """ServiceManagedResourcesSettings.

    :ivar cosmos_db:
    :vartype cosmos_db: ~azure.mgmt.machinelearningservices.models.CosmosDbSettings
    """

    _attribute_map = {
        'cosmos_db': {'key': 'cosmosDb', 'type': 'CosmosDbSettings'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword cosmos_db:
        :paramtype cosmos_db: ~azure.mgmt.machinelearningservices.models.CosmosDbSettings
        """
        super(ServiceManagedResourcesSettings, self).__init__(**kwargs)
        self.cosmos_db = kwargs.get('cosmos_db', None)


class ServicePrincipalAuthTypeWorkspaceConnectionProperties(WorkspaceConnectionPropertiesV2):
    """ServicePrincipalAuthTypeWorkspaceConnectionProperties.

    Variables are only populated by the server, and will be ignored when sending a request.

    All required parameters must be populated in order to send to Azure.

    :ivar auth_type: Required. Authentication type of the connection target.Constant filled by
     server. Possible values include: "PAT", "ManagedIdentity", "UsernamePassword", "None", "SAS",
     "AccountKey", "ServicePrincipal", "AccessKey", "ApiKey", "CustomKeys", "OAuth2", "AAD".
    :vartype auth_type: str or ~azure.mgmt.machinelearningservices.models.ConnectionAuthType
    :ivar category: Category of the connection. Possible values include: "PythonFeed",
     "ContainerRegistry", "Git", "S3", "Snowflake", "AzureSqlDb", "AzureSynapseAnalytics",
     "AzureMySqlDb", "AzurePostgresDb", "ADLSGen2", "Redis", "ApiKey", "AzureOpenAI", "AIServices",
     "CognitiveSearch", "CognitiveService", "CustomKeys", "AzureBlob", "AzureOneLake", "CosmosDb",
     "CosmosDbMongoDbApi", "AzureDataExplorer", "AzureMariaDb", "AzureDatabricksDeltaLake",
     "AzureSqlMi", "AzureTableStorage", "AmazonRdsForOracle", "AmazonRdsForSqlServer",
     "AmazonRedshift", "Db2", "Drill", "GoogleBigQuery", "Greenplum", "Hbase", "Hive", "Impala",
     "Informix", "MariaDb", "MicrosoftAccess", "MySql", "Netezza", "Oracle", "Phoenix",
     "PostgreSql", "Presto", "SapOpenHub", "SapBw", "SapHana", "SapTable", "Spark", "SqlServer",
     "Sybase", "Teradata", "Vertica", "Pinecone", "Cassandra", "Couchbase", "MongoDbV2",
     "MongoDbAtlas", "AmazonS3Compatible", "FileServer", "FtpServer", "GoogleCloudStorage", "Hdfs",
     "OracleCloudStorage", "Sftp", "GenericHttp", "ODataRest", "Odbc", "GenericRest", "AmazonMws",
     "Concur", "Dynamics", "DynamicsAx", "DynamicsCrm", "GoogleAdWords", "Hubspot", "Jira",
     "Magento", "Marketo", "Office365", "Eloqua", "Responsys", "OracleServiceCloud", "PayPal",
     "QuickBooks", "Salesforce", "SalesforceServiceCloud", "SalesforceMarketingCloud",
     "SapCloudForCustomer", "SapEcc", "ServiceNow", "SharePointOnlineList", "Shopify", "Square",
     "WebTable", "Xero", "Zoho", "GenericContainerRegistry", "Elasticsearch", "OpenAI", "Serp",
     "BingLLMSearch", "Serverless", "ManagedOnlineEndpoint".
    :vartype category: str or ~azure.mgmt.machinelearningservices.models.ConnectionCategory
    :ivar created_by_workspace_arm_id:
    :vartype created_by_workspace_arm_id: str
    :ivar error:
    :vartype error: str
    :ivar expiry_time:
    :vartype expiry_time: ~datetime.datetime
    :ivar group: Group based on connection category. Possible values include: "Azure", "AzureAI",
     "Database", "NoSQL", "File", "GenericProtocol", "ServicesAndApps".
    :vartype group: str or ~azure.mgmt.machinelearningservices.models.ConnectionGroup
    :ivar is_shared_to_all:
    :vartype is_shared_to_all: bool
    :ivar metadata: Store user metadata for this connection.
    :vartype metadata: dict[str, str]
    :ivar pe_requirement: Possible values include: "Required", "NotRequired", "NotApplicable".
    :vartype pe_requirement: str or ~azure.mgmt.machinelearningservices.models.ManagedPERequirement
    :ivar pe_status: Possible values include: "Inactive", "Active", "NotApplicable".
    :vartype pe_status: str or ~azure.mgmt.machinelearningservices.models.ManagedPEStatus
    :ivar shared_user_list:
    :vartype shared_user_list: list[str]
    :ivar target:
    :vartype target: str
    :ivar use_workspace_managed_identity:
    :vartype use_workspace_managed_identity: bool
    :ivar credentials:
    :vartype credentials:
     ~azure.mgmt.machinelearningservices.models.WorkspaceConnectionServicePrincipal
    """

    _validation = {
        'auth_type': {'required': True},
        'created_by_workspace_arm_id': {'readonly': True},
        'group': {'readonly': True},
    }

    _attribute_map = {
        'auth_type': {'key': 'authType', 'type': 'str'},
        'category': {'key': 'category', 'type': 'str'},
        'created_by_workspace_arm_id': {'key': 'createdByWorkspaceArmId', 'type': 'str'},
        'error': {'key': 'error', 'type': 'str'},
        'expiry_time': {'key': 'expiryTime', 'type': 'iso-8601'},
        'group': {'key': 'group', 'type': 'str'},
        'is_shared_to_all': {'key': 'isSharedToAll', 'type': 'bool'},
        'metadata': {'key': 'metadata', 'type': '{str}'},
        'pe_requirement': {'key': 'peRequirement', 'type': 'str'},
        'pe_status': {'key': 'peStatus', 'type': 'str'},
        'shared_user_list': {'key': 'sharedUserList', 'type': '[str]'},
        'target': {'key': 'target', 'type': 'str'},
        'use_workspace_managed_identity': {'key': 'useWorkspaceManagedIdentity', 'type': 'bool'},
        'credentials': {'key': 'credentials', 'type': 'WorkspaceConnectionServicePrincipal'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword category: Category of the connection. Possible values include: "PythonFeed",
         "ContainerRegistry", "Git", "S3", "Snowflake", "AzureSqlDb", "AzureSynapseAnalytics",
         "AzureMySqlDb", "AzurePostgresDb", "ADLSGen2", "Redis", "ApiKey", "AzureOpenAI", "AIServices",
         "CognitiveSearch", "CognitiveService", "CustomKeys", "AzureBlob", "AzureOneLake", "CosmosDb",
         "CosmosDbMongoDbApi", "AzureDataExplorer", "AzureMariaDb", "AzureDatabricksDeltaLake",
         "AzureSqlMi", "AzureTableStorage", "AmazonRdsForOracle", "AmazonRdsForSqlServer",
         "AmazonRedshift", "Db2", "Drill", "GoogleBigQuery", "Greenplum", "Hbase", "Hive", "Impala",
         "Informix", "MariaDb", "MicrosoftAccess", "MySql", "Netezza", "Oracle", "Phoenix",
         "PostgreSql", "Presto", "SapOpenHub", "SapBw", "SapHana", "SapTable", "Spark", "SqlServer",
         "Sybase", "Teradata", "Vertica", "Pinecone", "Cassandra", "Couchbase", "MongoDbV2",
         "MongoDbAtlas", "AmazonS3Compatible", "FileServer", "FtpServer", "GoogleCloudStorage", "Hdfs",
         "OracleCloudStorage", "Sftp", "GenericHttp", "ODataRest", "Odbc", "GenericRest", "AmazonMws",
         "Concur", "Dynamics", "DynamicsAx", "DynamicsCrm", "GoogleAdWords", "Hubspot", "Jira",
         "Magento", "Marketo", "Office365", "Eloqua", "Responsys", "OracleServiceCloud", "PayPal",
         "QuickBooks", "Salesforce", "SalesforceServiceCloud", "SalesforceMarketingCloud",
         "SapCloudForCustomer", "SapEcc", "ServiceNow", "SharePointOnlineList", "Shopify", "Square",
         "WebTable", "Xero", "Zoho", "GenericContainerRegistry", "Elasticsearch", "OpenAI", "Serp",
         "BingLLMSearch", "Serverless", "ManagedOnlineEndpoint".
        :paramtype category: str or ~azure.mgmt.machinelearningservices.models.ConnectionCategory
        :keyword error:
        :paramtype error: str
        :keyword expiry_time:
        :paramtype expiry_time: ~datetime.datetime
        :keyword is_shared_to_all:
        :paramtype is_shared_to_all: bool
        :keyword metadata: Store user metadata for this connection.
        :paramtype metadata: dict[str, str]
        :keyword pe_requirement: Possible values include: "Required", "NotRequired", "NotApplicable".
        :paramtype pe_requirement: str or
         ~azure.mgmt.machinelearningservices.models.ManagedPERequirement
        :keyword pe_status: Possible values include: "Inactive", "Active", "NotApplicable".
        :paramtype pe_status: str or ~azure.mgmt.machinelearningservices.models.ManagedPEStatus
        :keyword shared_user_list:
        :paramtype shared_user_list: list[str]
        :keyword target:
        :paramtype target: str
        :keyword use_workspace_managed_identity:
        :paramtype use_workspace_managed_identity: bool
        :keyword credentials:
        :paramtype credentials:
         ~azure.mgmt.machinelearningservices.models.WorkspaceConnectionServicePrincipal
        """
        super(ServicePrincipalAuthTypeWorkspaceConnectionProperties, self).__init__(**kwargs)
        self.auth_type = 'ServicePrincipal'  # type: str
        self.credentials = kwargs.get('credentials', None)


class ServicePrincipalDatastoreCredentials(DatastoreCredentials):
    """Service Principal datastore credentials configuration.

    All required parameters must be populated in order to send to Azure.

    :ivar credentials_type: Required. [Required] Credential type used to authentication with
     storage.Constant filled by server. Possible values include: "AccountKey", "Certificate",
     "None", "Sas", "ServicePrincipal".
    :vartype credentials_type: str or ~azure.mgmt.machinelearningservices.models.CredentialsType
    :ivar authority_url: Authority URL used for authentication.
    :vartype authority_url: str
    :ivar client_id: Required. [Required] Service principal client ID.
    :vartype client_id: str
    :ivar resource_url: Resource the service principal has access to.
    :vartype resource_url: str
    :ivar secrets: Required. [Required] Service principal secrets.
    :vartype secrets: ~azure.mgmt.machinelearningservices.models.ServicePrincipalDatastoreSecrets
    :ivar tenant_id: Required. [Required] ID of the tenant to which the service principal belongs.
    :vartype tenant_id: str
    """

    _validation = {
        'credentials_type': {'required': True},
        'client_id': {'required': True},
        'secrets': {'required': True},
        'tenant_id': {'required': True},
    }

    _attribute_map = {
        'credentials_type': {'key': 'credentialsType', 'type': 'str'},
        'authority_url': {'key': 'authorityUrl', 'type': 'str'},
        'client_id': {'key': 'clientId', 'type': 'str'},
        'resource_url': {'key': 'resourceUrl', 'type': 'str'},
        'secrets': {'key': 'secrets', 'type': 'ServicePrincipalDatastoreSecrets'},
        'tenant_id': {'key': 'tenantId', 'type': 'str'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword authority_url: Authority URL used for authentication.
        :paramtype authority_url: str
        :keyword client_id: Required. [Required] Service principal client ID.
        :paramtype client_id: str
        :keyword resource_url: Resource the service principal has access to.
        :paramtype resource_url: str
        :keyword secrets: Required. [Required] Service principal secrets.
        :paramtype secrets: ~azure.mgmt.machinelearningservices.models.ServicePrincipalDatastoreSecrets
        :keyword tenant_id: Required. [Required] ID of the tenant to which the service principal
         belongs.
        :paramtype tenant_id: str
        """
        super(ServicePrincipalDatastoreCredentials, self).__init__(**kwargs)
        self.credentials_type = 'ServicePrincipal'  # type: str
        self.authority_url = kwargs.get('authority_url', None)
        self.client_id = kwargs['client_id']
        self.resource_url = kwargs.get('resource_url', None)
        self.secrets = kwargs['secrets']
        self.tenant_id = kwargs['tenant_id']


class ServicePrincipalDatastoreSecrets(DatastoreSecrets):
    """Datastore Service Principal secrets.

    All required parameters must be populated in order to send to Azure.

    :ivar secrets_type: Required. [Required] Credential type used to authentication with
     storage.Constant filled by server. Possible values include: "AccountKey", "Certificate", "Sas",
     "ServicePrincipal".
    :vartype secrets_type: str or ~azure.mgmt.machinelearningservices.models.SecretsType
    :ivar client_secret: Service principal secret.
    :vartype client_secret: str
    """

    _validation = {
        'secrets_type': {'required': True},
    }

    _attribute_map = {
        'secrets_type': {'key': 'secretsType', 'type': 'str'},
        'client_secret': {'key': 'clientSecret', 'type': 'str'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword client_secret: Service principal secret.
        :paramtype client_secret: str
        """
        super(ServicePrincipalDatastoreSecrets, self).__init__(**kwargs)
        self.secrets_type = 'ServicePrincipal'  # type: str
        self.client_secret = kwargs.get('client_secret', None)


class ServiceTagDestination(msrest.serialization.Model):
    """Service Tag destination for a Service Tag Outbound Rule for the managed network of a machine learning workspace.

    :ivar action: The action enum for networking rule. Possible values include: "Allow", "Deny".
    :vartype action: str or ~azure.mgmt.machinelearningservices.models.RuleAction
    :ivar address_prefixes: Optional, if provided, the ServiceTag property will be ignored.
    :vartype address_prefixes: list[str]
    :ivar port_ranges:
    :vartype port_ranges: str
    :ivar protocol:
    :vartype protocol: str
    :ivar service_tag:
    :vartype service_tag: str
    """

    _attribute_map = {
        'action': {'key': 'action', 'type': 'str'},
        'address_prefixes': {'key': 'addressPrefixes', 'type': '[str]'},
        'port_ranges': {'key': 'portRanges', 'type': 'str'},
        'protocol': {'key': 'protocol', 'type': 'str'},
        'service_tag': {'key': 'serviceTag', 'type': 'str'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword action: The action enum for networking rule. Possible values include: "Allow", "Deny".
        :paramtype action: str or ~azure.mgmt.machinelearningservices.models.RuleAction
        :keyword address_prefixes: Optional, if provided, the ServiceTag property will be ignored.
        :paramtype address_prefixes: list[str]
        :keyword port_ranges:
        :paramtype port_ranges: str
        :keyword protocol:
        :paramtype protocol: str
        :keyword service_tag:
        :paramtype service_tag: str
        """
        super(ServiceTagDestination, self).__init__(**kwargs)
        self.action = kwargs.get('action', None)
        self.address_prefixes = kwargs.get('address_prefixes', None)
        self.port_ranges = kwargs.get('port_ranges', None)
        self.protocol = kwargs.get('protocol', None)
        self.service_tag = kwargs.get('service_tag', None)


class ServiceTagOutboundRule(OutboundRule):
    """Service Tag Outbound Rule for the managed network of a machine learning workspace.

    Variables are only populated by the server, and will be ignored when sending a request.

    All required parameters must be populated in order to send to Azure.

    :ivar category: Category of a managed network Outbound Rule of a machine learning workspace.
     Possible values include: "Required", "Recommended", "UserDefined", "Dependency".
    :vartype category: str or ~azure.mgmt.machinelearningservices.models.RuleCategory
    :ivar parent_rule_names:
    :vartype parent_rule_names: list[str]
    :ivar status: Type of a managed network Outbound Rule of a machine learning workspace. Possible
     values include: "Inactive", "Active".
    :vartype status: str or ~azure.mgmt.machinelearningservices.models.RuleStatus
    :ivar type: Required. Type of a managed network Outbound Rule of a machine learning
     workspace.Constant filled by server. Possible values include: "FQDN", "PrivateEndpoint",
     "ServiceTag".
    :vartype type: str or ~azure.mgmt.machinelearningservices.models.RuleType
    :ivar destination: Service Tag destination for a Service Tag Outbound Rule for the managed
     network of a machine learning workspace.
    :vartype destination: ~azure.mgmt.machinelearningservices.models.ServiceTagDestination
    """

    _validation = {
        'parent_rule_names': {'readonly': True},
        'type': {'required': True},
    }

    _attribute_map = {
        'category': {'key': 'category', 'type': 'str'},
        'parent_rule_names': {'key': 'parentRuleNames', 'type': '[str]'},
        'status': {'key': 'status', 'type': 'str'},
        'type': {'key': 'type', 'type': 'str'},
        'destination': {'key': 'destination', 'type': 'ServiceTagDestination'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword category: Category of a managed network Outbound Rule of a machine learning workspace.
         Possible values include: "Required", "Recommended", "UserDefined", "Dependency".
        :paramtype category: str or ~azure.mgmt.machinelearningservices.models.RuleCategory
        :keyword status: Type of a managed network Outbound Rule of a machine learning workspace.
         Possible values include: "Inactive", "Active".
        :paramtype status: str or ~azure.mgmt.machinelearningservices.models.RuleStatus
        :keyword destination: Service Tag destination for a Service Tag Outbound Rule for the managed
         network of a machine learning workspace.
        :paramtype destination: ~azure.mgmt.machinelearningservices.models.ServiceTagDestination
        """
        super(ServiceTagOutboundRule, self).__init__(**kwargs)
        self.type = 'ServiceTag'  # type: str
        self.destination = kwargs.get('destination', None)


class SetupScripts(msrest.serialization.Model):
    """Details of customized scripts to execute for setting up the cluster.

    :ivar scripts: Customized setup scripts.
    :vartype scripts: ~azure.mgmt.machinelearningservices.models.ScriptsToExecute
    """

    _attribute_map = {
        'scripts': {'key': 'scripts', 'type': 'ScriptsToExecute'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword scripts: Customized setup scripts.
        :paramtype scripts: ~azure.mgmt.machinelearningservices.models.ScriptsToExecute
        """
        super(SetupScripts, self).__init__(**kwargs)
        self.scripts = kwargs.get('scripts', None)


class SharedPrivateLinkResource(msrest.serialization.Model):
    """SharedPrivateLinkResource.

    :ivar name: Unique name of the private link.
    :vartype name: str
    :ivar group_id: group id of the private link.
    :vartype group_id: str
    :ivar private_link_resource_id: the resource id that private link links to.
    :vartype private_link_resource_id: str
    :ivar request_message: Request message.
    :vartype request_message: str
    :ivar status: Connection status of the service consumer with the service provider. Possible
     values include: "Approved", "Pending", "Rejected", "Disconnected", "Timeout".
    :vartype status: str or
     ~azure.mgmt.machinelearningservices.models.EndpointServiceConnectionStatus
    """

    _attribute_map = {
        'name': {'key': 'name', 'type': 'str'},
        'group_id': {'key': 'properties.groupId', 'type': 'str'},
        'private_link_resource_id': {'key': 'properties.privateLinkResourceId', 'type': 'str'},
        'request_message': {'key': 'properties.requestMessage', 'type': 'str'},
        'status': {'key': 'properties.status', 'type': 'str'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword name: Unique name of the private link.
        :paramtype name: str
        :keyword group_id: group id of the private link.
        :paramtype group_id: str
        :keyword private_link_resource_id: the resource id that private link links to.
        :paramtype private_link_resource_id: str
        :keyword request_message: Request message.
        :paramtype request_message: str
        :keyword status: Connection status of the service consumer with the service provider. Possible
         values include: "Approved", "Pending", "Rejected", "Disconnected", "Timeout".
        :paramtype status: str or
         ~azure.mgmt.machinelearningservices.models.EndpointServiceConnectionStatus
        """
        super(SharedPrivateLinkResource, self).__init__(**kwargs)
        self.name = kwargs.get('name', None)
        self.group_id = kwargs.get('group_id', None)
        self.private_link_resource_id = kwargs.get('private_link_resource_id', None)
        self.request_message = kwargs.get('request_message', None)
        self.status = kwargs.get('status', None)


class Sku(msrest.serialization.Model):
    """The resource model definition representing SKU.

    All required parameters must be populated in order to send to Azure.

    :ivar name: Required. The name of the SKU. Ex - P3. It is typically a letter+number code.
    :vartype name: str
    :ivar tier: This field is required to be implemented by the Resource Provider if the service
     has more than one tier, but is not required on a PUT. Possible values include: "Free", "Basic",
     "Standard", "Premium".
    :vartype tier: str or ~azure.mgmt.machinelearningservices.models.SkuTier
    :ivar size: The SKU size. When the name field is the combination of tier and some other value,
     this would be the standalone code.
    :vartype size: str
    :ivar family: If the service has different generations of hardware, for the same SKU, then that
     can be captured here.
    :vartype family: str
    :ivar capacity: If the SKU supports scale out/in then the capacity integer should be included.
     If scale out/in is not possible for the resource this may be omitted.
    :vartype capacity: int
    """

    _validation = {
        'name': {'required': True},
    }

    _attribute_map = {
        'name': {'key': 'name', 'type': 'str'},
        'tier': {'key': 'tier', 'type': 'str'},
        'size': {'key': 'size', 'type': 'str'},
        'family': {'key': 'family', 'type': 'str'},
        'capacity': {'key': 'capacity', 'type': 'int'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword name: Required. The name of the SKU. Ex - P3. It is typically a letter+number code.
        :paramtype name: str
        :keyword tier: This field is required to be implemented by the Resource Provider if the service
         has more than one tier, but is not required on a PUT. Possible values include: "Free", "Basic",
         "Standard", "Premium".
        :paramtype tier: str or ~azure.mgmt.machinelearningservices.models.SkuTier
        :keyword size: The SKU size. When the name field is the combination of tier and some other
         value, this would be the standalone code.
        :paramtype size: str
        :keyword family: If the service has different generations of hardware, for the same SKU, then
         that can be captured here.
        :paramtype family: str
        :keyword capacity: If the SKU supports scale out/in then the capacity integer should be
         included. If scale out/in is not possible for the resource this may be omitted.
        :paramtype capacity: int
        """
        super(Sku, self).__init__(**kwargs)
        self.name = kwargs['name']
        self.tier = kwargs.get('tier', None)
        self.size = kwargs.get('size', None)
        self.family = kwargs.get('family', None)
        self.capacity = kwargs.get('capacity', None)


class SkuCapacity(msrest.serialization.Model):
    """SKU capacity information.

    :ivar default: Gets or sets the default capacity.
    :vartype default: int
    :ivar maximum: Gets or sets the maximum.
    :vartype maximum: int
    :ivar minimum: Gets or sets the minimum.
    :vartype minimum: int
    :ivar scale_type: Gets or sets the type of the scale. Possible values include: "Automatic",
     "Manual", "None".
    :vartype scale_type: str or ~azure.mgmt.machinelearningservices.models.SkuScaleType
    """

    _attribute_map = {
        'default': {'key': 'default', 'type': 'int'},
        'maximum': {'key': 'maximum', 'type': 'int'},
        'minimum': {'key': 'minimum', 'type': 'int'},
        'scale_type': {'key': 'scaleType', 'type': 'str'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword default: Gets or sets the default capacity.
        :paramtype default: int
        :keyword maximum: Gets or sets the maximum.
        :paramtype maximum: int
        :keyword minimum: Gets or sets the minimum.
        :paramtype minimum: int
        :keyword scale_type: Gets or sets the type of the scale. Possible values include: "Automatic",
         "Manual", "None".
        :paramtype scale_type: str or ~azure.mgmt.machinelearningservices.models.SkuScaleType
        """
        super(SkuCapacity, self).__init__(**kwargs)
        self.default = kwargs.get('default', 0)
        self.maximum = kwargs.get('maximum', 0)
        self.minimum = kwargs.get('minimum', 0)
        self.scale_type = kwargs.get('scale_type', None)


class SkuResource(msrest.serialization.Model):
    """Fulfills ARM Contract requirement to list all available SKUS for a resource.

    Variables are only populated by the server, and will be ignored when sending a request.

    :ivar capacity: Gets or sets the Sku Capacity.
    :vartype capacity: ~azure.mgmt.machinelearningservices.models.SkuCapacity
    :ivar resource_type: The resource type name.
    :vartype resource_type: str
    :ivar sku: Gets or sets the Sku.
    :vartype sku: ~azure.mgmt.machinelearningservices.models.SkuSetting
    """

    _validation = {
        'resource_type': {'readonly': True},
    }

    _attribute_map = {
        'capacity': {'key': 'capacity', 'type': 'SkuCapacity'},
        'resource_type': {'key': 'resourceType', 'type': 'str'},
        'sku': {'key': 'sku', 'type': 'SkuSetting'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword capacity: Gets or sets the Sku Capacity.
        :paramtype capacity: ~azure.mgmt.machinelearningservices.models.SkuCapacity
        :keyword sku: Gets or sets the Sku.
        :paramtype sku: ~azure.mgmt.machinelearningservices.models.SkuSetting
        """
        super(SkuResource, self).__init__(**kwargs)
        self.capacity = kwargs.get('capacity', None)
        self.resource_type = None
        self.sku = kwargs.get('sku', None)


class SkuResourceArmPaginatedResult(msrest.serialization.Model):
    """A paginated list of SkuResource entities.

    :ivar next_link: The link to the next page of SkuResource objects. If null, there are no
     additional pages.
    :vartype next_link: str
    :ivar value: An array of objects of type SkuResource.
    :vartype value: list[~azure.mgmt.machinelearningservices.models.SkuResource]
    """

    _attribute_map = {
        'next_link': {'key': 'nextLink', 'type': 'str'},
        'value': {'key': 'value', 'type': '[SkuResource]'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword next_link: The link to the next page of SkuResource objects. If null, there are no
         additional pages.
        :paramtype next_link: str
        :keyword value: An array of objects of type SkuResource.
        :paramtype value: list[~azure.mgmt.machinelearningservices.models.SkuResource]
        """
        super(SkuResourceArmPaginatedResult, self).__init__(**kwargs)
        self.next_link = kwargs.get('next_link', None)
        self.value = kwargs.get('value', None)


class SkuSetting(msrest.serialization.Model):
    """SkuSetting fulfills the need for stripped down SKU info in ARM contract.

    All required parameters must be populated in order to send to Azure.

    :ivar name: Required. [Required] The name of the SKU. Ex - P3. It is typically a letter+number
     code.
    :vartype name: str
    :ivar tier: This field is required to be implemented by the Resource Provider if the service
     has more than one tier, but is not required on a PUT. Possible values include: "Free", "Basic",
     "Standard", "Premium".
    :vartype tier: str or ~azure.mgmt.machinelearningservices.models.SkuTier
    """

    _validation = {
        'name': {'required': True, 'min_length': 1, 'pattern': r'[a-zA-Z0-9_]'},
    }

    _attribute_map = {
        'name': {'key': 'name', 'type': 'str'},
        'tier': {'key': 'tier', 'type': 'str'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword name: Required. [Required] The name of the SKU. Ex - P3. It is typically a
         letter+number code.
        :paramtype name: str
        :keyword tier: This field is required to be implemented by the Resource Provider if the service
         has more than one tier, but is not required on a PUT. Possible values include: "Free", "Basic",
         "Standard", "Premium".
        :paramtype tier: str or ~azure.mgmt.machinelearningservices.models.SkuTier
        """
        super(SkuSetting, self).__init__(**kwargs)
        self.name = kwargs['name']
        self.tier = kwargs.get('tier', None)


class SparkJob(JobBaseProperties):
    """Spark job definition.

    Variables are only populated by the server, and will be ignored when sending a request.

    All required parameters must be populated in order to send to Azure.

    :ivar description: The asset description text.
    :vartype description: str
    :ivar properties: The asset property dictionary.
    :vartype properties: dict[str, str]
    :ivar tags: A set of tags. Tag dictionary. Tags can be added, removed, and updated.
    :vartype tags: dict[str, str]
    :ivar component_id: ARM resource ID of the component resource.
    :vartype component_id: str
    :ivar compute_id: ARM resource ID of the compute resource.
    :vartype compute_id: str
    :ivar display_name: Display name of job.
    :vartype display_name: str
    :ivar experiment_name: The name of the experiment the job belongs to. If not set, the job is
     placed in the "Default" experiment.
    :vartype experiment_name: str
    :ivar identity: Identity configuration. If set, this should be one of AmlToken,
     ManagedIdentity, UserIdentity or null.
     Defaults to AmlToken if null.
    :vartype identity: ~azure.mgmt.machinelearningservices.models.IdentityConfiguration
    :ivar is_archived: Is the asset archived?.
    :vartype is_archived: bool
    :ivar job_type: Required. [Required] Specifies the type of job.Constant filled by server.
     Possible values include: "AutoML", "Command", "Sweep", "Pipeline", "Spark", "FineTuning",
     "Distillation".
    :vartype job_type: str or ~azure.mgmt.machinelearningservices.models.JobType
    :ivar notification_setting: Notification setting for the job.
    :vartype notification_setting: ~azure.mgmt.machinelearningservices.models.NotificationSetting
    :ivar parent_job_name: Parent job name.
    :vartype parent_job_name: str
    :ivar services: List of JobEndpoints.
     For local jobs, a job endpoint will have an endpoint value of FileStreamObject.
    :vartype services: dict[str, ~azure.mgmt.machinelearningservices.models.JobService]
    :ivar status: Status of the job. Possible values include: "NotStarted", "Starting",
     "Provisioning", "Preparing", "Queued", "Running", "Finalizing", "CancelRequested", "Completed",
     "Failed", "Canceled", "NotResponding", "Paused", "Unknown".
    :vartype status: str or ~azure.mgmt.machinelearningservices.models.JobStatus
    :ivar archives: Archive files used in the job.
    :vartype archives: list[str]
    :ivar args: Arguments for the job.
    :vartype args: str
    :ivar code_id: Required. [Required] arm-id of the code asset.
    :vartype code_id: str
    :ivar conf: Spark configured properties.
    :vartype conf: dict[str, str]
    :ivar entry: Required. [Required] The entry to execute on startup of the job.
    :vartype entry: ~azure.mgmt.machinelearningservices.models.SparkJobEntry
    :ivar environment_id: The ARM resource ID of the Environment specification for the job.
    :vartype environment_id: str
    :ivar environment_variables: Environment variables included in the job.
    :vartype environment_variables: dict[str, str]
    :ivar files: Files used in the job.
    :vartype files: list[str]
    :ivar inputs: Mapping of input data bindings used in the job.
    :vartype inputs: dict[str, ~azure.mgmt.machinelearningservices.models.JobInput]
    :ivar jars: Jar files used in the job.
    :vartype jars: list[str]
    :ivar outputs: Mapping of output data bindings used in the job.
    :vartype outputs: dict[str, ~azure.mgmt.machinelearningservices.models.JobOutput]
    :ivar py_files: Python files used in the job.
    :vartype py_files: list[str]
    :ivar queue_settings: Queue settings for the job.
    :vartype queue_settings: ~azure.mgmt.machinelearningservices.models.QueueSettings
    :ivar resources: Compute Resource configuration for the job.
    :vartype resources: ~azure.mgmt.machinelearningservices.models.SparkResourceConfiguration
    """

    _validation = {
        'job_type': {'required': True},
        'status': {'readonly': True},
        'code_id': {'required': True, 'min_length': 1, 'pattern': r'[a-zA-Z0-9_]'},
        'entry': {'required': True},
    }

    _attribute_map = {
        'description': {'key': 'description', 'type': 'str'},
        'properties': {'key': 'properties', 'type': '{str}'},
        'tags': {'key': 'tags', 'type': '{str}'},
        'component_id': {'key': 'componentId', 'type': 'str'},
        'compute_id': {'key': 'computeId', 'type': 'str'},
        'display_name': {'key': 'displayName', 'type': 'str'},
        'experiment_name': {'key': 'experimentName', 'type': 'str'},
        'identity': {'key': 'identity', 'type': 'IdentityConfiguration'},
        'is_archived': {'key': 'isArchived', 'type': 'bool'},
        'job_type': {'key': 'jobType', 'type': 'str'},
        'notification_setting': {'key': 'notificationSetting', 'type': 'NotificationSetting'},
        'parent_job_name': {'key': 'parentJobName', 'type': 'str'},
        'services': {'key': 'services', 'type': '{JobService}'},
        'status': {'key': 'status', 'type': 'str'},
        'archives': {'key': 'archives', 'type': '[str]'},
        'args': {'key': 'args', 'type': 'str'},
        'code_id': {'key': 'codeId', 'type': 'str'},
        'conf': {'key': 'conf', 'type': '{str}'},
        'entry': {'key': 'entry', 'type': 'SparkJobEntry'},
        'environment_id': {'key': 'environmentId', 'type': 'str'},
        'environment_variables': {'key': 'environmentVariables', 'type': '{str}'},
        'files': {'key': 'files', 'type': '[str]'},
        'inputs': {'key': 'inputs', 'type': '{JobInput}'},
        'jars': {'key': 'jars', 'type': '[str]'},
        'outputs': {'key': 'outputs', 'type': '{JobOutput}'},
        'py_files': {'key': 'pyFiles', 'type': '[str]'},
        'queue_settings': {'key': 'queueSettings', 'type': 'QueueSettings'},
        'resources': {'key': 'resources', 'type': 'SparkResourceConfiguration'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword description: The asset description text.
        :paramtype description: str
        :keyword properties: The asset property dictionary.
        :paramtype properties: dict[str, str]
        :keyword tags: A set of tags. Tag dictionary. Tags can be added, removed, and updated.
        :paramtype tags: dict[str, str]
        :keyword component_id: ARM resource ID of the component resource.
        :paramtype component_id: str
        :keyword compute_id: ARM resource ID of the compute resource.
        :paramtype compute_id: str
        :keyword display_name: Display name of job.
        :paramtype display_name: str
        :keyword experiment_name: The name of the experiment the job belongs to. If not set, the job is
         placed in the "Default" experiment.
        :paramtype experiment_name: str
        :keyword identity: Identity configuration. If set, this should be one of AmlToken,
         ManagedIdentity, UserIdentity or null.
         Defaults to AmlToken if null.
        :paramtype identity: ~azure.mgmt.machinelearningservices.models.IdentityConfiguration
        :keyword is_archived: Is the asset archived?.
        :paramtype is_archived: bool
        :keyword notification_setting: Notification setting for the job.
        :paramtype notification_setting: ~azure.mgmt.machinelearningservices.models.NotificationSetting
        :keyword parent_job_name: Parent job name.
        :paramtype parent_job_name: str
        :keyword services: List of JobEndpoints.
         For local jobs, a job endpoint will have an endpoint value of FileStreamObject.
        :paramtype services: dict[str, ~azure.mgmt.machinelearningservices.models.JobService]
        :keyword archives: Archive files used in the job.
        :paramtype archives: list[str]
        :keyword args: Arguments for the job.
        :paramtype args: str
        :keyword code_id: Required. [Required] arm-id of the code asset.
        :paramtype code_id: str
        :keyword conf: Spark configured properties.
        :paramtype conf: dict[str, str]
        :keyword entry: Required. [Required] The entry to execute on startup of the job.
        :paramtype entry: ~azure.mgmt.machinelearningservices.models.SparkJobEntry
        :keyword environment_id: The ARM resource ID of the Environment specification for the job.
        :paramtype environment_id: str
        :keyword environment_variables: Environment variables included in the job.
        :paramtype environment_variables: dict[str, str]
        :keyword files: Files used in the job.
        :paramtype files: list[str]
        :keyword inputs: Mapping of input data bindings used in the job.
        :paramtype inputs: dict[str, ~azure.mgmt.machinelearningservices.models.JobInput]
        :keyword jars: Jar files used in the job.
        :paramtype jars: list[str]
        :keyword outputs: Mapping of output data bindings used in the job.
        :paramtype outputs: dict[str, ~azure.mgmt.machinelearningservices.models.JobOutput]
        :keyword py_files: Python files used in the job.
        :paramtype py_files: list[str]
        :keyword queue_settings: Queue settings for the job.
        :paramtype queue_settings: ~azure.mgmt.machinelearningservices.models.QueueSettings
        :keyword resources: Compute Resource configuration for the job.
        :paramtype resources: ~azure.mgmt.machinelearningservices.models.SparkResourceConfiguration
        """
        super(SparkJob, self).__init__(**kwargs)
        self.job_type = 'Spark'  # type: str
        self.archives = kwargs.get('archives', None)
        self.args = kwargs.get('args', None)
        self.code_id = kwargs['code_id']
        self.conf = kwargs.get('conf', None)
        self.entry = kwargs['entry']
        self.environment_id = kwargs.get('environment_id', None)
        self.environment_variables = kwargs.get('environment_variables', None)
        self.files = kwargs.get('files', None)
        self.inputs = kwargs.get('inputs', None)
        self.jars = kwargs.get('jars', None)
        self.outputs = kwargs.get('outputs', None)
        self.py_files = kwargs.get('py_files', None)
        self.queue_settings = kwargs.get('queue_settings', None)
        self.resources = kwargs.get('resources', None)


class SparkJobEntry(msrest.serialization.Model):
    """Spark job entry point definition.

    You probably want to use the sub-classes and not this class directly. Known
    sub-classes are: SparkJobPythonEntry, SparkJobScalaEntry.

    All required parameters must be populated in order to send to Azure.

    :ivar spark_job_entry_type: Required. [Required] Type of the job's entry point.Constant filled
     by server. Possible values include: "SparkJobPythonEntry", "SparkJobScalaEntry".
    :vartype spark_job_entry_type: str or
     ~azure.mgmt.machinelearningservices.models.SparkJobEntryType
    """

    _validation = {
        'spark_job_entry_type': {'required': True},
    }

    _attribute_map = {
        'spark_job_entry_type': {'key': 'sparkJobEntryType', 'type': 'str'},
    }

    _subtype_map = {
        'spark_job_entry_type': {'SparkJobPythonEntry': 'SparkJobPythonEntry', 'SparkJobScalaEntry': 'SparkJobScalaEntry'}
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        """
        super(SparkJobEntry, self).__init__(**kwargs)
        self.spark_job_entry_type = None  # type: Optional[str]


class SparkJobPythonEntry(SparkJobEntry):
    """SparkJobPythonEntry.

    All required parameters must be populated in order to send to Azure.

    :ivar spark_job_entry_type: Required. [Required] Type of the job's entry point.Constant filled
     by server. Possible values include: "SparkJobPythonEntry", "SparkJobScalaEntry".
    :vartype spark_job_entry_type: str or
     ~azure.mgmt.machinelearningservices.models.SparkJobEntryType
    :ivar file: Required. [Required] Relative python file path for job entry point.
    :vartype file: str
    """

    _validation = {
        'spark_job_entry_type': {'required': True},
        'file': {'required': True, 'min_length': 1, 'pattern': r'[a-zA-Z0-9_]'},
    }

    _attribute_map = {
        'spark_job_entry_type': {'key': 'sparkJobEntryType', 'type': 'str'},
        'file': {'key': 'file', 'type': 'str'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword file: Required. [Required] Relative python file path for job entry point.
        :paramtype file: str
        """
        super(SparkJobPythonEntry, self).__init__(**kwargs)
        self.spark_job_entry_type = 'SparkJobPythonEntry'  # type: str
        self.file = kwargs['file']


class SparkJobScalaEntry(SparkJobEntry):
    """SparkJobScalaEntry.

    All required parameters must be populated in order to send to Azure.

    :ivar spark_job_entry_type: Required. [Required] Type of the job's entry point.Constant filled
     by server. Possible values include: "SparkJobPythonEntry", "SparkJobScalaEntry".
    :vartype spark_job_entry_type: str or
     ~azure.mgmt.machinelearningservices.models.SparkJobEntryType
    :ivar class_name: Required. [Required] Scala class name used as entry point.
    :vartype class_name: str
    """

    _validation = {
        'spark_job_entry_type': {'required': True},
        'class_name': {'required': True, 'min_length': 1, 'pattern': r'[a-zA-Z0-9_]'},
    }

    _attribute_map = {
        'spark_job_entry_type': {'key': 'sparkJobEntryType', 'type': 'str'},
        'class_name': {'key': 'className', 'type': 'str'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword class_name: Required. [Required] Scala class name used as entry point.
        :paramtype class_name: str
        """
        super(SparkJobScalaEntry, self).__init__(**kwargs)
        self.spark_job_entry_type = 'SparkJobScalaEntry'  # type: str
        self.class_name = kwargs['class_name']


class SparkResourceConfiguration(msrest.serialization.Model):
    """SparkResourceConfiguration.

    :ivar instance_type: Optional type of VM used as supported by the compute target.
    :vartype instance_type: str
    :ivar runtime_version: Version of spark runtime used for the job.
    :vartype runtime_version: str
    """

    _attribute_map = {
        'instance_type': {'key': 'instanceType', 'type': 'str'},
        'runtime_version': {'key': 'runtimeVersion', 'type': 'str'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword instance_type: Optional type of VM used as supported by the compute target.
        :paramtype instance_type: str
        :keyword runtime_version: Version of spark runtime used for the job.
        :paramtype runtime_version: str
        """
        super(SparkResourceConfiguration, self).__init__(**kwargs)
        self.instance_type = kwargs.get('instance_type', None)
        self.runtime_version = kwargs.get('runtime_version', "3.1")


class SpeechEndpointDeploymentResourceProperties(EndpointDeploymentResourceProperties, CognitiveServiceEndpointDeploymentResourceProperties):
    """SpeechEndpointDeploymentResourceProperties.

    Variables are only populated by the server, and will be ignored when sending a request.

    All required parameters must be populated in order to send to Azure.

    :ivar model: Required. Model used for the endpoint deployment.
    :vartype model: ~azure.mgmt.machinelearningservices.models.EndpointDeploymentModel
    :ivar rai_policy_name: The name of RAI policy.
    :vartype rai_policy_name: str
    :ivar sku:
    :vartype sku: ~azure.mgmt.machinelearningservices.models.CognitiveServicesSku
    :ivar version_upgrade_option: Deployment model version upgrade option. Possible values include:
     "OnceNewDefaultVersionAvailable", "OnceCurrentVersionExpired", "NoAutoUpgrade".
    :vartype version_upgrade_option: str or
     ~azure.mgmt.machinelearningservices.models.DeploymentModelVersionUpgradeOption
    :ivar failure_reason: The failure reason if the creation failed.
    :vartype failure_reason: str
    :ivar provisioning_state: Read-only provision state status property. Possible values include:
     "NotStarted", "Failed", "Creating", "Updating", "Succeeded", "Deleting", "Accepted",
     "Canceled", "Scaling", "Disabled".
    :vartype provisioning_state: str or
     ~azure.mgmt.machinelearningservices.models.DefaultResourceProvisioningState
    :ivar type: Required. Kind of the deployment.Constant filled by server.
    :vartype type: str
    """

    _validation = {
        'model': {'required': True},
        'provisioning_state': {'readonly': True},
        'type': {'required': True, 'min_length': 1, 'pattern': r'[a-zA-Z0-9_]'},
    }

    _attribute_map = {
        'model': {'key': 'model', 'type': 'EndpointDeploymentModel'},
        'rai_policy_name': {'key': 'raiPolicyName', 'type': 'str'},
        'sku': {'key': 'sku', 'type': 'CognitiveServicesSku'},
        'version_upgrade_option': {'key': 'versionUpgradeOption', 'type': 'str'},
        'failure_reason': {'key': 'failureReason', 'type': 'str'},
        'provisioning_state': {'key': 'provisioningState', 'type': 'str'},
        'type': {'key': 'type', 'type': 'str'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword model: Required. Model used for the endpoint deployment.
        :paramtype model: ~azure.mgmt.machinelearningservices.models.EndpointDeploymentModel
        :keyword rai_policy_name: The name of RAI policy.
        :paramtype rai_policy_name: str
        :keyword sku:
        :paramtype sku: ~azure.mgmt.machinelearningservices.models.CognitiveServicesSku
        :keyword version_upgrade_option: Deployment model version upgrade option. Possible values
         include: "OnceNewDefaultVersionAvailable", "OnceCurrentVersionExpired", "NoAutoUpgrade".
        :paramtype version_upgrade_option: str or
         ~azure.mgmt.machinelearningservices.models.DeploymentModelVersionUpgradeOption
        :keyword failure_reason: The failure reason if the creation failed.
        :paramtype failure_reason: str
        """
        super(SpeechEndpointDeploymentResourceProperties, self).__init__(**kwargs)
        self.model = kwargs['model']
        self.rai_policy_name = kwargs.get('rai_policy_name', None)
        self.sku = kwargs.get('sku', None)
        self.version_upgrade_option = kwargs.get('version_upgrade_option', None)
        self.type = 'Azure.Speech'  # type: str
        self.failure_reason = kwargs.get('failure_reason', None)
        self.provisioning_state = None


class SpeechEndpointResourceProperties(EndpointResourceProperties):
    """SpeechEndpointResourceProperties.

    Variables are only populated by the server, and will be ignored when sending a request.

    All required parameters must be populated in order to send to Azure.

    :ivar associated_resource_id: Byo resource id for creating the built-in model service
     endpoints.
    :vartype associated_resource_id: str
    :ivar deployments: Deployments info.
    :vartype deployments:
     list[~azure.mgmt.machinelearningservices.models.EndpointDeploymentResourcePropertiesBasicResource]
    :ivar endpoint_type: Required. Type of the endpoint.Constant filled by server. Possible values
     include: "Azure.OpenAI", "Azure.Speech", "Azure.ContentSafety", "Azure.Llama",
     "managedOnlineEndpoint", "serverlessEndpoint".
    :vartype endpoint_type: str or ~azure.mgmt.machinelearningservices.models.EndpointType
    :ivar endpoint_uri: Uri of the endpoint.
    :vartype endpoint_uri: str
    :ivar failure_reason: The failure reason if the creation failed.
    :vartype failure_reason: str
    :ivar location: Location of the endpoint.
     Since input dto and when parse endpoint resource share the same contract
     this Location field is just for parse the endpoint resource info
     we won't let customer specify the endpoint resource location since we will create it the same
     location as workspace.
    :vartype location: str
    :ivar name: Name of the endpoint.
    :vartype name: str
    :ivar provisioning_state: Read-only provision state status property. Possible values include:
     "NotStarted", "Failed", "Creating", "Updating", "Succeeded", "Deleting", "Accepted",
     "Canceled", "Scaling", "Disabled".
    :vartype provisioning_state: str or
     ~azure.mgmt.machinelearningservices.models.DefaultResourceProvisioningState
    :ivar should_create_ai_services_endpoint: Whether the proxy (non-byo) endpoint is a regular
     endpoint or a OneKeyV2 AI services account endpoint.
    :vartype should_create_ai_services_endpoint: bool
    """

    _validation = {
        'endpoint_type': {'required': True},
        'provisioning_state': {'readonly': True},
    }

    _attribute_map = {
        'associated_resource_id': {'key': 'associatedResourceId', 'type': 'str'},
        'deployments': {'key': 'deployments', 'type': '[EndpointDeploymentResourcePropertiesBasicResource]'},
        'endpoint_type': {'key': 'endpointType', 'type': 'str'},
        'endpoint_uri': {'key': 'endpointUri', 'type': 'str'},
        'failure_reason': {'key': 'failureReason', 'type': 'str'},
        'location': {'key': 'location', 'type': 'str'},
        'name': {'key': 'name', 'type': 'str'},
        'provisioning_state': {'key': 'provisioningState', 'type': 'str'},
        'should_create_ai_services_endpoint': {'key': 'shouldCreateAiServicesEndpoint', 'type': 'bool'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword associated_resource_id: Byo resource id for creating the built-in model service
         endpoints.
        :paramtype associated_resource_id: str
        :keyword deployments: Deployments info.
        :paramtype deployments:
         list[~azure.mgmt.machinelearningservices.models.EndpointDeploymentResourcePropertiesBasicResource]
        :keyword endpoint_uri: Uri of the endpoint.
        :paramtype endpoint_uri: str
        :keyword failure_reason: The failure reason if the creation failed.
        :paramtype failure_reason: str
        :keyword location: Location of the endpoint.
         Since input dto and when parse endpoint resource share the same contract
         this Location field is just for parse the endpoint resource info
         we won't let customer specify the endpoint resource location since we will create it the same
         location as workspace.
        :paramtype location: str
        :keyword name: Name of the endpoint.
        :paramtype name: str
        :keyword should_create_ai_services_endpoint: Whether the proxy (non-byo) endpoint is a regular
         endpoint or a OneKeyV2 AI services account endpoint.
        :paramtype should_create_ai_services_endpoint: bool
        """
        super(SpeechEndpointResourceProperties, self).__init__(**kwargs)
        self.endpoint_type = 'Azure.Speech'  # type: str


class SslConfiguration(msrest.serialization.Model):
    """The ssl configuration for scoring.

    :ivar status: Enable or disable ssl for scoring. Possible values include: "Disabled",
     "Enabled", "Auto".
    :vartype status: str or ~azure.mgmt.machinelearningservices.models.SslConfigStatus
    :ivar cert: Cert data.
    :vartype cert: str
    :ivar key: Key data.
    :vartype key: str
    :ivar cname: CNAME of the cert.
    :vartype cname: str
    :ivar leaf_domain_label: Leaf domain label of public endpoint.
    :vartype leaf_domain_label: str
    :ivar overwrite_existing_domain: Indicates whether to overwrite existing domain label.
    :vartype overwrite_existing_domain: bool
    """

    _attribute_map = {
        'status': {'key': 'status', 'type': 'str'},
        'cert': {'key': 'cert', 'type': 'str'},
        'key': {'key': 'key', 'type': 'str'},
        'cname': {'key': 'cname', 'type': 'str'},
        'leaf_domain_label': {'key': 'leafDomainLabel', 'type': 'str'},
        'overwrite_existing_domain': {'key': 'overwriteExistingDomain', 'type': 'bool'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword status: Enable or disable ssl for scoring. Possible values include: "Disabled",
         "Enabled", "Auto".
        :paramtype status: str or ~azure.mgmt.machinelearningservices.models.SslConfigStatus
        :keyword cert: Cert data.
        :paramtype cert: str
        :keyword key: Key data.
        :paramtype key: str
        :keyword cname: CNAME of the cert.
        :paramtype cname: str
        :keyword leaf_domain_label: Leaf domain label of public endpoint.
        :paramtype leaf_domain_label: str
        :keyword overwrite_existing_domain: Indicates whether to overwrite existing domain label.
        :paramtype overwrite_existing_domain: bool
        """
        super(SslConfiguration, self).__init__(**kwargs)
        self.status = kwargs.get('status', None)
        self.cert = kwargs.get('cert', None)
        self.key = kwargs.get('key', None)
        self.cname = kwargs.get('cname', None)
        self.leaf_domain_label = kwargs.get('leaf_domain_label', None)
        self.overwrite_existing_domain = kwargs.get('overwrite_existing_domain', None)


class StackEnsembleSettings(msrest.serialization.Model):
    """Advances setting to customize StackEnsemble run.

    :ivar stack_meta_learner_k_wargs: Optional parameters to pass to the initializer of the
     meta-learner.
    :vartype stack_meta_learner_k_wargs: any
    :ivar stack_meta_learner_train_percentage: Specifies the proportion of the training set (when
     choosing train and validation type of training) to be reserved for training the meta-learner.
     Default value is 0.2.
    :vartype stack_meta_learner_train_percentage: float
    :ivar stack_meta_learner_type: The meta-learner is a model trained on the output of the
     individual heterogeneous models. Possible values include: "None", "LogisticRegression",
     "LogisticRegressionCV", "LightGBMClassifier", "ElasticNet", "ElasticNetCV",
     "LightGBMRegressor", "LinearRegression".
    :vartype stack_meta_learner_type: str or
     ~azure.mgmt.machinelearningservices.models.StackMetaLearnerType
    """

    _attribute_map = {
        'stack_meta_learner_k_wargs': {'key': 'stackMetaLearnerKWargs', 'type': 'object'},
        'stack_meta_learner_train_percentage': {'key': 'stackMetaLearnerTrainPercentage', 'type': 'float'},
        'stack_meta_learner_type': {'key': 'stackMetaLearnerType', 'type': 'str'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword stack_meta_learner_k_wargs: Optional parameters to pass to the initializer of the
         meta-learner.
        :paramtype stack_meta_learner_k_wargs: any
        :keyword stack_meta_learner_train_percentage: Specifies the proportion of the training set
         (when choosing train and validation type of training) to be reserved for training the
         meta-learner. Default value is 0.2.
        :paramtype stack_meta_learner_train_percentage: float
        :keyword stack_meta_learner_type: The meta-learner is a model trained on the output of the
         individual heterogeneous models. Possible values include: "None", "LogisticRegression",
         "LogisticRegressionCV", "LightGBMClassifier", "ElasticNet", "ElasticNetCV",
         "LightGBMRegressor", "LinearRegression".
        :paramtype stack_meta_learner_type: str or
         ~azure.mgmt.machinelearningservices.models.StackMetaLearnerType
        """
        super(StackEnsembleSettings, self).__init__(**kwargs)
        self.stack_meta_learner_k_wargs = kwargs.get('stack_meta_learner_k_wargs', None)
        self.stack_meta_learner_train_percentage = kwargs.get('stack_meta_learner_train_percentage', 0.2)
        self.stack_meta_learner_type = kwargs.get('stack_meta_learner_type', None)


class StaticInputData(MonitoringInputDataBase):
    """Static input data definition.

    All required parameters must be populated in order to send to Azure.

    :ivar columns: Mapping of column names to special uses.
    :vartype columns: dict[str, str]
    :ivar data_context: The context metadata of the data source.
    :vartype data_context: str
    :ivar input_data_type: Required. [Required] Specifies the type of signal to monitor.Constant
     filled by server. Possible values include: "Static", "Rolling", "Fixed".
    :vartype input_data_type: str or
     ~azure.mgmt.machinelearningservices.models.MonitoringInputDataType
    :ivar job_input_type: Required. [Required] Specifies the type of job. Possible values include:
     "literal", "uri_file", "uri_folder", "mltable", "custom_model", "mlflow_model", "triton_model".
    :vartype job_input_type: str or ~azure.mgmt.machinelearningservices.models.JobInputType
    :ivar uri: Required. [Required] Input Asset URI.
    :vartype uri: str
    :ivar preprocessing_component_id: Reference to the component asset used to preprocess the data.
    :vartype preprocessing_component_id: str
    :ivar window_end: Required. [Required] The end date of the data window.
    :vartype window_end: ~datetime.datetime
    :ivar window_start: Required. [Required] The start date of the data window.
    :vartype window_start: ~datetime.datetime
    """

    _validation = {
        'input_data_type': {'required': True},
        'job_input_type': {'required': True},
        'uri': {'required': True, 'min_length': 1, 'pattern': r'[a-zA-Z0-9_]'},
        'window_end': {'required': True},
        'window_start': {'required': True},
    }

    _attribute_map = {
        'columns': {'key': 'columns', 'type': '{str}'},
        'data_context': {'key': 'dataContext', 'type': 'str'},
        'input_data_type': {'key': 'inputDataType', 'type': 'str'},
        'job_input_type': {'key': 'jobInputType', 'type': 'str'},
        'uri': {'key': 'uri', 'type': 'str'},
        'preprocessing_component_id': {'key': 'preprocessingComponentId', 'type': 'str'},
        'window_end': {'key': 'windowEnd', 'type': 'iso-8601'},
        'window_start': {'key': 'windowStart', 'type': 'iso-8601'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword columns: Mapping of column names to special uses.
        :paramtype columns: dict[str, str]
        :keyword data_context: The context metadata of the data source.
        :paramtype data_context: str
        :keyword job_input_type: Required. [Required] Specifies the type of job. Possible values
         include: "literal", "uri_file", "uri_folder", "mltable", "custom_model", "mlflow_model",
         "triton_model".
        :paramtype job_input_type: str or ~azure.mgmt.machinelearningservices.models.JobInputType
        :keyword uri: Required. [Required] Input Asset URI.
        :paramtype uri: str
        :keyword preprocessing_component_id: Reference to the component asset used to preprocess the
         data.
        :paramtype preprocessing_component_id: str
        :keyword window_end: Required. [Required] The end date of the data window.
        :paramtype window_end: ~datetime.datetime
        :keyword window_start: Required. [Required] The start date of the data window.
        :paramtype window_start: ~datetime.datetime
        """
        super(StaticInputData, self).__init__(**kwargs)
        self.input_data_type = 'Static'  # type: str
        self.preprocessing_component_id = kwargs.get('preprocessing_component_id', None)
        self.window_end = kwargs['window_end']
        self.window_start = kwargs['window_start']


class StorageAccountDetails(msrest.serialization.Model):
    """Details of storage account to be used for the Registry.

    :ivar system_created_storage_account: Details of system created storage account to be used for
     the registry.
    :vartype system_created_storage_account:
     ~azure.mgmt.machinelearningservices.models.SystemCreatedStorageAccount
    :ivar user_created_storage_account: Details of user created storage account to be used for the
     registry.
    :vartype user_created_storage_account:
     ~azure.mgmt.machinelearningservices.models.UserCreatedStorageAccount
    """

    _attribute_map = {
        'system_created_storage_account': {'key': 'systemCreatedStorageAccount', 'type': 'SystemCreatedStorageAccount'},
        'user_created_storage_account': {'key': 'userCreatedStorageAccount', 'type': 'UserCreatedStorageAccount'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword system_created_storage_account: Details of system created storage account to be used
         for the registry.
        :paramtype system_created_storage_account:
         ~azure.mgmt.machinelearningservices.models.SystemCreatedStorageAccount
        :keyword user_created_storage_account: Details of user created storage account to be used for
         the registry.
        :paramtype user_created_storage_account:
         ~azure.mgmt.machinelearningservices.models.UserCreatedStorageAccount
        """
        super(StorageAccountDetails, self).__init__(**kwargs)
        self.system_created_storage_account = kwargs.get('system_created_storage_account', None)
        self.user_created_storage_account = kwargs.get('user_created_storage_account', None)


class StringArmPaginatedResult(msrest.serialization.Model):
    """A paginated list of String entities.

    :ivar next_link: The link to the next page of String objects. If null, there are no additional
     pages.
    :vartype next_link: str
    :ivar value: An array of objects of type String.
    :vartype value: list[str]
    """

    _attribute_map = {
        'next_link': {'key': 'nextLink', 'type': 'str'},
        'value': {'key': 'value', 'type': '[str]'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword next_link: The link to the next page of String objects. If null, there are no
         additional pages.
        :paramtype next_link: str
        :keyword value: An array of objects of type String.
        :paramtype value: list[str]
        """
        super(StringArmPaginatedResult, self).__init__(**kwargs)
        self.next_link = kwargs.get('next_link', None)
        self.value = kwargs.get('value', None)


class StringKeyValuePair(msrest.serialization.Model):
    """StringKeyValuePair.

    :ivar key:
    :vartype key: str
    :ivar value:
    :vartype value: str
    """

    _attribute_map = {
        'key': {'key': 'key', 'type': 'str'},
        'value': {'key': 'value', 'type': 'str'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword key:
        :paramtype key: str
        :keyword value:
        :paramtype value: str
        """
        super(StringKeyValuePair, self).__init__(**kwargs)
        self.key = kwargs.get('key', None)
        self.value = kwargs.get('value', None)


class SweepJob(JobBaseProperties):
    """Sweep job definition.

    Variables are only populated by the server, and will be ignored when sending a request.

    All required parameters must be populated in order to send to Azure.

    :ivar description: The asset description text.
    :vartype description: str
    :ivar properties: The asset property dictionary.
    :vartype properties: dict[str, str]
    :ivar tags: A set of tags. Tag dictionary. Tags can be added, removed, and updated.
    :vartype tags: dict[str, str]
    :ivar component_id: ARM resource ID of the component resource.
    :vartype component_id: str
    :ivar compute_id: ARM resource ID of the compute resource.
    :vartype compute_id: str
    :ivar display_name: Display name of job.
    :vartype display_name: str
    :ivar experiment_name: The name of the experiment the job belongs to. If not set, the job is
     placed in the "Default" experiment.
    :vartype experiment_name: str
    :ivar identity: Identity configuration. If set, this should be one of AmlToken,
     ManagedIdentity, UserIdentity or null.
     Defaults to AmlToken if null.
    :vartype identity: ~azure.mgmt.machinelearningservices.models.IdentityConfiguration
    :ivar is_archived: Is the asset archived?.
    :vartype is_archived: bool
    :ivar job_type: Required. [Required] Specifies the type of job.Constant filled by server.
     Possible values include: "AutoML", "Command", "Sweep", "Pipeline", "Spark", "FineTuning",
     "Distillation".
    :vartype job_type: str or ~azure.mgmt.machinelearningservices.models.JobType
    :ivar notification_setting: Notification setting for the job.
    :vartype notification_setting: ~azure.mgmt.machinelearningservices.models.NotificationSetting
    :ivar parent_job_name: Parent job name.
    :vartype parent_job_name: str
    :ivar services: List of JobEndpoints.
     For local jobs, a job endpoint will have an endpoint value of FileStreamObject.
    :vartype services: dict[str, ~azure.mgmt.machinelearningservices.models.JobService]
    :ivar status: Status of the job. Possible values include: "NotStarted", "Starting",
     "Provisioning", "Preparing", "Queued", "Running", "Finalizing", "CancelRequested", "Completed",
     "Failed", "Canceled", "NotResponding", "Paused", "Unknown".
    :vartype status: str or ~azure.mgmt.machinelearningservices.models.JobStatus
    :ivar early_termination: Early termination policies enable canceling poor-performing runs
     before they complete.
    :vartype early_termination: ~azure.mgmt.machinelearningservices.models.EarlyTerminationPolicy
    :ivar inputs: Mapping of input data bindings used in the job.
    :vartype inputs: dict[str, ~azure.mgmt.machinelearningservices.models.JobInput]
    :ivar limits: Sweep Job limit.
    :vartype limits: ~azure.mgmt.machinelearningservices.models.SweepJobLimits
    :ivar objective: Required. [Required] Optimization objective.
    :vartype objective: ~azure.mgmt.machinelearningservices.models.Objective
    :ivar outputs: Mapping of output data bindings used in the job.
    :vartype outputs: dict[str, ~azure.mgmt.machinelearningservices.models.JobOutput]
    :ivar queue_settings: Queue settings for the job.
    :vartype queue_settings: ~azure.mgmt.machinelearningservices.models.QueueSettings
    :ivar sampling_algorithm: Required. [Required] The hyperparameter sampling algorithm.
    :vartype sampling_algorithm: ~azure.mgmt.machinelearningservices.models.SamplingAlgorithm
    :ivar search_space: Required. [Required] A dictionary containing each parameter and its
     distribution. The dictionary key is the name of the parameter.
    :vartype search_space: any
    :ivar trial: Required. [Required] Trial component definition.
    :vartype trial: ~azure.mgmt.machinelearningservices.models.TrialComponent
    """

    _validation = {
        'job_type': {'required': True},
        'status': {'readonly': True},
        'objective': {'required': True},
        'sampling_algorithm': {'required': True},
        'search_space': {'required': True},
        'trial': {'required': True},
    }

    _attribute_map = {
        'description': {'key': 'description', 'type': 'str'},
        'properties': {'key': 'properties', 'type': '{str}'},
        'tags': {'key': 'tags', 'type': '{str}'},
        'component_id': {'key': 'componentId', 'type': 'str'},
        'compute_id': {'key': 'computeId', 'type': 'str'},
        'display_name': {'key': 'displayName', 'type': 'str'},
        'experiment_name': {'key': 'experimentName', 'type': 'str'},
        'identity': {'key': 'identity', 'type': 'IdentityConfiguration'},
        'is_archived': {'key': 'isArchived', 'type': 'bool'},
        'job_type': {'key': 'jobType', 'type': 'str'},
        'notification_setting': {'key': 'notificationSetting', 'type': 'NotificationSetting'},
        'parent_job_name': {'key': 'parentJobName', 'type': 'str'},
        'services': {'key': 'services', 'type': '{JobService}'},
        'status': {'key': 'status', 'type': 'str'},
        'early_termination': {'key': 'earlyTermination', 'type': 'EarlyTerminationPolicy'},
        'inputs': {'key': 'inputs', 'type': '{JobInput}'},
        'limits': {'key': 'limits', 'type': 'SweepJobLimits'},
        'objective': {'key': 'objective', 'type': 'Objective'},
        'outputs': {'key': 'outputs', 'type': '{JobOutput}'},
        'queue_settings': {'key': 'queueSettings', 'type': 'QueueSettings'},
        'sampling_algorithm': {'key': 'samplingAlgorithm', 'type': 'SamplingAlgorithm'},
        'search_space': {'key': 'searchSpace', 'type': 'object'},
        'trial': {'key': 'trial', 'type': 'TrialComponent'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword description: The asset description text.
        :paramtype description: str
        :keyword properties: The asset property dictionary.
        :paramtype properties: dict[str, str]
        :keyword tags: A set of tags. Tag dictionary. Tags can be added, removed, and updated.
        :paramtype tags: dict[str, str]
        :keyword component_id: ARM resource ID of the component resource.
        :paramtype component_id: str
        :keyword compute_id: ARM resource ID of the compute resource.
        :paramtype compute_id: str
        :keyword display_name: Display name of job.
        :paramtype display_name: str
        :keyword experiment_name: The name of the experiment the job belongs to. If not set, the job is
         placed in the "Default" experiment.
        :paramtype experiment_name: str
        :keyword identity: Identity configuration. If set, this should be one of AmlToken,
         ManagedIdentity, UserIdentity or null.
         Defaults to AmlToken if null.
        :paramtype identity: ~azure.mgmt.machinelearningservices.models.IdentityConfiguration
        :keyword is_archived: Is the asset archived?.
        :paramtype is_archived: bool
        :keyword notification_setting: Notification setting for the job.
        :paramtype notification_setting: ~azure.mgmt.machinelearningservices.models.NotificationSetting
        :keyword parent_job_name: Parent job name.
        :paramtype parent_job_name: str
        :keyword services: List of JobEndpoints.
         For local jobs, a job endpoint will have an endpoint value of FileStreamObject.
        :paramtype services: dict[str, ~azure.mgmt.machinelearningservices.models.JobService]
        :keyword early_termination: Early termination policies enable canceling poor-performing runs
         before they complete.
        :paramtype early_termination: ~azure.mgmt.machinelearningservices.models.EarlyTerminationPolicy
        :keyword inputs: Mapping of input data bindings used in the job.
        :paramtype inputs: dict[str, ~azure.mgmt.machinelearningservices.models.JobInput]
        :keyword limits: Sweep Job limit.
        :paramtype limits: ~azure.mgmt.machinelearningservices.models.SweepJobLimits
        :keyword objective: Required. [Required] Optimization objective.
        :paramtype objective: ~azure.mgmt.machinelearningservices.models.Objective
        :keyword outputs: Mapping of output data bindings used in the job.
        :paramtype outputs: dict[str, ~azure.mgmt.machinelearningservices.models.JobOutput]
        :keyword queue_settings: Queue settings for the job.
        :paramtype queue_settings: ~azure.mgmt.machinelearningservices.models.QueueSettings
        :keyword sampling_algorithm: Required. [Required] The hyperparameter sampling algorithm.
        :paramtype sampling_algorithm: ~azure.mgmt.machinelearningservices.models.SamplingAlgorithm
        :keyword search_space: Required. [Required] A dictionary containing each parameter and its
         distribution. The dictionary key is the name of the parameter.
        :paramtype search_space: any
        :keyword trial: Required. [Required] Trial component definition.
        :paramtype trial: ~azure.mgmt.machinelearningservices.models.TrialComponent
        """
        super(SweepJob, self).__init__(**kwargs)
        self.job_type = 'Sweep'  # type: str
        self.early_termination = kwargs.get('early_termination', None)
        self.inputs = kwargs.get('inputs', None)
        self.limits = kwargs.get('limits', None)
        self.objective = kwargs['objective']
        self.outputs = kwargs.get('outputs', None)
        self.queue_settings = kwargs.get('queue_settings', None)
        self.sampling_algorithm = kwargs['sampling_algorithm']
        self.search_space = kwargs['search_space']
        self.trial = kwargs['trial']


class SweepJobLimits(JobLimits):
    """Sweep Job limit class.

    All required parameters must be populated in order to send to Azure.

    :ivar job_limits_type: Required. [Required] JobLimit type.Constant filled by server. Possible
     values include: "Command", "Sweep".
    :vartype job_limits_type: str or ~azure.mgmt.machinelearningservices.models.JobLimitsType
    :ivar timeout: The max run duration in ISO 8601 format, after which the job will be cancelled.
     Only supports duration with precision as low as Seconds.
    :vartype timeout: ~datetime.timedelta
    :ivar max_concurrent_trials: Sweep Job max concurrent trials.
    :vartype max_concurrent_trials: int
    :ivar max_total_trials: Sweep Job max total trials.
    :vartype max_total_trials: int
    :ivar trial_timeout: Sweep Job Trial timeout value.
    :vartype trial_timeout: ~datetime.timedelta
    """

    _validation = {
        'job_limits_type': {'required': True},
    }

    _attribute_map = {
        'job_limits_type': {'key': 'jobLimitsType', 'type': 'str'},
        'timeout': {'key': 'timeout', 'type': 'duration'},
        'max_concurrent_trials': {'key': 'maxConcurrentTrials', 'type': 'int'},
        'max_total_trials': {'key': 'maxTotalTrials', 'type': 'int'},
        'trial_timeout': {'key': 'trialTimeout', 'type': 'duration'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword timeout: The max run duration in ISO 8601 format, after which the job will be
         cancelled. Only supports duration with precision as low as Seconds.
        :paramtype timeout: ~datetime.timedelta
        :keyword max_concurrent_trials: Sweep Job max concurrent trials.
        :paramtype max_concurrent_trials: int
        :keyword max_total_trials: Sweep Job max total trials.
        :paramtype max_total_trials: int
        :keyword trial_timeout: Sweep Job Trial timeout value.
        :paramtype trial_timeout: ~datetime.timedelta
        """
        super(SweepJobLimits, self).__init__(**kwargs)
        self.job_limits_type = 'Sweep'  # type: str
        self.max_concurrent_trials = kwargs.get('max_concurrent_trials', None)
        self.max_total_trials = kwargs.get('max_total_trials', None)
        self.trial_timeout = kwargs.get('trial_timeout', None)


class SynapseSpark(Compute):
    """A SynapseSpark compute.

    Variables are only populated by the server, and will be ignored when sending a request.

    All required parameters must be populated in order to send to Azure.

    :ivar compute_type: Required. The type of compute.Constant filled by server. Possible values
     include: "AKS", "Kubernetes", "AmlCompute", "ComputeInstance", "DataFactory", "VirtualMachine",
     "HDInsight", "Databricks", "DataLakeAnalytics", "SynapseSpark".
    :vartype compute_type: str or ~azure.mgmt.machinelearningservices.models.ComputeType
    :ivar compute_location: Location for the underlying compute.
    :vartype compute_location: str
    :ivar provisioning_state: The provision state of the cluster. Valid values are Unknown,
     Updating, Provisioning, Succeeded, and Failed. Possible values include: "Unknown", "Updating",
     "Creating", "Deleting", "Succeeded", "Failed", "Canceled".
    :vartype provisioning_state: str or
     ~azure.mgmt.machinelearningservices.models.ProvisioningState
    :ivar description: The description of the Machine Learning compute.
    :vartype description: str
    :ivar created_on: The time at which the compute was created.
    :vartype created_on: ~datetime.datetime
    :ivar modified_on: The time at which the compute was last modified.
    :vartype modified_on: ~datetime.datetime
    :ivar resource_id: ARM resource id of the underlying compute.
    :vartype resource_id: str
    :ivar provisioning_errors: Errors during provisioning.
    :vartype provisioning_errors: list[~azure.mgmt.machinelearningservices.models.ErrorResponse]
    :ivar is_attached_compute: Indicating whether the compute was provisioned by user and brought
     from outside if true, or machine learning service provisioned it if false.
    :vartype is_attached_compute: bool
    :ivar disable_local_auth: Opt-out of local authentication and ensure customers can use only MSI
     and AAD exclusively for authentication.
    :vartype disable_local_auth: bool
    :ivar properties:
    :vartype properties: ~azure.mgmt.machinelearningservices.models.SynapseSparkProperties
    """

    _validation = {
        'compute_type': {'required': True},
        'provisioning_state': {'readonly': True},
        'created_on': {'readonly': True},
        'modified_on': {'readonly': True},
        'provisioning_errors': {'readonly': True},
        'is_attached_compute': {'readonly': True},
    }

    _attribute_map = {
        'compute_type': {'key': 'computeType', 'type': 'str'},
        'compute_location': {'key': 'computeLocation', 'type': 'str'},
        'provisioning_state': {'key': 'provisioningState', 'type': 'str'},
        'description': {'key': 'description', 'type': 'str'},
        'created_on': {'key': 'createdOn', 'type': 'iso-8601'},
        'modified_on': {'key': 'modifiedOn', 'type': 'iso-8601'},
        'resource_id': {'key': 'resourceId', 'type': 'str'},
        'provisioning_errors': {'key': 'provisioningErrors', 'type': '[ErrorResponse]'},
        'is_attached_compute': {'key': 'isAttachedCompute', 'type': 'bool'},
        'disable_local_auth': {'key': 'disableLocalAuth', 'type': 'bool'},
        'properties': {'key': 'properties', 'type': 'SynapseSparkProperties'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword compute_location: Location for the underlying compute.
        :paramtype compute_location: str
        :keyword description: The description of the Machine Learning compute.
        :paramtype description: str
        :keyword resource_id: ARM resource id of the underlying compute.
        :paramtype resource_id: str
        :keyword disable_local_auth: Opt-out of local authentication and ensure customers can use only
         MSI and AAD exclusively for authentication.
        :paramtype disable_local_auth: bool
        :keyword properties:
        :paramtype properties: ~azure.mgmt.machinelearningservices.models.SynapseSparkProperties
        """
        super(SynapseSpark, self).__init__(**kwargs)
        self.compute_type = 'SynapseSpark'  # type: str
        self.properties = kwargs.get('properties', None)


class SynapseSparkProperties(msrest.serialization.Model):
    """SynapseSparkProperties.

    :ivar auto_scale_properties: Auto scale properties.
    :vartype auto_scale_properties: ~azure.mgmt.machinelearningservices.models.AutoScaleProperties
    :ivar auto_pause_properties: Auto pause properties.
    :vartype auto_pause_properties: ~azure.mgmt.machinelearningservices.models.AutoPauseProperties
    :ivar spark_version: Spark version.
    :vartype spark_version: str
    :ivar node_count: The number of compute nodes currently assigned to the compute.
    :vartype node_count: int
    :ivar node_size: Node size.
    :vartype node_size: str
    :ivar node_size_family: Node size family.
    :vartype node_size_family: str
    :ivar subscription_id: Azure subscription identifier.
    :vartype subscription_id: str
    :ivar resource_group: Name of the resource group in which workspace is located.
    :vartype resource_group: str
    :ivar workspace_name: Name of Azure Machine Learning workspace.
    :vartype workspace_name: str
    :ivar pool_name: Pool name.
    :vartype pool_name: str
    """

    _attribute_map = {
        'auto_scale_properties': {'key': 'autoScaleProperties', 'type': 'AutoScaleProperties'},
        'auto_pause_properties': {'key': 'autoPauseProperties', 'type': 'AutoPauseProperties'},
        'spark_version': {'key': 'sparkVersion', 'type': 'str'},
        'node_count': {'key': 'nodeCount', 'type': 'int'},
        'node_size': {'key': 'nodeSize', 'type': 'str'},
        'node_size_family': {'key': 'nodeSizeFamily', 'type': 'str'},
        'subscription_id': {'key': 'subscriptionId', 'type': 'str'},
        'resource_group': {'key': 'resourceGroup', 'type': 'str'},
        'workspace_name': {'key': 'workspaceName', 'type': 'str'},
        'pool_name': {'key': 'poolName', 'type': 'str'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword auto_scale_properties: Auto scale properties.
        :paramtype auto_scale_properties:
         ~azure.mgmt.machinelearningservices.models.AutoScaleProperties
        :keyword auto_pause_properties: Auto pause properties.
        :paramtype auto_pause_properties:
         ~azure.mgmt.machinelearningservices.models.AutoPauseProperties
        :keyword spark_version: Spark version.
        :paramtype spark_version: str
        :keyword node_count: The number of compute nodes currently assigned to the compute.
        :paramtype node_count: int
        :keyword node_size: Node size.
        :paramtype node_size: str
        :keyword node_size_family: Node size family.
        :paramtype node_size_family: str
        :keyword subscription_id: Azure subscription identifier.
        :paramtype subscription_id: str
        :keyword resource_group: Name of the resource group in which workspace is located.
        :paramtype resource_group: str
        :keyword workspace_name: Name of Azure Machine Learning workspace.
        :paramtype workspace_name: str
        :keyword pool_name: Pool name.
        :paramtype pool_name: str
        """
        super(SynapseSparkProperties, self).__init__(**kwargs)
        self.auto_scale_properties = kwargs.get('auto_scale_properties', None)
        self.auto_pause_properties = kwargs.get('auto_pause_properties', None)
        self.spark_version = kwargs.get('spark_version', None)
        self.node_count = kwargs.get('node_count', None)
        self.node_size = kwargs.get('node_size', None)
        self.node_size_family = kwargs.get('node_size_family', None)
        self.subscription_id = kwargs.get('subscription_id', None)
        self.resource_group = kwargs.get('resource_group', None)
        self.workspace_name = kwargs.get('workspace_name', None)
        self.pool_name = kwargs.get('pool_name', None)


class SystemCreatedAcrAccount(msrest.serialization.Model):
    """SystemCreatedAcrAccount.

    :ivar acr_account_name: Name of the ACR account.
    :vartype acr_account_name: str
    :ivar acr_account_sku: SKU of the ACR account.
    :vartype acr_account_sku: str
    :ivar arm_resource_id: This is populated once the ACR account is created.
    :vartype arm_resource_id: ~azure.mgmt.machinelearningservices.models.ArmResourceId
    """

    _attribute_map = {
        'acr_account_name': {'key': 'acrAccountName', 'type': 'str'},
        'acr_account_sku': {'key': 'acrAccountSku', 'type': 'str'},
        'arm_resource_id': {'key': 'armResourceId', 'type': 'ArmResourceId'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword acr_account_name: Name of the ACR account.
        :paramtype acr_account_name: str
        :keyword acr_account_sku: SKU of the ACR account.
        :paramtype acr_account_sku: str
        :keyword arm_resource_id: This is populated once the ACR account is created.
        :paramtype arm_resource_id: ~azure.mgmt.machinelearningservices.models.ArmResourceId
        """
        super(SystemCreatedAcrAccount, self).__init__(**kwargs)
        self.acr_account_name = kwargs.get('acr_account_name', None)
        self.acr_account_sku = kwargs.get('acr_account_sku', None)
        self.arm_resource_id = kwargs.get('arm_resource_id', None)


class SystemCreatedStorageAccount(msrest.serialization.Model):
    """SystemCreatedStorageAccount.

    :ivar allow_blob_public_access: Public blob access allowed.
    :vartype allow_blob_public_access: bool
    :ivar arm_resource_id: This is populated once the storage account is created.
    :vartype arm_resource_id: ~azure.mgmt.machinelearningservices.models.ArmResourceId
    :ivar storage_account_hns_enabled: HNS enabled for storage account.
    :vartype storage_account_hns_enabled: bool
    :ivar storage_account_name: Name of the storage account.
    :vartype storage_account_name: str
    :ivar storage_account_type: Allowed values:
     "Standard_LRS",
     "Standard_GRS",
     "Standard_RAGRS",
     "Standard_ZRS",
     "Standard_GZRS",
     "Standard_RAGZRS",
     "Premium_LRS",
     "Premium_ZRS".
    :vartype storage_account_type: str
    """

    _attribute_map = {
        'allow_blob_public_access': {'key': 'allowBlobPublicAccess', 'type': 'bool'},
        'arm_resource_id': {'key': 'armResourceId', 'type': 'ArmResourceId'},
        'storage_account_hns_enabled': {'key': 'storageAccountHnsEnabled', 'type': 'bool'},
        'storage_account_name': {'key': 'storageAccountName', 'type': 'str'},
        'storage_account_type': {'key': 'storageAccountType', 'type': 'str'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword allow_blob_public_access: Public blob access allowed.
        :paramtype allow_blob_public_access: bool
        :keyword arm_resource_id: This is populated once the storage account is created.
        :paramtype arm_resource_id: ~azure.mgmt.machinelearningservices.models.ArmResourceId
        :keyword storage_account_hns_enabled: HNS enabled for storage account.
        :paramtype storage_account_hns_enabled: bool
        :keyword storage_account_name: Name of the storage account.
        :paramtype storage_account_name: str
        :keyword storage_account_type: Allowed values:
         "Standard_LRS",
         "Standard_GRS",
         "Standard_RAGRS",
         "Standard_ZRS",
         "Standard_GZRS",
         "Standard_RAGZRS",
         "Premium_LRS",
         "Premium_ZRS".
        :paramtype storage_account_type: str
        """
        super(SystemCreatedStorageAccount, self).__init__(**kwargs)
        self.allow_blob_public_access = kwargs.get('allow_blob_public_access', None)
        self.arm_resource_id = kwargs.get('arm_resource_id', None)
        self.storage_account_hns_enabled = kwargs.get('storage_account_hns_enabled', None)
        self.storage_account_name = kwargs.get('storage_account_name', None)
        self.storage_account_type = kwargs.get('storage_account_type', None)


class SystemData(msrest.serialization.Model):
    """Metadata pertaining to creation and last modification of the resource.

    :ivar created_by: The identity that created the resource.
    :vartype created_by: str
    :ivar created_by_type: The type of identity that created the resource. Possible values include:
     "User", "Application", "ManagedIdentity", "Key".
    :vartype created_by_type: str or ~azure.mgmt.machinelearningservices.models.CreatedByType
    :ivar created_at: The timestamp of resource creation (UTC).
    :vartype created_at: ~datetime.datetime
    :ivar last_modified_by: The identity that last modified the resource.
    :vartype last_modified_by: str
    :ivar last_modified_by_type: The type of identity that last modified the resource. Possible
     values include: "User", "Application", "ManagedIdentity", "Key".
    :vartype last_modified_by_type: str or ~azure.mgmt.machinelearningservices.models.CreatedByType
    :ivar last_modified_at: The timestamp of resource last modification (UTC).
    :vartype last_modified_at: ~datetime.datetime
    """

    _attribute_map = {
        'created_by': {'key': 'createdBy', 'type': 'str'},
        'created_by_type': {'key': 'createdByType', 'type': 'str'},
        'created_at': {'key': 'createdAt', 'type': 'iso-8601'},
        'last_modified_by': {'key': 'lastModifiedBy', 'type': 'str'},
        'last_modified_by_type': {'key': 'lastModifiedByType', 'type': 'str'},
        'last_modified_at': {'key': 'lastModifiedAt', 'type': 'iso-8601'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword created_by: The identity that created the resource.
        :paramtype created_by: str
        :keyword created_by_type: The type of identity that created the resource. Possible values
         include: "User", "Application", "ManagedIdentity", "Key".
        :paramtype created_by_type: str or ~azure.mgmt.machinelearningservices.models.CreatedByType
        :keyword created_at: The timestamp of resource creation (UTC).
        :paramtype created_at: ~datetime.datetime
        :keyword last_modified_by: The identity that last modified the resource.
        :paramtype last_modified_by: str
        :keyword last_modified_by_type: The type of identity that last modified the resource. Possible
         values include: "User", "Application", "ManagedIdentity", "Key".
        :paramtype last_modified_by_type: str or
         ~azure.mgmt.machinelearningservices.models.CreatedByType
        :keyword last_modified_at: The timestamp of resource last modification (UTC).
        :paramtype last_modified_at: ~datetime.datetime
        """
        super(SystemData, self).__init__(**kwargs)
        self.created_by = kwargs.get('created_by', None)
        self.created_by_type = kwargs.get('created_by_type', None)
        self.created_at = kwargs.get('created_at', None)
        self.last_modified_by = kwargs.get('last_modified_by', None)
        self.last_modified_by_type = kwargs.get('last_modified_by_type', None)
        self.last_modified_at = kwargs.get('last_modified_at', None)


class SystemService(msrest.serialization.Model):
    """A system service running on a compute.

    Variables are only populated by the server, and will be ignored when sending a request.

    :ivar system_service_type: The type of this system service.
    :vartype system_service_type: str
    :ivar public_ip_address: Public IP address.
    :vartype public_ip_address: str
    :ivar version: The version for this type.
    :vartype version: str
    """

    _validation = {
        'system_service_type': {'readonly': True},
        'public_ip_address': {'readonly': True},
        'version': {'readonly': True},
    }

    _attribute_map = {
        'system_service_type': {'key': 'systemServiceType', 'type': 'str'},
        'public_ip_address': {'key': 'publicIpAddress', 'type': 'str'},
        'version': {'key': 'version', 'type': 'str'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        """
        super(SystemService, self).__init__(**kwargs)
        self.system_service_type = None
        self.public_ip_address = None
        self.version = None


class TableVerticalFeaturizationSettings(FeaturizationSettings):
    """Featurization Configuration.

    :ivar dataset_language: Dataset language, useful for the text data.
    :vartype dataset_language: str
    :ivar blocked_transformers: These transformers shall not be used in featurization.
    :vartype blocked_transformers: list[str or
     ~azure.mgmt.machinelearningservices.models.BlockedTransformers]
    :ivar column_name_and_types: Dictionary of column name and its type (int, float, string,
     datetime etc).
    :vartype column_name_and_types: dict[str, str]
    :ivar enable_dnn_featurization: Determines whether to use Dnn based featurizers for data
     featurization.
    :vartype enable_dnn_featurization: bool
    :ivar mode: Featurization mode - User can keep the default 'Auto' mode and AutoML will take
     care of necessary transformation of the data in featurization phase.
     If 'Off' is selected then no featurization is done.
     If 'Custom' is selected then user can specify additional inputs to customize how featurization
     is done. Possible values include: "Auto", "Custom", "Off".
    :vartype mode: str or ~azure.mgmt.machinelearningservices.models.FeaturizationMode
    :ivar transformer_params: User can specify additional transformers to be used along with the
     columns to which it would be applied and parameters for the transformer constructor.
    :vartype transformer_params: dict[str,
     list[~azure.mgmt.machinelearningservices.models.ColumnTransformer]]
    """

    _attribute_map = {
        'dataset_language': {'key': 'datasetLanguage', 'type': 'str'},
        'blocked_transformers': {'key': 'blockedTransformers', 'type': '[str]'},
        'column_name_and_types': {'key': 'columnNameAndTypes', 'type': '{str}'},
        'enable_dnn_featurization': {'key': 'enableDnnFeaturization', 'type': 'bool'},
        'mode': {'key': 'mode', 'type': 'str'},
        'transformer_params': {'key': 'transformerParams', 'type': '{[ColumnTransformer]}'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword dataset_language: Dataset language, useful for the text data.
        :paramtype dataset_language: str
        :keyword blocked_transformers: These transformers shall not be used in featurization.
        :paramtype blocked_transformers: list[str or
         ~azure.mgmt.machinelearningservices.models.BlockedTransformers]
        :keyword column_name_and_types: Dictionary of column name and its type (int, float, string,
         datetime etc).
        :paramtype column_name_and_types: dict[str, str]
        :keyword enable_dnn_featurization: Determines whether to use Dnn based featurizers for data
         featurization.
        :paramtype enable_dnn_featurization: bool
        :keyword mode: Featurization mode - User can keep the default 'Auto' mode and AutoML will take
         care of necessary transformation of the data in featurization phase.
         If 'Off' is selected then no featurization is done.
         If 'Custom' is selected then user can specify additional inputs to customize how featurization
         is done. Possible values include: "Auto", "Custom", "Off".
        :paramtype mode: str or ~azure.mgmt.machinelearningservices.models.FeaturizationMode
        :keyword transformer_params: User can specify additional transformers to be used along with the
         columns to which it would be applied and parameters for the transformer constructor.
        :paramtype transformer_params: dict[str,
         list[~azure.mgmt.machinelearningservices.models.ColumnTransformer]]
        """
        super(TableVerticalFeaturizationSettings, self).__init__(**kwargs)
        self.blocked_transformers = kwargs.get('blocked_transformers', None)
        self.column_name_and_types = kwargs.get('column_name_and_types', None)
        self.enable_dnn_featurization = kwargs.get('enable_dnn_featurization', False)
        self.mode = kwargs.get('mode', None)
        self.transformer_params = kwargs.get('transformer_params', None)


class TableVerticalLimitSettings(msrest.serialization.Model):
    """Job execution constraints.

    :ivar enable_early_termination: Enable early termination, determines whether or not if
     AutoMLJob will terminate early if there is no score improvement in last 20 iterations.
    :vartype enable_early_termination: bool
    :ivar exit_score: Exit score for the AutoML job.
    :vartype exit_score: float
    :ivar max_concurrent_trials: Maximum Concurrent iterations.
    :vartype max_concurrent_trials: int
    :ivar max_cores_per_trial: Max cores per iteration.
    :vartype max_cores_per_trial: int
    :ivar max_trials: Number of iterations.
    :vartype max_trials: int
    :ivar timeout: AutoML job timeout.
    :vartype timeout: ~datetime.timedelta
    :ivar trial_timeout: Iteration timeout.
    :vartype trial_timeout: ~datetime.timedelta
    """

    _attribute_map = {
        'enable_early_termination': {'key': 'enableEarlyTermination', 'type': 'bool'},
        'exit_score': {'key': 'exitScore', 'type': 'float'},
        'max_concurrent_trials': {'key': 'maxConcurrentTrials', 'type': 'int'},
        'max_cores_per_trial': {'key': 'maxCoresPerTrial', 'type': 'int'},
        'max_trials': {'key': 'maxTrials', 'type': 'int'},
        'timeout': {'key': 'timeout', 'type': 'duration'},
        'trial_timeout': {'key': 'trialTimeout', 'type': 'duration'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword enable_early_termination: Enable early termination, determines whether or not if
         AutoMLJob will terminate early if there is no score improvement in last 20 iterations.
        :paramtype enable_early_termination: bool
        :keyword exit_score: Exit score for the AutoML job.
        :paramtype exit_score: float
        :keyword max_concurrent_trials: Maximum Concurrent iterations.
        :paramtype max_concurrent_trials: int
        :keyword max_cores_per_trial: Max cores per iteration.
        :paramtype max_cores_per_trial: int
        :keyword max_trials: Number of iterations.
        :paramtype max_trials: int
        :keyword timeout: AutoML job timeout.
        :paramtype timeout: ~datetime.timedelta
        :keyword trial_timeout: Iteration timeout.
        :paramtype trial_timeout: ~datetime.timedelta
        """
        super(TableVerticalLimitSettings, self).__init__(**kwargs)
        self.enable_early_termination = kwargs.get('enable_early_termination', True)
        self.exit_score = kwargs.get('exit_score', None)
        self.max_concurrent_trials = kwargs.get('max_concurrent_trials', 1)
        self.max_cores_per_trial = kwargs.get('max_cores_per_trial', -1)
        self.max_trials = kwargs.get('max_trials', 1000)
        self.timeout = kwargs.get('timeout', "PT6H")
        self.trial_timeout = kwargs.get('trial_timeout', "PT30M")


class TargetUtilizationScaleSettings(OnlineScaleSettings):
    """TargetUtilizationScaleSettings.

    All required parameters must be populated in order to send to Azure.

    :ivar scale_type: Required. [Required] Type of deployment scaling algorithm.Constant filled by
     server. Possible values include: "Default", "TargetUtilization".
    :vartype scale_type: str or ~azure.mgmt.machinelearningservices.models.ScaleType
    :ivar max_instances: The maximum number of instances that the deployment can scale to. The
     quota will be reserved for max_instances.
    :vartype max_instances: int
    :ivar min_instances: The minimum number of instances to always be present.
    :vartype min_instances: int
    :ivar polling_interval: The polling interval in ISO 8691 format. Only supports duration with
     precision as low as Seconds.
    :vartype polling_interval: ~datetime.timedelta
    :ivar target_utilization_percentage: Target CPU usage for the autoscaler.
    :vartype target_utilization_percentage: int
    """

    _validation = {
        'scale_type': {'required': True},
    }

    _attribute_map = {
        'scale_type': {'key': 'scaleType', 'type': 'str'},
        'max_instances': {'key': 'maxInstances', 'type': 'int'},
        'min_instances': {'key': 'minInstances', 'type': 'int'},
        'polling_interval': {'key': 'pollingInterval', 'type': 'duration'},
        'target_utilization_percentage': {'key': 'targetUtilizationPercentage', 'type': 'int'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword max_instances: The maximum number of instances that the deployment can scale to. The
         quota will be reserved for max_instances.
        :paramtype max_instances: int
        :keyword min_instances: The minimum number of instances to always be present.
        :paramtype min_instances: int
        :keyword polling_interval: The polling interval in ISO 8691 format. Only supports duration with
         precision as low as Seconds.
        :paramtype polling_interval: ~datetime.timedelta
        :keyword target_utilization_percentage: Target CPU usage for the autoscaler.
        :paramtype target_utilization_percentage: int
        """
        super(TargetUtilizationScaleSettings, self).__init__(**kwargs)
        self.scale_type = 'TargetUtilization'  # type: str
        self.max_instances = kwargs.get('max_instances', 1)
        self.min_instances = kwargs.get('min_instances', 1)
        self.polling_interval = kwargs.get('polling_interval', "PT1S")
        self.target_utilization_percentage = kwargs.get('target_utilization_percentage', 70)


class TeacherModelEndpoint(msrest.serialization.Model):
    """TeacherModelEndpoint.

    :ivar endpoint_name:
    :vartype endpoint_name: str
    """

    _attribute_map = {
        'endpoint_name': {'key': 'endpointName', 'type': 'str'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword endpoint_name:
        :paramtype endpoint_name: str
        """
        super(TeacherModelEndpoint, self).__init__(**kwargs)
        self.endpoint_name = kwargs.get('endpoint_name', None)


class TeacherModelEndpointRequestSettings(msrest.serialization.Model):
    """TeacherModelEndpointRequestSettings.

    :ivar min_endpoint_success_ratio:
    :vartype min_endpoint_success_ratio: float
    :ivar request_batch_size:
    :vartype request_batch_size: int
    """

    _attribute_map = {
        'min_endpoint_success_ratio': {'key': 'minEndpointSuccessRatio', 'type': 'float'},
        'request_batch_size': {'key': 'requestBatchSize', 'type': 'int'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword min_endpoint_success_ratio:
        :paramtype min_endpoint_success_ratio: float
        :keyword request_batch_size:
        :paramtype request_batch_size: int
        """
        super(TeacherModelEndpointRequestSettings, self).__init__(**kwargs)
        self.min_endpoint_success_ratio = kwargs.get('min_endpoint_success_ratio', None)
        self.request_batch_size = kwargs.get('request_batch_size', None)


class TeacherModelSettings(msrest.serialization.Model):
    """TeacherModelSettings.

    :ivar teacher_model_endpoint_request_settings: Teacher Model Request Settings.
    :vartype teacher_model_endpoint_request_settings:
     ~azure.mgmt.machinelearningservices.models.TeacherModelEndpointRequestSettings
    :ivar teacher_model_inference_parameters: Teacher Model Inference Settings.
    :vartype teacher_model_inference_parameters: dict[str, str]
    """

    _attribute_map = {
        'teacher_model_endpoint_request_settings': {'key': 'teacherModelEndpointRequestSettings', 'type': 'TeacherModelEndpointRequestSettings'},
        'teacher_model_inference_parameters': {'key': 'teacherModelInferenceParameters', 'type': '{str}'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword teacher_model_endpoint_request_settings: Teacher Model Request Settings.
        :paramtype teacher_model_endpoint_request_settings:
         ~azure.mgmt.machinelearningservices.models.TeacherModelEndpointRequestSettings
        :keyword teacher_model_inference_parameters: Teacher Model Inference Settings.
        :paramtype teacher_model_inference_parameters: dict[str, str]
        """
        super(TeacherModelSettings, self).__init__(**kwargs)
        self.teacher_model_endpoint_request_settings = kwargs.get('teacher_model_endpoint_request_settings', None)
        self.teacher_model_inference_parameters = kwargs.get('teacher_model_inference_parameters', None)


class TensorFlow(DistributionConfiguration):
    """TensorFlow distribution configuration.

    All required parameters must be populated in order to send to Azure.

    :ivar distribution_type: Required. [Required] Specifies the type of distribution
     framework.Constant filled by server. Possible values include: "PyTorch", "TensorFlow", "Mpi".
    :vartype distribution_type: str or ~azure.mgmt.machinelearningservices.models.DistributionType
    :ivar parameter_server_count: Number of parameter server tasks.
    :vartype parameter_server_count: int
    :ivar worker_count: Number of workers. If not specified, will default to the instance count.
    :vartype worker_count: int
    """

    _validation = {
        'distribution_type': {'required': True},
    }

    _attribute_map = {
        'distribution_type': {'key': 'distributionType', 'type': 'str'},
        'parameter_server_count': {'key': 'parameterServerCount', 'type': 'int'},
        'worker_count': {'key': 'workerCount', 'type': 'int'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword parameter_server_count: Number of parameter server tasks.
        :paramtype parameter_server_count: int
        :keyword worker_count: Number of workers. If not specified, will default to the instance count.
        :paramtype worker_count: int
        """
        super(TensorFlow, self).__init__(**kwargs)
        self.distribution_type = 'TensorFlow'  # type: str
        self.parameter_server_count = kwargs.get('parameter_server_count', 0)
        self.worker_count = kwargs.get('worker_count', None)


class TextClassification(AutoMLVertical, NlpVertical):
    """Text Classification task in AutoML NLP vertical.
NLP - Natural Language Processing.

    All required parameters must be populated in order to send to Azure.

    :ivar featurization_settings: Featurization inputs needed for AutoML job.
    :vartype featurization_settings:
     ~azure.mgmt.machinelearningservices.models.NlpVerticalFeaturizationSettings
    :ivar limit_settings: Execution constraints for AutoMLJob.
    :vartype limit_settings: ~azure.mgmt.machinelearningservices.models.NlpVerticalLimitSettings
    :ivar validation_data: Validation data inputs.
    :vartype validation_data: ~azure.mgmt.machinelearningservices.models.MLTableJobInput
    :ivar log_verbosity: Log verbosity for the job. Possible values include: "NotSet", "Debug",
     "Info", "Warning", "Error", "Critical".
    :vartype log_verbosity: str or ~azure.mgmt.machinelearningservices.models.LogVerbosity
    :ivar target_column_name: Target column name: This is prediction values column.
     Also known as label column name in context of classification tasks.
    :vartype target_column_name: str
    :ivar task_type: Required. [Required] Task type for AutoMLJob.Constant filled by server.
     Possible values include: "Classification", "Regression", "Forecasting", "ImageClassification",
     "ImageClassificationMultilabel", "ImageObjectDetection", "ImageInstanceSegmentation",
     "TextClassification", "TextClassificationMultilabel", "TextNER".
    :vartype task_type: str or ~azure.mgmt.machinelearningservices.models.TaskType
    :ivar training_data: Required. [Required] Training data input.
    :vartype training_data: ~azure.mgmt.machinelearningservices.models.MLTableJobInput
    :ivar primary_metric: Primary metric for Text-Classification task. Possible values include:
     "AUCWeighted", "Accuracy", "NormMacroRecall", "AveragePrecisionScoreWeighted",
     "PrecisionScoreWeighted".
    :vartype primary_metric: str or
     ~azure.mgmt.machinelearningservices.models.ClassificationPrimaryMetrics
    """

    _validation = {
        'task_type': {'required': True},
        'training_data': {'required': True},
    }

    _attribute_map = {
        'featurization_settings': {'key': 'featurizationSettings', 'type': 'NlpVerticalFeaturizationSettings'},
        'limit_settings': {'key': 'limitSettings', 'type': 'NlpVerticalLimitSettings'},
        'validation_data': {'key': 'validationData', 'type': 'MLTableJobInput'},
        'log_verbosity': {'key': 'logVerbosity', 'type': 'str'},
        'target_column_name': {'key': 'targetColumnName', 'type': 'str'},
        'task_type': {'key': 'taskType', 'type': 'str'},
        'training_data': {'key': 'trainingData', 'type': 'MLTableJobInput'},
        'primary_metric': {'key': 'primaryMetric', 'type': 'str'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword featurization_settings: Featurization inputs needed for AutoML job.
        :paramtype featurization_settings:
         ~azure.mgmt.machinelearningservices.models.NlpVerticalFeaturizationSettings
        :keyword limit_settings: Execution constraints for AutoMLJob.
        :paramtype limit_settings: ~azure.mgmt.machinelearningservices.models.NlpVerticalLimitSettings
        :keyword validation_data: Validation data inputs.
        :paramtype validation_data: ~azure.mgmt.machinelearningservices.models.MLTableJobInput
        :keyword log_verbosity: Log verbosity for the job. Possible values include: "NotSet", "Debug",
         "Info", "Warning", "Error", "Critical".
        :paramtype log_verbosity: str or ~azure.mgmt.machinelearningservices.models.LogVerbosity
        :keyword target_column_name: Target column name: This is prediction values column.
         Also known as label column name in context of classification tasks.
        :paramtype target_column_name: str
        :keyword training_data: Required. [Required] Training data input.
        :paramtype training_data: ~azure.mgmt.machinelearningservices.models.MLTableJobInput
        :keyword primary_metric: Primary metric for Text-Classification task. Possible values include:
         "AUCWeighted", "Accuracy", "NormMacroRecall", "AveragePrecisionScoreWeighted",
         "PrecisionScoreWeighted".
        :paramtype primary_metric: str or
         ~azure.mgmt.machinelearningservices.models.ClassificationPrimaryMetrics
        """
        super(TextClassification, self).__init__(**kwargs)
        self.featurization_settings = kwargs.get('featurization_settings', None)
        self.limit_settings = kwargs.get('limit_settings', None)
        self.validation_data = kwargs.get('validation_data', None)
        self.task_type = 'TextClassification'  # type: str
        self.primary_metric = kwargs.get('primary_metric', None)
        self.log_verbosity = kwargs.get('log_verbosity', None)
        self.target_column_name = kwargs.get('target_column_name', None)
        self.training_data = kwargs['training_data']


class TextClassificationMultilabel(AutoMLVertical, NlpVertical):
    """Text Classification Multilabel task in AutoML NLP vertical.
NLP - Natural Language Processing.

    Variables are only populated by the server, and will be ignored when sending a request.

    All required parameters must be populated in order to send to Azure.

    :ivar featurization_settings: Featurization inputs needed for AutoML job.
    :vartype featurization_settings:
     ~azure.mgmt.machinelearningservices.models.NlpVerticalFeaturizationSettings
    :ivar limit_settings: Execution constraints for AutoMLJob.
    :vartype limit_settings: ~azure.mgmt.machinelearningservices.models.NlpVerticalLimitSettings
    :ivar validation_data: Validation data inputs.
    :vartype validation_data: ~azure.mgmt.machinelearningservices.models.MLTableJobInput
    :ivar log_verbosity: Log verbosity for the job. Possible values include: "NotSet", "Debug",
     "Info", "Warning", "Error", "Critical".
    :vartype log_verbosity: str or ~azure.mgmt.machinelearningservices.models.LogVerbosity
    :ivar target_column_name: Target column name: This is prediction values column.
     Also known as label column name in context of classification tasks.
    :vartype target_column_name: str
    :ivar task_type: Required. [Required] Task type for AutoMLJob.Constant filled by server.
     Possible values include: "Classification", "Regression", "Forecasting", "ImageClassification",
     "ImageClassificationMultilabel", "ImageObjectDetection", "ImageInstanceSegmentation",
     "TextClassification", "TextClassificationMultilabel", "TextNER".
    :vartype task_type: str or ~azure.mgmt.machinelearningservices.models.TaskType
    :ivar training_data: Required. [Required] Training data input.
    :vartype training_data: ~azure.mgmt.machinelearningservices.models.MLTableJobInput
    :ivar primary_metric: Primary metric for Text-Classification-Multilabel task.
     Currently only Accuracy is supported as primary metric, hence user need not set it explicitly.
     Possible values include: "AUCWeighted", "Accuracy", "NormMacroRecall",
     "AveragePrecisionScoreWeighted", "PrecisionScoreWeighted", "IOU".
    :vartype primary_metric: str or
     ~azure.mgmt.machinelearningservices.models.ClassificationMultilabelPrimaryMetrics
    """

    _validation = {
        'task_type': {'required': True},
        'training_data': {'required': True},
        'primary_metric': {'readonly': True},
    }

    _attribute_map = {
        'featurization_settings': {'key': 'featurizationSettings', 'type': 'NlpVerticalFeaturizationSettings'},
        'limit_settings': {'key': 'limitSettings', 'type': 'NlpVerticalLimitSettings'},
        'validation_data': {'key': 'validationData', 'type': 'MLTableJobInput'},
        'log_verbosity': {'key': 'logVerbosity', 'type': 'str'},
        'target_column_name': {'key': 'targetColumnName', 'type': 'str'},
        'task_type': {'key': 'taskType', 'type': 'str'},
        'training_data': {'key': 'trainingData', 'type': 'MLTableJobInput'},
        'primary_metric': {'key': 'primaryMetric', 'type': 'str'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword featurization_settings: Featurization inputs needed for AutoML job.
        :paramtype featurization_settings:
         ~azure.mgmt.machinelearningservices.models.NlpVerticalFeaturizationSettings
        :keyword limit_settings: Execution constraints for AutoMLJob.
        :paramtype limit_settings: ~azure.mgmt.machinelearningservices.models.NlpVerticalLimitSettings
        :keyword validation_data: Validation data inputs.
        :paramtype validation_data: ~azure.mgmt.machinelearningservices.models.MLTableJobInput
        :keyword log_verbosity: Log verbosity for the job. Possible values include: "NotSet", "Debug",
         "Info", "Warning", "Error", "Critical".
        :paramtype log_verbosity: str or ~azure.mgmt.machinelearningservices.models.LogVerbosity
        :keyword target_column_name: Target column name: This is prediction values column.
         Also known as label column name in context of classification tasks.
        :paramtype target_column_name: str
        :keyword training_data: Required. [Required] Training data input.
        :paramtype training_data: ~azure.mgmt.machinelearningservices.models.MLTableJobInput
        """
        super(TextClassificationMultilabel, self).__init__(**kwargs)
        self.featurization_settings = kwargs.get('featurization_settings', None)
        self.limit_settings = kwargs.get('limit_settings', None)
        self.validation_data = kwargs.get('validation_data', None)
        self.task_type = 'TextClassificationMultilabel'  # type: str
        self.primary_metric = None
        self.log_verbosity = kwargs.get('log_verbosity', None)
        self.target_column_name = kwargs.get('target_column_name', None)
        self.training_data = kwargs['training_data']


class TextNer(AutoMLVertical, NlpVertical):
    """Text-NER task in AutoML NLP vertical.
NER - Named Entity Recognition.
NLP - Natural Language Processing.

    Variables are only populated by the server, and will be ignored when sending a request.

    All required parameters must be populated in order to send to Azure.

    :ivar featurization_settings: Featurization inputs needed for AutoML job.
    :vartype featurization_settings:
     ~azure.mgmt.machinelearningservices.models.NlpVerticalFeaturizationSettings
    :ivar limit_settings: Execution constraints for AutoMLJob.
    :vartype limit_settings: ~azure.mgmt.machinelearningservices.models.NlpVerticalLimitSettings
    :ivar validation_data: Validation data inputs.
    :vartype validation_data: ~azure.mgmt.machinelearningservices.models.MLTableJobInput
    :ivar log_verbosity: Log verbosity for the job. Possible values include: "NotSet", "Debug",
     "Info", "Warning", "Error", "Critical".
    :vartype log_verbosity: str or ~azure.mgmt.machinelearningservices.models.LogVerbosity
    :ivar target_column_name: Target column name: This is prediction values column.
     Also known as label column name in context of classification tasks.
    :vartype target_column_name: str
    :ivar task_type: Required. [Required] Task type for AutoMLJob.Constant filled by server.
     Possible values include: "Classification", "Regression", "Forecasting", "ImageClassification",
     "ImageClassificationMultilabel", "ImageObjectDetection", "ImageInstanceSegmentation",
     "TextClassification", "TextClassificationMultilabel", "TextNER".
    :vartype task_type: str or ~azure.mgmt.machinelearningservices.models.TaskType
    :ivar training_data: Required. [Required] Training data input.
    :vartype training_data: ~azure.mgmt.machinelearningservices.models.MLTableJobInput
    :ivar primary_metric: Primary metric for Text-NER task.
     Only 'Accuracy' is supported for Text-NER, so user need not set this explicitly. Possible
     values include: "AUCWeighted", "Accuracy", "NormMacroRecall", "AveragePrecisionScoreWeighted",
     "PrecisionScoreWeighted".
    :vartype primary_metric: str or
     ~azure.mgmt.machinelearningservices.models.ClassificationPrimaryMetrics
    """

    _validation = {
        'task_type': {'required': True},
        'training_data': {'required': True},
        'primary_metric': {'readonly': True},
    }

    _attribute_map = {
        'featurization_settings': {'key': 'featurizationSettings', 'type': 'NlpVerticalFeaturizationSettings'},
        'limit_settings': {'key': 'limitSettings', 'type': 'NlpVerticalLimitSettings'},
        'validation_data': {'key': 'validationData', 'type': 'MLTableJobInput'},
        'log_verbosity': {'key': 'logVerbosity', 'type': 'str'},
        'target_column_name': {'key': 'targetColumnName', 'type': 'str'},
        'task_type': {'key': 'taskType', 'type': 'str'},
        'training_data': {'key': 'trainingData', 'type': 'MLTableJobInput'},
        'primary_metric': {'key': 'primaryMetric', 'type': 'str'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword featurization_settings: Featurization inputs needed for AutoML job.
        :paramtype featurization_settings:
         ~azure.mgmt.machinelearningservices.models.NlpVerticalFeaturizationSettings
        :keyword limit_settings: Execution constraints for AutoMLJob.
        :paramtype limit_settings: ~azure.mgmt.machinelearningservices.models.NlpVerticalLimitSettings
        :keyword validation_data: Validation data inputs.
        :paramtype validation_data: ~azure.mgmt.machinelearningservices.models.MLTableJobInput
        :keyword log_verbosity: Log verbosity for the job. Possible values include: "NotSet", "Debug",
         "Info", "Warning", "Error", "Critical".
        :paramtype log_verbosity: str or ~azure.mgmt.machinelearningservices.models.LogVerbosity
        :keyword target_column_name: Target column name: This is prediction values column.
         Also known as label column name in context of classification tasks.
        :paramtype target_column_name: str
        :keyword training_data: Required. [Required] Training data input.
        :paramtype training_data: ~azure.mgmt.machinelearningservices.models.MLTableJobInput
        """
        super(TextNer, self).__init__(**kwargs)
        self.featurization_settings = kwargs.get('featurization_settings', None)
        self.limit_settings = kwargs.get('limit_settings', None)
        self.validation_data = kwargs.get('validation_data', None)
        self.task_type = 'TextNER'  # type: str
        self.primary_metric = None
        self.log_verbosity = kwargs.get('log_verbosity', None)
        self.target_column_name = kwargs.get('target_column_name', None)
        self.training_data = kwargs['training_data']


class TmpfsOptions(msrest.serialization.Model):
    """TmpfsOptions.

    :ivar size: Mention the Tmpfs size.
    :vartype size: int
    """

    _attribute_map = {
        'size': {'key': 'size', 'type': 'int'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword size: Mention the Tmpfs size.
        :paramtype size: int
        """
        super(TmpfsOptions, self).__init__(**kwargs)
        self.size = kwargs.get('size', None)


class TopNFeaturesByAttribution(MonitoringFeatureFilterBase):
    """TopNFeaturesByAttribution.

    All required parameters must be populated in order to send to Azure.

    :ivar filter_type: Required. [Required] Specifies the feature filter to leverage when selecting
     features to calculate metrics over.Constant filled by server. Possible values include:
     "AllFeatures", "TopNByAttribution", "FeatureSubset".
    :vartype filter_type: str or
     ~azure.mgmt.machinelearningservices.models.MonitoringFeatureFilterType
    :ivar top: The number of top features to include.
    :vartype top: int
    """

    _validation = {
        'filter_type': {'required': True},
    }

    _attribute_map = {
        'filter_type': {'key': 'filterType', 'type': 'str'},
        'top': {'key': 'top', 'type': 'int'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword top: The number of top features to include.
        :paramtype top: int
        """
        super(TopNFeaturesByAttribution, self).__init__(**kwargs)
        self.filter_type = 'TopNByAttribution'  # type: str
        self.top = kwargs.get('top', 10)


class TrialComponent(msrest.serialization.Model):
    """Trial component definition.

    All required parameters must be populated in order to send to Azure.

    :ivar code_id: ARM resource ID of the code asset.
    :vartype code_id: str
    :ivar command: Required. [Required] The command to execute on startup of the job. eg. "python
     train.py".
    :vartype command: str
    :ivar distribution: Distribution configuration of the job. If set, this should be one of Mpi,
     Tensorflow, PyTorch, or null.
    :vartype distribution: ~azure.mgmt.machinelearningservices.models.DistributionConfiguration
    :ivar environment_id: Required. [Required] The ARM resource ID of the Environment specification
     for the job.
    :vartype environment_id: str
    :ivar environment_variables: Environment variables included in the job.
    :vartype environment_variables: dict[str, str]
    :ivar resources: Compute Resource configuration for the job.
    :vartype resources: ~azure.mgmt.machinelearningservices.models.JobResourceConfiguration
    """

    _validation = {
        'command': {'required': True, 'min_length': 1, 'pattern': r'[a-zA-Z0-9_]'},
        'environment_id': {'required': True, 'min_length': 1, 'pattern': r'[a-zA-Z0-9_]'},
    }

    _attribute_map = {
        'code_id': {'key': 'codeId', 'type': 'str'},
        'command': {'key': 'command', 'type': 'str'},
        'distribution': {'key': 'distribution', 'type': 'DistributionConfiguration'},
        'environment_id': {'key': 'environmentId', 'type': 'str'},
        'environment_variables': {'key': 'environmentVariables', 'type': '{str}'},
        'resources': {'key': 'resources', 'type': 'JobResourceConfiguration'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword code_id: ARM resource ID of the code asset.
        :paramtype code_id: str
        :keyword command: Required. [Required] The command to execute on startup of the job. eg.
         "python train.py".
        :paramtype command: str
        :keyword distribution: Distribution configuration of the job. If set, this should be one of
         Mpi, Tensorflow, PyTorch, or null.
        :paramtype distribution: ~azure.mgmt.machinelearningservices.models.DistributionConfiguration
        :keyword environment_id: Required. [Required] The ARM resource ID of the Environment
         specification for the job.
        :paramtype environment_id: str
        :keyword environment_variables: Environment variables included in the job.
        :paramtype environment_variables: dict[str, str]
        :keyword resources: Compute Resource configuration for the job.
        :paramtype resources: ~azure.mgmt.machinelearningservices.models.JobResourceConfiguration
        """
        super(TrialComponent, self).__init__(**kwargs)
        self.code_id = kwargs.get('code_id', None)
        self.command = kwargs['command']
        self.distribution = kwargs.get('distribution', None)
        self.environment_id = kwargs['environment_id']
        self.environment_variables = kwargs.get('environment_variables', None)
        self.resources = kwargs.get('resources', None)


class TritonModelJobInput(JobInput, AssetJobInput):
    """TritonModelJobInput.

    All required parameters must be populated in order to send to Azure.

    :ivar mode: Input Asset Delivery Mode. Possible values include: "ReadOnlyMount",
     "ReadWriteMount", "Download", "Direct", "EvalMount", "EvalDownload".
    :vartype mode: str or ~azure.mgmt.machinelearningservices.models.InputDeliveryMode
    :ivar uri: Required. [Required] Input Asset URI.
    :vartype uri: str
    :ivar description: Description for the input.
    :vartype description: str
    :ivar job_input_type: Required. [Required] Specifies the type of job.Constant filled by server.
     Possible values include: "literal", "uri_file", "uri_folder", "mltable", "custom_model",
     "mlflow_model", "triton_model".
    :vartype job_input_type: str or ~azure.mgmt.machinelearningservices.models.JobInputType
    """

    _validation = {
        'uri': {'required': True, 'min_length': 1, 'pattern': r'[a-zA-Z0-9_]'},
        'job_input_type': {'required': True},
    }

    _attribute_map = {
        'mode': {'key': 'mode', 'type': 'str'},
        'uri': {'key': 'uri', 'type': 'str'},
        'description': {'key': 'description', 'type': 'str'},
        'job_input_type': {'key': 'jobInputType', 'type': 'str'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword mode: Input Asset Delivery Mode. Possible values include: "ReadOnlyMount",
         "ReadWriteMount", "Download", "Direct", "EvalMount", "EvalDownload".
        :paramtype mode: str or ~azure.mgmt.machinelearningservices.models.InputDeliveryMode
        :keyword uri: Required. [Required] Input Asset URI.
        :paramtype uri: str
        :keyword description: Description for the input.
        :paramtype description: str
        """
        super(TritonModelJobInput, self).__init__(**kwargs)
        self.mode = kwargs.get('mode', None)
        self.uri = kwargs['uri']
        self.job_input_type = 'triton_model'  # type: str
        self.description = kwargs.get('description', None)


class TritonModelJobOutput(JobOutput, AssetJobOutput):
    """TritonModelJobOutput.

    All required parameters must be populated in order to send to Azure.

    :ivar asset_name: Output Asset Name.
    :vartype asset_name: str
    :ivar mode: Output Asset Delivery Mode. Possible values include: "ReadWriteMount", "Upload",
     "Direct".
    :vartype mode: str or ~azure.mgmt.machinelearningservices.models.OutputDeliveryMode
    :ivar uri: Output Asset URI.
    :vartype uri: str
    :ivar description: Description for the output.
    :vartype description: str
    :ivar job_output_type: Required. [Required] Specifies the type of job.Constant filled by
     server. Possible values include: "uri_file", "uri_folder", "mltable", "custom_model",
     "mlflow_model", "triton_model".
    :vartype job_output_type: str or ~azure.mgmt.machinelearningservices.models.JobOutputType
    """

    _validation = {
        'job_output_type': {'required': True},
    }

    _attribute_map = {
        'asset_name': {'key': 'assetName', 'type': 'str'},
        'mode': {'key': 'mode', 'type': 'str'},
        'uri': {'key': 'uri', 'type': 'str'},
        'description': {'key': 'description', 'type': 'str'},
        'job_output_type': {'key': 'jobOutputType', 'type': 'str'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword asset_name: Output Asset Name.
        :paramtype asset_name: str
        :keyword mode: Output Asset Delivery Mode. Possible values include: "ReadWriteMount", "Upload",
         "Direct".
        :paramtype mode: str or ~azure.mgmt.machinelearningservices.models.OutputDeliveryMode
        :keyword uri: Output Asset URI.
        :paramtype uri: str
        :keyword description: Description for the output.
        :paramtype description: str
        """
        super(TritonModelJobOutput, self).__init__(**kwargs)
        self.asset_name = kwargs.get('asset_name', None)
        self.mode = kwargs.get('mode', None)
        self.uri = kwargs.get('uri', None)
        self.job_output_type = 'triton_model'  # type: str
        self.description = kwargs.get('description', None)


class TruncationSelectionPolicy(EarlyTerminationPolicy):
    """Defines an early termination policy that cancels a given percentage of runs at each evaluation interval.

    All required parameters must be populated in order to send to Azure.

    :ivar delay_evaluation: Number of intervals by which to delay the first evaluation.
    :vartype delay_evaluation: int
    :ivar evaluation_interval: Interval (number of runs) between policy evaluations.
    :vartype evaluation_interval: int
    :ivar policy_type: Required. [Required] Name of policy configuration.Constant filled by server.
     Possible values include: "Bandit", "MedianStopping", "TruncationSelection".
    :vartype policy_type: str or
     ~azure.mgmt.machinelearningservices.models.EarlyTerminationPolicyType
    :ivar truncation_percentage: The percentage of runs to cancel at each evaluation interval.
    :vartype truncation_percentage: int
    """

    _validation = {
        'policy_type': {'required': True},
    }

    _attribute_map = {
        'delay_evaluation': {'key': 'delayEvaluation', 'type': 'int'},
        'evaluation_interval': {'key': 'evaluationInterval', 'type': 'int'},
        'policy_type': {'key': 'policyType', 'type': 'str'},
        'truncation_percentage': {'key': 'truncationPercentage', 'type': 'int'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword delay_evaluation: Number of intervals by which to delay the first evaluation.
        :paramtype delay_evaluation: int
        :keyword evaluation_interval: Interval (number of runs) between policy evaluations.
        :paramtype evaluation_interval: int
        :keyword truncation_percentage: The percentage of runs to cancel at each evaluation interval.
        :paramtype truncation_percentage: int
        """
        super(TruncationSelectionPolicy, self).__init__(**kwargs)
        self.policy_type = 'TruncationSelection'  # type: str
        self.truncation_percentage = kwargs.get('truncation_percentage', 0)


class UpdateWorkspaceQuotas(msrest.serialization.Model):
    """The properties for update Quota response.

    Variables are only populated by the server, and will be ignored when sending a request.

    :ivar id: Specifies the resource ID.
    :vartype id: str
    :ivar type: Specifies the resource type.
    :vartype type: str
    :ivar limit: The maximum permitted quota of the resource.
    :vartype limit: long
    :ivar unit: An enum describing the unit of quota measurement. Possible values include: "Count".
    :vartype unit: str or ~azure.mgmt.machinelearningservices.models.QuotaUnit
    :ivar status: Status of update workspace quota. Possible values include: "Undefined",
     "Success", "Failure", "InvalidQuotaBelowClusterMinimum",
     "InvalidQuotaExceedsSubscriptionLimit", "InvalidVMFamilyName", "OperationNotSupportedForSku",
     "OperationNotEnabledForRegion".
    :vartype status: str or ~azure.mgmt.machinelearningservices.models.Status
    """

    _validation = {
        'id': {'readonly': True},
        'type': {'readonly': True},
        'unit': {'readonly': True},
    }

    _attribute_map = {
        'id': {'key': 'id', 'type': 'str'},
        'type': {'key': 'type', 'type': 'str'},
        'limit': {'key': 'limit', 'type': 'long'},
        'unit': {'key': 'unit', 'type': 'str'},
        'status': {'key': 'status', 'type': 'str'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword limit: The maximum permitted quota of the resource.
        :paramtype limit: long
        :keyword status: Status of update workspace quota. Possible values include: "Undefined",
         "Success", "Failure", "InvalidQuotaBelowClusterMinimum",
         "InvalidQuotaExceedsSubscriptionLimit", "InvalidVMFamilyName", "OperationNotSupportedForSku",
         "OperationNotEnabledForRegion".
        :paramtype status: str or ~azure.mgmt.machinelearningservices.models.Status
        """
        super(UpdateWorkspaceQuotas, self).__init__(**kwargs)
        self.id = None
        self.type = None
        self.limit = kwargs.get('limit', None)
        self.unit = None
        self.status = kwargs.get('status', None)


class UpdateWorkspaceQuotasResult(msrest.serialization.Model):
    """The result of update workspace quota.

    Variables are only populated by the server, and will be ignored when sending a request.

    :ivar value: The list of workspace quota update result.
    :vartype value: list[~azure.mgmt.machinelearningservices.models.UpdateWorkspaceQuotas]
    :ivar next_link: The URI to fetch the next page of workspace quota update result. Call
     ListNext() with this to fetch the next page of Workspace Quota update result.
    :vartype next_link: str
    """

    _validation = {
        'value': {'readonly': True},
        'next_link': {'readonly': True},
    }

    _attribute_map = {
        'value': {'key': 'value', 'type': '[UpdateWorkspaceQuotas]'},
        'next_link': {'key': 'nextLink', 'type': 'str'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        """
        super(UpdateWorkspaceQuotasResult, self).__init__(**kwargs)
        self.value = None
        self.next_link = None


class UriFileDataVersion(DataVersionBaseProperties):
    """uri-file data version entity.

    All required parameters must be populated in order to send to Azure.

    :ivar description: The asset description text.
    :vartype description: str
    :ivar properties: The asset property dictionary.
    :vartype properties: dict[str, str]
    :ivar tags: A set of tags. Tag dictionary. Tags can be added, removed, and updated.
    :vartype tags: dict[str, str]
    :ivar is_anonymous: If the name version are system generated (anonymous registration).
    :vartype is_anonymous: bool
    :ivar is_archived: Is the asset archived?.
    :vartype is_archived: bool
    :ivar data_type: Required. [Required] Specifies the type of data.Constant filled by server.
     Possible values include: "uri_file", "uri_folder", "mltable".
    :vartype data_type: str or ~azure.mgmt.machinelearningservices.models.DataType
    :ivar data_uri: Required. [Required] Uri of the data. Example:
     https://go.microsoft.com/fwlink/?linkid=2202330.
    :vartype data_uri: str
    """

    _validation = {
        'data_type': {'required': True},
        'data_uri': {'required': True, 'min_length': 1, 'pattern': r'[a-zA-Z0-9_]'},
    }

    _attribute_map = {
        'description': {'key': 'description', 'type': 'str'},
        'properties': {'key': 'properties', 'type': '{str}'},
        'tags': {'key': 'tags', 'type': '{str}'},
        'is_anonymous': {'key': 'isAnonymous', 'type': 'bool'},
        'is_archived': {'key': 'isArchived', 'type': 'bool'},
        'data_type': {'key': 'dataType', 'type': 'str'},
        'data_uri': {'key': 'dataUri', 'type': 'str'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword description: The asset description text.
        :paramtype description: str
        :keyword properties: The asset property dictionary.
        :paramtype properties: dict[str, str]
        :keyword tags: A set of tags. Tag dictionary. Tags can be added, removed, and updated.
        :paramtype tags: dict[str, str]
        :keyword is_anonymous: If the name version are system generated (anonymous registration).
        :paramtype is_anonymous: bool
        :keyword is_archived: Is the asset archived?.
        :paramtype is_archived: bool
        :keyword data_uri: Required. [Required] Uri of the data. Example:
         https://go.microsoft.com/fwlink/?linkid=2202330.
        :paramtype data_uri: str
        """
        super(UriFileDataVersion, self).__init__(**kwargs)
        self.data_type = 'uri_file'  # type: str


class UriFileJobInput(JobInput, AssetJobInput):
    """UriFileJobInput.

    All required parameters must be populated in order to send to Azure.

    :ivar mode: Input Asset Delivery Mode. Possible values include: "ReadOnlyMount",
     "ReadWriteMount", "Download", "Direct", "EvalMount", "EvalDownload".
    :vartype mode: str or ~azure.mgmt.machinelearningservices.models.InputDeliveryMode
    :ivar uri: Required. [Required] Input Asset URI.
    :vartype uri: str
    :ivar description: Description for the input.
    :vartype description: str
    :ivar job_input_type: Required. [Required] Specifies the type of job.Constant filled by server.
     Possible values include: "literal", "uri_file", "uri_folder", "mltable", "custom_model",
     "mlflow_model", "triton_model".
    :vartype job_input_type: str or ~azure.mgmt.machinelearningservices.models.JobInputType
    """

    _validation = {
        'uri': {'required': True, 'min_length': 1, 'pattern': r'[a-zA-Z0-9_]'},
        'job_input_type': {'required': True},
    }

    _attribute_map = {
        'mode': {'key': 'mode', 'type': 'str'},
        'uri': {'key': 'uri', 'type': 'str'},
        'description': {'key': 'description', 'type': 'str'},
        'job_input_type': {'key': 'jobInputType', 'type': 'str'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword mode: Input Asset Delivery Mode. Possible values include: "ReadOnlyMount",
         "ReadWriteMount", "Download", "Direct", "EvalMount", "EvalDownload".
        :paramtype mode: str or ~azure.mgmt.machinelearningservices.models.InputDeliveryMode
        :keyword uri: Required. [Required] Input Asset URI.
        :paramtype uri: str
        :keyword description: Description for the input.
        :paramtype description: str
        """
        super(UriFileJobInput, self).__init__(**kwargs)
        self.mode = kwargs.get('mode', None)
        self.uri = kwargs['uri']
        self.job_input_type = 'uri_file'  # type: str
        self.description = kwargs.get('description', None)


class UriFileJobOutput(JobOutput, AssetJobOutput):
    """UriFileJobOutput.

    All required parameters must be populated in order to send to Azure.

    :ivar asset_name: Output Asset Name.
    :vartype asset_name: str
    :ivar mode: Output Asset Delivery Mode. Possible values include: "ReadWriteMount", "Upload",
     "Direct".
    :vartype mode: str or ~azure.mgmt.machinelearningservices.models.OutputDeliveryMode
    :ivar uri: Output Asset URI.
    :vartype uri: str
    :ivar description: Description for the output.
    :vartype description: str
    :ivar job_output_type: Required. [Required] Specifies the type of job.Constant filled by
     server. Possible values include: "uri_file", "uri_folder", "mltable", "custom_model",
     "mlflow_model", "triton_model".
    :vartype job_output_type: str or ~azure.mgmt.machinelearningservices.models.JobOutputType
    """

    _validation = {
        'job_output_type': {'required': True},
    }

    _attribute_map = {
        'asset_name': {'key': 'assetName', 'type': 'str'},
        'mode': {'key': 'mode', 'type': 'str'},
        'uri': {'key': 'uri', 'type': 'str'},
        'description': {'key': 'description', 'type': 'str'},
        'job_output_type': {'key': 'jobOutputType', 'type': 'str'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword asset_name: Output Asset Name.
        :paramtype asset_name: str
        :keyword mode: Output Asset Delivery Mode. Possible values include: "ReadWriteMount", "Upload",
         "Direct".
        :paramtype mode: str or ~azure.mgmt.machinelearningservices.models.OutputDeliveryMode
        :keyword uri: Output Asset URI.
        :paramtype uri: str
        :keyword description: Description for the output.
        :paramtype description: str
        """
        super(UriFileJobOutput, self).__init__(**kwargs)
        self.asset_name = kwargs.get('asset_name', None)
        self.mode = kwargs.get('mode', None)
        self.uri = kwargs.get('uri', None)
        self.job_output_type = 'uri_file'  # type: str
        self.description = kwargs.get('description', None)


class UriFolderDataVersion(DataVersionBaseProperties):
    """uri-folder data version entity.

    All required parameters must be populated in order to send to Azure.

    :ivar description: The asset description text.
    :vartype description: str
    :ivar properties: The asset property dictionary.
    :vartype properties: dict[str, str]
    :ivar tags: A set of tags. Tag dictionary. Tags can be added, removed, and updated.
    :vartype tags: dict[str, str]
    :ivar is_anonymous: If the name version are system generated (anonymous registration).
    :vartype is_anonymous: bool
    :ivar is_archived: Is the asset archived?.
    :vartype is_archived: bool
    :ivar data_type: Required. [Required] Specifies the type of data.Constant filled by server.
     Possible values include: "uri_file", "uri_folder", "mltable".
    :vartype data_type: str or ~azure.mgmt.machinelearningservices.models.DataType
    :ivar data_uri: Required. [Required] Uri of the data. Example:
     https://go.microsoft.com/fwlink/?linkid=2202330.
    :vartype data_uri: str
    """

    _validation = {
        'data_type': {'required': True},
        'data_uri': {'required': True, 'min_length': 1, 'pattern': r'[a-zA-Z0-9_]'},
    }

    _attribute_map = {
        'description': {'key': 'description', 'type': 'str'},
        'properties': {'key': 'properties', 'type': '{str}'},
        'tags': {'key': 'tags', 'type': '{str}'},
        'is_anonymous': {'key': 'isAnonymous', 'type': 'bool'},
        'is_archived': {'key': 'isArchived', 'type': 'bool'},
        'data_type': {'key': 'dataType', 'type': 'str'},
        'data_uri': {'key': 'dataUri', 'type': 'str'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword description: The asset description text.
        :paramtype description: str
        :keyword properties: The asset property dictionary.
        :paramtype properties: dict[str, str]
        :keyword tags: A set of tags. Tag dictionary. Tags can be added, removed, and updated.
        :paramtype tags: dict[str, str]
        :keyword is_anonymous: If the name version are system generated (anonymous registration).
        :paramtype is_anonymous: bool
        :keyword is_archived: Is the asset archived?.
        :paramtype is_archived: bool
        :keyword data_uri: Required. [Required] Uri of the data. Example:
         https://go.microsoft.com/fwlink/?linkid=2202330.
        :paramtype data_uri: str
        """
        super(UriFolderDataVersion, self).__init__(**kwargs)
        self.data_type = 'uri_folder'  # type: str


class UriFolderJobInput(JobInput, AssetJobInput):
    """UriFolderJobInput.

    All required parameters must be populated in order to send to Azure.

    :ivar mode: Input Asset Delivery Mode. Possible values include: "ReadOnlyMount",
     "ReadWriteMount", "Download", "Direct", "EvalMount", "EvalDownload".
    :vartype mode: str or ~azure.mgmt.machinelearningservices.models.InputDeliveryMode
    :ivar uri: Required. [Required] Input Asset URI.
    :vartype uri: str
    :ivar description: Description for the input.
    :vartype description: str
    :ivar job_input_type: Required. [Required] Specifies the type of job.Constant filled by server.
     Possible values include: "literal", "uri_file", "uri_folder", "mltable", "custom_model",
     "mlflow_model", "triton_model".
    :vartype job_input_type: str or ~azure.mgmt.machinelearningservices.models.JobInputType
    """

    _validation = {
        'uri': {'required': True, 'min_length': 1, 'pattern': r'[a-zA-Z0-9_]'},
        'job_input_type': {'required': True},
    }

    _attribute_map = {
        'mode': {'key': 'mode', 'type': 'str'},
        'uri': {'key': 'uri', 'type': 'str'},
        'description': {'key': 'description', 'type': 'str'},
        'job_input_type': {'key': 'jobInputType', 'type': 'str'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword mode: Input Asset Delivery Mode. Possible values include: "ReadOnlyMount",
         "ReadWriteMount", "Download", "Direct", "EvalMount", "EvalDownload".
        :paramtype mode: str or ~azure.mgmt.machinelearningservices.models.InputDeliveryMode
        :keyword uri: Required. [Required] Input Asset URI.
        :paramtype uri: str
        :keyword description: Description for the input.
        :paramtype description: str
        """
        super(UriFolderJobInput, self).__init__(**kwargs)
        self.mode = kwargs.get('mode', None)
        self.uri = kwargs['uri']
        self.job_input_type = 'uri_folder'  # type: str
        self.description = kwargs.get('description', None)


class UriFolderJobOutput(JobOutput, AssetJobOutput):
    """UriFolderJobOutput.

    All required parameters must be populated in order to send to Azure.

    :ivar asset_name: Output Asset Name.
    :vartype asset_name: str
    :ivar mode: Output Asset Delivery Mode. Possible values include: "ReadWriteMount", "Upload",
     "Direct".
    :vartype mode: str or ~azure.mgmt.machinelearningservices.models.OutputDeliveryMode
    :ivar uri: Output Asset URI.
    :vartype uri: str
    :ivar description: Description for the output.
    :vartype description: str
    :ivar job_output_type: Required. [Required] Specifies the type of job.Constant filled by
     server. Possible values include: "uri_file", "uri_folder", "mltable", "custom_model",
     "mlflow_model", "triton_model".
    :vartype job_output_type: str or ~azure.mgmt.machinelearningservices.models.JobOutputType
    """

    _validation = {
        'job_output_type': {'required': True},
    }

    _attribute_map = {
        'asset_name': {'key': 'assetName', 'type': 'str'},
        'mode': {'key': 'mode', 'type': 'str'},
        'uri': {'key': 'uri', 'type': 'str'},
        'description': {'key': 'description', 'type': 'str'},
        'job_output_type': {'key': 'jobOutputType', 'type': 'str'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword asset_name: Output Asset Name.
        :paramtype asset_name: str
        :keyword mode: Output Asset Delivery Mode. Possible values include: "ReadWriteMount", "Upload",
         "Direct".
        :paramtype mode: str or ~azure.mgmt.machinelearningservices.models.OutputDeliveryMode
        :keyword uri: Output Asset URI.
        :paramtype uri: str
        :keyword description: Description for the output.
        :paramtype description: str
        """
        super(UriFolderJobOutput, self).__init__(**kwargs)
        self.asset_name = kwargs.get('asset_name', None)
        self.mode = kwargs.get('mode', None)
        self.uri = kwargs.get('uri', None)
        self.job_output_type = 'uri_folder'  # type: str
        self.description = kwargs.get('description', None)


class Usage(msrest.serialization.Model):
    """Describes AML Resource Usage.

    Variables are only populated by the server, and will be ignored when sending a request.

    :ivar id: Specifies the resource ID.
    :vartype id: str
    :ivar aml_workspace_location: Region of the AML workspace in the id.
    :vartype aml_workspace_location: str
    :ivar type: Specifies the resource type.
    :vartype type: str
    :ivar unit: An enum describing the unit of usage measurement. Possible values include: "Count".
    :vartype unit: str or ~azure.mgmt.machinelearningservices.models.UsageUnit
    :ivar current_value: The current usage of the resource.
    :vartype current_value: long
    :ivar limit: The maximum permitted usage of the resource.
    :vartype limit: long
    :ivar name: The name of the type of usage.
    :vartype name: ~azure.mgmt.machinelearningservices.models.UsageName
    """

    _validation = {
        'id': {'readonly': True},
        'aml_workspace_location': {'readonly': True},
        'type': {'readonly': True},
        'unit': {'readonly': True},
        'current_value': {'readonly': True},
        'limit': {'readonly': True},
        'name': {'readonly': True},
    }

    _attribute_map = {
        'id': {'key': 'id', 'type': 'str'},
        'aml_workspace_location': {'key': 'amlWorkspaceLocation', 'type': 'str'},
        'type': {'key': 'type', 'type': 'str'},
        'unit': {'key': 'unit', 'type': 'str'},
        'current_value': {'key': 'currentValue', 'type': 'long'},
        'limit': {'key': 'limit', 'type': 'long'},
        'name': {'key': 'name', 'type': 'UsageName'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        """
        super(Usage, self).__init__(**kwargs)
        self.id = None
        self.aml_workspace_location = None
        self.type = None
        self.unit = None
        self.current_value = None
        self.limit = None
        self.name = None


class UsageAndQuotaDetails(msrest.serialization.Model):
    """UsageAndQuotaDetails.

    :ivar model_collection: Model collection name.
    :vartype model_collection: str
    :ivar quota: The total number of quota.
    :vartype quota: long
    :ivar usage_details: Usage details for each deployment.
    :vartype usage_details: list[~azure.mgmt.machinelearningservices.models.PTUDeploymentUsage]
    """

    _attribute_map = {
        'model_collection': {'key': 'modelCollection', 'type': 'str'},
        'quota': {'key': 'quota', 'type': 'long'},
        'usage_details': {'key': 'usageDetails', 'type': '[PTUDeploymentUsage]'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword model_collection: Model collection name.
        :paramtype model_collection: str
        :keyword quota: The total number of quota.
        :paramtype quota: long
        :keyword usage_details: Usage details for each deployment.
        :paramtype usage_details: list[~azure.mgmt.machinelearningservices.models.PTUDeploymentUsage]
        """
        super(UsageAndQuotaDetails, self).__init__(**kwargs)
        self.model_collection = kwargs.get('model_collection', None)
        self.quota = kwargs.get('quota', None)
        self.usage_details = kwargs.get('usage_details', None)


class UsageAndQuotaDetailsArmPaginatedResult(msrest.serialization.Model):
    """A paginated list of UsageAndQuotaDetails entities.

    :ivar next_link: The link to the next page of UsageAndQuotaDetails objects. If null, there are
     no additional pages.
    :vartype next_link: str
    :ivar value: An array of objects of type UsageAndQuotaDetails.
    :vartype value: list[~azure.mgmt.machinelearningservices.models.UsageAndQuotaDetails]
    """

    _attribute_map = {
        'next_link': {'key': 'nextLink', 'type': 'str'},
        'value': {'key': 'value', 'type': '[UsageAndQuotaDetails]'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword next_link: The link to the next page of UsageAndQuotaDetails objects. If null, there
         are no additional pages.
        :paramtype next_link: str
        :keyword value: An array of objects of type UsageAndQuotaDetails.
        :paramtype value: list[~azure.mgmt.machinelearningservices.models.UsageAndQuotaDetails]
        """
        super(UsageAndQuotaDetailsArmPaginatedResult, self).__init__(**kwargs)
        self.next_link = kwargs.get('next_link', None)
        self.value = kwargs.get('value', None)


class UsageName(msrest.serialization.Model):
    """The Usage Names.

    Variables are only populated by the server, and will be ignored when sending a request.

    :ivar value: The name of the resource.
    :vartype value: str
    :ivar localized_value: The localized name of the resource.
    :vartype localized_value: str
    """

    _validation = {
        'value': {'readonly': True},
        'localized_value': {'readonly': True},
    }

    _attribute_map = {
        'value': {'key': 'value', 'type': 'str'},
        'localized_value': {'key': 'localizedValue', 'type': 'str'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        """
        super(UsageName, self).__init__(**kwargs)
        self.value = None
        self.localized_value = None


class UserAccountCredentials(msrest.serialization.Model):
    """Settings for user account that gets created on each on the nodes of a compute.

    All required parameters must be populated in order to send to Azure.

    :ivar admin_user_name: Required. Name of the administrator user account which can be used to
     SSH to nodes.
    :vartype admin_user_name: str
    :ivar admin_user_ssh_public_key: SSH public key of the administrator user account.
    :vartype admin_user_ssh_public_key: str
    :ivar admin_user_password: Password of the administrator user account.
    :vartype admin_user_password: str
    """

    _validation = {
        'admin_user_name': {'required': True},
    }

    _attribute_map = {
        'admin_user_name': {'key': 'adminUserName', 'type': 'str'},
        'admin_user_ssh_public_key': {'key': 'adminUserSshPublicKey', 'type': 'str'},
        'admin_user_password': {'key': 'adminUserPassword', 'type': 'str'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword admin_user_name: Required. Name of the administrator user account which can be used to
         SSH to nodes.
        :paramtype admin_user_name: str
        :keyword admin_user_ssh_public_key: SSH public key of the administrator user account.
        :paramtype admin_user_ssh_public_key: str
        :keyword admin_user_password: Password of the administrator user account.
        :paramtype admin_user_password: str
        """
        super(UserAccountCredentials, self).__init__(**kwargs)
        self.admin_user_name = kwargs['admin_user_name']
        self.admin_user_ssh_public_key = kwargs.get('admin_user_ssh_public_key', None)
        self.admin_user_password = kwargs.get('admin_user_password', None)


class UserAssignedIdentity(msrest.serialization.Model):
    """User assigned identity properties.

    Variables are only populated by the server, and will be ignored when sending a request.

    :ivar principal_id: The principal ID of the assigned identity.
    :vartype principal_id: str
    :ivar client_id: The client ID of the assigned identity.
    :vartype client_id: str
    """

    _validation = {
        'principal_id': {'readonly': True},
        'client_id': {'readonly': True},
    }

    _attribute_map = {
        'principal_id': {'key': 'principalId', 'type': 'str'},
        'client_id': {'key': 'clientId', 'type': 'str'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        """
        super(UserAssignedIdentity, self).__init__(**kwargs)
        self.principal_id = None
        self.client_id = None


class UserCreatedAcrAccount(msrest.serialization.Model):
    """UserCreatedAcrAccount.

    :ivar arm_resource_id: ARM ResourceId of a resource.
    :vartype arm_resource_id: ~azure.mgmt.machinelearningservices.models.ArmResourceId
    """

    _attribute_map = {
        'arm_resource_id': {'key': 'armResourceId', 'type': 'ArmResourceId'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword arm_resource_id: ARM ResourceId of a resource.
        :paramtype arm_resource_id: ~azure.mgmt.machinelearningservices.models.ArmResourceId
        """
        super(UserCreatedAcrAccount, self).__init__(**kwargs)
        self.arm_resource_id = kwargs.get('arm_resource_id', None)


class UserCreatedStorageAccount(msrest.serialization.Model):
    """UserCreatedStorageAccount.

    :ivar arm_resource_id: ARM ResourceId of a resource.
    :vartype arm_resource_id: ~azure.mgmt.machinelearningservices.models.ArmResourceId
    """

    _attribute_map = {
        'arm_resource_id': {'key': 'armResourceId', 'type': 'ArmResourceId'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword arm_resource_id: ARM ResourceId of a resource.
        :paramtype arm_resource_id: ~azure.mgmt.machinelearningservices.models.ArmResourceId
        """
        super(UserCreatedStorageAccount, self).__init__(**kwargs)
        self.arm_resource_id = kwargs.get('arm_resource_id', None)


class UserIdentity(IdentityConfiguration):
    """User identity configuration.

    All required parameters must be populated in order to send to Azure.

    :ivar identity_type: Required. [Required] Specifies the type of identity framework.Constant
     filled by server. Possible values include: "Managed", "AMLToken", "UserIdentity".
    :vartype identity_type: str or
     ~azure.mgmt.machinelearningservices.models.IdentityConfigurationType
    """

    _validation = {
        'identity_type': {'required': True},
    }

    _attribute_map = {
        'identity_type': {'key': 'identityType', 'type': 'str'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        """
        super(UserIdentity, self).__init__(**kwargs)
        self.identity_type = 'UserIdentity'  # type: str


class UsernamePasswordAuthTypeWorkspaceConnectionProperties(WorkspaceConnectionPropertiesV2):
    """UsernamePasswordAuthTypeWorkspaceConnectionProperties.

    Variables are only populated by the server, and will be ignored when sending a request.

    All required parameters must be populated in order to send to Azure.

    :ivar auth_type: Required. Authentication type of the connection target.Constant filled by
     server. Possible values include: "PAT", "ManagedIdentity", "UsernamePassword", "None", "SAS",
     "AccountKey", "ServicePrincipal", "AccessKey", "ApiKey", "CustomKeys", "OAuth2", "AAD".
    :vartype auth_type: str or ~azure.mgmt.machinelearningservices.models.ConnectionAuthType
    :ivar category: Category of the connection. Possible values include: "PythonFeed",
     "ContainerRegistry", "Git", "S3", "Snowflake", "AzureSqlDb", "AzureSynapseAnalytics",
     "AzureMySqlDb", "AzurePostgresDb", "ADLSGen2", "Redis", "ApiKey", "AzureOpenAI", "AIServices",
     "CognitiveSearch", "CognitiveService", "CustomKeys", "AzureBlob", "AzureOneLake", "CosmosDb",
     "CosmosDbMongoDbApi", "AzureDataExplorer", "AzureMariaDb", "AzureDatabricksDeltaLake",
     "AzureSqlMi", "AzureTableStorage", "AmazonRdsForOracle", "AmazonRdsForSqlServer",
     "AmazonRedshift", "Db2", "Drill", "GoogleBigQuery", "Greenplum", "Hbase", "Hive", "Impala",
     "Informix", "MariaDb", "MicrosoftAccess", "MySql", "Netezza", "Oracle", "Phoenix",
     "PostgreSql", "Presto", "SapOpenHub", "SapBw", "SapHana", "SapTable", "Spark", "SqlServer",
     "Sybase", "Teradata", "Vertica", "Pinecone", "Cassandra", "Couchbase", "MongoDbV2",
     "MongoDbAtlas", "AmazonS3Compatible", "FileServer", "FtpServer", "GoogleCloudStorage", "Hdfs",
     "OracleCloudStorage", "Sftp", "GenericHttp", "ODataRest", "Odbc", "GenericRest", "AmazonMws",
     "Concur", "Dynamics", "DynamicsAx", "DynamicsCrm", "GoogleAdWords", "Hubspot", "Jira",
     "Magento", "Marketo", "Office365", "Eloqua", "Responsys", "OracleServiceCloud", "PayPal",
     "QuickBooks", "Salesforce", "SalesforceServiceCloud", "SalesforceMarketingCloud",
     "SapCloudForCustomer", "SapEcc", "ServiceNow", "SharePointOnlineList", "Shopify", "Square",
     "WebTable", "Xero", "Zoho", "GenericContainerRegistry", "Elasticsearch", "OpenAI", "Serp",
     "BingLLMSearch", "Serverless", "ManagedOnlineEndpoint".
    :vartype category: str or ~azure.mgmt.machinelearningservices.models.ConnectionCategory
    :ivar created_by_workspace_arm_id:
    :vartype created_by_workspace_arm_id: str
    :ivar error:
    :vartype error: str
    :ivar expiry_time:
    :vartype expiry_time: ~datetime.datetime
    :ivar group: Group based on connection category. Possible values include: "Azure", "AzureAI",
     "Database", "NoSQL", "File", "GenericProtocol", "ServicesAndApps".
    :vartype group: str or ~azure.mgmt.machinelearningservices.models.ConnectionGroup
    :ivar is_shared_to_all:
    :vartype is_shared_to_all: bool
    :ivar metadata: Store user metadata for this connection.
    :vartype metadata: dict[str, str]
    :ivar pe_requirement: Possible values include: "Required", "NotRequired", "NotApplicable".
    :vartype pe_requirement: str or ~azure.mgmt.machinelearningservices.models.ManagedPERequirement
    :ivar pe_status: Possible values include: "Inactive", "Active", "NotApplicable".
    :vartype pe_status: str or ~azure.mgmt.machinelearningservices.models.ManagedPEStatus
    :ivar shared_user_list:
    :vartype shared_user_list: list[str]
    :ivar target:
    :vartype target: str
    :ivar use_workspace_managed_identity:
    :vartype use_workspace_managed_identity: bool
    :ivar credentials:
    :vartype credentials:
     ~azure.mgmt.machinelearningservices.models.WorkspaceConnectionUsernamePassword
    """

    _validation = {
        'auth_type': {'required': True},
        'created_by_workspace_arm_id': {'readonly': True},
        'group': {'readonly': True},
    }

    _attribute_map = {
        'auth_type': {'key': 'authType', 'type': 'str'},
        'category': {'key': 'category', 'type': 'str'},
        'created_by_workspace_arm_id': {'key': 'createdByWorkspaceArmId', 'type': 'str'},
        'error': {'key': 'error', 'type': 'str'},
        'expiry_time': {'key': 'expiryTime', 'type': 'iso-8601'},
        'group': {'key': 'group', 'type': 'str'},
        'is_shared_to_all': {'key': 'isSharedToAll', 'type': 'bool'},
        'metadata': {'key': 'metadata', 'type': '{str}'},
        'pe_requirement': {'key': 'peRequirement', 'type': 'str'},
        'pe_status': {'key': 'peStatus', 'type': 'str'},
        'shared_user_list': {'key': 'sharedUserList', 'type': '[str]'},
        'target': {'key': 'target', 'type': 'str'},
        'use_workspace_managed_identity': {'key': 'useWorkspaceManagedIdentity', 'type': 'bool'},
        'credentials': {'key': 'credentials', 'type': 'WorkspaceConnectionUsernamePassword'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword category: Category of the connection. Possible values include: "PythonFeed",
         "ContainerRegistry", "Git", "S3", "Snowflake", "AzureSqlDb", "AzureSynapseAnalytics",
         "AzureMySqlDb", "AzurePostgresDb", "ADLSGen2", "Redis", "ApiKey", "AzureOpenAI", "AIServices",
         "CognitiveSearch", "CognitiveService", "CustomKeys", "AzureBlob", "AzureOneLake", "CosmosDb",
         "CosmosDbMongoDbApi", "AzureDataExplorer", "AzureMariaDb", "AzureDatabricksDeltaLake",
         "AzureSqlMi", "AzureTableStorage", "AmazonRdsForOracle", "AmazonRdsForSqlServer",
         "AmazonRedshift", "Db2", "Drill", "GoogleBigQuery", "Greenplum", "Hbase", "Hive", "Impala",
         "Informix", "MariaDb", "MicrosoftAccess", "MySql", "Netezza", "Oracle", "Phoenix",
         "PostgreSql", "Presto", "SapOpenHub", "SapBw", "SapHana", "SapTable", "Spark", "SqlServer",
         "Sybase", "Teradata", "Vertica", "Pinecone", "Cassandra", "Couchbase", "MongoDbV2",
         "MongoDbAtlas", "AmazonS3Compatible", "FileServer", "FtpServer", "GoogleCloudStorage", "Hdfs",
         "OracleCloudStorage", "Sftp", "GenericHttp", "ODataRest", "Odbc", "GenericRest", "AmazonMws",
         "Concur", "Dynamics", "DynamicsAx", "DynamicsCrm", "GoogleAdWords", "Hubspot", "Jira",
         "Magento", "Marketo", "Office365", "Eloqua", "Responsys", "OracleServiceCloud", "PayPal",
         "QuickBooks", "Salesforce", "SalesforceServiceCloud", "SalesforceMarketingCloud",
         "SapCloudForCustomer", "SapEcc", "ServiceNow", "SharePointOnlineList", "Shopify", "Square",
         "WebTable", "Xero", "Zoho", "GenericContainerRegistry", "Elasticsearch", "OpenAI", "Serp",
         "BingLLMSearch", "Serverless", "ManagedOnlineEndpoint".
        :paramtype category: str or ~azure.mgmt.machinelearningservices.models.ConnectionCategory
        :keyword error:
        :paramtype error: str
        :keyword expiry_time:
        :paramtype expiry_time: ~datetime.datetime
        :keyword is_shared_to_all:
        :paramtype is_shared_to_all: bool
        :keyword metadata: Store user metadata for this connection.
        :paramtype metadata: dict[str, str]
        :keyword pe_requirement: Possible values include: "Required", "NotRequired", "NotApplicable".
        :paramtype pe_requirement: str or
         ~azure.mgmt.machinelearningservices.models.ManagedPERequirement
        :keyword pe_status: Possible values include: "Inactive", "Active", "NotApplicable".
        :paramtype pe_status: str or ~azure.mgmt.machinelearningservices.models.ManagedPEStatus
        :keyword shared_user_list:
        :paramtype shared_user_list: list[str]
        :keyword target:
        :paramtype target: str
        :keyword use_workspace_managed_identity:
        :paramtype use_workspace_managed_identity: bool
        :keyword credentials:
        :paramtype credentials:
         ~azure.mgmt.machinelearningservices.models.WorkspaceConnectionUsernamePassword
        """
        super(UsernamePasswordAuthTypeWorkspaceConnectionProperties, self).__init__(**kwargs)
        self.auth_type = 'UsernamePassword'  # type: str
        self.credentials = kwargs.get('credentials', None)


class VirtualMachineSchema(msrest.serialization.Model):
    """VirtualMachineSchema.

    :ivar properties:
    :vartype properties: ~azure.mgmt.machinelearningservices.models.VirtualMachineSchemaProperties
    """

    _attribute_map = {
        'properties': {'key': 'properties', 'type': 'VirtualMachineSchemaProperties'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword properties:
        :paramtype properties:
         ~azure.mgmt.machinelearningservices.models.VirtualMachineSchemaProperties
        """
        super(VirtualMachineSchema, self).__init__(**kwargs)
        self.properties = kwargs.get('properties', None)


class VirtualMachine(Compute, VirtualMachineSchema):
    """A Machine Learning compute based on Azure Virtual Machines.

    Variables are only populated by the server, and will be ignored when sending a request.

    All required parameters must be populated in order to send to Azure.

    :ivar properties:
    :vartype properties: ~azure.mgmt.machinelearningservices.models.VirtualMachineSchemaProperties
    :ivar compute_type: Required. The type of compute.Constant filled by server. Possible values
     include: "AKS", "Kubernetes", "AmlCompute", "ComputeInstance", "DataFactory", "VirtualMachine",
     "HDInsight", "Databricks", "DataLakeAnalytics", "SynapseSpark".
    :vartype compute_type: str or ~azure.mgmt.machinelearningservices.models.ComputeType
    :ivar compute_location: Location for the underlying compute.
    :vartype compute_location: str
    :ivar provisioning_state: The provision state of the cluster. Valid values are Unknown,
     Updating, Provisioning, Succeeded, and Failed. Possible values include: "Unknown", "Updating",
     "Creating", "Deleting", "Succeeded", "Failed", "Canceled".
    :vartype provisioning_state: str or
     ~azure.mgmt.machinelearningservices.models.ProvisioningState
    :ivar description: The description of the Machine Learning compute.
    :vartype description: str
    :ivar created_on: The time at which the compute was created.
    :vartype created_on: ~datetime.datetime
    :ivar modified_on: The time at which the compute was last modified.
    :vartype modified_on: ~datetime.datetime
    :ivar resource_id: ARM resource id of the underlying compute.
    :vartype resource_id: str
    :ivar provisioning_errors: Errors during provisioning.
    :vartype provisioning_errors: list[~azure.mgmt.machinelearningservices.models.ErrorResponse]
    :ivar is_attached_compute: Indicating whether the compute was provisioned by user and brought
     from outside if true, or machine learning service provisioned it if false.
    :vartype is_attached_compute: bool
    :ivar disable_local_auth: Opt-out of local authentication and ensure customers can use only MSI
     and AAD exclusively for authentication.
    :vartype disable_local_auth: bool
    """

    _validation = {
        'compute_type': {'required': True},
        'provisioning_state': {'readonly': True},
        'created_on': {'readonly': True},
        'modified_on': {'readonly': True},
        'provisioning_errors': {'readonly': True},
        'is_attached_compute': {'readonly': True},
    }

    _attribute_map = {
        'properties': {'key': 'properties', 'type': 'VirtualMachineSchemaProperties'},
        'compute_type': {'key': 'computeType', 'type': 'str'},
        'compute_location': {'key': 'computeLocation', 'type': 'str'},
        'provisioning_state': {'key': 'provisioningState', 'type': 'str'},
        'description': {'key': 'description', 'type': 'str'},
        'created_on': {'key': 'createdOn', 'type': 'iso-8601'},
        'modified_on': {'key': 'modifiedOn', 'type': 'iso-8601'},
        'resource_id': {'key': 'resourceId', 'type': 'str'},
        'provisioning_errors': {'key': 'provisioningErrors', 'type': '[ErrorResponse]'},
        'is_attached_compute': {'key': 'isAttachedCompute', 'type': 'bool'},
        'disable_local_auth': {'key': 'disableLocalAuth', 'type': 'bool'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword properties:
        :paramtype properties:
         ~azure.mgmt.machinelearningservices.models.VirtualMachineSchemaProperties
        :keyword compute_location: Location for the underlying compute.
        :paramtype compute_location: str
        :keyword description: The description of the Machine Learning compute.
        :paramtype description: str
        :keyword resource_id: ARM resource id of the underlying compute.
        :paramtype resource_id: str
        :keyword disable_local_auth: Opt-out of local authentication and ensure customers can use only
         MSI and AAD exclusively for authentication.
        :paramtype disable_local_auth: bool
        """
        super(VirtualMachine, self).__init__(**kwargs)
        self.properties = kwargs.get('properties', None)
        self.compute_type = 'VirtualMachine'  # type: str
        self.compute_location = kwargs.get('compute_location', None)
        self.provisioning_state = None
        self.description = kwargs.get('description', None)
        self.created_on = None
        self.modified_on = None
        self.resource_id = kwargs.get('resource_id', None)
        self.provisioning_errors = None
        self.is_attached_compute = None
        self.disable_local_auth = kwargs.get('disable_local_auth', None)


class VirtualMachineImage(msrest.serialization.Model):
    """Virtual Machine image for Windows AML Compute.

    All required parameters must be populated in order to send to Azure.

    :ivar id: Required. Virtual Machine image path.
    :vartype id: str
    """

    _validation = {
        'id': {'required': True},
    }

    _attribute_map = {
        'id': {'key': 'id', 'type': 'str'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword id: Required. Virtual Machine image path.
        :paramtype id: str
        """
        super(VirtualMachineImage, self).__init__(**kwargs)
        self.id = kwargs['id']


class VirtualMachineSchemaProperties(msrest.serialization.Model):
    """VirtualMachineSchemaProperties.

    :ivar virtual_machine_size: Virtual Machine size.
    :vartype virtual_machine_size: str
    :ivar ssh_port: Port open for ssh connections.
    :vartype ssh_port: int
    :ivar notebook_server_port: Notebook server port open for ssh connections.
    :vartype notebook_server_port: int
    :ivar address: Public IP address of the virtual machine.
    :vartype address: str
    :ivar administrator_account: Admin credentials for virtual machine.
    :vartype administrator_account:
     ~azure.mgmt.machinelearningservices.models.VirtualMachineSshCredentials
    :ivar is_notebook_instance_compute: Indicates whether this compute will be used for running
     notebooks.
    :vartype is_notebook_instance_compute: bool
    """

    _attribute_map = {
        'virtual_machine_size': {'key': 'virtualMachineSize', 'type': 'str'},
        'ssh_port': {'key': 'sshPort', 'type': 'int'},
        'notebook_server_port': {'key': 'notebookServerPort', 'type': 'int'},
        'address': {'key': 'address', 'type': 'str'},
        'administrator_account': {'key': 'administratorAccount', 'type': 'VirtualMachineSshCredentials'},
        'is_notebook_instance_compute': {'key': 'isNotebookInstanceCompute', 'type': 'bool'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword virtual_machine_size: Virtual Machine size.
        :paramtype virtual_machine_size: str
        :keyword ssh_port: Port open for ssh connections.
        :paramtype ssh_port: int
        :keyword notebook_server_port: Notebook server port open for ssh connections.
        :paramtype notebook_server_port: int
        :keyword address: Public IP address of the virtual machine.
        :paramtype address: str
        :keyword administrator_account: Admin credentials for virtual machine.
        :paramtype administrator_account:
         ~azure.mgmt.machinelearningservices.models.VirtualMachineSshCredentials
        :keyword is_notebook_instance_compute: Indicates whether this compute will be used for running
         notebooks.
        :paramtype is_notebook_instance_compute: bool
        """
        super(VirtualMachineSchemaProperties, self).__init__(**kwargs)
        self.virtual_machine_size = kwargs.get('virtual_machine_size', None)
        self.ssh_port = kwargs.get('ssh_port', None)
        self.notebook_server_port = kwargs.get('notebook_server_port', None)
        self.address = kwargs.get('address', None)
        self.administrator_account = kwargs.get('administrator_account', None)
        self.is_notebook_instance_compute = kwargs.get('is_notebook_instance_compute', None)


class VirtualMachineSecretsSchema(msrest.serialization.Model):
    """VirtualMachineSecretsSchema.

    :ivar administrator_account: Admin credentials for virtual machine.
    :vartype administrator_account:
     ~azure.mgmt.machinelearningservices.models.VirtualMachineSshCredentials
    """

    _attribute_map = {
        'administrator_account': {'key': 'administratorAccount', 'type': 'VirtualMachineSshCredentials'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword administrator_account: Admin credentials for virtual machine.
        :paramtype administrator_account:
         ~azure.mgmt.machinelearningservices.models.VirtualMachineSshCredentials
        """
        super(VirtualMachineSecretsSchema, self).__init__(**kwargs)
        self.administrator_account = kwargs.get('administrator_account', None)


class VirtualMachineSecrets(ComputeSecrets, VirtualMachineSecretsSchema):
    """Secrets related to a Machine Learning compute based on AKS.

    All required parameters must be populated in order to send to Azure.

    :ivar administrator_account: Admin credentials for virtual machine.
    :vartype administrator_account:
     ~azure.mgmt.machinelearningservices.models.VirtualMachineSshCredentials
    :ivar compute_type: Required. The type of compute.Constant filled by server. Possible values
     include: "AKS", "Kubernetes", "AmlCompute", "ComputeInstance", "DataFactory", "VirtualMachine",
     "HDInsight", "Databricks", "DataLakeAnalytics", "SynapseSpark".
    :vartype compute_type: str or ~azure.mgmt.machinelearningservices.models.ComputeType
    """

    _validation = {
        'compute_type': {'required': True},
    }

    _attribute_map = {
        'administrator_account': {'key': 'administratorAccount', 'type': 'VirtualMachineSshCredentials'},
        'compute_type': {'key': 'computeType', 'type': 'str'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword administrator_account: Admin credentials for virtual machine.
        :paramtype administrator_account:
         ~azure.mgmt.machinelearningservices.models.VirtualMachineSshCredentials
        """
        super(VirtualMachineSecrets, self).__init__(**kwargs)
        self.administrator_account = kwargs.get('administrator_account', None)
        self.compute_type = 'VirtualMachine'  # type: str


class VirtualMachineSize(msrest.serialization.Model):
    """Describes the properties of a VM size.

    Variables are only populated by the server, and will be ignored when sending a request.

    :ivar name: The name of the virtual machine size.
    :vartype name: str
    :ivar family: The family name of the virtual machine size.
    :vartype family: str
    :ivar v_cp_us: The number of vCPUs supported by the virtual machine size.
    :vartype v_cp_us: int
    :ivar gpus: The number of gPUs supported by the virtual machine size.
    :vartype gpus: int
    :ivar os_vhd_size_mb: The OS VHD disk size, in MB, allowed by the virtual machine size.
    :vartype os_vhd_size_mb: int
    :ivar max_resource_volume_mb: The resource volume size, in MB, allowed by the virtual machine
     size.
    :vartype max_resource_volume_mb: int
    :ivar memory_gb: The amount of memory, in GB, supported by the virtual machine size.
    :vartype memory_gb: float
    :ivar low_priority_capable: Specifies if the virtual machine size supports low priority VMs.
    :vartype low_priority_capable: bool
    :ivar premium_io: Specifies if the virtual machine size supports premium IO.
    :vartype premium_io: bool
    :ivar estimated_vm_prices: The estimated price information for using a VM.
    :vartype estimated_vm_prices: ~azure.mgmt.machinelearningservices.models.EstimatedVMPrices
    :ivar supported_compute_types: Specifies the compute types supported by the virtual machine
     size.
    :vartype supported_compute_types: list[str]
    """

    _validation = {
        'name': {'readonly': True},
        'family': {'readonly': True},
        'v_cp_us': {'readonly': True},
        'gpus': {'readonly': True},
        'os_vhd_size_mb': {'readonly': True},
        'max_resource_volume_mb': {'readonly': True},
        'memory_gb': {'readonly': True},
        'low_priority_capable': {'readonly': True},
        'premium_io': {'readonly': True},
    }

    _attribute_map = {
        'name': {'key': 'name', 'type': 'str'},
        'family': {'key': 'family', 'type': 'str'},
        'v_cp_us': {'key': 'vCPUs', 'type': 'int'},
        'gpus': {'key': 'gpus', 'type': 'int'},
        'os_vhd_size_mb': {'key': 'osVhdSizeMB', 'type': 'int'},
        'max_resource_volume_mb': {'key': 'maxResourceVolumeMB', 'type': 'int'},
        'memory_gb': {'key': 'memoryGB', 'type': 'float'},
        'low_priority_capable': {'key': 'lowPriorityCapable', 'type': 'bool'},
        'premium_io': {'key': 'premiumIO', 'type': 'bool'},
        'estimated_vm_prices': {'key': 'estimatedVMPrices', 'type': 'EstimatedVMPrices'},
        'supported_compute_types': {'key': 'supportedComputeTypes', 'type': '[str]'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword estimated_vm_prices: The estimated price information for using a VM.
        :paramtype estimated_vm_prices: ~azure.mgmt.machinelearningservices.models.EstimatedVMPrices
        :keyword supported_compute_types: Specifies the compute types supported by the virtual machine
         size.
        :paramtype supported_compute_types: list[str]
        """
        super(VirtualMachineSize, self).__init__(**kwargs)
        self.name = None
        self.family = None
        self.v_cp_us = None
        self.gpus = None
        self.os_vhd_size_mb = None
        self.max_resource_volume_mb = None
        self.memory_gb = None
        self.low_priority_capable = None
        self.premium_io = None
        self.estimated_vm_prices = kwargs.get('estimated_vm_prices', None)
        self.supported_compute_types = kwargs.get('supported_compute_types', None)


class VirtualMachineSizeListResult(msrest.serialization.Model):
    """The List Virtual Machine size operation response.

    :ivar value: The list of virtual machine sizes supported by AmlCompute.
    :vartype value: list[~azure.mgmt.machinelearningservices.models.VirtualMachineSize]
    """

    _attribute_map = {
        'value': {'key': 'value', 'type': '[VirtualMachineSize]'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword value: The list of virtual machine sizes supported by AmlCompute.
        :paramtype value: list[~azure.mgmt.machinelearningservices.models.VirtualMachineSize]
        """
        super(VirtualMachineSizeListResult, self).__init__(**kwargs)
        self.value = kwargs.get('value', None)


class VirtualMachineSshCredentials(msrest.serialization.Model):
    """Admin credentials for virtual machine.

    :ivar username: Username of admin account.
    :vartype username: str
    :ivar password: Password of admin account.
    :vartype password: str
    :ivar public_key_data: Public key data.
    :vartype public_key_data: str
    :ivar private_key_data: Private key data.
    :vartype private_key_data: str
    """

    _attribute_map = {
        'username': {'key': 'username', 'type': 'str'},
        'password': {'key': 'password', 'type': 'str'},
        'public_key_data': {'key': 'publicKeyData', 'type': 'str'},
        'private_key_data': {'key': 'privateKeyData', 'type': 'str'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword username: Username of admin account.
        :paramtype username: str
        :keyword password: Password of admin account.
        :paramtype password: str
        :keyword public_key_data: Public key data.
        :paramtype public_key_data: str
        :keyword private_key_data: Private key data.
        :paramtype private_key_data: str
        """
        super(VirtualMachineSshCredentials, self).__init__(**kwargs)
        self.username = kwargs.get('username', None)
        self.password = kwargs.get('password', None)
        self.public_key_data = kwargs.get('public_key_data', None)
        self.private_key_data = kwargs.get('private_key_data', None)


class VolumeDefinition(msrest.serialization.Model):
    """VolumeDefinition.

    :ivar type: Type of Volume Definition. Possible Values: bind,volume,tmpfs,npipe. Possible
     values include: "bind", "volume", "tmpfs", "npipe". Default value: "bind".
    :vartype type: str or ~azure.mgmt.machinelearningservices.models.VolumeDefinitionType
    :ivar read_only: Indicate whether to mount volume as readOnly. Default value for this is false.
    :vartype read_only: bool
    :ivar source: Source of the mount. For bind mounts this is the host path.
    :vartype source: str
    :ivar target: Target of the mount. For bind mounts this is the path in the container.
    :vartype target: str
    :ivar consistency: Consistency of the volume.
    :vartype consistency: str
    :ivar bind: Bind Options of the mount.
    :vartype bind: ~azure.mgmt.machinelearningservices.models.BindOptions
    :ivar volume: Volume Options of the mount.
    :vartype volume: ~azure.mgmt.machinelearningservices.models.VolumeOptions
    :ivar tmpfs: tmpfs option of the mount.
    :vartype tmpfs: ~azure.mgmt.machinelearningservices.models.TmpfsOptions
    """

    _attribute_map = {
        'type': {'key': 'type', 'type': 'str'},
        'read_only': {'key': 'readOnly', 'type': 'bool'},
        'source': {'key': 'source', 'type': 'str'},
        'target': {'key': 'target', 'type': 'str'},
        'consistency': {'key': 'consistency', 'type': 'str'},
        'bind': {'key': 'bind', 'type': 'BindOptions'},
        'volume': {'key': 'volume', 'type': 'VolumeOptions'},
        'tmpfs': {'key': 'tmpfs', 'type': 'TmpfsOptions'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword type: Type of Volume Definition. Possible Values: bind,volume,tmpfs,npipe. Possible
         values include: "bind", "volume", "tmpfs", "npipe". Default value: "bind".
        :paramtype type: str or ~azure.mgmt.machinelearningservices.models.VolumeDefinitionType
        :keyword read_only: Indicate whether to mount volume as readOnly. Default value for this is
         false.
        :paramtype read_only: bool
        :keyword source: Source of the mount. For bind mounts this is the host path.
        :paramtype source: str
        :keyword target: Target of the mount. For bind mounts this is the path in the container.
        :paramtype target: str
        :keyword consistency: Consistency of the volume.
        :paramtype consistency: str
        :keyword bind: Bind Options of the mount.
        :paramtype bind: ~azure.mgmt.machinelearningservices.models.BindOptions
        :keyword volume: Volume Options of the mount.
        :paramtype volume: ~azure.mgmt.machinelearningservices.models.VolumeOptions
        :keyword tmpfs: tmpfs option of the mount.
        :paramtype tmpfs: ~azure.mgmt.machinelearningservices.models.TmpfsOptions
        """
        super(VolumeDefinition, self).__init__(**kwargs)
        self.type = kwargs.get('type', "bind")
        self.read_only = kwargs.get('read_only', None)
        self.source = kwargs.get('source', None)
        self.target = kwargs.get('target', None)
        self.consistency = kwargs.get('consistency', None)
        self.bind = kwargs.get('bind', None)
        self.volume = kwargs.get('volume', None)
        self.tmpfs = kwargs.get('tmpfs', None)


class VolumeOptions(msrest.serialization.Model):
    """VolumeOptions.

    :ivar nocopy: Indicate whether volume is nocopy.
    :vartype nocopy: bool
    """

    _attribute_map = {
        'nocopy': {'key': 'nocopy', 'type': 'bool'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword nocopy: Indicate whether volume is nocopy.
        :paramtype nocopy: bool
        """
        super(VolumeOptions, self).__init__(**kwargs)
        self.nocopy = kwargs.get('nocopy', None)


class VulnerabilityDetails(msrest.serialization.Model):
    """VulnerabilityDetails.

    Variables are only populated by the server, and will be ignored when sending a request.

    :ivar cve: CVE id.
    :vartype cve: str
    :ivar cve_url: CVE url.
    :vartype cve_url: str
    :ivar due_date: DueDate for vulnerability. Provider data or PublishDate + 30 days.
    :vartype due_date: ~datetime.datetime
    :ivar id: Vulnerability ID.
    :vartype id: str
    :ivar package_details: Dependency details.
    :vartype package_details: list[~azure.mgmt.machinelearningservices.models.PackageDetails]
    :ivar patchable: Indicates if there is a known patch for vulnerability.
    :vartype patchable: bool
    :ivar provider_id: Vulnerability ID from provider.
    :vartype provider_id: str
    :ivar publish_date: Vulnerability publish date.
    :vartype publish_date: ~datetime.datetime
    :ivar risk: Vulnerability Risk value. Possible values include: "UNKNOWN", "CRITICAL", "HIGH",
     "MEDIUM", "LOW".
    :vartype risk: str or ~azure.mgmt.machinelearningservices.models.VulnerabilityRisk
    :ivar solution: Vulnerability description.
    :vartype solution: str
    :ivar title: Vulnerability name.
    :vartype title: str
    :ivar vendor_id: Vendor vulnerability ID (USN, GH Advisory, etc).
    :vartype vendor_id: str
    :ivar vendor_url: Vendor vulnerability url.
    :vartype vendor_url: str
    """

    _validation = {
        'id': {'readonly': True},
    }

    _attribute_map = {
        'cve': {'key': 'cve', 'type': 'str'},
        'cve_url': {'key': 'cveUrl', 'type': 'str'},
        'due_date': {'key': 'dueDate', 'type': 'iso-8601'},
        'id': {'key': 'id', 'type': 'str'},
        'package_details': {'key': 'packageDetails', 'type': '[PackageDetails]'},
        'patchable': {'key': 'patchable', 'type': 'bool'},
        'provider_id': {'key': 'providerId', 'type': 'str'},
        'publish_date': {'key': 'publishDate', 'type': 'iso-8601'},
        'risk': {'key': 'risk', 'type': 'str'},
        'solution': {'key': 'solution', 'type': 'str'},
        'title': {'key': 'title', 'type': 'str'},
        'vendor_id': {'key': 'vendorId', 'type': 'str'},
        'vendor_url': {'key': 'vendorUrl', 'type': 'str'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword cve: CVE id.
        :paramtype cve: str
        :keyword cve_url: CVE url.
        :paramtype cve_url: str
        :keyword due_date: DueDate for vulnerability. Provider data or PublishDate + 30 days.
        :paramtype due_date: ~datetime.datetime
        :keyword package_details: Dependency details.
        :paramtype package_details: list[~azure.mgmt.machinelearningservices.models.PackageDetails]
        :keyword patchable: Indicates if there is a known patch for vulnerability.
        :paramtype patchable: bool
        :keyword provider_id: Vulnerability ID from provider.
        :paramtype provider_id: str
        :keyword publish_date: Vulnerability publish date.
        :paramtype publish_date: ~datetime.datetime
        :keyword risk: Vulnerability Risk value. Possible values include: "UNKNOWN", "CRITICAL",
         "HIGH", "MEDIUM", "LOW".
        :paramtype risk: str or ~azure.mgmt.machinelearningservices.models.VulnerabilityRisk
        :keyword solution: Vulnerability description.
        :paramtype solution: str
        :keyword title: Vulnerability name.
        :paramtype title: str
        :keyword vendor_id: Vendor vulnerability ID (USN, GH Advisory, etc).
        :paramtype vendor_id: str
        :keyword vendor_url: Vendor vulnerability url.
        :paramtype vendor_url: str
        """
        super(VulnerabilityDetails, self).__init__(**kwargs)
        self.cve = kwargs.get('cve', None)
        self.cve_url = kwargs.get('cve_url', None)
        self.due_date = kwargs.get('due_date', None)
        self.id = None
        self.package_details = kwargs.get('package_details', None)
        self.patchable = kwargs.get('patchable', None)
        self.provider_id = kwargs.get('provider_id', None)
        self.publish_date = kwargs.get('publish_date', None)
        self.risk = kwargs.get('risk', None)
        self.solution = kwargs.get('solution', None)
        self.title = kwargs.get('title', None)
        self.vendor_id = kwargs.get('vendor_id', None)
        self.vendor_url = kwargs.get('vendor_url', None)


class VulnerabilityFindings(msrest.serialization.Model):
    """VulnerabilityFindings.

    Variables are only populated by the server, and will be ignored when sending a request.

    :ivar asset_id: AssetId (Image digest).
    :vartype asset_id: str
    :ivar critical_findings_count: Number of critical findings.
    :vartype critical_findings_count: int
    :ivar data: List of vulnerability findings.
    :vartype data: list[~azure.mgmt.machinelearningservices.models.VulnerabilityDetails]
    :ivar generated_time: Time the report was generated.
    :vartype generated_time: ~datetime.datetime
    :ivar high_findings_count: Number of high findings.
    :vartype high_findings_count: int
    :ivar last_scan_date: Scan result date.
    :vartype last_scan_date: ~datetime.datetime
    :ivar scanner: Vulnerability scanner name.
    :vartype scanner: str
    :ivar source: Data source (internal).
    :vartype source: str
    :ivar total_findings_count: Total findings count.
    :vartype total_findings_count: int
    """

    _validation = {
        'critical_findings_count': {'readonly': True},
        'high_findings_count': {'readonly': True},
        'total_findings_count': {'readonly': True},
    }

    _attribute_map = {
        'asset_id': {'key': 'assetId', 'type': 'str'},
        'critical_findings_count': {'key': 'criticalFindingsCount', 'type': 'int'},
        'data': {'key': 'data', 'type': '[VulnerabilityDetails]'},
        'generated_time': {'key': 'generatedTime', 'type': 'iso-8601'},
        'high_findings_count': {'key': 'highFindingsCount', 'type': 'int'},
        'last_scan_date': {'key': 'lastScanDate', 'type': 'iso-8601'},
        'scanner': {'key': 'scanner', 'type': 'str'},
        'source': {'key': 'source', 'type': 'str'},
        'total_findings_count': {'key': 'totalFindingsCount', 'type': 'int'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword asset_id: AssetId (Image digest).
        :paramtype asset_id: str
        :keyword data: List of vulnerability findings.
        :paramtype data: list[~azure.mgmt.machinelearningservices.models.VulnerabilityDetails]
        :keyword generated_time: Time the report was generated.
        :paramtype generated_time: ~datetime.datetime
        :keyword last_scan_date: Scan result date.
        :paramtype last_scan_date: ~datetime.datetime
        :keyword scanner: Vulnerability scanner name.
        :paramtype scanner: str
        :keyword source: Data source (internal).
        :paramtype source: str
        """
        super(VulnerabilityFindings, self).__init__(**kwargs)
        self.asset_id = kwargs.get('asset_id', None)
        self.critical_findings_count = None
        self.data = kwargs.get('data', None)
        self.generated_time = kwargs.get('generated_time', None)
        self.high_findings_count = None
        self.last_scan_date = kwargs.get('last_scan_date', None)
        self.scanner = kwargs.get('scanner', None)
        self.source = kwargs.get('source', None)
        self.total_findings_count = None


class Workspace(Resource):
    """An object that represents a machine learning workspace.

    Variables are only populated by the server, and will be ignored when sending a request.

    :ivar id: Fully qualified resource ID for the resource. Ex -
     /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}.
    :vartype id: str
    :ivar name: The name of the resource.
    :vartype name: str
    :ivar type: The type of the resource. E.g. "Microsoft.Compute/virtualMachines" or
     "Microsoft.Storage/storageAccounts".
    :vartype type: str
    :ivar system_data: Azure Resource Manager metadata containing createdBy and modifiedBy
     information.
    :vartype system_data: ~azure.mgmt.machinelearningservices.models.SystemData
    :ivar identity: Managed service identity (system assigned and/or user assigned identities).
    :vartype identity: ~azure.mgmt.machinelearningservices.models.ManagedServiceIdentity
    :ivar kind:
    :vartype kind: str
    :ivar location:
    :vartype location: str
    :ivar sku: Optional. This field is required to be implemented by the RP because AML is
     supporting more than one tier.
    :vartype sku: ~azure.mgmt.machinelearningservices.models.Sku
    :ivar tags: A set of tags. Dictionary of :code:`<string>`.
    :vartype tags: dict[str, str]
    :ivar agents_endpoint_uri: The URI of agents endpoint associated with this workspace.
    :vartype agents_endpoint_uri: str
    :ivar allow_public_access_when_behind_vnet: The flag to indicate whether to allow public access
     when behind VNet.
    :vartype allow_public_access_when_behind_vnet: bool
    :ivar allow_role_assignment_on_rg: The flag to indicate whether we will do role assignment for
     the workspace MSI on resource group level.
    :vartype allow_role_assignment_on_rg: bool
    :ivar application_insights: ARM id of the application insights associated with this workspace.
    :vartype application_insights: str
    :ivar associated_workspaces:
    :vartype associated_workspaces: list[str]
    :ivar container_registries:
    :vartype container_registries: list[str]
    :ivar container_registry: ARM id of the container registry associated with this workspace.
    :vartype container_registry: str
    :ivar description: The description of this workspace.
    :vartype description: str
    :ivar discovery_url: Url for the discovery service to identify regional endpoints for machine
     learning experimentation services.
    :vartype discovery_url: str
    :ivar enable_data_isolation:
    :vartype enable_data_isolation: bool
    :ivar enable_service_side_cmk_encryption:
    :vartype enable_service_side_cmk_encryption: bool
    :ivar enable_simplified_cmk: Flag to tell if simplified CMK should be enabled for this
     workspace.
    :vartype enable_simplified_cmk: bool
    :ivar enable_software_bill_of_materials: Flag to tell if SoftwareBillOfMaterials should be
     enabled for this workspace.
    :vartype enable_software_bill_of_materials: bool
    :ivar encryption:
    :vartype encryption: ~azure.mgmt.machinelearningservices.models.EncryptionProperty
    :ivar existing_workspaces:
    :vartype existing_workspaces: list[str]
    :ivar feature_store_settings: Settings for feature store type workspace.
    :vartype feature_store_settings:
     ~azure.mgmt.machinelearningservices.models.FeatureStoreSettings
    :ivar friendly_name: The friendly name for this workspace. This name in mutable.
    :vartype friendly_name: str
    :ivar hbi_workspace: The flag to signal HBI data in the workspace and reduce diagnostic data
     collected by the service.
    :vartype hbi_workspace: bool
    :ivar hub_resource_id:
    :vartype hub_resource_id: str
    :ivar image_build_compute: The compute name for image build.
    :vartype image_build_compute: str
    :ivar ip_allowlist: The list of IPv4  addresses that are allowed to access the workspace.
    :vartype ip_allowlist: list[str]
    :ivar key_vault: ARM id of the key vault associated with this workspace. This cannot be changed
     once the workspace has been created.
    :vartype key_vault: str
    :ivar key_vaults:
    :vartype key_vaults: list[str]
    :ivar managed_network: Managed Network settings for a machine learning workspace.
    :vartype managed_network: ~azure.mgmt.machinelearningservices.models.ManagedNetworkSettings
    :ivar ml_flow_tracking_uri: The URI associated with this workspace that machine learning flow
     must point at to set up tracking.
    :vartype ml_flow_tracking_uri: str
    :ivar network_acls: A set of rules governing the network accessibility of the workspace.
    :vartype network_acls: ~azure.mgmt.machinelearningservices.models.NetworkAcls
    :ivar notebook_info: The notebook info of Azure ML workspace.
    :vartype notebook_info: ~azure.mgmt.machinelearningservices.models.NotebookResourceInfo
    :ivar primary_user_assigned_identity: The user assigned identity resource id that represents
     the workspace identity.
    :vartype primary_user_assigned_identity: str
    :ivar private_endpoint_connections: The list of private endpoint connections in the workspace.
    :vartype private_endpoint_connections:
     list[~azure.mgmt.machinelearningservices.models.PrivateEndpointConnection]
    :ivar private_link_count: Count of private connections in the workspace.
    :vartype private_link_count: int
    :ivar provision_network_now: Set to trigger the provisioning of the managed VNet with the
     default Options when creating a Workspace with the managed VNet enabled, or else it does
     nothing.
    :vartype provision_network_now: bool
    :ivar provisioning_state: The current deployment state of workspace resource. The
     provisioningState is to indicate states for resource provisioning. Possible values include:
     "Unknown", "Updating", "Creating", "Deleting", "Succeeded", "Failed", "Canceled".
    :vartype provisioning_state: str or
     ~azure.mgmt.machinelearningservices.models.ProvisioningState
    :ivar public_network_access: Whether requests from Public Network are allowed. Possible values
     include: "Enabled", "Disabled".
    :vartype public_network_access: str or
     ~azure.mgmt.machinelearningservices.models.PublicNetworkAccessType
    :ivar serverless_compute_settings: Settings for serverless compute in a workspace.
    :vartype serverless_compute_settings:
     ~azure.mgmt.machinelearningservices.models.ServerlessComputeSettings
    :ivar service_managed_resources_settings: The service managed resource settings.
    :vartype service_managed_resources_settings:
     ~azure.mgmt.machinelearningservices.models.ServiceManagedResourcesSettings
    :ivar service_provisioned_resource_group: The name of the managed resource group created by
     workspace RP in customer subscription if the workspace is CMK workspace.
    :vartype service_provisioned_resource_group: str
    :ivar shared_private_link_resources: The list of shared private link resources in this
     workspace.
    :vartype shared_private_link_resources:
     list[~azure.mgmt.machinelearningservices.models.SharedPrivateLinkResource]
    :ivar soft_delete_retention_in_days: Retention time in days after workspace get soft deleted.
    :vartype soft_delete_retention_in_days: int
    :ivar storage_account: ARM id of the storage account associated with this workspace. This
     cannot be changed once the workspace has been created.
    :vartype storage_account: str
    :ivar storage_accounts:
    :vartype storage_accounts: list[str]
    :ivar storage_hns_enabled: If the storage associated with the workspace has hierarchical
     namespace(HNS) enabled.
    :vartype storage_hns_enabled: bool
    :ivar system_datastores_auth_mode: The auth mode used for accessing the system datastores of
     the workspace. Possible values include: "AccessKey", "Identity", "UserDelegationSAS".
    :vartype system_datastores_auth_mode: str or
     ~azure.mgmt.machinelearningservices.models.SystemDatastoresAuthMode
    :ivar tenant_id: The tenant id associated with this workspace.
    :vartype tenant_id: str
    :ivar v1_legacy_mode: Enabling v1_legacy_mode may prevent you from using features provided by
     the v2 API.
    :vartype v1_legacy_mode: bool
    :ivar workspace_hub_config: WorkspaceHub's configuration object.
    :vartype workspace_hub_config: ~azure.mgmt.machinelearningservices.models.WorkspaceHubConfig
    :ivar workspace_id: The immutable id associated with this workspace.
    :vartype workspace_id: str
    """

    _validation = {
        'id': {'readonly': True},
        'name': {'readonly': True},
        'type': {'readonly': True},
        'system_data': {'readonly': True},
        'agents_endpoint_uri': {'readonly': True},
        'ml_flow_tracking_uri': {'readonly': True},
        'notebook_info': {'readonly': True},
        'private_endpoint_connections': {'readonly': True},
        'private_link_count': {'readonly': True},
        'provisioning_state': {'readonly': True},
        'service_provisioned_resource_group': {'readonly': True},
        'storage_hns_enabled': {'readonly': True},
        'tenant_id': {'readonly': True},
        'workspace_id': {'readonly': True},
    }

    _attribute_map = {
        'id': {'key': 'id', 'type': 'str'},
        'name': {'key': 'name', 'type': 'str'},
        'type': {'key': 'type', 'type': 'str'},
        'system_data': {'key': 'systemData', 'type': 'SystemData'},
        'identity': {'key': 'identity', 'type': 'ManagedServiceIdentity'},
        'kind': {'key': 'kind', 'type': 'str'},
        'location': {'key': 'location', 'type': 'str'},
        'sku': {'key': 'sku', 'type': 'Sku'},
        'tags': {'key': 'tags', 'type': '{str}'},
        'agents_endpoint_uri': {'key': 'properties.agentsEndpointUri', 'type': 'str'},
        'allow_public_access_when_behind_vnet': {'key': 'properties.allowPublicAccessWhenBehindVnet', 'type': 'bool'},
        'allow_role_assignment_on_rg': {'key': 'properties.allowRoleAssignmentOnRG', 'type': 'bool'},
        'application_insights': {'key': 'properties.applicationInsights', 'type': 'str'},
        'associated_workspaces': {'key': 'properties.associatedWorkspaces', 'type': '[str]'},
        'container_registries': {'key': 'properties.containerRegistries', 'type': '[str]'},
        'container_registry': {'key': 'properties.containerRegistry', 'type': 'str'},
        'description': {'key': 'properties.description', 'type': 'str'},
        'discovery_url': {'key': 'properties.discoveryUrl', 'type': 'str'},
        'enable_data_isolation': {'key': 'properties.enableDataIsolation', 'type': 'bool'},
        'enable_service_side_cmk_encryption': {'key': 'properties.enableServiceSideCMKEncryption', 'type': 'bool'},
        'enable_simplified_cmk': {'key': 'properties.enableSimplifiedCmk', 'type': 'bool'},
        'enable_software_bill_of_materials': {'key': 'properties.enableSoftwareBillOfMaterials', 'type': 'bool'},
        'encryption': {'key': 'properties.encryption', 'type': 'EncryptionProperty'},
        'existing_workspaces': {'key': 'properties.existingWorkspaces', 'type': '[str]'},
        'feature_store_settings': {'key': 'properties.featureStoreSettings', 'type': 'FeatureStoreSettings'},
        'friendly_name': {'key': 'properties.friendlyName', 'type': 'str'},
        'hbi_workspace': {'key': 'properties.hbiWorkspace', 'type': 'bool'},
        'hub_resource_id': {'key': 'properties.hubResourceId', 'type': 'str'},
        'image_build_compute': {'key': 'properties.imageBuildCompute', 'type': 'str'},
        'ip_allowlist': {'key': 'properties.ipAllowlist', 'type': '[str]'},
        'key_vault': {'key': 'properties.keyVault', 'type': 'str'},
        'key_vaults': {'key': 'properties.keyVaults', 'type': '[str]'},
        'managed_network': {'key': 'properties.managedNetwork', 'type': 'ManagedNetworkSettings'},
        'ml_flow_tracking_uri': {'key': 'properties.mlFlowTrackingUri', 'type': 'str'},
        'network_acls': {'key': 'properties.networkAcls', 'type': 'NetworkAcls'},
        'notebook_info': {'key': 'properties.notebookInfo', 'type': 'NotebookResourceInfo'},
        'primary_user_assigned_identity': {'key': 'properties.primaryUserAssignedIdentity', 'type': 'str'},
        'private_endpoint_connections': {'key': 'properties.privateEndpointConnections', 'type': '[PrivateEndpointConnection]'},
        'private_link_count': {'key': 'properties.privateLinkCount', 'type': 'int'},
        'provision_network_now': {'key': 'properties.provisionNetworkNow', 'type': 'bool'},
        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
        'public_network_access': {'key': 'properties.publicNetworkAccess', 'type': 'str'},
        'serverless_compute_settings': {'key': 'properties.serverlessComputeSettings', 'type': 'ServerlessComputeSettings'},
        'service_managed_resources_settings': {'key': 'properties.serviceManagedResourcesSettings', 'type': 'ServiceManagedResourcesSettings'},
        'service_provisioned_resource_group': {'key': 'properties.serviceProvisionedResourceGroup', 'type': 'str'},
        'shared_private_link_resources': {'key': 'properties.sharedPrivateLinkResources', 'type': '[SharedPrivateLinkResource]'},
        'soft_delete_retention_in_days': {'key': 'properties.softDeleteRetentionInDays', 'type': 'int'},
        'storage_account': {'key': 'properties.storageAccount', 'type': 'str'},
        'storage_accounts': {'key': 'properties.storageAccounts', 'type': '[str]'},
        'storage_hns_enabled': {'key': 'properties.storageHnsEnabled', 'type': 'bool'},
        'system_datastores_auth_mode': {'key': 'properties.systemDatastoresAuthMode', 'type': 'str'},
        'tenant_id': {'key': 'properties.tenantId', 'type': 'str'},
        'v1_legacy_mode': {'key': 'properties.v1LegacyMode', 'type': 'bool'},
        'workspace_hub_config': {'key': 'properties.workspaceHubConfig', 'type': 'WorkspaceHubConfig'},
        'workspace_id': {'key': 'properties.workspaceId', 'type': 'str'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword identity: Managed service identity (system assigned and/or user assigned identities).
        :paramtype identity: ~azure.mgmt.machinelearningservices.models.ManagedServiceIdentity
        :keyword kind:
        :paramtype kind: str
        :keyword location:
        :paramtype location: str
        :keyword sku: Optional. This field is required to be implemented by the RP because AML is
         supporting more than one tier.
        :paramtype sku: ~azure.mgmt.machinelearningservices.models.Sku
        :keyword tags: A set of tags. Dictionary of :code:`<string>`.
        :paramtype tags: dict[str, str]
        :keyword allow_public_access_when_behind_vnet: The flag to indicate whether to allow public
         access when behind VNet.
        :paramtype allow_public_access_when_behind_vnet: bool
        :keyword allow_role_assignment_on_rg: The flag to indicate whether we will do role assignment
         for the workspace MSI on resource group level.
        :paramtype allow_role_assignment_on_rg: bool
        :keyword application_insights: ARM id of the application insights associated with this
         workspace.
        :paramtype application_insights: str
        :keyword associated_workspaces:
        :paramtype associated_workspaces: list[str]
        :keyword container_registries:
        :paramtype container_registries: list[str]
        :keyword container_registry: ARM id of the container registry associated with this workspace.
        :paramtype container_registry: str
        :keyword description: The description of this workspace.
        :paramtype description: str
        :keyword discovery_url: Url for the discovery service to identify regional endpoints for
         machine learning experimentation services.
        :paramtype discovery_url: str
        :keyword enable_data_isolation:
        :paramtype enable_data_isolation: bool
        :keyword enable_service_side_cmk_encryption:
        :paramtype enable_service_side_cmk_encryption: bool
        :keyword enable_simplified_cmk: Flag to tell if simplified CMK should be enabled for this
         workspace.
        :paramtype enable_simplified_cmk: bool
        :keyword enable_software_bill_of_materials: Flag to tell if SoftwareBillOfMaterials should be
         enabled for this workspace.
        :paramtype enable_software_bill_of_materials: bool
        :keyword encryption:
        :paramtype encryption: ~azure.mgmt.machinelearningservices.models.EncryptionProperty
        :keyword existing_workspaces:
        :paramtype existing_workspaces: list[str]
        :keyword feature_store_settings: Settings for feature store type workspace.
        :paramtype feature_store_settings:
         ~azure.mgmt.machinelearningservices.models.FeatureStoreSettings
        :keyword friendly_name: The friendly name for this workspace. This name in mutable.
        :paramtype friendly_name: str
        :keyword hbi_workspace: The flag to signal HBI data in the workspace and reduce diagnostic data
         collected by the service.
        :paramtype hbi_workspace: bool
        :keyword hub_resource_id:
        :paramtype hub_resource_id: str
        :keyword image_build_compute: The compute name for image build.
        :paramtype image_build_compute: str
        :keyword ip_allowlist: The list of IPv4  addresses that are allowed to access the workspace.
        :paramtype ip_allowlist: list[str]
        :keyword key_vault: ARM id of the key vault associated with this workspace. This cannot be
         changed once the workspace has been created.
        :paramtype key_vault: str
        :keyword key_vaults:
        :paramtype key_vaults: list[str]
        :keyword managed_network: Managed Network settings for a machine learning workspace.
        :paramtype managed_network: ~azure.mgmt.machinelearningservices.models.ManagedNetworkSettings
        :keyword network_acls: A set of rules governing the network accessibility of the workspace.
        :paramtype network_acls: ~azure.mgmt.machinelearningservices.models.NetworkAcls
        :keyword primary_user_assigned_identity: The user assigned identity resource id that represents
         the workspace identity.
        :paramtype primary_user_assigned_identity: str
        :keyword provision_network_now: Set to trigger the provisioning of the managed VNet with the
         default Options when creating a Workspace with the managed VNet enabled, or else it does
         nothing.
        :paramtype provision_network_now: bool
        :keyword public_network_access: Whether requests from Public Network are allowed. Possible
         values include: "Enabled", "Disabled".
        :paramtype public_network_access: str or
         ~azure.mgmt.machinelearningservices.models.PublicNetworkAccessType
        :keyword serverless_compute_settings: Settings for serverless compute in a workspace.
        :paramtype serverless_compute_settings:
         ~azure.mgmt.machinelearningservices.models.ServerlessComputeSettings
        :keyword service_managed_resources_settings: The service managed resource settings.
        :paramtype service_managed_resources_settings:
         ~azure.mgmt.machinelearningservices.models.ServiceManagedResourcesSettings
        :keyword shared_private_link_resources: The list of shared private link resources in this
         workspace.
        :paramtype shared_private_link_resources:
         list[~azure.mgmt.machinelearningservices.models.SharedPrivateLinkResource]
        :keyword soft_delete_retention_in_days: Retention time in days after workspace get soft
         deleted.
        :paramtype soft_delete_retention_in_days: int
        :keyword storage_account: ARM id of the storage account associated with this workspace. This
         cannot be changed once the workspace has been created.
        :paramtype storage_account: str
        :keyword storage_accounts:
        :paramtype storage_accounts: list[str]
        :keyword system_datastores_auth_mode: The auth mode used for accessing the system datastores of
         the workspace. Possible values include: "AccessKey", "Identity", "UserDelegationSAS".
        :paramtype system_datastores_auth_mode: str or
         ~azure.mgmt.machinelearningservices.models.SystemDatastoresAuthMode
        :keyword v1_legacy_mode: Enabling v1_legacy_mode may prevent you from using features provided
         by the v2 API.
        :paramtype v1_legacy_mode: bool
        :keyword workspace_hub_config: WorkspaceHub's configuration object.
        :paramtype workspace_hub_config: ~azure.mgmt.machinelearningservices.models.WorkspaceHubConfig
        """
        super(Workspace, self).__init__(**kwargs)
        self.identity = kwargs.get('identity', None)
        self.kind = kwargs.get('kind', None)
        self.location = kwargs.get('location', None)
        self.sku = kwargs.get('sku', None)
        self.tags = kwargs.get('tags', None)
        self.agents_endpoint_uri = None
        self.allow_public_access_when_behind_vnet = kwargs.get('allow_public_access_when_behind_vnet', None)
        self.allow_role_assignment_on_rg = kwargs.get('allow_role_assignment_on_rg', None)
        self.application_insights = kwargs.get('application_insights', None)
        self.associated_workspaces = kwargs.get('associated_workspaces', None)
        self.container_registries = kwargs.get('container_registries', None)
        self.container_registry = kwargs.get('container_registry', None)
        self.description = kwargs.get('description', None)
        self.discovery_url = kwargs.get('discovery_url', None)
        self.enable_data_isolation = kwargs.get('enable_data_isolation', None)
        self.enable_service_side_cmk_encryption = kwargs.get('enable_service_side_cmk_encryption', None)
        self.enable_simplified_cmk = kwargs.get('enable_simplified_cmk', None)
        self.enable_software_bill_of_materials = kwargs.get('enable_software_bill_of_materials', None)
        self.encryption = kwargs.get('encryption', None)
        self.existing_workspaces = kwargs.get('existing_workspaces', None)
        self.feature_store_settings = kwargs.get('feature_store_settings', None)
        self.friendly_name = kwargs.get('friendly_name', None)
        self.hbi_workspace = kwargs.get('hbi_workspace', None)
        self.hub_resource_id = kwargs.get('hub_resource_id', None)
        self.image_build_compute = kwargs.get('image_build_compute', None)
        self.ip_allowlist = kwargs.get('ip_allowlist', None)
        self.key_vault = kwargs.get('key_vault', None)
        self.key_vaults = kwargs.get('key_vaults', None)
        self.managed_network = kwargs.get('managed_network', None)
        self.ml_flow_tracking_uri = None
        self.network_acls = kwargs.get('network_acls', None)
        self.notebook_info = None
        self.primary_user_assigned_identity = kwargs.get('primary_user_assigned_identity', None)
        self.private_endpoint_connections = None
        self.private_link_count = None
        self.provision_network_now = kwargs.get('provision_network_now', None)
        self.provisioning_state = None
        self.public_network_access = kwargs.get('public_network_access', None)
        self.serverless_compute_settings = kwargs.get('serverless_compute_settings', None)
        self.service_managed_resources_settings = kwargs.get('service_managed_resources_settings', None)
        self.service_provisioned_resource_group = None
        self.shared_private_link_resources = kwargs.get('shared_private_link_resources', None)
        self.soft_delete_retention_in_days = kwargs.get('soft_delete_retention_in_days', None)
        self.storage_account = kwargs.get('storage_account', None)
        self.storage_accounts = kwargs.get('storage_accounts', None)
        self.storage_hns_enabled = None
        self.system_datastores_auth_mode = kwargs.get('system_datastores_auth_mode', None)
        self.tenant_id = None
        self.v1_legacy_mode = kwargs.get('v1_legacy_mode', None)
        self.workspace_hub_config = kwargs.get('workspace_hub_config', None)
        self.workspace_id = None


class WorkspaceConnectionAccessKey(msrest.serialization.Model):
    """WorkspaceConnectionAccessKey.

    :ivar access_key_id:
    :vartype access_key_id: str
    :ivar secret_access_key:
    :vartype secret_access_key: str
    """

    _attribute_map = {
        'access_key_id': {'key': 'accessKeyId', 'type': 'str'},
        'secret_access_key': {'key': 'secretAccessKey', 'type': 'str'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword access_key_id:
        :paramtype access_key_id: str
        :keyword secret_access_key:
        :paramtype secret_access_key: str
        """
        super(WorkspaceConnectionAccessKey, self).__init__(**kwargs)
        self.access_key_id = kwargs.get('access_key_id', None)
        self.secret_access_key = kwargs.get('secret_access_key', None)


class WorkspaceConnectionAccountKey(msrest.serialization.Model):
    """Account key object for workspace connection credential.

    :ivar key:
    :vartype key: str
    """

    _attribute_map = {
        'key': {'key': 'key', 'type': 'str'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword key:
        :paramtype key: str
        """
        super(WorkspaceConnectionAccountKey, self).__init__(**kwargs)
        self.key = kwargs.get('key', None)


class WorkspaceConnectionApiKey(msrest.serialization.Model):
    """Api key object for workspace connection credential.

    :ivar key:
    :vartype key: str
    """

    _attribute_map = {
        'key': {'key': 'key', 'type': 'str'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword key:
        :paramtype key: str
        """
        super(WorkspaceConnectionApiKey, self).__init__(**kwargs)
        self.key = kwargs.get('key', None)


class WorkspaceConnectionManagedIdentity(msrest.serialization.Model):
    """WorkspaceConnectionManagedIdentity.

    :ivar client_id:
    :vartype client_id: str
    :ivar resource_id:
    :vartype resource_id: str
    """

    _attribute_map = {
        'client_id': {'key': 'clientId', 'type': 'str'},
        'resource_id': {'key': 'resourceId', 'type': 'str'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword client_id:
        :paramtype client_id: str
        :keyword resource_id:
        :paramtype resource_id: str
        """
        super(WorkspaceConnectionManagedIdentity, self).__init__(**kwargs)
        self.client_id = kwargs.get('client_id', None)
        self.resource_id = kwargs.get('resource_id', None)


class WorkspaceConnectionOAuth2(msrest.serialization.Model):
    """ClientId and ClientSecret are required. Other properties are optional
depending on each OAuth2 provider's implementation.

    :ivar auth_url: Required by Concur connection category.
    :vartype auth_url: str
    :ivar client_id: Client id in the format of UUID.
    :vartype client_id: str
    :ivar client_secret:
    :vartype client_secret: str
    :ivar developer_token: Required by GoogleAdWords connection category.
    :vartype developer_token: str
    :ivar password:
    :vartype password: str
    :ivar refresh_token: Required by GoogleBigQuery, GoogleAdWords, Hubspot, QuickBooks, Square,
     Xero, Zoho
     where user needs to get RefreshToken offline.
    :vartype refresh_token: str
    :ivar tenant_id: Required by QuickBooks and Xero connection categories.
    :vartype tenant_id: str
    :ivar username: Concur, ServiceNow auth server AccessToken grant type is 'Password'
     which requires UsernamePassword.
    :vartype username: str
    """

    _attribute_map = {
        'auth_url': {'key': 'authUrl', 'type': 'str'},
        'client_id': {'key': 'clientId', 'type': 'str'},
        'client_secret': {'key': 'clientSecret', 'type': 'str'},
        'developer_token': {'key': 'developerToken', 'type': 'str'},
        'password': {'key': 'password', 'type': 'str'},
        'refresh_token': {'key': 'refreshToken', 'type': 'str'},
        'tenant_id': {'key': 'tenantId', 'type': 'str'},
        'username': {'key': 'username', 'type': 'str'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword auth_url: Required by Concur connection category.
        :paramtype auth_url: str
        :keyword client_id: Client id in the format of UUID.
        :paramtype client_id: str
        :keyword client_secret:
        :paramtype client_secret: str
        :keyword developer_token: Required by GoogleAdWords connection category.
        :paramtype developer_token: str
        :keyword password:
        :paramtype password: str
        :keyword refresh_token: Required by GoogleBigQuery, GoogleAdWords, Hubspot, QuickBooks, Square,
         Xero, Zoho
         where user needs to get RefreshToken offline.
        :paramtype refresh_token: str
        :keyword tenant_id: Required by QuickBooks and Xero connection categories.
        :paramtype tenant_id: str
        :keyword username: Concur, ServiceNow auth server AccessToken grant type is 'Password'
         which requires UsernamePassword.
        :paramtype username: str
        """
        super(WorkspaceConnectionOAuth2, self).__init__(**kwargs)
        self.auth_url = kwargs.get('auth_url', None)
        self.client_id = kwargs.get('client_id', None)
        self.client_secret = kwargs.get('client_secret', None)
        self.developer_token = kwargs.get('developer_token', None)
        self.password = kwargs.get('password', None)
        self.refresh_token = kwargs.get('refresh_token', None)
        self.tenant_id = kwargs.get('tenant_id', None)
        self.username = kwargs.get('username', None)


class WorkspaceConnectionPersonalAccessToken(msrest.serialization.Model):
    """WorkspaceConnectionPersonalAccessToken.

    :ivar pat:
    :vartype pat: str
    """

    _attribute_map = {
        'pat': {'key': 'pat', 'type': 'str'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword pat:
        :paramtype pat: str
        """
        super(WorkspaceConnectionPersonalAccessToken, self).__init__(**kwargs)
        self.pat = kwargs.get('pat', None)


class WorkspaceConnectionPropertiesV2BasicResource(Resource):
    """WorkspaceConnectionPropertiesV2BasicResource.

    Variables are only populated by the server, and will be ignored when sending a request.

    All required parameters must be populated in order to send to Azure.

    :ivar id: Fully qualified resource ID for the resource. Ex -
     /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}.
    :vartype id: str
    :ivar name: The name of the resource.
    :vartype name: str
    :ivar type: The type of the resource. E.g. "Microsoft.Compute/virtualMachines" or
     "Microsoft.Storage/storageAccounts".
    :vartype type: str
    :ivar system_data: Azure Resource Manager metadata containing createdBy and modifiedBy
     information.
    :vartype system_data: ~azure.mgmt.machinelearningservices.models.SystemData
    :ivar properties: Required.
    :vartype properties: ~azure.mgmt.machinelearningservices.models.WorkspaceConnectionPropertiesV2
    """

    _validation = {
        'id': {'readonly': True},
        'name': {'readonly': True},
        'type': {'readonly': True},
        'system_data': {'readonly': True},
        'properties': {'required': True},
    }

    _attribute_map = {
        'id': {'key': 'id', 'type': 'str'},
        'name': {'key': 'name', 'type': 'str'},
        'type': {'key': 'type', 'type': 'str'},
        'system_data': {'key': 'systemData', 'type': 'SystemData'},
        'properties': {'key': 'properties', 'type': 'WorkspaceConnectionPropertiesV2'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword properties: Required.
        :paramtype properties:
         ~azure.mgmt.machinelearningservices.models.WorkspaceConnectionPropertiesV2
        """
        super(WorkspaceConnectionPropertiesV2BasicResource, self).__init__(**kwargs)
        self.properties = kwargs['properties']


class WorkspaceConnectionPropertiesV2BasicResourceArmPaginatedResult(msrest.serialization.Model):
    """WorkspaceConnectionPropertiesV2BasicResourceArmPaginatedResult.

    :ivar next_link:
    :vartype next_link: str
    :ivar value:
    :vartype value:
     list[~azure.mgmt.machinelearningservices.models.WorkspaceConnectionPropertiesV2BasicResource]
    """

    _attribute_map = {
        'next_link': {'key': 'nextLink', 'type': 'str'},
        'value': {'key': 'value', 'type': '[WorkspaceConnectionPropertiesV2BasicResource]'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword next_link:
        :paramtype next_link: str
        :keyword value:
        :paramtype value:
         list[~azure.mgmt.machinelearningservices.models.WorkspaceConnectionPropertiesV2BasicResource]
        """
        super(WorkspaceConnectionPropertiesV2BasicResourceArmPaginatedResult, self).__init__(**kwargs)
        self.next_link = kwargs.get('next_link', None)
        self.value = kwargs.get('value', None)


class WorkspaceConnectionServicePrincipal(msrest.serialization.Model):
    """WorkspaceConnectionServicePrincipal.

    :ivar client_id:
    :vartype client_id: str
    :ivar client_secret:
    :vartype client_secret: str
    :ivar tenant_id:
    :vartype tenant_id: str
    """

    _attribute_map = {
        'client_id': {'key': 'clientId', 'type': 'str'},
        'client_secret': {'key': 'clientSecret', 'type': 'str'},
        'tenant_id': {'key': 'tenantId', 'type': 'str'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword client_id:
        :paramtype client_id: str
        :keyword client_secret:
        :paramtype client_secret: str
        :keyword tenant_id:
        :paramtype tenant_id: str
        """
        super(WorkspaceConnectionServicePrincipal, self).__init__(**kwargs)
        self.client_id = kwargs.get('client_id', None)
        self.client_secret = kwargs.get('client_secret', None)
        self.tenant_id = kwargs.get('tenant_id', None)


class WorkspaceConnectionSharedAccessSignature(msrest.serialization.Model):
    """WorkspaceConnectionSharedAccessSignature.

    :ivar sas:
    :vartype sas: str
    """

    _attribute_map = {
        'sas': {'key': 'sas', 'type': 'str'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword sas:
        :paramtype sas: str
        """
        super(WorkspaceConnectionSharedAccessSignature, self).__init__(**kwargs)
        self.sas = kwargs.get('sas', None)


class WorkspaceConnectionUpdateParameter(msrest.serialization.Model):
    """The properties that the machine learning workspace connection will be updated with.

    :ivar properties: The properties that the machine learning workspace connection will be updated
     with.
    :vartype properties: ~azure.mgmt.machinelearningservices.models.WorkspaceConnectionPropertiesV2
    """

    _attribute_map = {
        'properties': {'key': 'properties', 'type': 'WorkspaceConnectionPropertiesV2'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword properties: The properties that the machine learning workspace connection will be
         updated with.
        :paramtype properties:
         ~azure.mgmt.machinelearningservices.models.WorkspaceConnectionPropertiesV2
        """
        super(WorkspaceConnectionUpdateParameter, self).__init__(**kwargs)
        self.properties = kwargs.get('properties', None)


class WorkspaceConnectionUsernamePassword(msrest.serialization.Model):
    """WorkspaceConnectionUsernamePassword.

    :ivar password:
    :vartype password: str
    :ivar security_token: Optional, required by connections like SalesForce for extra security in
     addition to UsernamePassword.
    :vartype security_token: str
    :ivar username:
    :vartype username: str
    """

    _attribute_map = {
        'password': {'key': 'password', 'type': 'str'},
        'security_token': {'key': 'securityToken', 'type': 'str'},
        'username': {'key': 'username', 'type': 'str'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword password:
        :paramtype password: str
        :keyword security_token: Optional, required by connections like SalesForce for extra security
         in addition to UsernamePassword.
        :paramtype security_token: str
        :keyword username:
        :paramtype username: str
        """
        super(WorkspaceConnectionUsernamePassword, self).__init__(**kwargs)
        self.password = kwargs.get('password', None)
        self.security_token = kwargs.get('security_token', None)
        self.username = kwargs.get('username', None)


class WorkspaceHubConfig(msrest.serialization.Model):
    """WorkspaceHub's configuration object.

    :ivar additional_workspace_storage_accounts:
    :vartype additional_workspace_storage_accounts: list[str]
    :ivar default_workspace_resource_group:
    :vartype default_workspace_resource_group: str
    """

    _attribute_map = {
        'additional_workspace_storage_accounts': {'key': 'additionalWorkspaceStorageAccounts', 'type': '[str]'},
        'default_workspace_resource_group': {'key': 'defaultWorkspaceResourceGroup', 'type': 'str'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword additional_workspace_storage_accounts:
        :paramtype additional_workspace_storage_accounts: list[str]
        :keyword default_workspace_resource_group:
        :paramtype default_workspace_resource_group: str
        """
        super(WorkspaceHubConfig, self).__init__(**kwargs)
        self.additional_workspace_storage_accounts = kwargs.get('additional_workspace_storage_accounts', None)
        self.default_workspace_resource_group = kwargs.get('default_workspace_resource_group', None)


class WorkspaceListResult(msrest.serialization.Model):
    """The result of a request to list machine learning workspaces.

    :ivar next_link: The link to the next page constructed using the continuationToken.  If null,
     there are no additional pages.
    :vartype next_link: str
    :ivar value: The list of machine learning workspaces. Since this list may be incomplete, the
     nextLink field should be used to request the next list of machine learning workspaces.
    :vartype value: list[~azure.mgmt.machinelearningservices.models.Workspace]
    """

    _attribute_map = {
        'next_link': {'key': 'nextLink', 'type': 'str'},
        'value': {'key': 'value', 'type': '[Workspace]'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword next_link: The link to the next page constructed using the continuationToken.  If
         null, there are no additional pages.
        :paramtype next_link: str
        :keyword value: The list of machine learning workspaces. Since this list may be incomplete, the
         nextLink field should be used to request the next list of machine learning workspaces.
        :paramtype value: list[~azure.mgmt.machinelearningservices.models.Workspace]
        """
        super(WorkspaceListResult, self).__init__(**kwargs)
        self.next_link = kwargs.get('next_link', None)
        self.value = kwargs.get('value', None)


class WorkspacePrivateEndpointResource(msrest.serialization.Model):
    """The Private Endpoint resource.

    Variables are only populated by the server, and will be ignored when sending a request.

    :ivar id: e.g.
     /subscriptions/{networkSubscriptionId}/resourceGroups/{rgName}/providers/Microsoft.Network/privateEndpoints/{privateEndpointName}.
    :vartype id: str
    :ivar subnet_arm_id: The subnetId that the private endpoint is connected to.
    :vartype subnet_arm_id: str
    """

    _validation = {
        'id': {'readonly': True},
        'subnet_arm_id': {'readonly': True},
    }

    _attribute_map = {
        'id': {'key': 'id', 'type': 'str'},
        'subnet_arm_id': {'key': 'subnetArmId', 'type': 'str'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        """
        super(WorkspacePrivateEndpointResource, self).__init__(**kwargs)
        self.id = None
        self.subnet_arm_id = None


class WorkspaceUpdateParameters(msrest.serialization.Model):
    """The parameters for updating a machine learning workspace.

    :ivar identity: Managed service identity (system assigned and/or user assigned identities).
    :vartype identity: ~azure.mgmt.machinelearningservices.models.ManagedServiceIdentity
    :ivar sku: Optional. This field is required to be implemented by the RP because AML is
     supporting more than one tier.
    :vartype sku: ~azure.mgmt.machinelearningservices.models.Sku
    :ivar tags: A set of tags. The resource tags for the machine learning workspace.
    :vartype tags: dict[str, str]
    :ivar allow_role_assignment_on_rg:
    :vartype allow_role_assignment_on_rg: bool
    :ivar application_insights: ARM id of the application insights associated with this workspace.
    :vartype application_insights: str
    :ivar container_registry: ARM id of the container registry associated with this workspace.
    :vartype container_registry: str
    :ivar description: The description of this workspace.
    :vartype description: str
    :ivar enable_data_isolation:
    :vartype enable_data_isolation: bool
    :ivar enable_software_bill_of_materials: Flag to tell if SoftwareBillOfMaterials should be
     enabled for this workspace.
    :vartype enable_software_bill_of_materials: bool
    :ivar encryption:
    :vartype encryption: ~azure.mgmt.machinelearningservices.models.EncryptionUpdateProperties
    :ivar feature_store_settings: Settings for feature store type workspace.
    :vartype feature_store_settings:
     ~azure.mgmt.machinelearningservices.models.FeatureStoreSettings
    :ivar friendly_name: The friendly name for this workspace. This name in mutable.
    :vartype friendly_name: str
    :ivar image_build_compute: The compute name for image build.
    :vartype image_build_compute: str
    :ivar ip_allowlist: The list of IPv4 addresses that are allowed to access the workspace.
    :vartype ip_allowlist: list[str]
    :ivar managed_network: Managed Network settings for a machine learning workspace.
    :vartype managed_network: ~azure.mgmt.machinelearningservices.models.ManagedNetworkSettings
    :ivar network_acls: A set of rules governing the network accessibility of the workspace.
    :vartype network_acls: ~azure.mgmt.machinelearningservices.models.NetworkAcls
    :ivar primary_user_assigned_identity: The user assigned identity resource id that represents
     the workspace identity.
    :vartype primary_user_assigned_identity: str
    :ivar public_network_access: Whether requests from Public Network are allowed. Possible values
     include: "Enabled", "Disabled".
    :vartype public_network_access: str or
     ~azure.mgmt.machinelearningservices.models.PublicNetworkAccessType
    :ivar serverless_compute_settings: Settings for serverless compute in a workspace.
    :vartype serverless_compute_settings:
     ~azure.mgmt.machinelearningservices.models.ServerlessComputeSettings
    :ivar service_managed_resources_settings: The service managed resource settings.
    :vartype service_managed_resources_settings:
     ~azure.mgmt.machinelearningservices.models.ServiceManagedResourcesSettings
    :ivar soft_delete_retention_in_days: Retention time in days after workspace get soft deleted.
    :vartype soft_delete_retention_in_days: int
    :ivar system_datastores_auth_mode: The auth mode used for accessing the system datastores of
     the workspace. Possible values include: "AccessKey", "Identity", "UserDelegationSAS".
    :vartype system_datastores_auth_mode: str or
     ~azure.mgmt.machinelearningservices.models.SystemDatastoresAuthMode
    :ivar v1_legacy_mode: Enabling v1_legacy_mode may prevent you from using features provided by
     the v2 API.
    :vartype v1_legacy_mode: bool
    """

    _attribute_map = {
        'identity': {'key': 'identity', 'type': 'ManagedServiceIdentity'},
        'sku': {'key': 'sku', 'type': 'Sku'},
        'tags': {'key': 'tags', 'type': '{str}'},
        'allow_role_assignment_on_rg': {'key': 'properties.allowRoleAssignmentOnRG', 'type': 'bool'},
        'application_insights': {'key': 'properties.applicationInsights', 'type': 'str'},
        'container_registry': {'key': 'properties.containerRegistry', 'type': 'str'},
        'description': {'key': 'properties.description', 'type': 'str'},
        'enable_data_isolation': {'key': 'properties.enableDataIsolation', 'type': 'bool'},
        'enable_software_bill_of_materials': {'key': 'properties.enableSoftwareBillOfMaterials', 'type': 'bool'},
        'encryption': {'key': 'properties.encryption', 'type': 'EncryptionUpdateProperties'},
        'feature_store_settings': {'key': 'properties.featureStoreSettings', 'type': 'FeatureStoreSettings'},
        'friendly_name': {'key': 'properties.friendlyName', 'type': 'str'},
        'image_build_compute': {'key': 'properties.imageBuildCompute', 'type': 'str'},
        'ip_allowlist': {'key': 'properties.ipAllowlist', 'type': '[str]'},
        'managed_network': {'key': 'properties.managedNetwork', 'type': 'ManagedNetworkSettings'},
        'network_acls': {'key': 'properties.networkAcls', 'type': 'NetworkAcls'},
        'primary_user_assigned_identity': {'key': 'properties.primaryUserAssignedIdentity', 'type': 'str'},
        'public_network_access': {'key': 'properties.publicNetworkAccess', 'type': 'str'},
        'serverless_compute_settings': {'key': 'properties.serverlessComputeSettings', 'type': 'ServerlessComputeSettings'},
        'service_managed_resources_settings': {'key': 'properties.serviceManagedResourcesSettings', 'type': 'ServiceManagedResourcesSettings'},
        'soft_delete_retention_in_days': {'key': 'properties.softDeleteRetentionInDays', 'type': 'int'},
        'system_datastores_auth_mode': {'key': 'properties.systemDatastoresAuthMode', 'type': 'str'},
        'v1_legacy_mode': {'key': 'properties.v1LegacyMode', 'type': 'bool'},
    }

    def __init__(
        self,
        **kwargs
    ):
        """
        :keyword identity: Managed service identity (system assigned and/or user assigned identities).
        :paramtype identity: ~azure.mgmt.machinelearningservices.models.ManagedServiceIdentity
        :keyword sku: Optional. This field is required to be implemented by the RP because AML is
         supporting more than one tier.
        :paramtype sku: ~azure.mgmt.machinelearningservices.models.Sku
        :keyword tags: A set of tags. The resource tags for the machine learning workspace.
        :paramtype tags: dict[str, str]
        :keyword allow_role_assignment_on_rg:
        :paramtype allow_role_assignment_on_rg: bool
        :keyword application_insights: ARM id of the application insights associated with this
         workspace.
        :paramtype application_insights: str
        :keyword container_registry: ARM id of the container registry associated with this workspace.
        :paramtype container_registry: str
        :keyword description: The description of this workspace.
        :paramtype description: str
        :keyword enable_data_isolation:
        :paramtype enable_data_isolation: bool
        :keyword enable_software_bill_of_materials: Flag to tell if SoftwareBillOfMaterials should be
         enabled for this workspace.
        :paramtype enable_software_bill_of_materials: bool
        :keyword encryption:
        :paramtype encryption: ~azure.mgmt.machinelearningservices.models.EncryptionUpdateProperties
        :keyword feature_store_settings: Settings for feature store type workspace.
        :paramtype feature_store_settings:
         ~azure.mgmt.machinelearningservices.models.FeatureStoreSettings
        :keyword friendly_name: The friendly name for this workspace. This name in mutable.
        :paramtype friendly_name: str
        :keyword image_build_compute: The compute name for image build.
        :paramtype image_build_compute: str
        :keyword ip_allowlist: The list of IPv4 addresses that are allowed to access the workspace.
        :paramtype ip_allowlist: list[str]
        :keyword managed_network: Managed Network settings for a machine learning workspace.
        :paramtype managed_network: ~azure.mgmt.machinelearningservices.models.ManagedNetworkSettings
        :keyword network_acls: A set of rules governing the network accessibility of the workspace.
        :paramtype network_acls: ~azure.mgmt.machinelearningservices.models.NetworkAcls
        :keyword primary_user_assigned_identity: The user assigned identity resource id that represents
         the workspace identity.
        :paramtype primary_user_assigned_identity: str
        :keyword public_network_access: Whether requests from Public Network are allowed. Possible
         values include: "Enabled", "Disabled".
        :paramtype public_network_access: str or
         ~azure.mgmt.machinelearningservices.models.PublicNetworkAccessType
        :keyword serverless_compute_settings: Settings for serverless compute in a workspace.
        :paramtype serverless_compute_settings:
         ~azure.mgmt.machinelearningservices.models.ServerlessComputeSettings
        :keyword service_managed_resources_settings: The service managed resource settings.
        :paramtype service_managed_resources_settings:
         ~azure.mgmt.machinelearningservices.models.ServiceManagedResourcesSettings
        :keyword soft_delete_retention_in_days: Retention time in days after workspace get soft
         deleted.
        :paramtype soft_delete_retention_in_days: int
        :keyword system_datastores_auth_mode: The auth mode used for accessing the system datastores of
         the workspace. Possible values include: "AccessKey", "Identity", "UserDelegationSAS".
        :paramtype system_datastores_auth_mode: str or
         ~azure.mgmt.machinelearningservices.models.SystemDatastoresAuthMode
        :keyword v1_legacy_mode: Enabling v1_legacy_mode may prevent you from using features provided
         by the v2 API.
        :paramtype v1_legacy_mode: bool
        """
        super(WorkspaceUpdateParameters, self).__init__(**kwargs)
        self.identity = kwargs.get('identity', None)
        self.sku = kwargs.get('sku', None)
        self.tags = kwargs.get('tags', None)
        self.allow_role_assignment_on_rg = kwargs.get('allow_role_assignment_on_rg', None)
        self.application_insights = kwargs.get('application_insights', None)
        self.container_registry = kwargs.get('container_registry', None)
        self.description = kwargs.get('description', None)
        self.enable_data_isolation = kwargs.get('enable_data_isolation', None)
        self.enable_software_bill_of_materials = kwargs.get('enable_software_bill_of_materials', None)
        self.encryption = kwargs.get('encryption', None)
        self.feature_store_settings = kwargs.get('feature_store_settings', None)
        self.friendly_name = kwargs.get('friendly_name', None)
        self.image_build_compute = kwargs.get('image_build_compute', None)
        self.ip_allowlist = kwargs.get('ip_allowlist', None)
        self.managed_network = kwargs.get('managed_network', None)
        self.network_acls = kwargs.get('network_acls', None)
        self.primary_user_assigned_identity = kwargs.get('primary_user_assigned_identity', None)
        self.public_network_access = kwargs.get('public_network_access', None)
        self.serverless_compute_settings = kwargs.get('serverless_compute_settings', None)
        self.service_managed_resources_settings = kwargs.get('service_managed_resources_settings', None)
        self.soft_delete_retention_in_days = kwargs.get('soft_delete_retention_in_days', None)
        self.system_datastores_auth_mode = kwargs.get('system_datastores_auth_mode', None)
        self.v1_legacy_mode = kwargs.get('v1_legacy_mode', None)