# 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 ActionType(str, Enum, metaclass=CaseInsensitiveEnumMeta):
    """Extensible enum. Indicates the action type. "Internal" refers to actions that are for internal
    only APIs.
    """

    INTERNAL = "Internal"
    """Actions are for internal-only APIs."""


class AppliedScopeType(str, Enum, metaclass=CaseInsensitiveEnumMeta):
    """Type of the Applied Scope."""

    SINGLE = "Single"
    """SINGLE."""
    SHARED = "Shared"
    """SHARED."""
    MANAGEMENT_GROUP = "ManagementGroup"
    """MANAGEMENT_GROUP."""


class ApplyDiscountOn(str, Enum, metaclass=CaseInsensitiveEnumMeta):
    """The customer action on which the discount is applied. Supported values are Purchase, Consume,
    and Renew. Validation: Required, one of supported values.
    """

    PURCHASE = "Purchase"
    """PURCHASE."""
    CONSUME = "Consume"
    """CONSUME."""
    RENEW = "Renew"
    """RENEW."""


class BenefitType(str, Enum, metaclass=CaseInsensitiveEnumMeta):
    """Represents benefit model type for validation."""

    SAVINGS_PLAN = "SavingsPlan"
    """SAVINGS_PLAN."""
    MACC = "MACC"
    """MACC."""
    CONDITIONAL_CREDITS = "ConditionalCredits"
    """CONDITIONAL_CREDITS."""
    CREDITS = "Credits"
    """CREDITS."""


class BillingPlan(str, Enum, metaclass=CaseInsensitiveEnumMeta):
    """Represents the billing plan in ISO 8601 format. Required only for monthly billing plans."""

    P1_M = "P1M"
    """P1_M."""


class CommitmentGrain(str, Enum, metaclass=CaseInsensitiveEnumMeta):
    """Grain."""

    HOURLY = "Hourly"
    """HOURLY."""
    FULL_TERM = "FullTerm"
    """FULL_TERM."""
    UNKNOWN = "Unknown"
    """UNKNOWN."""


class ConditionalCreditEntityType(str, Enum, metaclass=CaseInsensitiveEnumMeta):
    """Type of conditional credit entity."""

    PRIMARY = "Primary"
    """PRIMARY."""
    CONTRIBUTOR = "Contributor"
    """CONTRIBUTOR."""


class ConditionalCreditsProvisioningState(str, Enum, metaclass=CaseInsensitiveEnumMeta):
    """The provisioning state of the resource."""

    UNKNOWN = "Unknown"
    """UNKNOWN."""
    SUCCEEDED = "Succeeded"
    """SUCCEEDED."""
    FAILED = "Failed"
    """FAILED."""
    CANCELED = "Canceled"
    """CANCELED."""
    PENDING = "Pending"
    """PENDING."""


class ConditionalCreditStatus(str, Enum, metaclass=CaseInsensitiveEnumMeta):
    """The status of the conditional credit."""

    UNKNOWN = "Unknown"
    """UNKNOWN."""
    SCHEDULED = "Scheduled"
    """SCHEDULED."""
    ACTIVE = "Active"
    """ACTIVE."""
    PENDING = "Pending"
    """PENDING."""
    FAILED = "Failed"
    """FAILED."""
    CANCELED = "Canceled"
    """CANCELED."""
    COMPLETED = "Completed"
    """COMPLETED."""
    STOPPED = "Stopped"
    """STOPPED."""
    PENDING_SETTLEMENT = "PendingSettlement"
    """PENDING_SETTLEMENT."""


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 CreditExpirationPolicy(str, Enum, metaclass=CaseInsensitiveEnumMeta):
    """Expiration policy of the Credit."""

    NONE = "None"
    """No policy applied to the expiration of this credit."""
    SUSPEND_BILLING_PROFILE = "SuspendBillingProfile"
    """Billing profile is suspended when the credit expires."""


class CreditRedemptionPolicy(str, Enum, metaclass=CaseInsensitiveEnumMeta):
    """Redemption policy of the Credit."""

    NOT_APPLICABLE = "NotApplicable"
    """Redemption policy is not applicable for this credit."""
    AUTO_REDEEM = "AutoRedeem"
    """Credit is automatically redeemed."""
    MANUAL_REDEEM = "ManualRedeem"
    """Credit is manually redeemed."""


