# 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 AzureFileShareAccessTier(str, Enum, metaclass=CaseInsensitiveEnumMeta):
    """Access tier for specific share. GpV2 account can choose between TransactionOptimized (default),
    Hot, and Cool. FileStorage account can choose Premium. Learn more at:
    `https://learn.microsoft.com/en-us/rest/api/storagerp/file-shares/create?tabs=HTTP#shareaccesstier
    <https://learn.microsoft.com/en-us/rest/api/storagerp/file-shares/create?tabs=HTTP#shareaccesstier>`_.
    """

    COOL = "Cool"
    """Cool."""
    HOT = "Hot"
    """Hot."""
    PREMIUM = "Premium"
    """Premium."""
    TRANSACTION_OPTIMIZED = "TransactionOptimized"
    """TransactionOptimized."""


class AzureFileShareAccessType(str, Enum, metaclass=CaseInsensitiveEnumMeta):
    """Specifies how Container Groups can access the Azure file share i.e. all CG will share same
    Azure file share or going to have exclusive file share.
    """

    SHARED = "Shared"
    """Shared."""
    EXCLUSIVE = "Exclusive"
    """Exclusive."""


class ContainerGroupIpAddressType(str, Enum, metaclass=CaseInsensitiveEnumMeta):
    """Specifies if the IP is exposed to the public internet or private VNET."""

    PUBLIC = "Public"
    """Public."""
    PRIVATE = "Private"
    """Private."""


class ContainerGroupNetworkProtocol(str, Enum, metaclass=CaseInsensitiveEnumMeta):
    """The protocol associated with the port."""

    TCP = "TCP"
    """TCP."""
    UDP = "UDP"
    """UDP."""


class ContainerGroupPriority(str, Enum, metaclass=CaseInsensitiveEnumMeta):
    """The priority of the container group."""

    REGULAR = "Regular"
    """Regular."""
    SPOT = "Spot"
    """Spot."""


class ContainerGroupRestartPolicy(str, Enum, metaclass=CaseInsensitiveEnumMeta):
    """Restart policy for all containers within the container group.

    * `Always` Always restart
    * `OnFailure` Restart on failure
    * `Never` Never restart.
    """

    ALWAYS = "Always"
    """Always."""
    ON_FAILURE = "OnFailure"
    """OnFailure."""
    NEVER = "Never"
    """Never."""


class ContainerGroupSku(str, Enum, metaclass=CaseInsensitiveEnumMeta):
    """The container group SKU."""

    NOT_SPECIFIED = "NotSpecified"
    """NotSpecified."""
    STANDARD = "Standard"
    """Standard."""
    DEDICATED = "Dedicated"
    """Dedicated."""
    CONFIDENTIAL = "Confidential"
    """Confidential."""


class ContainerInstanceOperationsOrigin(str, Enum, metaclass=CaseInsensitiveEnumMeta):
    """The intended executor of the operation."""

    USER = "User"
    """User."""
    SYSTEM = "System"
    """System."""


class ContainerNetworkProtocol(str, Enum, metaclass=CaseInsensitiveEnumMeta):
    """The protocol associated with the port."""

    TCP = "TCP"
    """TCP."""
    UDP = "UDP"
    """UDP."""


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 DnsNameLabelReusePolicy(str, Enum, metaclass=CaseInsensitiveEnumMeta):
    """The value representing the security enum. The 'Unsecure' value is the default value if not
    selected and means the object's domain name label is not secured against subdomain takeover.
    The 'TenantReuse' value is the default value if selected and means the object's domain name
    label can be reused within the same tenant. The 'SubscriptionReuse' value means the object's
    domain name label can be reused within the same subscription. The 'ResourceGroupReuse' value
    means the object's domain name label can be reused within the same resource group. The
    'NoReuse' value means the object's domain name label cannot be reused within the same resource
    group, subscription, or tenant.
    """

    UNSECURE = "Unsecure"
    """Unsecure."""
    TENANT_REUSE = "TenantReuse"
    """TenantReuse."""
    SUBSCRIPTION_REUSE = "SubscriptionReuse"
    """SubscriptionReuse."""
    RESOURCE_GROUP_REUSE = "ResourceGroupReuse"
    """ResourceGroupReuse."""
    NOREUSE = "Noreuse"
    """Noreuse."""


class GpuSku(str, Enum, metaclass=CaseInsensitiveEnumMeta):
    """The SKU of the GPU resource."""

    K80 = "K80"
    """K80."""
    P100 = "P100"
    """P100."""
    V100 = "V100"
    """V100."""


class IdentityAccessLevel(str, Enum, metaclass=CaseInsensitiveEnumMeta):
    """The access level of an identity."""

    ALL = "All"
    """All."""
    SYSTEM = "System"
    """System."""
    USER = "User"
    """User."""


class LogAnalyticsLogType(str, Enum, metaclass=CaseInsensitiveEnumMeta):
    """The log type to be used."""

    CONTAINER_INSIGHTS = "ContainerInsights"
    """ContainerInsights."""
    CONTAINER_INSTANCE_LOGS = "ContainerInstanceLogs"
    """ContainerInstanceLogs."""


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 NGroupProvisioningState(str, Enum, metaclass=CaseInsensitiveEnumMeta):
    """The provisioning state, which only appears in the response."""

    CREATING = "Creating"
    """Creating."""
    UPDATING = "Updating"
    """Updating."""
    FAILED = "Failed"
    """Failed."""
    SUCCEEDED = "Succeeded"
    """Succeeded."""
    CANCELED = "Canceled"
    """Canceled."""
    DELETING = "Deleting"
    """Deleting."""
    MIGRATING = "Migrating"
    """Migrating."""


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

    MANUAL = "Manual"
    """Manual."""
    ROLLING = "Rolling"
    """Rolling."""


class OperatingSystemTypes(str, Enum, metaclass=CaseInsensitiveEnumMeta):
    """The operating system type required by the containers in the container group."""

    WINDOWS = "Windows"
    """Windows."""
    LINUX = "Linux"
    """Linux."""


class ResourceIdentityType(str, Enum, metaclass=CaseInsensitiveEnumMeta):
    """The type of identity used for the container group. The type 'SystemAssigned, UserAssigned'
    includes both an implicitly created identity and a set of user assigned identities. The type
    'None' will remove any identities from the container group.
    """

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


class SandboxGroupProvisioningState(str, Enum, metaclass=CaseInsensitiveEnumMeta):
    """The provisioning state of a SandboxGroup resource."""

    SUCCEEDED = "Succeeded"
    """Resource has been created."""
    FAILED = "Failed"
    """Resource creation failed."""
    CANCELED = "Canceled"
    """Resource creation was canceled."""
    UPDATING = "Updating"
    """The resource is being updated."""
    DELETING = "Deleting"
    """The resource is being deleted."""
    ACCEPTED = "Accepted"
    """The resource provisioning request was accepted but not yet started."""


class Scheme(str, Enum, metaclass=CaseInsensitiveEnumMeta):
    """The scheme."""

    HTTP = "http"
    """http."""
    HTTPS = "https"
    """https."""
