# 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) Python Code Generator.
# Changes may cause incorrect behavior and will be lost if the code is regenerated.
# --------------------------------------------------------------------------

from enum import Enum
from azure.core import CaseInsensitiveEnumMeta


class AliasPathAttributes(str, Enum, metaclass=CaseInsensitiveEnumMeta):
    """The attributes of the token that the alias path is referring to."""

    NONE = "None"
    """The token that the alias path is referring to has no attributes."""
    MODIFIABLE = "Modifiable"
    """The token that the alias path is referring to is modifiable by policies with 'modify' effect."""


class AliasPathTokenType(str, Enum, metaclass=CaseInsensitiveEnumMeta):
    """The type of the token that the alias path is referring to."""

    NOT_SPECIFIED = "NotSpecified"
    """The token type is not specified."""
    ANY = "Any"
    """The token type can be anything."""
    STRING = "String"
    """The token type is string."""
    OBJECT = "Object"
    """The token type is object."""
    ARRAY = "Array"
    """The token type is array."""
    INTEGER = "Integer"
    """The token type is integer."""
    NUMBER = "Number"
    """The token type is number."""
    BOOLEAN = "Boolean"
    """The token type is boolean."""


class AliasPatternType(str, Enum, metaclass=CaseInsensitiveEnumMeta):
    """The type of alias pattern."""

    NOT_SPECIFIED = "NotSpecified"
    """NotSpecified is not allowed."""
    EXTRACT = "Extract"
    """Extract is the only allowed value."""


class AliasType(str, Enum, metaclass=CaseInsensitiveEnumMeta):
    """The type of the alias."""

    NOT_SPECIFIED = "NotSpecified"
    """Alias type is unknown (same as not providing alias type)."""
    PLAIN_TEXT = "PlainText"
    """Alias value is not secret."""
    MASK = "Mask"
    """Alias value is secret."""


class ChangeType(str, Enum, metaclass=CaseInsensitiveEnumMeta):
    """Type of change that will be made to the resource when the deployment is executed."""

    CREATE = "Create"
    """The resource does not exist in the current state but is present in the desired state. The
    resource will be created when the deployment is executed."""
    DELETE = "Delete"
    """The resource exists in the current state and is missing from the desired state. The resource
    will be deleted when the deployment is executed."""
    IGNORE = "Ignore"
    """The resource exists in the current state and is missing from the desired state. The resource
    will not be deployed or modified when the deployment is executed."""
    DEPLOY = "Deploy"
    """The resource exists in the current state and the desired state and will be redeployed when the
    deployment is executed. The properties of the resource may or may not change."""
    NO_CHANGE = "NoChange"
    """The resource exists in the current state and the desired state and will be redeployed when the
    deployment is executed. The properties of the resource will not change."""
    MODIFY = "Modify"
    """The resource exists in the current state and the desired state and will be redeployed when the
    deployment is executed. The properties of the resource will change."""
    UNSUPPORTED = "Unsupported"
    """The resource is not supported by What-If."""


class CreatedByType(str, Enum, metaclass=CaseInsensitiveEnumMeta):
    """The kind of entity that created the resource."""

    USER = "User"
    """The entity was created by a user."""
    APPLICATION = "Application"
    """The entity was created by an application."""
    MANAGED_IDENTITY = "ManagedIdentity"
    """The entity was created by a managed identity."""
    KEY = "Key"
    """The entity was created by a key."""


class DeploymentIdentityType(str, Enum, metaclass=CaseInsensitiveEnumMeta):
    """The identity type."""

    NONE = "None"
    """None."""
    USER_ASSIGNED = "UserAssigned"
    """UserAssigned."""


class DeploymentMode(str, Enum, metaclass=CaseInsensitiveEnumMeta):
    """The mode that is used to deploy resources. This value can be either Incremental or Complete. In
    Incremental mode, resources are deployed without deleting existing resources that are not
    included in the template. In Complete mode, resources are deployed and existing resources in
    the resource group that are not included in the template are deleted. Be careful when using
    Complete mode as you may unintentionally delete resources.
    """

    INCREMENTAL = "Incremental"
    """Incremental."""
    COMPLETE = "Complete"
    """Complete."""


class ExpressionEvaluationOptionsScopeType(str, Enum, metaclass=CaseInsensitiveEnumMeta):
    """The scope to be used for evaluation of parameters, variables and functions in a nested
    template.
    """

    NOT_SPECIFIED = "NotSpecified"
    """NotSpecified."""
    OUTER = "Outer"
    """Outer."""
    INNER = "Inner"
    """Inner."""


class ExtensionConfigPropertyType(str, Enum, metaclass=CaseInsensitiveEnumMeta):
    """Type of ExtensionConfigPropertyType."""

    STRING = "String"
    """Property type representing a string value."""
    INT = "Int"
    """Property type representing an integer value."""
    BOOL = "Bool"
    """Property type representing a boolean value."""
    ARRAY = "Array"
    """Property type representing an array value."""
    OBJECT = "Object"
    """Property type representing an object value."""
    SECURE_STRING = "SecureString"
    """Property type representing a secure string value."""
    SECURE_OBJECT = "SecureObject"
    """Property type representing a secure object value."""