class CreditStatus(str, Enum, metaclass=CaseInsensitiveEnumMeta):
    """Status of the credit."""

    UNKNOWN = "Unknown"
    """Credit status is unknown."""
    PENDING = "Pending"
    """Credit is pending activation."""
    ACTIVE = "Active"
    """Credit is active and available for use."""
    SUCCEEDED = "Succeeded"
    """Credit operation succeeded."""
    CANCELED = "Canceled"
    """Credit has been cancelled."""
    FAILED = "Failed"
    """Credit operation failed."""
    EXPIRED = "Expired"
    """Credit has expired."""
    EXHAUSTED = "Exhausted"
    """Credit has been fully consumed."""
    NOT_STARTED = "NotStarted"
    """Credit application has not started yet."""


class DiscountAppliedScopeType(str, Enum, metaclass=CaseInsensitiveEnumMeta):
    """List of applied scopes supported for discounts."""

    BILLING_ACCOUNT = "BillingAccount"
    """BILLING_ACCOUNT."""
    BILLING_PROFILE = "BillingProfile"
    """BILLING_PROFILE."""
    CUSTOMER = "Customer"
    """CUSTOMER."""


class DiscountCombinationRule(str, Enum, metaclass=CaseInsensitiveEnumMeta):
    """The discount combination rule when there are multiple applicable custom prices. Validation:
    Required. Supported values are Stackable and BestOf.
    """

    BEST_OF = "BestOf"
    """BEST_OF."""
    STACKABLE = "Stackable"
    """STACKABLE."""


class DiscountEntityType(str, Enum, metaclass=CaseInsensitiveEnumMeta):
    """This defines whether the entity being created is primary or affiliate. Supported values:
    primary, affiliate. Validation: Required, must match one of the 2 values.
    """

    PRIMARY = "Primary"
    """PRIMARY."""
    AFFILIATE = "Affiliate"
    """AFFILIATE."""


class DiscountProvisioningState(str, Enum, metaclass=CaseInsensitiveEnumMeta):
    """Provisioning states of Discount."""

    UNKNOWN = "Unknown"
    """UNKNOWN."""
    PENDING = "Pending"
    """PENDING."""
    SUCCEEDED = "Succeeded"
    """SUCCEEDED."""
    CANCELED = "Canceled"
    """CANCELED."""
    FAILED = "Failed"
    """FAILED."""


class DiscountRuleType(str, Enum, metaclass=CaseInsensitiveEnumMeta):
    """The type of the priceable node pricing rule. Validation: Required. Supported values are
    fixedPriceLock, fixedListPrice, and priceCeiling.
    """

    FIXED_PRICE_LOCK = "FixedPriceLock"
    """FIXED_PRICE_LOCK."""
    FIXED_LIST_PRICE = "FixedListPrice"
    """FIXED_LIST_PRICE."""
    PRICE_CEILING = "PriceCeiling"
    """PRICE_CEILING."""


class DiscountStatus(str, Enum, metaclass=CaseInsensitiveEnumMeta):
    """Represents the current status of the discount."""

    ACTIVE = "Active"
    """ACTIVE."""
    PENDING = "Pending"
    """PENDING."""
    FAILED = "Failed"
    """FAILED."""
    CANCELED = "Canceled"
    """CANCELED."""
    EXPIRED = "Expired"
    """EXPIRED."""


class DiscountType(str, Enum, metaclass=CaseInsensitiveEnumMeta):
    """Defines the type of discount. Supported values are ProductFamily, Product, Sku, CustomPrice,
    and CustomPriceMultiCurrency.
    """

    PRODUCT_FAMILY = "ProductFamily"
    """PRODUCT_FAMILY."""
    PRODUCT = "Product"
    """PRODUCT."""
    SKU = "Sku"
    """SKU."""
    CUSTOM_PRICE = "CustomPrice"
    """CUSTOM_PRICE."""
    CUSTOM_PRICE_MULTI_CURRENCY = "CustomPriceMultiCurrency"
    """CUSTOM_PRICE_MULTI_CURRENCY."""


class EnablementMode(str, Enum, metaclass=CaseInsensitiveEnumMeta):
    """Represents the enablement status of a feature or settings."""

    UNKNOWN = "Unknown"
    """UNKNOWN."""
    ENABLED = "Enabled"
    """ENABLED."""
    DISABLED = "Disabled"
    """DISABLED."""


class FreeServicesStatus(str, Enum, metaclass=CaseInsensitiveEnumMeta):
    """Status of the free services."""

    UNKNOWN = "Unknown"
    """Free services status is unknown."""
    PENDING = "Pending"
    """Free services are pending activation."""
    ACTIVE = "Active"
    """Free services are active."""
    CANCELED = "Canceled"
    """Free services have been canceled."""
    COMPLETED = "Completed"
    """Free services have been fully consumed or completed."""


class InstanceFlexibility(str, Enum, metaclass=CaseInsensitiveEnumMeta):
    """Turning this on will apply the reservation discount to other VMs in the same VM size group."""

    ON = "On"
    """ON."""
    OFF = "Off"
    """OFF."""


