# 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 AuthenticationType(str, Enum, metaclass=CaseInsensitiveEnumMeta):
    """An enumeration of possible authentication types when connecting."""

    NONE = "None"
    """None."""
    WINDOWS_AUTHENTICATION = "WindowsAuthentication"
    """WindowsAuthentication."""
    SQL_AUTHENTICATION = "SqlAuthentication"
    """SqlAuthentication."""
    ACTIVE_DIRECTORY_INTEGRATED = "ActiveDirectoryIntegrated"
    """ActiveDirectoryIntegrated."""
    ACTIVE_DIRECTORY_PASSWORD = "ActiveDirectoryPassword"
    """ActiveDirectoryPassword."""


class AuthType(str, Enum, metaclass=CaseInsensitiveEnumMeta):
    """Authentication type used for accessing Azure Blob Storage."""

    ACCOUNT_KEY = "AccountKey"
    """Use an account key for authentication."""
    MANAGED_IDENTITY = "ManagedIdentity"
    """Use a managed identity for authentication."""


class BackupFileStatus(str, Enum, metaclass=CaseInsensitiveEnumMeta):
    """An enumeration of Status of the log backup file."""

    ARRIVED = "Arrived"
    """Arrived."""
    QUEUED = "Queued"
    """Queued."""
    UPLOADING = "Uploading"
    """Uploading."""
    UPLOADED = "Uploaded"
    """Uploaded."""
    RESTORING = "Restoring"
    """Restoring."""
    RESTORED = "Restored"
    """Restored."""
    CANCELLED = "Cancelled"
    """Cancelled."""


class BackupMode(str, Enum, metaclass=CaseInsensitiveEnumMeta):
    """An enumeration of backup modes."""

    CREATE_BACKUP = "CreateBackup"
    """CreateBackup."""
    EXISTING_BACKUP = "ExistingBackup"
    """ExistingBackup."""


class BackupType(str, Enum, metaclass=CaseInsensitiveEnumMeta):
    """Enum of the different backup types."""

    DATABASE = "Database"
    """Database."""
    TRANSACTION_LOG = "TransactionLog"
    """TransactionLog."""
    FILE = "File"
    """File."""
    DIFFERENTIAL_DATABASE = "DifferentialDatabase"
    """DifferentialDatabase."""
    DIFFERENTIAL_FILE = "DifferentialFile"
    """DifferentialFile."""
    PARTIAL = "Partial"
    """Partial."""
    DIFFERENTIAL_PARTIAL = "DifferentialPartial"
    """DifferentialPartial."""


class CommandState(str, Enum, metaclass=CaseInsensitiveEnumMeta):
    """The state of the command. This is ignored if submitted."""

    UNKNOWN = "Unknown"
    """Unknown."""
    ACCEPTED = "Accepted"
    """Accepted."""
    RUNNING = "Running"
    """Running."""
    SUCCEEDED = "Succeeded"
    """Succeeded."""
    FAILED = "Failed"
    """Failed."""


class CommandType(str, Enum, metaclass=CaseInsensitiveEnumMeta):
    """Command type."""

    MIGRATE_SYNC_COMPLETE_DATABASE = "Migrate.Sync.Complete.Database"
    """Migrate.Sync.Complete.Database."""
    MIGRATE_SQL_SERVER_AZURE_DB_SQL_MI_COMPLETE = "Migrate.SqlServer.AzureDbSqlMi.Complete"
    """Migrate.SqlServer.AzureDbSqlMi.Complete."""
    CANCEL = "cancel"
    """cancel."""
    FINISH = "finish"
    """finish."""
    RESTART = "restart"
    """restart."""


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 DatabaseCompatLevel(str, Enum, metaclass=CaseInsensitiveEnumMeta):
    """An enumeration of SQL Server database compatibility levels."""

    COMPAT_LEVEL80 = "CompatLevel80"
    """CompatLevel80."""
    COMPAT_LEVEL90 = "CompatLevel90"
    """CompatLevel90."""
    COMPAT_LEVEL100 = "CompatLevel100"
    """CompatLevel100."""
    COMPAT_LEVEL110 = "CompatLevel110"
    """CompatLevel110."""
    COMPAT_LEVEL120 = "CompatLevel120"
    """CompatLevel120."""
    COMPAT_LEVEL130 = "CompatLevel130"
    """CompatLevel130."""
    COMPAT_LEVEL140 = "CompatLevel140"
    """CompatLevel140."""


