# 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 enum import Enum, EnumMeta
from six import with_metaclass

class _CaseInsensitiveEnumMeta(EnumMeta):
    def __getitem__(self, name):
        return super().__getitem__(name.upper())

    def __getattr__(cls, name):
        """Return the enum member matching `name`
        We use __getattr__ instead of descriptors or inserting into the enum
        class' __dict__ in order to support `name` and `value` being both
        properties for enum members (which live in the class' __dict__) and
        enum members themselves.
        """
        try:
            return cls._member_map_[name.upper()]
        except KeyError:
            raise AttributeError(name)


class AccessProtocol(with_metaclass(_CaseInsensitiveEnumMeta, str, Enum)):

    SMB = "SMB"  #: Server Message Block protocol(SMB).
    NFS = "NFS"  #: Network File System protocol(NFS).

class AddressType(with_metaclass(_CaseInsensitiveEnumMeta, str, Enum)):
    """Type of address.
    """

    NONE = "None"  #: Address type not known.
    RESIDENTIAL = "Residential"  #: Residential Address.
    COMMERCIAL = "Commercial"  #: Commercial Address.

class AddressValidationStatus(with_metaclass(_CaseInsensitiveEnumMeta, str, Enum)):
    """The address validation status.
    """

    VALID = "Valid"  #: Address provided is valid.
    INVALID = "Invalid"  #: Address provided is invalid or not supported.
    AMBIGUOUS = "Ambiguous"  #: Address provided is ambiguous, please choose one of the alternate addresses returned.

class ClassDiscriminator(with_metaclass(_CaseInsensitiveEnumMeta, str, Enum)):
    """Indicates the type of job details.
    """

    DATA_BOX = "DataBox"  #: Data Box orders.
    DATA_BOX_DISK = "DataBoxDisk"  #: Data Box Disk orders.
    DATA_BOX_HEAVY = "DataBoxHeavy"  #: Data Box Heavy orders.

class CopyStatus(with_metaclass(_CaseInsensitiveEnumMeta, str, Enum)):
    """The Status of the copy
    """

    NOT_STARTED = "NotStarted"  #: Data copy hasn't started yet.
    IN_PROGRESS = "InProgress"  #: Data copy is in progress.
    COMPLETED = "Completed"  #: Data copy completed.
    COMPLETED_WITH_ERRORS = "CompletedWithErrors"  #: Data copy completed with errors.
    FAILED = "Failed"  #: Data copy failed. No data was copied.
    NOT_RETURNED = "NotReturned"  #: No copy triggered as device was not returned.
    HARDWARE_ERROR = "HardwareError"  #: The Device has hit hardware issues.
    DEVICE_FORMATTED = "DeviceFormatted"  #: Data copy failed. The Device was formatted by user.
    DEVICE_METADATA_MODIFIED = "DeviceMetadataModified"  #: Data copy failed. Device metadata was modified by user.
    STORAGE_ACCOUNT_NOT_ACCESSIBLE = "StorageAccountNotAccessible"  #: Data copy failed. Storage Account was not accessible during copy.
    UNSUPPORTED_DATA = "UnsupportedData"  #: Data copy failed. The Device data content is not supported.

class DataAccountType(with_metaclass(_CaseInsensitiveEnumMeta, str, Enum)):
    """Type of the account.
    """

    STORAGE_ACCOUNT = "StorageAccount"  #: Storage Accounts .
    MANAGED_DISK = "ManagedDisk"  #: Azure Managed disk storage.

class DoubleEncryption(with_metaclass(_CaseInsensitiveEnumMeta, str, Enum)):
    """Defines secondary layer of software-based encryption enablement.
    """

    ENABLED = "Enabled"  #: Software-based encryption is enabled.
    DISABLED = "Disabled"  #: Software-based encryption is disabled.

class FilterFileType(with_metaclass(_CaseInsensitiveEnumMeta, str, Enum)):
    """Type of the filter file.
    """

    AZURE_BLOB = "AzureBlob"  #: Filter file is of the type AzureBlob.
    AZURE_FILE = "AzureFile"  #: Filter file is of the type AzureFiles.

class JobDeliveryType(with_metaclass(_CaseInsensitiveEnumMeta, str, Enum)):
    """Delivery type of Job.
    """

    NON_SCHEDULED = "NonScheduled"  #: Non Scheduled job.
    SCHEDULED = "Scheduled"  #: Scheduled job.