class MaccEntityType(str, Enum, metaclass=CaseInsensitiveEnumMeta):
    """Represents type of the object being operated on. Possible values are primary or contributor."""

    PRIMARY = "Primary"
    """PRIMARY."""
    CONTRIBUTOR = "Contributor"
    """CONTRIBUTOR."""


class MaccMilestoneStatus(str, Enum, metaclass=CaseInsensitiveEnumMeta):
    """Represents the current status of the Milestone."""

    UNKNOWN = "Unknown"
    """UNKNOWN."""
    SCHEDULED = "Scheduled"
    """SCHEDULED."""
    ACTIVE = "Active"
    """ACTIVE."""
    PENDING = "Pending"
    """PENDING."""
    FAILED = "Failed"
    """FAILED."""
    COMPLETED = "Completed"
    """COMPLETED."""
    CANCELED = "Canceled"
    """CANCELED."""
    REMOVED = "Removed"
    """REMOVED."""
    PENDING_SETTLEMENT = "PendingSettlement"
    """PENDING_SETTLEMENT."""
    SHORTFALL_CHARGED = "ShortfallCharged"
    """SHORTFALL_CHARGED."""
    SHORTFALL_WAIVED = "ShortfallWaived"
    """SHORTFALL_WAIVED."""


class MaccStatus(str, Enum, metaclass=CaseInsensitiveEnumMeta):
    """Represents the current status of the MACC."""

    UNKNOWN = "Unknown"
    """UNKNOWN."""
    SCHEDULED = "Scheduled"
    """SCHEDULED."""
    ACTIVE = "Active"
    """ACTIVE."""
    PENDING = "Pending"
    """PENDING."""
    FAILED = "Failed"
    """FAILED."""
    CANCELED = "Canceled"
    """CANCELED."""
    COMPLETED = "Completed"
    """COMPLETED."""
    STOPPED = "Stopped"
    """STOPPED."""
    PENDING_SETTLEMENT = "PendingSettlement"
    """PENDING_SETTLEMENT."""
    SHORTFALL_CHARGED = "ShortfallCharged"
    """SHORTFALL_CHARGED."""
    SHORTFALL_WAIVED = "ShortfallWaived"
    """SHORTFALL_WAIVED."""


class ManagedServiceIdentityType(str, Enum, metaclass=CaseInsensitiveEnumMeta):
    """Type of managed service identity (where both SystemAssigned and UserAssigned types are
    allowed).
    """

    NONE = "None"
    """No managed identity."""
    SYSTEM_ASSIGNED = "SystemAssigned"
    """System assigned managed identity."""
    USER_ASSIGNED = "UserAssigned"
    """User assigned managed identity."""
    SYSTEM_ASSIGNED_USER_ASSIGNED = "SystemAssigned,UserAssigned"
    """System and user assigned managed identity."""


class MilestoneStatus(str, Enum, metaclass=CaseInsensitiveEnumMeta):
    """Current status of the milestone."""

    UNKNOWN = "Unknown"
    """UNKNOWN."""
    SCHEDULED = "Scheduled"
    """SCHEDULED."""
    ACTIVE = "Active"
    """ACTIVE."""
    PENDING = "Pending"
    """PENDING."""
    FAILED = "Failed"
    """FAILED."""
    COMPLETED = "Completed"
    """COMPLETED."""
    CANCELED = "Canceled"
    """CANCELED."""
    REMOVED = "Removed"
    """REMOVED."""
    PENDING_SETTLEMENT = "PendingSettlement"
    """PENDING_SETTLEMENT."""
    MISSED = "Missed"
    """MISSED."""


class Origin(str, Enum, metaclass=CaseInsensitiveEnumMeta):
    """The intended executor of the operation; as in Resource Based Access Control (RBAC) and audit
    logs UX. Default value is "user,system".
    """

    USER = "user"
    """Indicates the operation is initiated by a user."""
    SYSTEM = "system"
    """Indicates the operation is initiated by a system."""
    USER_SYSTEM = "user,system"
    """Indicates the operation is initiated by a user or system."""


class PaymentStatus(str, Enum, metaclass=CaseInsensitiveEnumMeta):
    """Describes whether the payment is completed, failed, cancelled or scheduled in the future."""

    SUCCEEDED = "Succeeded"
    """SUCCEEDED."""
    FAILED = "Failed"
    """FAILED."""
    SCHEDULED = "Scheduled"
    """SCHEDULED."""
    CANCELLED = "Cancelled"
    """CANCELLED."""


class PricingPolicy(str, Enum, metaclass=CaseInsensitiveEnumMeta):
    """Supported values: Protected, Locked."""

    PROTECTED = "Protected"
    """PROTECTED."""
    LOCKED = "Locked"
    """LOCKED."""