class DatabaseFileType(str, Enum, metaclass=CaseInsensitiveEnumMeta):
    """An enumeration of SQL Server database file types."""

    ROWS = "Rows"
    """Rows."""
    LOG = "Log"
    """Log."""
    FILESTREAM = "Filestream"
    """Filestream."""
    NOT_SUPPORTED = "NotSupported"
    """NotSupported."""
    FULLTEXT = "Fulltext"
    """Fulltext."""


class DatabaseMigrationStage(str, Enum, metaclass=CaseInsensitiveEnumMeta):
    """Current stage of migration."""

    NONE = "None"
    """None."""
    INITIALIZE = "Initialize"
    """Initialize."""
    BACKUP = "Backup"
    """Backup."""
    FILE_COPY = "FileCopy"
    """FileCopy."""
    RESTORE = "Restore"
    """Restore."""
    COMPLETED = "Completed"
    """Completed."""


class DatabaseMigrationState(str, Enum, metaclass=CaseInsensitiveEnumMeta):
    """Database level migration state."""

    UNDEFINED = "UNDEFINED"
    """UNDEFINED."""
    INITIAL = "INITIAL"
    """INITIAL."""
    FULL_BACKUP_UPLOAD_START = "FULL_BACKUP_UPLOAD_START"
    """FULL_BACKUP_UPLOAD_START."""
    LOG_SHIPPING_START = "LOG_SHIPPING_START"
    """LOG_SHIPPING_START."""
    UPLOAD_LOG_FILES_START = "UPLOAD_LOG_FILES_START"
    """UPLOAD_LOG_FILES_START."""
    CUTOVER_START = "CUTOVER_START"
    """CUTOVER_START."""
    POST_CUTOVER_COMPLETE = "POST_CUTOVER_COMPLETE"
    """POST_CUTOVER_COMPLETE."""
    COMPLETED = "COMPLETED"
    """COMPLETED."""
    CANCELLED = "CANCELLED"
    """CANCELLED."""
    FAILED = "FAILED"
    """FAILED."""


class DatabaseState(str, Enum, metaclass=CaseInsensitiveEnumMeta):
    """An enumeration of SQL Server Database states."""

    ONLINE = "Online"
    """Online."""
    RESTORING = "Restoring"
    """Restoring."""
    RECOVERING = "Recovering"
    """Recovering."""
    RECOVERY_PENDING = "RecoveryPending"
    """RecoveryPending."""
    SUSPECT = "Suspect"
    """Suspect."""
    EMERGENCY = "Emergency"
    """Emergency."""
    OFFLINE = "Offline"
    """Offline."""
    COPYING = "Copying"
    """Copying."""
    OFFLINE_SECONDARY = "OfflineSecondary"
    """OfflineSecondary."""


class LoginMigrationStage(str, Enum, metaclass=CaseInsensitiveEnumMeta):
    """Enum of the different stage of login migration."""

    NONE = "None"
    """None."""
    INITIALIZE = "Initialize"
    """Initialize."""
    LOGIN_MIGRATION = "LoginMigration"
    """LoginMigration."""
    ESTABLISH_USER_MAPPING = "EstablishUserMapping"
    """EstablishUserMapping."""
    ASSIGN_ROLE_MEMBERSHIP = "AssignRoleMembership"
    """AssignRoleMembership."""
    ASSIGN_ROLE_OWNERSHIP = "AssignRoleOwnership"
    """AssignRoleOwnership."""
    ESTABLISH_SERVER_PERMISSIONS = "EstablishServerPermissions"
    """EstablishServerPermissions."""
    ESTABLISH_OBJECT_PERMISSIONS = "EstablishObjectPermissions"
    """EstablishObjectPermissions."""
    COMPLETED = "Completed"
    """Completed."""


class LoginType(str, Enum, metaclass=CaseInsensitiveEnumMeta):
    """Enum mapping of SMO LoginType."""

    WINDOWS_USER = "WindowsUser"
    """WindowsUser."""
    WINDOWS_GROUP = "WindowsGroup"
    """WindowsGroup."""
    SQL_LOGIN = "SqlLogin"
    """SqlLogin."""
    CERTIFICATE = "Certificate"
    """Certificate."""
    ASYMMETRIC_KEY = "AsymmetricKey"
    """AsymmetricKey."""
    EXTERNAL_USER = "ExternalUser"
    """ExternalUser."""
    EXTERNAL_GROUP = "ExternalGroup"
    """ExternalGroup."""


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 MigrationState(str, Enum, metaclass=CaseInsensitiveEnumMeta):
    """Current state of migration."""

    NONE = "None"
    """None."""
    IN_PROGRESS = "InProgress"
    """InProgress."""
    FAILED = "Failed"
    """Failed."""
    WARNING = "Warning"
    """Warning."""
    COMPLETED = "Completed"
    """Completed."""
    SKIPPED = "Skipped"
    """Skipped."""
    STOPPED = "Stopped"
    """Stopped."""