class KekType(with_metaclass(_CaseInsensitiveEnumMeta, str, Enum)):
    """Type of encryption key used for key encryption.
    """

    MICROSOFT_MANAGED = "MicrosoftManaged"  #: Key encryption key is managed by Microsoft.
    CUSTOMER_MANAGED = "CustomerManaged"  #: Key encryption key is managed by the Customer.

class LogCollectionLevel(with_metaclass(_CaseInsensitiveEnumMeta, str, Enum)):
    """Level of the logs to be collected.
    """

    ERROR = "Error"  #: Only Errors will be collected in the logs.
    VERBOSE = "Verbose"  #: Verbose logging (includes Errors, CRC, size information and others).

class NotificationStageName(with_metaclass(_CaseInsensitiveEnumMeta, str, Enum)):
    """Name of the stage.
    """

    DEVICE_PREPARED = "DevicePrepared"  #: Notification at device prepared stage.
    DISPATCHED = "Dispatched"  #: Notification at device dispatched stage.
    DELIVERED = "Delivered"  #: Notification at device delivered stage.
    PICKED_UP = "PickedUp"  #: Notification at device picked up from user stage.
    AT_AZURE_DC = "AtAzureDC"  #: Notification at device received at Azure datacenter stage.
    DATA_COPY = "DataCopy"  #: Notification at data copy started stage.

class OverallValidationStatus(with_metaclass(_CaseInsensitiveEnumMeta, str, Enum)):
    """Overall validation status.
    """

    ALL_VALID_TO_PROCEED = "AllValidToProceed"  #: Every input request is valid.
    INPUTS_REVISIT_REQUIRED = "InputsRevisitRequired"  #: Some input requests are not valid.
    CERTAIN_INPUT_VALIDATIONS_SKIPPED = "CertainInputValidationsSkipped"  #: Certain input validations skipped.

class ShareDestinationFormatType(with_metaclass(_CaseInsensitiveEnumMeta, str, Enum)):
    """Type of the share.
    """

    UNKNOWN_TYPE = "UnknownType"  #: Unknown format.
    HCS = "HCS"  #: Storsimple data format.
    BLOCK_BLOB = "BlockBlob"  #: Azure storage block blob format.
    PAGE_BLOB = "PageBlob"  #: Azure storage page blob format.
    AZURE_FILE = "AzureFile"  #: Azure storage file format.
    MANAGED_DISK = "ManagedDisk"  #: Azure Compute Disk.
    AZURE_PREMIUM_FILES = "AzurePremiumFiles"  #: Azure storage Premium Files format.

class SkuDisabledReason(with_metaclass(_CaseInsensitiveEnumMeta, str, Enum)):
    """Reason why the Sku is disabled.
    """

    NONE = "None"  #: SKU is not disabled.
    COUNTRY = "Country"  #: SKU is not available in the requested country.
    REGION = "Region"  #: SKU is not available to push data to the requested Azure region.
    FEATURE = "Feature"  #: Required features are not enabled for the SKU.
    OFFER_TYPE = "OfferType"  #: Subscription does not have required offer types for the SKU.
    NO_SUBSCRIPTION_INFO = "NoSubscriptionInfo"  #: Subscription has not registered to Microsoft.DataBox and Service does not have the subscription notification.

class SkuName(with_metaclass(_CaseInsensitiveEnumMeta, str, Enum)):

    DATA_BOX = "DataBox"  #: Data Box.
    DATA_BOX_DISK = "DataBoxDisk"  #: Data Box Disk.
    DATA_BOX_HEAVY = "DataBoxHeavy"  #: Data Box Heavy.