class ProvisioningState(str, Enum, metaclass=CaseInsensitiveEnumMeta):
    """Provisioning state."""

    CREATING = "Creating"
    """CREATING."""
    PENDING_BILLING = "PendingBilling"
    """PENDING_BILLING."""
    CONFIRMED_BILLING = "ConfirmedBilling"
    """CONFIRMED_BILLING."""
    CREATED = "Created"
    """CREATED."""
    SUCCEEDED = "Succeeded"
    """SUCCEEDED."""
    CANCELLED = "Cancelled"
    """CANCELLED."""
    EXPIRED = "Expired"
    """EXPIRED."""
    FAILED = "Failed"
    """FAILED."""


class ReservedResourceType(str, Enum, metaclass=CaseInsensitiveEnumMeta):
    """The type of the resource that is being reserved."""

    VIRTUAL_MACHINES = "VirtualMachines"
    """VIRTUAL_MACHINES."""
    SQL_DATABASES = "SqlDatabases"
    """SQL_DATABASES."""
    SUSE_LINUX = "SuseLinux"
    """SUSE_LINUX."""
    COSMOS_DB = "CosmosDb"
    """COSMOS_DB."""
    RED_HAT = "RedHat"
    """RED_HAT."""
    SQL_DATA_WAREHOUSE = "SqlDataWarehouse"
    """SQL_DATA_WAREHOUSE."""
    V_MWARE_CLOUD_SIMPLE = "VMwareCloudSimple"
    """V_MWARE_CLOUD_SIMPLE."""
    RED_HAT_OSA = "RedHatOsa"
    """RED_HAT_OSA."""
    DATABRICKS = "Databricks"
    """DATABRICKS."""
    APP_SERVICE = "AppService"
    """APP_SERVICE."""
    MANAGED_DISK = "ManagedDisk"
    """MANAGED_DISK."""
    BLOCK_BLOB = "BlockBlob"
    """BLOCK_BLOB."""
    REDIS_CACHE = "RedisCache"
    """REDIS_CACHE."""
    AZURE_DATA_EXPLORER = "AzureDataExplorer"
    """AZURE_DATA_EXPLORER."""
    MY_SQL = "MySql"
    """MY_SQL."""
    MARIA_DB = "MariaDb"
    """MARIA_DB."""
    POSTGRE_SQL = "PostgreSql"
    """POSTGRE_SQL."""
    DEDICATED_HOST = "DedicatedHost"
    """DEDICATED_HOST."""
    SAP_HANA = "SapHana"
    """SAP_HANA."""
    SQL_AZURE_HYBRID_BENEFIT = "SqlAzureHybridBenefit"
    """SQL_AZURE_HYBRID_BENEFIT."""
    AVS = "AVS"
    """AVS."""
    DATA_FACTORY = "DataFactory"
    """DATA_FACTORY."""
    NET_APP_STORAGE = "NetAppStorage"
    """NET_APP_STORAGE."""
    AZURE_FILES = "AzureFiles"
    """AZURE_FILES."""
    SQL_EDGE = "SqlEdge"
    """SQL_EDGE."""
    VIRTUAL_MACHINE_SOFTWARE = "VirtualMachineSoftware"
    """VIRTUAL_MACHINE_SOFTWARE."""


class ServiceManagedIdentityType(str, Enum, metaclass=CaseInsensitiveEnumMeta):
    """Type of managed service identity (where both SystemAssigned and UserAssigned types are
    allowed).
    """

    NONE = "None"
    """NONE."""
    SYSTEM_ASSIGNED = "SystemAssigned"
    """SYSTEM_ASSIGNED."""
    USER_ASSIGNED = "UserAssigned"
    """USER_ASSIGNED."""
    SYSTEM_ASSIGNED_USER_ASSIGNED = "SystemAssigned,UserAssigned"
    """SYSTEM_ASSIGNED_USER_ASSIGNED."""


class SkuTier(str, Enum, metaclass=CaseInsensitiveEnumMeta):
    """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.
    """

    FREE = "Free"
    """The Free service tier."""
    BASIC = "Basic"
    """The Basic service tier."""
    STANDARD = "Standard"
    """The Standard service tier."""
    PREMIUM = "Premium"
    """The Premium service tier."""


class Term(str, Enum, metaclass=CaseInsensitiveEnumMeta):
    """Represent benefit term in ISO 8601 format."""

    P1M = "P1M"
    """P1M."""
    P1_Y = "P1Y"
    """P1_Y."""
    P3_Y = "P3Y"
    """P3_Y."""
    P5_Y = "P5Y"
    """P5_Y."""