class MigrationStatus(str, Enum, metaclass=CaseInsensitiveEnumMeta):
    """Current status of migration."""

    DEFAULT = "Default"
    """Default."""
    CONNECTING = "Connecting"
    """Connecting."""
    SOURCE_AND_TARGET_SELECTED = "SourceAndTargetSelected"
    """SourceAndTargetSelected."""
    SELECT_LOGINS = "SelectLogins"
    """SelectLogins."""
    CONFIGURED = "Configured"
    """Configured."""
    RUNNING = "Running"
    """Running."""
    ERROR = "Error"
    """Error."""
    STOPPED = "Stopped"
    """Stopped."""
    COMPLETED = "Completed"
    """Completed."""
    COMPLETED_WITH_WARNINGS = "CompletedWithWarnings"
    """CompletedWithWarnings."""


class MongoDbClusterType(str, Enum, metaclass=CaseInsensitiveEnumMeta):
    """The type of data source."""

    BLOB_CONTAINER = "BlobContainer"
    """BlobContainer."""
    COSMOS_DB = "CosmosDb"
    """CosmosDb."""
    MONGO_DB = "MongoDb"
    """MongoDb."""


class MongoDbErrorType(str, Enum, metaclass=CaseInsensitiveEnumMeta):
    """The type of error or warning."""

    ERROR = "Error"
    """Error."""
    VALIDATION_ERROR = "ValidationError"
    """ValidationError."""
    WARNING = "Warning"
    """Warning."""


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

    NOT_STARTED = "NotStarted"
    """NotStarted."""
    VALIDATING_INPUT = "ValidatingInput"
    """ValidatingInput."""
    INITIALIZING = "Initializing"
    """Initializing."""
    RESTARTING = "Restarting"
    """Restarting."""
    COPYING = "Copying"
    """Copying."""
    INITIAL_REPLAY = "InitialReplay"
    """InitialReplay."""
    REPLAYING = "Replaying"
    """Replaying."""
    FINALIZING = "Finalizing"
    """Finalizing."""
    COMPLETE = "Complete"
    """Complete."""
    CANCELED = "Canceled"
    """Canceled."""
    FAILED = "Failed"
    """Failed."""


class MongoDbProgressResultType(str, Enum, metaclass=CaseInsensitiveEnumMeta):
    """The type of progress object."""

    MIGRATION = "Migration"
    """Migration."""
    DATABASE = "Database"
    """Database."""
    COLLECTION = "Collection"
    """Collection."""


class MongoDbReplication(str, Enum, metaclass=CaseInsensitiveEnumMeta):
    """Describes how changes will be replicated from the source to the target. The default is OneTime."""

    DISABLED = "Disabled"
    """Disabled."""
    ONE_TIME = "OneTime"
    """OneTime."""
    CONTINUOUS = "Continuous"
    """Continuous."""


class MongoDbShardKeyOrder(str, Enum, metaclass=CaseInsensitiveEnumMeta):
    """The field ordering."""

    FORWARD = "Forward"
    """Forward."""
    REVERSE = "Reverse"
    """Reverse."""
    HASHED = "Hashed"
    """Hashed."""


class MongoMigrationStatus(str, Enum, metaclass=CaseInsensitiveEnumMeta):
    """Migration Status."""

    NOT_STARTED = "NotStarted"
    """NotStarted."""
    IN_PROGRESS = "InProgress"
    """InProgress."""
    COMPLETED = "Completed"
    """Completed."""
    FAILED = "Failed"
    """Failed."""
    CANCELED = "Canceled"
    """Canceled."""


class MySqlTargetPlatformType(str, Enum, metaclass=CaseInsensitiveEnumMeta):
    """An enumeration of possible target types when migrating from MySQL."""

    SQL_SERVER = "SqlServer"
    """SqlServer."""
    AZURE_DB_FOR_MY_SQL = "AzureDbForMySQL"
    """AzureDbForMySQL."""


