# 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 .resource import Resource


class DataLakeStoreAccount(Resource):
    """Data Lake Store account information.

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

    :ivar id: Resource Id
    :vartype id: str
    :ivar name: Resource name
    :vartype name: str
    :ivar type: Resource type
    :vartype type: str
    :param location: Resource location
    :type location: str
    :param tags: Resource tags
    :type tags: dict
    :param identity: The Key Vault encryption identity, if any.
    :type identity: :class:`EncryptionIdentity
     <azure.mgmt.datalake.store.models.EncryptionIdentity>`
    :ivar provisioning_state: the provisioning status of the Data Lake Store
     account. Possible values include: 'Failed', 'Creating', 'Running',
     'Succeeded', 'Patching', 'Suspending', 'Resuming', 'Deleting', 'Deleted'
    :vartype provisioning_state: str or :class:`DataLakeStoreAccountStatus
     <azure.mgmt.datalake.store.models.DataLakeStoreAccountStatus>`
    :ivar state: the state of the Data Lake Store account. Possible values
     include: 'Active', 'Suspended'
    :vartype state: str or :class:`DataLakeStoreAccountState
     <azure.mgmt.datalake.store.models.DataLakeStoreAccountState>`
    :ivar creation_time: the account creation time.
    :vartype creation_time: datetime
    :ivar last_modified_time: the account last modified time.
    :vartype last_modified_time: datetime
    :ivar endpoint: the full CName endpoint for this account.
    :vartype endpoint: str
    :ivar account_id: The unique identifier associated with this Data Lake
     Store account.
    :vartype account_id: str
    :param encryption_state: The current state of encryption for this Data
     Lake store account. Possible values include: 'Enabled', 'Disabled'
    :type encryption_state: str or :class:`EncryptionState
     <azure.mgmt.datalake.store.models.EncryptionState>`
    :ivar encryption_provisioning_state: The current state of encryption
     provisioning for this Data Lake store account. Possible values include:
     'Creating', 'Succeeded'
    :vartype encryption_provisioning_state: str or
     :class:`EncryptionProvisioningState
     <azure.mgmt.datalake.store.models.EncryptionProvisioningState>`
    :param encryption_config: The Key Vault encryption configuration.
    :type encryption_config: :class:`EncryptionConfig
     <azure.mgmt.datalake.store.models.EncryptionConfig>`
    :param firewall_state: The current state of the IP address firewall for
     this Data Lake store account. Possible values include: 'Enabled',
     'Disabled'
    :type firewall_state: str or :class:`FirewallState
     <azure.mgmt.datalake.store.models.FirewallState>`
    :param firewall_rules: The list of firewall rules associated with this
     Data Lake store account.
    :type firewall_rules: list of :class:`FirewallRule
     <azure.mgmt.datalake.store.models.FirewallRule>`
    :param trusted_id_provider_state: The current state of the trusted
     identity provider feature for this Data Lake store account. Possible
     values include: 'Enabled', 'Disabled'
    :type trusted_id_provider_state: str or :class:`TrustedIdProviderState
     <azure.mgmt.datalake.store.models.TrustedIdProviderState>`
    :param trusted_id_providers: The list of trusted identity providers
     associated with this Data Lake store account.
    :type trusted_id_providers: list of :class:`TrustedIdProvider
     <azure.mgmt.datalake.store.models.TrustedIdProvider>`
    :param default_group: the default owner group for all new folders and
     files created in the Data Lake Store account.
    :type default_group: str
    :param new_tier: the commitment tier to use for next month. Possible
     values include: 'Consumption', 'Commitment_1TB', 'Commitment_10TB',
     'Commitment_100TB', 'Commitment_500TB', 'Commitment_1PB', 'Commitment_5PB'
    :type new_tier: str or :class:`TierType
     <azure.mgmt.datalake.store.models.TierType>`
    :ivar current_tier: the commitment tier in use for the current month.
     Possible values include: 'Consumption', 'Commitment_1TB',
     'Commitment_10TB', 'Commitment_100TB', 'Commitment_500TB',
     'Commitment_1PB', 'Commitment_5PB'
    :vartype current_tier: str or :class:`TierType
     <azure.mgmt.datalake.store.models.TierType>`
    :param firewall_allow_azure_ips: The current state of allowing or
     disallowing IPs originating within Azure through the firewall. If the
     firewall is disabled, this is not enforced. Possible values include:
     'Enabled', 'Disabled'
    :type firewall_allow_azure_ips: str or :class:`FirewallAllowAzureIpsState
     <azure.mgmt.datalake.store.models.FirewallAllowAzureIpsState>`
    """

    _validation = {
        'id': {'readonly': True},
        'name': {'readonly': True},
        'type': {'readonly': True},
        'location': {'required': True},
        'provisioning_state': {'readonly': True},
        'state': {'readonly': True},
        'creation_time': {'readonly': True},
        'last_modified_time': {'readonly': True},
        'endpoint': {'readonly': True},
        'account_id': {'readonly': True},
        'encryption_provisioning_state': {'readonly': True},
        'current_tier': {'readonly': True},
    }

    _attribute_map = {
        'id': {'key': 'id', 'type': 'str'},
        'name': {'key': 'name', 'type': 'str'},
        'type': {'key': 'type', 'type': 'str'},
        'location': {'key': 'location', 'type': 'str'},
        'tags': {'key': 'tags', 'type': '{str}'},
        'identity': {'key': 'identity', 'type': 'EncryptionIdentity'},
        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'DataLakeStoreAccountStatus'},
        'state': {'key': 'properties.state', 'type': 'DataLakeStoreAccountState'},
        'creation_time': {'key': 'properties.creationTime', 'type': 'iso-8601'},
        'last_modified_time': {'key': 'properties.lastModifiedTime', 'type': 'iso-8601'},
        'endpoint': {'key': 'properties.endpoint', 'type': 'str'},
        'account_id': {'key': 'properties.accountId', 'type': 'str'},
        'encryption_state': {'key': 'properties.encryptionState', 'type': 'EncryptionState'},
        'encryption_provisioning_state': {'key': 'properties.encryptionProvisioningState', 'type': 'EncryptionProvisioningState'},
        'encryption_config': {'key': 'properties.encryptionConfig', 'type': 'EncryptionConfig'},
        'firewall_state': {'key': 'properties.firewallState', 'type': 'FirewallState'},
        'firewall_rules': {'key': 'properties.firewallRules', 'type': '[FirewallRule]'},
        'trusted_id_provider_state': {'key': 'properties.trustedIdProviderState', 'type': 'TrustedIdProviderState'},
        'trusted_id_providers': {'key': 'properties.trustedIdProviders', 'type': '[TrustedIdProvider]'},
        'default_group': {'key': 'properties.defaultGroup', 'type': 'str'},
        'new_tier': {'key': 'properties.newTier', 'type': 'TierType'},
        'current_tier': {'key': 'properties.currentTier', 'type': 'TierType'},
        'firewall_allow_azure_ips': {'key': 'properties.firewallAllowAzureIps', 'type': 'FirewallAllowAzureIpsState'},
    }

    def __init__(self, location, tags=None, identity=None, encryption_state=None, encryption_config=None, firewall_state=None, firewall_rules=None, trusted_id_provider_state=None, trusted_id_providers=None, default_group=None, new_tier=None, firewall_allow_azure_ips=None):
        super(DataLakeStoreAccount, self).__init__(location=location, tags=tags)
        self.identity = identity
        self.provisioning_state = None
        self.state = None
        self.creation_time = None
        self.last_modified_time = None
        self.endpoint = None
        self.account_id = None
        self.encryption_state = encryption_state
        self.encryption_provisioning_state = None
        self.encryption_config = encryption_config
        self.firewall_state = firewall_state
        self.firewall_rules = firewall_rules
        self.trusted_id_provider_state = trusted_id_provider_state
        self.trusted_id_providers = trusted_id_providers
        self.default_group = default_group
        self.new_tier = new_tier
        self.current_tier = None
        self.firewall_allow_azure_ips = firewall_allow_azure_ips