class StageName(with_metaclass(_CaseInsensitiveEnumMeta, str, Enum)):
    """Name of the stage which is in progress.
    """

    DEVICE_ORDERED = "DeviceOrdered"  #: An order has been created.
    DEVICE_PREPARED = "DevicePrepared"  #: A device has been prepared for the order.
    DISPATCHED = "Dispatched"  #: Device has been dispatched to the user of the order.
    DELIVERED = "Delivered"  #: Device has been delivered to the user of the order.
    PICKED_UP = "PickedUp"  #: Device has been picked up from user and in transit to Azure datacenter.
    AT_AZURE_DC = "AtAzureDC"  #: Device has been received at Azure datacenter from the user.
    DATA_COPY = "DataCopy"  #: Data copy from the device at Azure datacenter.
    COMPLETED = "Completed"  #: Order has completed.
    COMPLETED_WITH_ERRORS = "CompletedWithErrors"  #: Order has completed with errors.
    CANCELLED = "Cancelled"  #: Order has been cancelled.
    FAILED_ISSUE_REPORTED_AT_CUSTOMER = "Failed_IssueReportedAtCustomer"  #: Order has failed due to issue reported by user.
    FAILED_ISSUE_DETECTED_AT_AZURE_DC = "Failed_IssueDetectedAtAzureDC"  #: Order has failed due to issue detected at Azure datacenter.
    ABORTED = "Aborted"  #: Order has been aborted.
    COMPLETED_WITH_WARNINGS = "CompletedWithWarnings"  #: Order has completed with warnings.
    READY_TO_DISPATCH_FROM_AZURE_DC = "ReadyToDispatchFromAzureDC"  #: Device is ready to be handed to customer from Azure DC.
    READY_TO_RECEIVE_AT_AZURE_DC = "ReadyToReceiveAtAzureDC"  #: Device can be dropped off at Azure DC.

class StageStatus(with_metaclass(_CaseInsensitiveEnumMeta, str, Enum)):
    """Status of the job stage.
    """

    NONE = "None"  #: No status available yet.
    IN_PROGRESS = "InProgress"  #: Stage is in progress.
    SUCCEEDED = "Succeeded"  #: Stage has succeeded.
    FAILED = "Failed"  #: Stage has failed.
    CANCELLED = "Cancelled"  #: Stage has been cancelled.
    CANCELLING = "Cancelling"  #: Stage is cancelling.
    SUCCEEDED_WITH_ERRORS = "SucceededWithErrors"  #: Stage has succeeded with errors.
    WAITING_FOR_CUSTOMER_ACTION = "WaitingForCustomerAction"  #: Stage is stuck until customer takes some action.
    SUCCEEDED_WITH_WARNINGS = "SucceededWithWarnings"  #: Stage has succeeded with warnings.

class TransferConfigurationType(with_metaclass(_CaseInsensitiveEnumMeta, str, Enum)):
    """Type of the configuration for transfer.
    """

    TRANSFER_ALL = "TransferAll"  #: Transfer all the data.
    TRANSFER_USING_FILTER = "TransferUsingFilter"  #: Transfer using filter.

class TransferType(with_metaclass(_CaseInsensitiveEnumMeta, str, Enum)):
    """Type of the transfer.
    """

    IMPORT_TO_AZURE = "ImportToAzure"  #: Import data to azure.
    EXPORT_FROM_AZURE = "ExportFromAzure"  #: Export data from azure.

class TransportShipmentTypes(with_metaclass(_CaseInsensitiveEnumMeta, str, Enum)):
    """Transport Shipment Type supported for given region.
    """

    CUSTOMER_MANAGED = "CustomerManaged"  #: Shipment Logistics is handled by the customer.
    MICROSOFT_MANAGED = "MicrosoftManaged"  #: Shipment Logistics is handled by Microsoft.

class ValidationInputDiscriminator(with_metaclass(_CaseInsensitiveEnumMeta, str, Enum)):
    """Identifies the type of validation request.
    """

    VALIDATE_ADDRESS = "ValidateAddress"  #: Identify request and response of address validation.
    VALIDATE_SUBSCRIPTION_IS_ALLOWED_TO_CREATE_JOB = "ValidateSubscriptionIsAllowedToCreateJob"  #: Identify request and response for validation of subscription permission to create job.
    VALIDATE_PREFERENCES = "ValidatePreferences"  #: Identify request and response of preference validation.
    VALIDATE_CREATE_ORDER_LIMIT = "ValidateCreateOrderLimit"  #: Identify request and response of create order limit for subscription validation.
    VALIDATE_SKU_AVAILABILITY = "ValidateSkuAvailability"  #: Identify request and response of active job limit for sku availability.
    VALIDATE_DATA_TRANSFER_DETAILS = "ValidateDataTransferDetails"  #: Identify request and response of data transfer details validation.

class ValidationStatus(with_metaclass(_CaseInsensitiveEnumMeta, str, Enum)):
    """Create order limit validation status.
    """

    VALID = "Valid"  #: Validation is successful.
    INVALID = "Invalid"  #: Validation is not successful.
    SKIPPED = "Skipped"  #: Validation is skipped.