class NameCheckFailureReason(str, Enum, metaclass=CaseInsensitiveEnumMeta):
    """The reason why the name is not available, if nameAvailable is false."""

    ALREADY_EXISTS = "AlreadyExists"
    """AlreadyExists."""
    INVALID = "Invalid"
    """Invalid."""


class ObjectType(str, Enum, metaclass=CaseInsensitiveEnumMeta):
    """An enumeration of type of objects."""

    STORED_PROCEDURES = "StoredProcedures"
    """StoredProcedures."""
    TABLE = "Table"
    """Table."""
    USER = "User"
    """User."""
    VIEW = "View"
    """View."""
    FUNCTION = "Function"
    """Function."""


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

    USER = "user"
    """user."""
    SYSTEM = "system"
    """system."""


class ProjectProvisioningState(str, Enum, metaclass=CaseInsensitiveEnumMeta):
    """The project's provisioning state."""

    DELETING = "Deleting"
    """Deleting."""
    SUCCEEDED = "Succeeded"
    """Succeeded."""


class ProjectSourcePlatform(str, Enum, metaclass=CaseInsensitiveEnumMeta):
    """Source platform of the project."""

    SQL = "SQL"
    """SQL."""
    MY_SQL = "MySQL"
    """MySQL."""
    POSTGRE_SQL = "PostgreSql"
    """PostgreSql."""
    MONGO_DB = "MongoDb"
    """MongoDb."""
    UNKNOWN = "Unknown"
    """Unknown."""


class ProjectTargetPlatform(str, Enum, metaclass=CaseInsensitiveEnumMeta):
    """Target platform of the project."""

    SQLDB = "SQLDB"
    """SQLDB."""
    SQLMI = "SQLMI"
    """SQLMI."""
    AZURE_DB_FOR_MY_SQL = "AzureDbForMySql"
    """AzureDbForMySql."""
    AZURE_DB_FOR_POSTGRE_SQL = "AzureDbForPostgreSql"
    """AzureDbForPostgreSql."""
    MONGO_DB = "MongoDb"
    """MongoDb."""
    UNKNOWN = "Unknown"
    """Unknown."""


class ProvisioningState(str, Enum, metaclass=CaseInsensitiveEnumMeta):
    """Provisioning State of migration. ProvisioningState as Succeeded implies that validations have
    been performed and migration has started.
    """

    PROVISIONING = "Provisioning"
    """Provisioning."""
    UPDATING = "Updating"
    """Updating."""
    SUCCEEDED = "Succeeded"
    """Succeeded."""
    FAILED = "Failed"
    """Failed."""
    CANCELED = "Canceled"
    """Canceled."""


class ReplicateMigrationState(str, Enum, metaclass=CaseInsensitiveEnumMeta):
    """Wrapper for replicate reported migration states."""

    UNDEFINED = "UNDEFINED"
    """UNDEFINED."""
    VALIDATING = "VALIDATING"
    """VALIDATING."""
    PENDING = "PENDING"
    """PENDING."""
    COMPLETE = "COMPLETE"
    """COMPLETE."""
    ACTION_REQUIRED = "ACTION_REQUIRED"
    """ACTION_REQUIRED."""
    FAILED = "FAILED"
    """FAILED."""


class ResourceSkuCapacityScaleType(str, Enum, metaclass=CaseInsensitiveEnumMeta):
    """The scale type applicable to the SKU."""

    AUTOMATIC = "Automatic"
    """Automatic."""
    MANUAL = "Manual"
    """Manual."""
    NONE = "None"
    """None."""


class ResourceSkuRestrictionsReasonCode(str, Enum, metaclass=CaseInsensitiveEnumMeta):
    """The reason code for restriction."""

    QUOTA_ID = "QuotaId"
    """QuotaId."""
    NOT_AVAILABLE_FOR_SUBSCRIPTION = "NotAvailableForSubscription"
    """NotAvailableForSubscription."""


class ResourceSkuRestrictionsType(str, Enum, metaclass=CaseInsensitiveEnumMeta):
    """The type of restrictions."""

    LOCATION = "location"
    """location."""


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

    SQL_MI = "SqlMi"
    """SqlMi."""
    SQL_VM = "SqlVm"
    """SqlVm."""
    SQL_DB = "SqlDb"
    """SqlDb."""
    MONGO_TO_COSMOS_DB_MONGO = "MongoToCosmosDbMongo"
    """MongoToCosmosDbMongo."""
    DATABASE_MIGRATION_PROPERTIES = "DatabaseMigrationProperties"
    """DatabaseMigrationProperties."""


