# 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 ArtifactKind(with_metaclass(_CaseInsensitiveEnumMeta, str, Enum)):
    """Specifies the kind of blueprint artifact.
    """

    TEMPLATE = "template"
    ROLE_ASSIGNMENT = "roleAssignment"
    POLICY_ASSIGNMENT = "policyAssignment"

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

    NONE = "none"
    ALL = "all"

class AssignmentLockMode(with_metaclass(_CaseInsensitiveEnumMeta, str, Enum)):
    """Lock mode.
    """

    NONE = "None"
    ALL_RESOURCES_READ_ONLY = "AllResourcesReadOnly"
    ALL_RESOURCES_DO_NOT_DELETE = "AllResourcesDoNotDelete"

class AssignmentProvisioningState(with_metaclass(_CaseInsensitiveEnumMeta, str, Enum)):
    """State of the blueprint assignment.
    """

    CREATING = "creating"
    VALIDATING = "validating"
    WAITING = "waiting"
    DEPLOYING = "deploying"
    CANCELLING = "cancelling"
    LOCKING = "locking"
    SUCCEEDED = "succeeded"
    FAILED = "failed"
    CANCELED = "canceled"
    DELETING = "deleting"

class BlueprintTargetScope(with_metaclass(_CaseInsensitiveEnumMeta, str, Enum)):
    """The scope where this blueprint definition can be assigned.
    """

    #: The blueprint targets a subscription during blueprint assignment.
    SUBSCRIPTION = "subscription"
    #: The blueprint targets a management group during blueprint assignment. This is reserved for
    #: future use.
    MANAGEMENT_GROUP = "managementGroup"

class ManagedServiceIdentityType(with_metaclass(_CaseInsensitiveEnumMeta, str, Enum)):
    """Type of the managed identity.
    """

    NONE = "None"
    SYSTEM_ASSIGNED = "SystemAssigned"
    USER_ASSIGNED = "UserAssigned"

class TemplateParameterType(with_metaclass(_CaseInsensitiveEnumMeta, str, Enum)):
    """Allowed data types for Resource Manager template parameters.
    """

    STRING = "string"
    ARRAY = "array"
    BOOL = "bool"
    INT = "int"
    OBJECT = "object"
    SECURE_OBJECT = "secureObject"
    SECURE_STRING = "secureString"