class Level(str, Enum, metaclass=CaseInsensitiveEnumMeta):
    """Denotes the additional response level."""

    WARNING = "Warning"
    """Warning."""
    INFO = "Info"
    """Info."""
    ERROR = "Error"
    """Error."""


class OnErrorDeploymentType(str, Enum, metaclass=CaseInsensitiveEnumMeta):
    """The deployment on error behavior type. Possible values are LastSuccessful and
    SpecificDeployment.
    """

    LAST_SUCCESSFUL = "LastSuccessful"
    """LastSuccessful."""
    SPECIFIC_DEPLOYMENT = "SpecificDeployment"
    """SpecificDeployment."""


class PropertyChangeType(str, Enum, metaclass=CaseInsensitiveEnumMeta):
    """The type of property change."""

    CREATE = "Create"
    """The property does not exist in the current state but is present in the desired state. The
    property will be created when the deployment is executed."""
    DELETE = "Delete"
    """The property exists in the current state and is missing from the desired state. It will be
    deleted when the deployment is executed."""
    MODIFY = "Modify"
    """The property exists in both current and desired state and is different. The value of the
    property will change when the deployment is executed."""
    ARRAY = "Array"
    """The property is an array and contains nested changes."""
    NO_EFFECT = "NoEffect"
    """The property will not be set or updated."""


class ProviderAuthorizationConsentState(str, Enum, metaclass=CaseInsensitiveEnumMeta):
    """The provider authorization consent state."""

    NOT_SPECIFIED = "NotSpecified"
    """NotSpecified."""
    REQUIRED = "Required"
    """Required."""
    NOT_REQUIRED = "NotRequired"
    """NotRequired."""
    CONSENTED = "Consented"
    """Consented."""


class ProvisioningOperation(str, Enum, metaclass=CaseInsensitiveEnumMeta):
    """The name of the current provisioning operation."""

    NOT_SPECIFIED = "NotSpecified"
    """The provisioning operation is not specified."""
    CREATE = "Create"
    """The provisioning operation is create."""
    DELETE = "Delete"
    """The provisioning operation is delete."""
    WAITING = "Waiting"
    """The provisioning operation is waiting."""
    AZURE_ASYNC_OPERATION_WAITING = "AzureAsyncOperationWaiting"
    """The provisioning operation is waiting Azure async operation."""
    RESOURCE_CACHE_WAITING = "ResourceCacheWaiting"
    """The provisioning operation is waiting for resource cache."""
    ACTION = "Action"
    """The provisioning operation is action."""
    READ = "Read"
    """The provisioning operation is read."""
    EVALUATE_DEPLOYMENT_OUTPUT = "EvaluateDeploymentOutput"
    """The provisioning operation is evaluate output."""
    DEPLOYMENT_CLEANUP = "DeploymentCleanup"
    """The provisioning operation is cleanup. This operation is part of the 'complete' mode
    deployment."""


class ProvisioningState(str, Enum, metaclass=CaseInsensitiveEnumMeta):
    """Denotes the state of provisioning."""

    NOT_SPECIFIED = "NotSpecified"
    """NotSpecified."""
    ACCEPTED = "Accepted"
    """Accepted."""
    RUNNING = "Running"
    """Running."""
    READY = "Ready"
    """Ready."""
    CREATING = "Creating"
    """Creating."""
    CREATED = "Created"
    """Created."""
    DELETING = "Deleting"
    """Deleting."""
    DELETED = "Deleted"
    """Deleted."""
    CANCELED = "Canceled"
    """Canceled."""
    FAILED = "Failed"
    """Failed."""
    SUCCEEDED = "Succeeded"
    """Succeeded."""
    UPDATING = "Updating"
    """Updating."""


class ValidationLevel(str, Enum, metaclass=CaseInsensitiveEnumMeta):
    """The level of validation performed on the deployment."""

    TEMPLATE = "Template"
    """Static analysis of the template is performed."""
    PROVIDER = "Provider"
    """Static analysis of the template is performed and resource declarations are sent to resource
    providers for semantic validation. Validates that the caller has RBAC write permissions on each
    resource."""
    PROVIDER_NO_RBAC = "ProviderNoRbac"
    """Static analysis of the template is performed and resource declarations are sent to resource
    providers for semantic validation. Skips validating that the caller has RBAC write permissions
    on each resource."""


class WhatIfResultFormat(str, Enum, metaclass=CaseInsensitiveEnumMeta):
    """The format of the What-If results."""

    RESOURCE_ID_ONLY = "ResourceIdOnly"
    """ResourceIdOnly."""
    FULL_RESOURCE_PAYLOADS = "FullResourcePayloads"
    """FullResourcePayloads."""