class ScenarioSource(str, Enum, metaclass=CaseInsensitiveEnumMeta):
    """An enumeration of source type."""

    ACCESS = "Access"
    """Access."""
    DB2 = "DB2"
    """DB2."""
    MY_SQL = "MySQL"
    """MySQL."""
    ORACLE = "Oracle"
    """Oracle."""
    SQL = "SQL"
    """SQL."""
    SYBASE = "Sybase"
    """Sybase."""
    POSTGRE_SQL = "PostgreSQL"
    """PostgreSQL."""
    MONGO_DB = "MongoDB"
    """MongoDB."""
    SQLRDS = "SQLRDS"
    """SQLRDS."""
    MY_SQLRDS = "MySQLRDS"
    """MySQLRDS."""
    POSTGRE_SQLRDS = "PostgreSQLRDS"
    """PostgreSQLRDS."""


class ScenarioTarget(str, Enum, metaclass=CaseInsensitiveEnumMeta):
    """An enumeration of target type."""

    SQL_SERVER = "SQLServer"
    """SQLServer."""
    SQLDB = "SQLDB"
    """SQLDB."""
    SQLDW = "SQLDW"
    """SQLDW."""
    SQLMI = "SQLMI"
    """SQLMI."""
    AZURE_DB_FOR_MY_SQL = "AzureDBForMySql"
    """AzureDBForMySql."""
    AZURE_DB_FOR_POSTGRES_SQL = "AzureDBForPostgresSQL"
    """AzureDBForPostgresSQL."""
    MONGO_DB = "MongoDB"
    """MongoDB."""


class SchemaMigrationOption(str, Enum, metaclass=CaseInsensitiveEnumMeta):
    """Option for how schema is extracted and applied to target."""

    NONE = "None"
    """None."""
    EXTRACT_FROM_SOURCE = "ExtractFromSource"
    """ExtractFromSource."""
    USE_STORAGE_FILE = "UseStorageFile"
    """UseStorageFile."""


class SchemaMigrationStage(str, Enum, metaclass=CaseInsensitiveEnumMeta):
    """Current stage of schema migration."""

    NOT_STARTED = "NotStarted"
    """NotStarted."""
    VALIDATING_INPUTS = "ValidatingInputs"
    """ValidatingInputs."""
    COLLECTING_OBJECTS = "CollectingObjects"
    """CollectingObjects."""
    DOWNLOADING_SCRIPT = "DownloadingScript"
    """DownloadingScript."""
    GENERATING_SCRIPT = "GeneratingScript"
    """GeneratingScript."""
    UPLOADING_SCRIPT = "UploadingScript"
    """UploadingScript."""
    DEPLOYING_SCHEMA = "DeployingSchema"
    """DeployingSchema."""
    COMPLETED = "Completed"
    """Completed."""
    COMPLETED_WITH_WARNINGS = "CompletedWithWarnings"
    """CompletedWithWarnings."""
    FAILED = "Failed"
    """Failed."""


class ServerLevelPermissionsGroup(str, Enum, metaclass=CaseInsensitiveEnumMeta):
    """Permission group for validations. These groups will run a set of permissions for validating
    user activity. Select the permission group for the activity that you are performing.
    """

    DEFAULT = "Default"
    """Default."""
    MIGRATION_FROM_SQL_SERVER_TO_AZURE_DB = "MigrationFromSqlServerToAzureDB"
    """MigrationFromSqlServerToAzureDB."""
    MIGRATION_FROM_SQL_SERVER_TO_AZURE_MI = "MigrationFromSqlServerToAzureMI"
    """MigrationFromSqlServerToAzureMI."""
    MIGRATION_FROM_MY_SQL_TO_AZURE_DB_FOR_MY_SQL = "MigrationFromMySQLToAzureDBForMySQL"
    """MigrationFromMySQLToAzureDBForMySQL."""
    MIGRATION_FROM_SQL_SERVER_TO_AZURE_VM = "MigrationFromSqlServerToAzureVM"
    """MigrationFromSqlServerToAzureVM."""


class ServiceProvisioningState(str, Enum, metaclass=CaseInsensitiveEnumMeta):
    """The resource's provisioning state."""

    ACCEPTED = "Accepted"
    """Accepted."""
    DELETING = "Deleting"
    """Deleting."""
    DEPLOYING = "Deploying"
    """Deploying."""
    STOPPED = "Stopped"
    """Stopped."""
    STOPPING = "Stopping"
    """Stopping."""
    STARTING = "Starting"
    """Starting."""
    FAILED_TO_START = "FailedToStart"
    """FailedToStart."""
    FAILED_TO_STOP = "FailedToStop"
    """FailedToStop."""
    SUCCEEDED = "Succeeded"
    """Succeeded."""
    FAILED = "Failed"
    """Failed."""


class ServiceScalability(str, Enum, metaclass=CaseInsensitiveEnumMeta):
    """The scalability approach."""

    NONE = "none"
    """none."""
    MANUAL = "manual"
    """manual."""
    AUTOMATIC = "automatic"
    """automatic."""


class Severity(str, Enum, metaclass=CaseInsensitiveEnumMeta):
    """Severity of the validation error."""

    MESSAGE = "Message"
    """Message."""
    WARNING = "Warning"
    """Warning."""
    ERROR = "Error"
    """Error."""


class SqlSourcePlatform(str, Enum, metaclass=CaseInsensitiveEnumMeta):
    """An enumeration of source platform types."""

    SQL_ON_PREM = "SqlOnPrem"
    """SqlOnPrem."""


class SsisMigrationOverwriteOption(str, Enum, metaclass=CaseInsensitiveEnumMeta):
    """The overwrite option for SSIS object migration, only ignore and overwrite are supported in DMS
    (classic) now and future may add Reuse option for container object.
    """

    IGNORE = "Ignore"
    """Ignore."""
    OVERWRITE = "Overwrite"
    """Overwrite."""


class SsisMigrationStage(str, Enum, metaclass=CaseInsensitiveEnumMeta):
    """Current stage of SSIS migration."""

    NONE = "None"
    """None."""
    INITIALIZE = "Initialize"
    """Initialize."""
    IN_PROGRESS = "InProgress"
    """InProgress."""
    COMPLETED = "Completed"
    """Completed."""


class SsisStoreType(str, Enum, metaclass=CaseInsensitiveEnumMeta):
    """An enumeration of supported source SSIS store type in DMS (classic)."""

    SSIS_CATALOG = "SsisCatalog"
    """SsisCatalog."""


class SyncDatabaseMigrationReportingState(str, Enum, metaclass=CaseInsensitiveEnumMeta):
    """Enum of the different state of database level online migration."""

    UNDEFINED = "UNDEFINED"
    """UNDEFINED."""
    CONFIGURING = "CONFIGURING"
    """CONFIGURING."""
    INITIALIAZING = "INITIALIAZING"
    """INITIALIAZING."""
    STARTING = "STARTING"
    """STARTING."""
    RUNNING = "RUNNING"
    """RUNNING."""
    READY_TO_COMPLETE = "READY_TO_COMPLETE"
    """READY_TO_COMPLETE."""
    COMPLETING = "COMPLETING"
    """COMPLETING."""
    COMPLETE = "COMPLETE"
    """COMPLETE."""
    CANCELLING = "CANCELLING"
    """CANCELLING."""
    CANCELLED = "CANCELLED"
    """CANCELLED."""
    FAILED = "FAILED"
    """FAILED."""
    VALIDATING = "VALIDATING"
    """VALIDATING."""
    VALIDATION_COMPLETE = "VALIDATION_COMPLETE"
    """VALIDATION_COMPLETE."""
    VALIDATION_FAILED = "VALIDATION_FAILED"
    """VALIDATION_FAILED."""
    RESTORE_IN_PROGRESS = "RESTORE_IN_PROGRESS"
    """RESTORE_IN_PROGRESS."""
    RESTORE_COMPLETED = "RESTORE_COMPLETED"
    """RESTORE_COMPLETED."""
    BACKUP_IN_PROGRESS = "BACKUP_IN_PROGRESS"
    """BACKUP_IN_PROGRESS."""
    BACKUP_COMPLETED = "BACKUP_COMPLETED"
    """BACKUP_COMPLETED."""


class SyncTableMigrationState(str, Enum, metaclass=CaseInsensitiveEnumMeta):
    """Enum of the different state of table level online migration."""

    BEFORE_LOAD = "BEFORE_LOAD"
    """BEFORE_LOAD."""
    FULL_LOAD = "FULL_LOAD"
    """FULL_LOAD."""
    COMPLETED = "COMPLETED"
    """COMPLETED."""
    CANCELED = "CANCELED"
    """CANCELED."""
    ERROR = "ERROR"
    """ERROR."""
    FAILED = "FAILED"
    """FAILED."""


class TaskState(str, Enum, metaclass=CaseInsensitiveEnumMeta):
    """The state of the task. This is ignored if submitted."""

    UNKNOWN = "Unknown"
    """Unknown."""
    QUEUED = "Queued"
    """Queued."""
    RUNNING = "Running"
    """Running."""
    CANCELED = "Canceled"
    """Canceled."""
    SUCCEEDED = "Succeeded"
    """Succeeded."""
    FAILED = "Failed"
    """Failed."""
    FAILED_INPUT_VALIDATION = "FailedInputValidation"
    """FailedInputValidation."""
    FAULTED = "Faulted"
    """Faulted."""


class TaskType(str, Enum, metaclass=CaseInsensitiveEnumMeta):
    """Task type."""

    CONNECT_MONGO_DB = "Connect.MongoDb"
    """Connect.MongoDb."""
    CONNECT_TO_SOURCE_SQL_SERVER = "ConnectToSource.SqlServer"
    """ConnectToSource.SqlServer."""
    CONNECT_TO_SOURCE_SQL_SERVER_SYNC = "ConnectToSource.SqlServer.Sync"
    """ConnectToSource.SqlServer.Sync."""
    CONNECT_TO_SOURCE_POSTGRE_SQL_SYNC = "ConnectToSource.PostgreSql.Sync"
    """ConnectToSource.PostgreSql.Sync."""
    CONNECT_TO_SOURCE_MY_SQL = "ConnectToSource.MySql"
    """ConnectToSource.MySql."""
    CONNECT_TO_SOURCE_ORACLE_SYNC = "ConnectToSource.Oracle.Sync"
    """ConnectToSource.Oracle.Sync."""
    CONNECT_TO_TARGET_SQL_DB = "ConnectToTarget.SqlDb"
    """ConnectToTarget.SqlDb."""
    CONNECT_TO_TARGET_SQL_DB_SYNC = "ConnectToTarget.SqlDb.Sync"
    """ConnectToTarget.SqlDb.Sync."""
    CONNECT_TO_TARGET_AZURE_DB_FOR_POSTGRE_SQL_SYNC = "ConnectToTarget.AzureDbForPostgreSql.Sync"
    """ConnectToTarget.AzureDbForPostgreSql.Sync."""
    CONNECT_TO_TARGET_ORACLE_AZURE_DB_FOR_POSTGRE_SQL_SYNC = "ConnectToTarget.Oracle.AzureDbForPostgreSql.Sync"
    """ConnectToTarget.Oracle.AzureDbForPostgreSql.Sync."""
    CONNECT_TO_TARGET_AZURE_SQL_DB_MI = "ConnectToTarget.AzureSqlDbMI"
    """ConnectToTarget.AzureSqlDbMI."""
    CONNECT_TO_TARGET_AZURE_SQL_DB_MI_SYNC_LRS = "ConnectToTarget.AzureSqlDbMI.Sync.LRS"
    """ConnectToTarget.AzureSqlDbMI.Sync.LRS."""
    CONNECT_TO_TARGET_AZURE_DB_FOR_MY_SQL = "ConnectToTarget.AzureDbForMySql"
    """ConnectToTarget.AzureDbForMySql."""
    GET_USER_TABLES_SQL = "GetUserTables.Sql"
    """GetUserTables.Sql."""
    GET_USER_TABLES_AZURE_SQL_DB_SYNC = "GetUserTables.AzureSqlDb.Sync"
    """GetUserTables.AzureSqlDb.Sync."""
    GET_USER_TABLES_ORACLE = "GetUserTablesOracle"
    """GetUserTablesOracle."""
    GET_USER_TABLES_POSTGRE_SQL = "GetUserTablesPostgreSql"
    """GetUserTablesPostgreSql."""
    GET_USER_TABLES_MY_SQL = "GetUserTablesMySql"
    """GetUserTablesMySql."""
    MIGRATE_MONGO_DB = "Migrate.MongoDb"
    """Migrate.MongoDb."""
    MIGRATE_SQL_SERVER_AZURE_SQL_DB_MI = "Migrate.SqlServer.AzureSqlDbMI"
    """Migrate.SqlServer.AzureSqlDbMI."""
    MIGRATE_SQL_SERVER_AZURE_SQL_DB_MI_SYNC_LRS = "Migrate.SqlServer.AzureSqlDbMI.Sync.LRS"
    """Migrate.SqlServer.AzureSqlDbMI.Sync.LRS."""
    MIGRATE_SQL_SERVER_SQL_DB = "Migrate.SqlServer.SqlDb"
    """Migrate.SqlServer.SqlDb."""
    MIGRATE_SQL_SERVER_AZURE_SQL_DB_SYNC = "Migrate.SqlServer.AzureSqlDb.Sync"
    """Migrate.SqlServer.AzureSqlDb.Sync."""
    MIGRATE_MY_SQL_AZURE_DB_FOR_MY_SQL_SYNC = "Migrate.MySql.AzureDbForMySql.Sync"
    """Migrate.MySql.AzureDbForMySql.Sync."""
    MIGRATE_MY_SQL_AZURE_DB_FOR_MY_SQL = "Migrate.MySql.AzureDbForMySql"
    """Migrate.MySql.AzureDbForMySql."""
    MIGRATE_POSTGRE_SQL_AZURE_DB_FOR_POSTGRE_SQL_SYNC_V2 = "Migrate.PostgreSql.AzureDbForPostgreSql.SyncV2"
    """Migrate.PostgreSql.AzureDbForPostgreSql.SyncV2."""
    MIGRATE_ORACLE_AZURE_DB_FOR_POSTGRE_SQL_SYNC = "Migrate.Oracle.AzureDbForPostgreSql.Sync"
    """Migrate.Oracle.AzureDbForPostgreSql.Sync."""
    VALIDATE_MIGRATION_INPUT_SQL_SERVER_SQL_DB_SYNC = "ValidateMigrationInput.SqlServer.SqlDb.Sync"
    """ValidateMigrationInput.SqlServer.SqlDb.Sync."""
    VALIDATE_MIGRATION_INPUT_SQL_SERVER_AZURE_SQL_DB_MI = "ValidateMigrationInput.SqlServer.AzureSqlDbMI"
    """ValidateMigrationInput.SqlServer.AzureSqlDbMI."""
    VALIDATE_MIGRATION_INPUT_SQL_SERVER_AZURE_SQL_DB_MI_SYNC_LRS = (
        "ValidateMigrationInput.SqlServer.AzureSqlDbMI.Sync.LRS"
    )
    """ValidateMigrationInput.SqlServer.AzureSqlDbMI.Sync.LRS."""
    VALIDATE_MONGO_DB = "Validate.MongoDb"
    """Validate.MongoDb."""
    VALIDATE_ORACLE_AZURE_DB_POSTGRE_SQL_SYNC = "Validate.Oracle.AzureDbPostgreSql.Sync"
    """Validate.Oracle.AzureDbPostgreSql.Sync."""
    GET_TDE_CERTIFICATES_SQL = "GetTDECertificates.Sql"
    """GetTDECertificates.Sql."""
    MIGRATE_SSIS = "Migrate.Ssis"
    """Migrate.Ssis."""
    SERVICE_CHECK_OCI = "Service.Check.OCI"
    """Service.Check.OCI."""
    SERVICE_UPLOAD_OCI = "Service.Upload.OCI"
    """Service.Upload.OCI."""
    SERVICE_INSTALL_OCI = "Service.Install.OCI"
    """Service.Install.OCI."""
    MIGRATE_SCHEMA_SQL_SERVER_SQL_DB = "MigrateSchemaSqlServerSqlDb"
    """MigrateSchemaSqlServerSqlDb."""


class UpdateActionType(str, Enum, metaclass=CaseInsensitiveEnumMeta):
    """Type of the actual difference for the compared object, while performing schema comparison."""

    DELETED_ON_TARGET = "DeletedOnTarget"
    """DeletedOnTarget."""
    CHANGED_ON_TARGET = "ChangedOnTarget"
    """ChangedOnTarget."""
    ADDED_ON_TARGET = "AddedOnTarget"
    """AddedOnTarget."""


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

    DEFAULT = "Default"
    """Default."""
    NOT_STARTED = "NotStarted"
    """NotStarted."""
    INITIALIZED = "Initialized"
    """Initialized."""
    IN_PROGRESS = "InProgress"
    """InProgress."""
    COMPLETED = "Completed"
    """Completed."""
    COMPLETED_WITH_ISSUES = "CompletedWithIssues"
    """CompletedWithIssues."""
    STOPPED = "Stopped"
    """Stopped."""
    FAILED = "Failed"
    """Failed."""
