# coding=utf-8
# *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. ***
# *** Do not edit by hand unless you're certain you know what you are doing! ***

import copy
import warnings
import sys
import pulumi
import pulumi.runtime
from typing import Any, Mapping, Optional, Sequence, Union, overload
if sys.version_info >= (3, 11):
    from typing import NotRequired, TypedDict, TypeAlias
else:
    from typing_extensions import NotRequired, TypedDict, TypeAlias
from .. import _utilities

__all__ = ['MigrationJobArgs', 'MigrationJob']

@pulumi.input_type
class MigrationJobArgs:
    def __init__(__self__, *,
                 data_initialization: pulumi.Input[bool],
                 data_synchronization: pulumi.Input[bool],
                 db_list: pulumi.Input[str],
                 destination_endpoint_engine_name: pulumi.Input[str],
                 destination_endpoint_instance_type: pulumi.Input[str],
                 dts_instance_id: pulumi.Input[str],
                 source_endpoint_engine_name: pulumi.Input[str],
                 source_endpoint_instance_type: pulumi.Input[str],
                 structure_initialization: pulumi.Input[bool],
                 checkpoint: Optional[pulumi.Input[str]] = None,
                 destination_endpoint_database_name: Optional[pulumi.Input[str]] = None,
                 destination_endpoint_instance_id: Optional[pulumi.Input[str]] = None,
                 destination_endpoint_ip: Optional[pulumi.Input[str]] = None,
                 destination_endpoint_oracle_sid: Optional[pulumi.Input[str]] = None,
                 destination_endpoint_password: Optional[pulumi.Input[str]] = None,
                 destination_endpoint_port: Optional[pulumi.Input[str]] = None,
                 destination_endpoint_region: Optional[pulumi.Input[str]] = None,
                 destination_endpoint_user_name: Optional[pulumi.Input[str]] = None,
                 dts_job_name: Optional[pulumi.Input[str]] = None,
                 instance_class: Optional[pulumi.Input[str]] = None,
                 source_endpoint_database_name: Optional[pulumi.Input[str]] = None,
                 source_endpoint_instance_id: Optional[pulumi.Input[str]] = None,
                 source_endpoint_ip: Optional[pulumi.Input[str]] = None,
                 source_endpoint_oracle_sid: Optional[pulumi.Input[str]] = None,
                 source_endpoint_owner_id: Optional[pulumi.Input[str]] = None,
                 source_endpoint_password: Optional[pulumi.Input[str]] = None,
                 source_endpoint_port: Optional[pulumi.Input[str]] = None,
                 source_endpoint_region: Optional[pulumi.Input[str]] = None,
                 source_endpoint_role: Optional[pulumi.Input[str]] = None,
                 source_endpoint_user_name: Optional[pulumi.Input[str]] = None,
                 status: Optional[pulumi.Input[str]] = None):
        """
        The set of arguments for constructing a MigrationJob resource.
        :param pulumi.Input[bool] data_initialization: Whether to execute DTS supports schema migration.
        :param pulumi.Input[bool] data_synchronization: Whether to perform incremental data migration.
        :param pulumi.Input[str] db_list: Migration object, in the format of JSON strings. For detailed definition instructions, please refer to [the description of migration, migration or subscription objects](https://help.aliyun.com/document_detail/209545.html).
        :param pulumi.Input[str] destination_endpoint_engine_name: The type of destination database. Valid values: `ADS`, `ADB30`, `AS400`, `DATAHUB`, `DB2`, `GREENPLUM`, `KAFKA`, `MONGODB`, `MSSQL`, `MySQL`, `ORACLE`, `PolarDB`, `POLARDBX20`, `POLARDB_O`, `PostgreSQL`.
        :param pulumi.Input[str] destination_endpoint_instance_type: The type of destination instance. Valid values: `ADS`, `CEN`, `DATAHUB`, `DG`, `ECS`, `EXPRESS`, `GREENPLUM`, `MONGODB`, `OTHER`, `PolarDB`, `POLARDBX20`, `RDS`.
        :param pulumi.Input[str] dts_instance_id: The Migration instance ID. The ID of `dts.MigrationInstance`.
        :param pulumi.Input[str] source_endpoint_engine_name: The type of source database. Valid values: `AS400`, `DB2`, `DMSPOLARDB`, `HBASE`, `MONGODB`, `MSSQL`, `MySQL`, `ORACLE`, `PolarDB`, `POLARDBX20`, `POLARDB_O`, `POSTGRESQL`, `TERADATA`.
        :param pulumi.Input[str] source_endpoint_instance_type: The type of source instance. Valid values: `CEN`, `DG`, `DISTRIBUTED_DMSLOGICDB`, `ECS`, `EXPRESS`, `MONGODB`, `OTHER`, `PolarDB`, `POLARDBX20`, `RDS`.
        :param pulumi.Input[bool] structure_initialization: Whether to perform a database table structure to migrate.
        :param pulumi.Input[str] checkpoint: Start time in Unix timestamp format.
        :param pulumi.Input[str] destination_endpoint_database_name: The name of migrate the database.
        :param pulumi.Input[str] destination_endpoint_instance_id: The ID of destination instance.
        :param pulumi.Input[str] destination_endpoint_ip: The ip of source endpoint.
        :param pulumi.Input[str] destination_endpoint_oracle_sid: The SID of Oracle database.
        :param pulumi.Input[str] destination_endpoint_password: The password of database account.
        :param pulumi.Input[str] destination_endpoint_port: The port of source endpoint.
        :param pulumi.Input[str] destination_endpoint_region: The region of destination instance.
        :param pulumi.Input[str] destination_endpoint_user_name: The username of database account.
        :param pulumi.Input[str] dts_job_name: The name of migration job.
        :param pulumi.Input[str] instance_class: The instance class. Valid values: `large`, `medium`, `micro`, `small`, `xlarge`, `xxlarge`.
        :param pulumi.Input[str] source_endpoint_database_name: The name of migrate the database.
        :param pulumi.Input[str] source_endpoint_instance_id: The ID of source instance.
        :param pulumi.Input[str] source_endpoint_ip: The ip of source endpoint.
        :param pulumi.Input[str] source_endpoint_oracle_sid: The SID of Oracle database.
        :param pulumi.Input[str] source_endpoint_owner_id: The Alibaba Cloud account ID to which the source instance belongs.
        :param pulumi.Input[str] source_endpoint_password: The password of database account.
        :param pulumi.Input[str] source_endpoint_port: The port of source endpoint.
        :param pulumi.Input[str] source_endpoint_region: The region of source instance.
        :param pulumi.Input[str] source_endpoint_role: The name of the role configured for the cloud account to which the source instance belongs.
        :param pulumi.Input[str] source_endpoint_user_name: The username of database account.
        :param pulumi.Input[str] status: The status of the resource. Valid values: `Migrating`, `Suspending`. You can suspend the task by specifying `Suspending` and start the task by specifying `Migrating`.
        """
        pulumi.set(__self__, "data_initialization", data_initialization)
        pulumi.set(__self__, "data_synchronization", data_synchronization)
        pulumi.set(__self__, "db_list", db_list)
        pulumi.set(__self__, "destination_endpoint_engine_name", destination_endpoint_engine_name)
        pulumi.set(__self__, "destination_endpoint_instance_type", destination_endpoint_instance_type)
        pulumi.set(__self__, "dts_instance_id", dts_instance_id)
        pulumi.set(__self__, "source_endpoint_engine_name", source_endpoint_engine_name)
        pulumi.set(__self__, "source_endpoint_instance_type", source_endpoint_instance_type)
        pulumi.set(__self__, "structure_initialization", structure_initialization)
        if checkpoint is not None:
            pulumi.set(__self__, "checkpoint", checkpoint)
        if destination_endpoint_database_name is not None:
            pulumi.set(__self__, "destination_endpoint_database_name", destination_endpoint_database_name)
        if destination_endpoint_instance_id is not None:
            pulumi.set(__self__, "destination_endpoint_instance_id", destination_endpoint_instance_id)
        if destination_endpoint_ip is not None:
            pulumi.set(__self__, "destination_endpoint_ip", destination_endpoint_ip)
        if destination_endpoint_oracle_sid is not None:
            pulumi.set(__self__, "destination_endpoint_oracle_sid", destination_endpoint_oracle_sid)
        if destination_endpoint_password is not None:
            pulumi.set(__self__, "destination_endpoint_password", destination_endpoint_password)
        if destination_endpoint_port is not None:
            pulumi.set(__self__, "destination_endpoint_port", destination_endpoint_port)
        if destination_endpoint_region is not None:
            pulumi.set(__self__, "destination_endpoint_region", destination_endpoint_region)
        if destination_endpoint_user_name is not None:
            pulumi.set(__self__, "destination_endpoint_user_name", destination_endpoint_user_name)
        if dts_job_name is not None:
            pulumi.set(__self__, "dts_job_name", dts_job_name)
        if instance_class is not None:
            pulumi.set(__self__, "instance_class", instance_class)
        if source_endpoint_database_name is not None:
            pulumi.set(__self__, "source_endpoint_database_name", source_endpoint_database_name)
        if source_endpoint_instance_id is not None:
            pulumi.set(__self__, "source_endpoint_instance_id", source_endpoint_instance_id)
        if source_endpoint_ip is not None:
            pulumi.set(__self__, "source_endpoint_ip", source_endpoint_ip)
        if source_endpoint_oracle_sid is not None:
            pulumi.set(__self__, "source_endpoint_oracle_sid", source_endpoint_oracle_sid)
        if source_endpoint_owner_id is not None:
            pulumi.set(__self__, "source_endpoint_owner_id", source_endpoint_owner_id)
        if source_endpoint_password is not None:
            pulumi.set(__self__, "source_endpoint_password", source_endpoint_password)
        if source_endpoint_port is not None:
            pulumi.set(__self__, "source_endpoint_port", source_endpoint_port)
        if source_endpoint_region is not None:
            pulumi.set(__self__, "source_endpoint_region", source_endpoint_region)
        if source_endpoint_role is not None:
            pulumi.set(__self__, "source_endpoint_role", source_endpoint_role)
        if source_endpoint_user_name is not None:
            pulumi.set(__self__, "source_endpoint_user_name", source_endpoint_user_name)
        if status is not None:
            pulumi.set(__self__, "status", status)

    @property
    @pulumi.getter(name="dataInitialization")
    def data_initialization(self) -> pulumi.Input[bool]:
        """
        Whether to execute DTS supports schema migration.
        """
        return pulumi.get(self, "data_initialization")

    @data_initialization.setter
    def data_initialization(self, value: pulumi.Input[bool]):
        pulumi.set(self, "data_initialization", value)

    @property
    @pulumi.getter(name="dataSynchronization")
    def data_synchronization(self) -> pulumi.Input[bool]:
        """
        Whether to perform incremental data migration.
        """
        return pulumi.get(self, "data_synchronization")

    @data_synchronization.setter
    def data_synchronization(self, value: pulumi.Input[bool]):
        pulumi.set(self, "data_synchronization", value)

    @property
    @pulumi.getter(name="dbList")
    def db_list(self) -> pulumi.Input[str]:
        """
        Migration object, in the format of JSON strings. For detailed definition instructions, please refer to [the description of migration, migration or subscription objects](https://help.aliyun.com/document_detail/209545.html).
        """
        return pulumi.get(self, "db_list")

    @db_list.setter
    def db_list(self, value: pulumi.Input[str]):
        pulumi.set(self, "db_list", value)

    @property
    @pulumi.getter(name="destinationEndpointEngineName")
    def destination_endpoint_engine_name(self) -> pulumi.Input[str]:
        """
        The type of destination database. Valid values: `ADS`, `ADB30`, `AS400`, `DATAHUB`, `DB2`, `GREENPLUM`, `KAFKA`, `MONGODB`, `MSSQL`, `MySQL`, `ORACLE`, `PolarDB`, `POLARDBX20`, `POLARDB_O`, `PostgreSQL`.
        """
        return pulumi.get(self, "destination_endpoint_engine_name")

    @destination_endpoint_engine_name.setter
    def destination_endpoint_engine_name(self, value: pulumi.Input[str]):
        pulumi.set(self, "destination_endpoint_engine_name", value)

    @property
    @pulumi.getter(name="destinationEndpointInstanceType")
    def destination_endpoint_instance_type(self) -> pulumi.Input[str]:
        """
        The type of destination instance. Valid values: `ADS`, `CEN`, `DATAHUB`, `DG`, `ECS`, `EXPRESS`, `GREENPLUM`, `MONGODB`, `OTHER`, `PolarDB`, `POLARDBX20`, `RDS`.
        """
        return pulumi.get(self, "destination_endpoint_instance_type")

    @destination_endpoint_instance_type.setter
    def destination_endpoint_instance_type(self, value: pulumi.Input[str]):
        pulumi.set(self, "destination_endpoint_instance_type", value)

    @property
    @pulumi.getter(name="dtsInstanceId")
    def dts_instance_id(self) -> pulumi.Input[str]:
        """
        The Migration instance ID. The ID of `dts.MigrationInstance`.
        """
        return pulumi.get(self, "dts_instance_id")

    @dts_instance_id.setter
    def dts_instance_id(self, value: pulumi.Input[str]):
        pulumi.set(self, "dts_instance_id", value)

    @property
    @pulumi.getter(name="sourceEndpointEngineName")
    def source_endpoint_engine_name(self) -> pulumi.Input[str]:
        """
        The type of source database. Valid values: `AS400`, `DB2`, `DMSPOLARDB`, `HBASE`, `MONGODB`, `MSSQL`, `MySQL`, `ORACLE`, `PolarDB`, `POLARDBX20`, `POLARDB_O`, `POSTGRESQL`, `TERADATA`.
        """
        return pulumi.get(self, "source_endpoint_engine_name")

    @source_endpoint_engine_name.setter
    def source_endpoint_engine_name(self, value: pulumi.Input[str]):
        pulumi.set(self, "source_endpoint_engine_name", value)

    @property
    @pulumi.getter(name="sourceEndpointInstanceType")
    def source_endpoint_instance_type(self) -> pulumi.Input[str]:
        """
        The type of source instance. Valid values: `CEN`, `DG`, `DISTRIBUTED_DMSLOGICDB`, `ECS`, `EXPRESS`, `MONGODB`, `OTHER`, `PolarDB`, `POLARDBX20`, `RDS`.
        """
        return pulumi.get(self, "source_endpoint_instance_type")

    @source_endpoint_instance_type.setter
    def source_endpoint_instance_type(self, value: pulumi.Input[str]):
        pulumi.set(self, "source_endpoint_instance_type", value)

    @property
    @pulumi.getter(name="structureInitialization")
    def structure_initialization(self) -> pulumi.Input[bool]:
        """
        Whether to perform a database table structure to migrate.
        """
        return pulumi.get(self, "structure_initialization")

    @structure_initialization.setter
    def structure_initialization(self, value: pulumi.Input[bool]):
        pulumi.set(self, "structure_initialization", value)

    @property
    @pulumi.getter
    def checkpoint(self) -> Optional[pulumi.Input[str]]:
        """
        Start time in Unix timestamp format.
        """
        return pulumi.get(self, "checkpoint")

    @checkpoint.setter
    def checkpoint(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "checkpoint", value)

    @property
    @pulumi.getter(name="destinationEndpointDatabaseName")
    def destination_endpoint_database_name(self) -> Optional[pulumi.Input[str]]:
        """
        The name of migrate the database.
        """
        return pulumi.get(self, "destination_endpoint_database_name")

    @destination_endpoint_database_name.setter
    def destination_endpoint_database_name(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "destination_endpoint_database_name", value)

    @property
    @pulumi.getter(name="destinationEndpointInstanceId")
    def destination_endpoint_instance_id(self) -> Optional[pulumi.Input[str]]:
        """
        The ID of destination instance.
        """
        return pulumi.get(self, "destination_endpoint_instance_id")

    @destination_endpoint_instance_id.setter
    def destination_endpoint_instance_id(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "destination_endpoint_instance_id", value)

    @property
    @pulumi.getter(name="destinationEndpointIp")
    def destination_endpoint_ip(self) -> Optional[pulumi.Input[str]]:
        """
        The ip of source endpoint.
        """
        return pulumi.get(self, "destination_endpoint_ip")

    @destination_endpoint_ip.setter
    def destination_endpoint_ip(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "destination_endpoint_ip", value)

    @property
    @pulumi.getter(name="destinationEndpointOracleSid")
    def destination_endpoint_oracle_sid(self) -> Optional[pulumi.Input[str]]:
        """
        The SID of Oracle database.
        """
        return pulumi.get(self, "destination_endpoint_oracle_sid")

    @destination_endpoint_oracle_sid.setter
    def destination_endpoint_oracle_sid(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "destination_endpoint_oracle_sid", value)

    @property
    @pulumi.getter(name="destinationEndpointPassword")
    def destination_endpoint_password(self) -> Optional[pulumi.Input[str]]:
        """
        The password of database account.
        """
        return pulumi.get(self, "destination_endpoint_password")

    @destination_endpoint_password.setter
    def destination_endpoint_password(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "destination_endpoint_password", value)

    @property
    @pulumi.getter(name="destinationEndpointPort")
    def destination_endpoint_port(self) -> Optional[pulumi.Input[str]]:
        """
        The port of source endpoint.
        """
        return pulumi.get(self, "destination_endpoint_port")

    @destination_endpoint_port.setter
    def destination_endpoint_port(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "destination_endpoint_port", value)

    @property
    @pulumi.getter(name="destinationEndpointRegion")
    def destination_endpoint_region(self) -> Optional[pulumi.Input[str]]:
        """
        The region of destination instance.
        """
        return pulumi.get(self, "destination_endpoint_region")

    @destination_endpoint_region.setter
    def destination_endpoint_region(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "destination_endpoint_region", value)

    @property
    @pulumi.getter(name="destinationEndpointUserName")
    def destination_endpoint_user_name(self) -> Optional[pulumi.Input[str]]:
        """
        The username of database account.
        """
        return pulumi.get(self, "destination_endpoint_user_name")

    @destination_endpoint_user_name.setter
    def destination_endpoint_user_name(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "destination_endpoint_user_name", value)

    @property
    @pulumi.getter(name="dtsJobName")
    def dts_job_name(self) -> Optional[pulumi.Input[str]]:
        """
        The name of migration job.
        """
        return pulumi.get(self, "dts_job_name")

    @dts_job_name.setter
    def dts_job_name(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "dts_job_name", value)

    @property
    @pulumi.getter(name="instanceClass")
    def instance_class(self) -> Optional[pulumi.Input[str]]:
        """
        The instance class. Valid values: `large`, `medium`, `micro`, `small`, `xlarge`, `xxlarge`.
        """
        return pulumi.get(self, "instance_class")

    @instance_class.setter
    def instance_class(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "instance_class", value)

    @property
    @pulumi.getter(name="sourceEndpointDatabaseName")
    def source_endpoint_database_name(self) -> Optional[pulumi.Input[str]]:
        """
        The name of migrate the database.
        """
        return pulumi.get(self, "source_endpoint_database_name")

    @source_endpoint_database_name.setter
    def source_endpoint_database_name(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "source_endpoint_database_name", value)

    @property
    @pulumi.getter(name="sourceEndpointInstanceId")
    def source_endpoint_instance_id(self) -> Optional[pulumi.Input[str]]:
        """
        The ID of source instance.
        """
        return pulumi.get(self, "source_endpoint_instance_id")

    @source_endpoint_instance_id.setter
    def source_endpoint_instance_id(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "source_endpoint_instance_id", value)

    @property
    @pulumi.getter(name="sourceEndpointIp")
    def source_endpoint_ip(self) -> Optional[pulumi.Input[str]]:
        """
        The ip of source endpoint.
        """
        return pulumi.get(self, "source_endpoint_ip")

    @source_endpoint_ip.setter
    def source_endpoint_ip(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "source_endpoint_ip", value)

    @property
    @pulumi.getter(name="sourceEndpointOracleSid")
    def source_endpoint_oracle_sid(self) -> Optional[pulumi.Input[str]]:
        """
        The SID of Oracle database.
        """
        return pulumi.get(self, "source_endpoint_oracle_sid")

    @source_endpoint_oracle_sid.setter
    def source_endpoint_oracle_sid(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "source_endpoint_oracle_sid", value)

    @property
    @pulumi.getter(name="sourceEndpointOwnerId")
    def source_endpoint_owner_id(self) -> Optional[pulumi.Input[str]]:
        """
        The Alibaba Cloud account ID to which the source instance belongs.
        """
        return pulumi.get(self, "source_endpoint_owner_id")

    @source_endpoint_owner_id.setter
    def source_endpoint_owner_id(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "source_endpoint_owner_id", value)

    @property
    @pulumi.getter(name="sourceEndpointPassword")
    def source_endpoint_password(self) -> Optional[pulumi.Input[str]]:
        """
        The password of database account.
        """
        return pulumi.get(self, "source_endpoint_password")

    @source_endpoint_password.setter
    def source_endpoint_password(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "source_endpoint_password", value)

    @property
    @pulumi.getter(name="sourceEndpointPort")
    def source_endpoint_port(self) -> Optional[pulumi.Input[str]]:
        """
        The port of source endpoint.
        """
        return pulumi.get(self, "source_endpoint_port")

    @source_endpoint_port.setter
    def source_endpoint_port(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "source_endpoint_port", value)

    @property
    @pulumi.getter(name="sourceEndpointRegion")
    def source_endpoint_region(self) -> Optional[pulumi.Input[str]]:
        """
        The region of source instance.
        """
        return pulumi.get(self, "source_endpoint_region")

    @source_endpoint_region.setter
    def source_endpoint_region(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "source_endpoint_region", value)

    @property
    @pulumi.getter(name="sourceEndpointRole")
    def source_endpoint_role(self) -> Optional[pulumi.Input[str]]:
        """
        The name of the role configured for the cloud account to which the source instance belongs.
        """
        return pulumi.get(self, "source_endpoint_role")

    @source_endpoint_role.setter
    def source_endpoint_role(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "source_endpoint_role", value)

    @property
    @pulumi.getter(name="sourceEndpointUserName")
    def source_endpoint_user_name(self) -> Optional[pulumi.Input[str]]:
        """
        The username of database account.
        """
        return pulumi.get(self, "source_endpoint_user_name")

    @source_endpoint_user_name.setter
    def source_endpoint_user_name(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "source_endpoint_user_name", value)

    @property
    @pulumi.getter
    def status(self) -> Optional[pulumi.Input[str]]:
        """
        The status of the resource. Valid values: `Migrating`, `Suspending`. You can suspend the task by specifying `Suspending` and start the task by specifying `Migrating`.
        """
        return pulumi.get(self, "status")

    @status.setter
    def status(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "status", value)


@pulumi.input_type
class _MigrationJobState:
    def __init__(__self__, *,
                 checkpoint: Optional[pulumi.Input[str]] = None,
                 data_initialization: Optional[pulumi.Input[bool]] = None,
                 data_synchronization: Optional[pulumi.Input[bool]] = None,
                 db_list: Optional[pulumi.Input[str]] = None,
                 destination_endpoint_database_name: Optional[pulumi.Input[str]] = None,
                 destination_endpoint_engine_name: Optional[pulumi.Input[str]] = None,
                 destination_endpoint_instance_id: Optional[pulumi.Input[str]] = None,
                 destination_endpoint_instance_type: Optional[pulumi.Input[str]] = None,
                 destination_endpoint_ip: Optional[pulumi.Input[str]] = None,
                 destination_endpoint_oracle_sid: Optional[pulumi.Input[str]] = None,
                 destination_endpoint_password: Optional[pulumi.Input[str]] = None,
                 destination_endpoint_port: Optional[pulumi.Input[str]] = None,
                 destination_endpoint_region: Optional[pulumi.Input[str]] = None,
                 destination_endpoint_user_name: Optional[pulumi.Input[str]] = None,
                 dts_instance_id: Optional[pulumi.Input[str]] = None,
                 dts_job_name: Optional[pulumi.Input[str]] = None,
                 instance_class: Optional[pulumi.Input[str]] = None,
                 source_endpoint_database_name: Optional[pulumi.Input[str]] = None,
                 source_endpoint_engine_name: Optional[pulumi.Input[str]] = None,
                 source_endpoint_instance_id: Optional[pulumi.Input[str]] = None,
                 source_endpoint_instance_type: Optional[pulumi.Input[str]] = None,
                 source_endpoint_ip: Optional[pulumi.Input[str]] = None,
                 source_endpoint_oracle_sid: Optional[pulumi.Input[str]] = None,
                 source_endpoint_owner_id: Optional[pulumi.Input[str]] = None,
                 source_endpoint_password: Optional[pulumi.Input[str]] = None,
                 source_endpoint_port: Optional[pulumi.Input[str]] = None,
                 source_endpoint_region: Optional[pulumi.Input[str]] = None,
                 source_endpoint_role: Optional[pulumi.Input[str]] = None,
                 source_endpoint_user_name: Optional[pulumi.Input[str]] = None,
                 status: Optional[pulumi.Input[str]] = None,
                 structure_initialization: Optional[pulumi.Input[bool]] = None):
        """
        Input properties used for looking up and filtering MigrationJob resources.
        :param pulumi.Input[str] checkpoint: Start time in Unix timestamp format.
        :param pulumi.Input[bool] data_initialization: Whether to execute DTS supports schema migration.
        :param pulumi.Input[bool] data_synchronization: Whether to perform incremental data migration.
        :param pulumi.Input[str] db_list: Migration object, in the format of JSON strings. For detailed definition instructions, please refer to [the description of migration, migration or subscription objects](https://help.aliyun.com/document_detail/209545.html).
        :param pulumi.Input[str] destination_endpoint_database_name: The name of migrate the database.
        :param pulumi.Input[str] destination_endpoint_engine_name: The type of destination database. Valid values: `ADS`, `ADB30`, `AS400`, `DATAHUB`, `DB2`, `GREENPLUM`, `KAFKA`, `MONGODB`, `MSSQL`, `MySQL`, `ORACLE`, `PolarDB`, `POLARDBX20`, `POLARDB_O`, `PostgreSQL`.
        :param pulumi.Input[str] destination_endpoint_instance_id: The ID of destination instance.
        :param pulumi.Input[str] destination_endpoint_instance_type: The type of destination instance. Valid values: `ADS`, `CEN`, `DATAHUB`, `DG`, `ECS`, `EXPRESS`, `GREENPLUM`, `MONGODB`, `OTHER`, `PolarDB`, `POLARDBX20`, `RDS`.
        :param pulumi.Input[str] destination_endpoint_ip: The ip of source endpoint.
        :param pulumi.Input[str] destination_endpoint_oracle_sid: The SID of Oracle database.
        :param pulumi.Input[str] destination_endpoint_password: The password of database account.
        :param pulumi.Input[str] destination_endpoint_port: The port of source endpoint.
        :param pulumi.Input[str] destination_endpoint_region: The region of destination instance.
        :param pulumi.Input[str] destination_endpoint_user_name: The username of database account.
        :param pulumi.Input[str] dts_instance_id: The Migration instance ID. The ID of `dts.MigrationInstance`.
        :param pulumi.Input[str] dts_job_name: The name of migration job.
        :param pulumi.Input[str] instance_class: The instance class. Valid values: `large`, `medium`, `micro`, `small`, `xlarge`, `xxlarge`.
        :param pulumi.Input[str] source_endpoint_database_name: The name of migrate the database.
        :param pulumi.Input[str] source_endpoint_engine_name: The type of source database. Valid values: `AS400`, `DB2`, `DMSPOLARDB`, `HBASE`, `MONGODB`, `MSSQL`, `MySQL`, `ORACLE`, `PolarDB`, `POLARDBX20`, `POLARDB_O`, `POSTGRESQL`, `TERADATA`.
        :param pulumi.Input[str] source_endpoint_instance_id: The ID of source instance.
        :param pulumi.Input[str] source_endpoint_instance_type: The type of source instance. Valid values: `CEN`, `DG`, `DISTRIBUTED_DMSLOGICDB`, `ECS`, `EXPRESS`, `MONGODB`, `OTHER`, `PolarDB`, `POLARDBX20`, `RDS`.
        :param pulumi.Input[str] source_endpoint_ip: The ip of source endpoint.
        :param pulumi.Input[str] source_endpoint_oracle_sid: The SID of Oracle database.
        :param pulumi.Input[str] source_endpoint_owner_id: The Alibaba Cloud account ID to which the source instance belongs.
        :param pulumi.Input[str] source_endpoint_password: The password of database account.
        :param pulumi.Input[str] source_endpoint_port: The port of source endpoint.
        :param pulumi.Input[str] source_endpoint_region: The region of source instance.
        :param pulumi.Input[str] source_endpoint_role: The name of the role configured for the cloud account to which the source instance belongs.
        :param pulumi.Input[str] source_endpoint_user_name: The username of database account.
        :param pulumi.Input[str] status: The status of the resource. Valid values: `Migrating`, `Suspending`. You can suspend the task by specifying `Suspending` and start the task by specifying `Migrating`.
        :param pulumi.Input[bool] structure_initialization: Whether to perform a database table structure to migrate.
        """
        if checkpoint is not None:
            pulumi.set(__self__, "checkpoint", checkpoint)
        if data_initialization is not None:
            pulumi.set(__self__, "data_initialization", data_initialization)
        if data_synchronization is not None:
            pulumi.set(__self__, "data_synchronization", data_synchronization)
        if db_list is not None:
            pulumi.set(__self__, "db_list", db_list)
        if destination_endpoint_database_name is not None:
            pulumi.set(__self__, "destination_endpoint_database_name", destination_endpoint_database_name)
        if destination_endpoint_engine_name is not None:
            pulumi.set(__self__, "destination_endpoint_engine_name", destination_endpoint_engine_name)
        if destination_endpoint_instance_id is not None:
            pulumi.set(__self__, "destination_endpoint_instance_id", destination_endpoint_instance_id)
        if destination_endpoint_instance_type is not None:
            pulumi.set(__self__, "destination_endpoint_instance_type", destination_endpoint_instance_type)
        if destination_endpoint_ip is not None:
            pulumi.set(__self__, "destination_endpoint_ip", destination_endpoint_ip)
        if destination_endpoint_oracle_sid is not None:
            pulumi.set(__self__, "destination_endpoint_oracle_sid", destination_endpoint_oracle_sid)
        if destination_endpoint_password is not None:
            pulumi.set(__self__, "destination_endpoint_password", destination_endpoint_password)
        if destination_endpoint_port is not None:
            pulumi.set(__self__, "destination_endpoint_port", destination_endpoint_port)
        if destination_endpoint_region is not None:
            pulumi.set(__self__, "destination_endpoint_region", destination_endpoint_region)
        if destination_endpoint_user_name is not None:
            pulumi.set(__self__, "destination_endpoint_user_name", destination_endpoint_user_name)
        if dts_instance_id is not None:
            pulumi.set(__self__, "dts_instance_id", dts_instance_id)
        if dts_job_name is not None:
            pulumi.set(__self__, "dts_job_name", dts_job_name)
        if instance_class is not None:
            pulumi.set(__self__, "instance_class", instance_class)
        if source_endpoint_database_name is not None:
            pulumi.set(__self__, "source_endpoint_database_name", source_endpoint_database_name)
        if source_endpoint_engine_name is not None:
            pulumi.set(__self__, "source_endpoint_engine_name", source_endpoint_engine_name)
        if source_endpoint_instance_id is not None:
            pulumi.set(__self__, "source_endpoint_instance_id", source_endpoint_instance_id)
        if source_endpoint_instance_type is not None:
            pulumi.set(__self__, "source_endpoint_instance_type", source_endpoint_instance_type)
        if source_endpoint_ip is not None:
            pulumi.set(__self__, "source_endpoint_ip", source_endpoint_ip)
        if source_endpoint_oracle_sid is not None:
            pulumi.set(__self__, "source_endpoint_oracle_sid", source_endpoint_oracle_sid)
        if source_endpoint_owner_id is not None:
            pulumi.set(__self__, "source_endpoint_owner_id", source_endpoint_owner_id)
        if source_endpoint_password is not None:
            pulumi.set(__self__, "source_endpoint_password", source_endpoint_password)
        if source_endpoint_port is not None:
            pulumi.set(__self__, "source_endpoint_port", source_endpoint_port)
        if source_endpoint_region is not None:
            pulumi.set(__self__, "source_endpoint_region", source_endpoint_region)
        if source_endpoint_role is not None:
            pulumi.set(__self__, "source_endpoint_role", source_endpoint_role)
        if source_endpoint_user_name is not None:
            pulumi.set(__self__, "source_endpoint_user_name", source_endpoint_user_name)
        if status is not None:
            pulumi.set(__self__, "status", status)
        if structure_initialization is not None:
            pulumi.set(__self__, "structure_initialization", structure_initialization)

    @property
    @pulumi.getter
    def checkpoint(self) -> Optional[pulumi.Input[str]]:
        """
        Start time in Unix timestamp format.
        """
        return pulumi.get(self, "checkpoint")

    @checkpoint.setter
    def checkpoint(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "checkpoint", value)

    @property
    @pulumi.getter(name="dataInitialization")
    def data_initialization(self) -> Optional[pulumi.Input[bool]]:
        """
        Whether to execute DTS supports schema migration.
        """
        return pulumi.get(self, "data_initialization")

    @data_initialization.setter
    def data_initialization(self, value: Optional[pulumi.Input[bool]]):
        pulumi.set(self, "data_initialization", value)

    @property
    @pulumi.getter(name="dataSynchronization")
    def data_synchronization(self) -> Optional[pulumi.Input[bool]]:
        """
        Whether to perform incremental data migration.
        """
        return pulumi.get(self, "data_synchronization")

    @data_synchronization.setter
    def data_synchronization(self, value: Optional[pulumi.Input[bool]]):
        pulumi.set(self, "data_synchronization", value)

    @property
    @pulumi.getter(name="dbList")
    def db_list(self) -> Optional[pulumi.Input[str]]:
        """
        Migration object, in the format of JSON strings. For detailed definition instructions, please refer to [the description of migration, migration or subscription objects](https://help.aliyun.com/document_detail/209545.html).
        """
        return pulumi.get(self, "db_list")

    @db_list.setter
    def db_list(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "db_list", value)

    @property
    @pulumi.getter(name="destinationEndpointDatabaseName")
    def destination_endpoint_database_name(self) -> Optional[pulumi.Input[str]]:
        """
        The name of migrate the database.
        """
        return pulumi.get(self, "destination_endpoint_database_name")

    @destination_endpoint_database_name.setter
    def destination_endpoint_database_name(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "destination_endpoint_database_name", value)

    @property
    @pulumi.getter(name="destinationEndpointEngineName")
    def destination_endpoint_engine_name(self) -> Optional[pulumi.Input[str]]:
        """
        The type of destination database. Valid values: `ADS`, `ADB30`, `AS400`, `DATAHUB`, `DB2`, `GREENPLUM`, `KAFKA`, `MONGODB`, `MSSQL`, `MySQL`, `ORACLE`, `PolarDB`, `POLARDBX20`, `POLARDB_O`, `PostgreSQL`.
        """
        return pulumi.get(self, "destination_endpoint_engine_name")

    @destination_endpoint_engine_name.setter
    def destination_endpoint_engine_name(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "destination_endpoint_engine_name", value)

    @property
    @pulumi.getter(name="destinationEndpointInstanceId")
    def destination_endpoint_instance_id(self) -> Optional[pulumi.Input[str]]:
        """
        The ID of destination instance.
        """
        return pulumi.get(self, "destination_endpoint_instance_id")

    @destination_endpoint_instance_id.setter
    def destination_endpoint_instance_id(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "destination_endpoint_instance_id", value)

    @property
    @pulumi.getter(name="destinationEndpointInstanceType")
    def destination_endpoint_instance_type(self) -> Optional[pulumi.Input[str]]:
        """
        The type of destination instance. Valid values: `ADS`, `CEN`, `DATAHUB`, `DG`, `ECS`, `EXPRESS`, `GREENPLUM`, `MONGODB`, `OTHER`, `PolarDB`, `POLARDBX20`, `RDS`.
        """
        return pulumi.get(self, "destination_endpoint_instance_type")

    @destination_endpoint_instance_type.setter
    def destination_endpoint_instance_type(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "destination_endpoint_instance_type", value)

    @property
    @pulumi.getter(name="destinationEndpointIp")
    def destination_endpoint_ip(self) -> Optional[pulumi.Input[str]]:
        """
        The ip of source endpoint.
        """
        return pulumi.get(self, "destination_endpoint_ip")

    @destination_endpoint_ip.setter
    def destination_endpoint_ip(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "destination_endpoint_ip", value)

    @property
    @pulumi.getter(name="destinationEndpointOracleSid")
    def destination_endpoint_oracle_sid(self) -> Optional[pulumi.Input[str]]:
        """
        The SID of Oracle database.
        """
        return pulumi.get(self, "destination_endpoint_oracle_sid")

    @destination_endpoint_oracle_sid.setter
    def destination_endpoint_oracle_sid(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "destination_endpoint_oracle_sid", value)

    @property
    @pulumi.getter(name="destinationEndpointPassword")
    def destination_endpoint_password(self) -> Optional[pulumi.Input[str]]:
        """
        The password of database account.
        """
        return pulumi.get(self, "destination_endpoint_password")

    @destination_endpoint_password.setter
    def destination_endpoint_password(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "destination_endpoint_password", value)

    @property
    @pulumi.getter(name="destinationEndpointPort")
    def destination_endpoint_port(self) -> Optional[pulumi.Input[str]]:
        """
        The port of source endpoint.
        """
        return pulumi.get(self, "destination_endpoint_port")

    @destination_endpoint_port.setter
    def destination_endpoint_port(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "destination_endpoint_port", value)

    @property
    @pulumi.getter(name="destinationEndpointRegion")
    def destination_endpoint_region(self) -> Optional[pulumi.Input[str]]:
        """
        The region of destination instance.
        """
        return pulumi.get(self, "destination_endpoint_region")

    @destination_endpoint_region.setter
    def destination_endpoint_region(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "destination_endpoint_region", value)

    @property
    @pulumi.getter(name="destinationEndpointUserName")
    def destination_endpoint_user_name(self) -> Optional[pulumi.Input[str]]:
        """
        The username of database account.
        """
        return pulumi.get(self, "destination_endpoint_user_name")

    @destination_endpoint_user_name.setter
    def destination_endpoint_user_name(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "destination_endpoint_user_name", value)

    @property
    @pulumi.getter(name="dtsInstanceId")
    def dts_instance_id(self) -> Optional[pulumi.Input[str]]:
        """
        The Migration instance ID. The ID of `dts.MigrationInstance`.
        """
        return pulumi.get(self, "dts_instance_id")

    @dts_instance_id.setter
    def dts_instance_id(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "dts_instance_id", value)

    @property
    @pulumi.getter(name="dtsJobName")
    def dts_job_name(self) -> Optional[pulumi.Input[str]]:
        """
        The name of migration job.
        """
        return pulumi.get(self, "dts_job_name")

    @dts_job_name.setter
    def dts_job_name(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "dts_job_name", value)

    @property
    @pulumi.getter(name="instanceClass")
    def instance_class(self) -> Optional[pulumi.Input[str]]:
        """
        The instance class. Valid values: `large`, `medium`, `micro`, `small`, `xlarge`, `xxlarge`.
        """
        return pulumi.get(self, "instance_class")

    @instance_class.setter
    def instance_class(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "instance_class", value)

    @property
    @pulumi.getter(name="sourceEndpointDatabaseName")
    def source_endpoint_database_name(self) -> Optional[pulumi.Input[str]]:
        """
        The name of migrate the database.
        """
        return pulumi.get(self, "source_endpoint_database_name")

    @source_endpoint_database_name.setter
    def source_endpoint_database_name(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "source_endpoint_database_name", value)

    @property
    @pulumi.getter(name="sourceEndpointEngineName")
    def source_endpoint_engine_name(self) -> Optional[pulumi.Input[str]]:
        """
        The type of source database. Valid values: `AS400`, `DB2`, `DMSPOLARDB`, `HBASE`, `MONGODB`, `MSSQL`, `MySQL`, `ORACLE`, `PolarDB`, `POLARDBX20`, `POLARDB_O`, `POSTGRESQL`, `TERADATA`.
        """
        return pulumi.get(self, "source_endpoint_engine_name")

    @source_endpoint_engine_name.setter
    def source_endpoint_engine_name(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "source_endpoint_engine_name", value)

    @property
    @pulumi.getter(name="sourceEndpointInstanceId")
    def source_endpoint_instance_id(self) -> Optional[pulumi.Input[str]]:
        """
        The ID of source instance.
        """
        return pulumi.get(self, "source_endpoint_instance_id")

    @source_endpoint_instance_id.setter
    def source_endpoint_instance_id(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "source_endpoint_instance_id", value)

    @property
    @pulumi.getter(name="sourceEndpointInstanceType")
    def source_endpoint_instance_type(self) -> Optional[pulumi.Input[str]]:
        """
        The type of source instance. Valid values: `CEN`, `DG`, `DISTRIBUTED_DMSLOGICDB`, `ECS`, `EXPRESS`, `MONGODB`, `OTHER`, `PolarDB`, `POLARDBX20`, `RDS`.
        """
        return pulumi.get(self, "source_endpoint_instance_type")

    @source_endpoint_instance_type.setter
    def source_endpoint_instance_type(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "source_endpoint_instance_type", value)

    @property
    @pulumi.getter(name="sourceEndpointIp")
    def source_endpoint_ip(self) -> Optional[pulumi.Input[str]]:
        """
        The ip of source endpoint.
        """
        return pulumi.get(self, "source_endpoint_ip")

    @source_endpoint_ip.setter
    def source_endpoint_ip(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "source_endpoint_ip", value)

    @property
    @pulumi.getter(name="sourceEndpointOracleSid")
    def source_endpoint_oracle_sid(self) -> Optional[pulumi.Input[str]]:
        """
        The SID of Oracle database.
        """
        return pulumi.get(self, "source_endpoint_oracle_sid")

    @source_endpoint_oracle_sid.setter
    def source_endpoint_oracle_sid(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "source_endpoint_oracle_sid", value)

    @property
    @pulumi.getter(name="sourceEndpointOwnerId")
    def source_endpoint_owner_id(self) -> Optional[pulumi.Input[str]]:
        """
        The Alibaba Cloud account ID to which the source instance belongs.
        """
        return pulumi.get(self, "source_endpoint_owner_id")

    @source_endpoint_owner_id.setter
    def source_endpoint_owner_id(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "source_endpoint_owner_id", value)

    @property
    @pulumi.getter(name="sourceEndpointPassword")
    def source_endpoint_password(self) -> Optional[pulumi.Input[str]]:
        """
        The password of database account.
        """
        return pulumi.get(self, "source_endpoint_password")

    @source_endpoint_password.setter
    def source_endpoint_password(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "source_endpoint_password", value)

    @property
    @pulumi.getter(name="sourceEndpointPort")
    def source_endpoint_port(self) -> Optional[pulumi.Input[str]]:
        """
        The port of source endpoint.
        """
        return pulumi.get(self, "source_endpoint_port")

    @source_endpoint_port.setter
    def source_endpoint_port(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "source_endpoint_port", value)

    @property
    @pulumi.getter(name="sourceEndpointRegion")
    def source_endpoint_region(self) -> Optional[pulumi.Input[str]]:
        """
        The region of source instance.
        """
        return pulumi.get(self, "source_endpoint_region")

    @source_endpoint_region.setter
    def source_endpoint_region(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "source_endpoint_region", value)

    @property
    @pulumi.getter(name="sourceEndpointRole")
    def source_endpoint_role(self) -> Optional[pulumi.Input[str]]:
        """
        The name of the role configured for the cloud account to which the source instance belongs.
        """
        return pulumi.get(self, "source_endpoint_role")

    @source_endpoint_role.setter
    def source_endpoint_role(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "source_endpoint_role", value)

    @property
    @pulumi.getter(name="sourceEndpointUserName")
    def source_endpoint_user_name(self) -> Optional[pulumi.Input[str]]:
        """
        The username of database account.
        """
        return pulumi.get(self, "source_endpoint_user_name")

    @source_endpoint_user_name.setter
    def source_endpoint_user_name(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "source_endpoint_user_name", value)

    @property
    @pulumi.getter
    def status(self) -> Optional[pulumi.Input[str]]:
        """
        The status of the resource. Valid values: `Migrating`, `Suspending`. You can suspend the task by specifying `Suspending` and start the task by specifying `Migrating`.
        """
        return pulumi.get(self, "status")

    @status.setter
    def status(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "status", value)

    @property
    @pulumi.getter(name="structureInitialization")
    def structure_initialization(self) -> Optional[pulumi.Input[bool]]:
        """
        Whether to perform a database table structure to migrate.
        """
        return pulumi.get(self, "structure_initialization")

    @structure_initialization.setter
    def structure_initialization(self, value: Optional[pulumi.Input[bool]]):
        pulumi.set(self, "structure_initialization", value)


class MigrationJob(pulumi.CustomResource):
    @overload
    def __init__(__self__,
                 resource_name: str,
                 opts: Optional[pulumi.ResourceOptions] = None,
                 checkpoint: Optional[pulumi.Input[str]] = None,
                 data_initialization: Optional[pulumi.Input[bool]] = None,
                 data_synchronization: Optional[pulumi.Input[bool]] = None,
                 db_list: Optional[pulumi.Input[str]] = None,
                 destination_endpoint_database_name: Optional[pulumi.Input[str]] = None,
                 destination_endpoint_engine_name: Optional[pulumi.Input[str]] = None,
                 destination_endpoint_instance_id: Optional[pulumi.Input[str]] = None,
                 destination_endpoint_instance_type: Optional[pulumi.Input[str]] = None,
                 destination_endpoint_ip: Optional[pulumi.Input[str]] = None,
                 destination_endpoint_oracle_sid: Optional[pulumi.Input[str]] = None,
                 destination_endpoint_password: Optional[pulumi.Input[str]] = None,
                 destination_endpoint_port: Optional[pulumi.Input[str]] = None,
                 destination_endpoint_region: Optional[pulumi.Input[str]] = None,
                 destination_endpoint_user_name: Optional[pulumi.Input[str]] = None,
                 dts_instance_id: Optional[pulumi.Input[str]] = None,
                 dts_job_name: Optional[pulumi.Input[str]] = None,
                 instance_class: Optional[pulumi.Input[str]] = None,
                 source_endpoint_database_name: Optional[pulumi.Input[str]] = None,
                 source_endpoint_engine_name: Optional[pulumi.Input[str]] = None,
                 source_endpoint_instance_id: Optional[pulumi.Input[str]] = None,
                 source_endpoint_instance_type: Optional[pulumi.Input[str]] = None,
                 source_endpoint_ip: Optional[pulumi.Input[str]] = None,
                 source_endpoint_oracle_sid: Optional[pulumi.Input[str]] = None,
                 source_endpoint_owner_id: Optional[pulumi.Input[str]] = None,
                 source_endpoint_password: Optional[pulumi.Input[str]] = None,
                 source_endpoint_port: Optional[pulumi.Input[str]] = None,
                 source_endpoint_region: Optional[pulumi.Input[str]] = None,
                 source_endpoint_role: Optional[pulumi.Input[str]] = None,
                 source_endpoint_user_name: Optional[pulumi.Input[str]] = None,
                 status: Optional[pulumi.Input[str]] = None,
                 structure_initialization: Optional[pulumi.Input[bool]] = None,
                 __props__=None):
        """
        Provides a DTS Migration Job resource.

        For information about DTS Migration Job and how to use it, see [What is Migration Job](https://www.alibabacloud.com/help/en/doc-detail/208399.html).

        > **NOTE:** Available since v1.157.0.

        ## Import

        DTS Migration Job can be imported using the id, e.g.

        ```sh
        $ pulumi import alicloud:dts/migrationJob:MigrationJob example <id>
        ```

        :param str resource_name: The name of the resource.
        :param pulumi.ResourceOptions opts: Options for the resource.
        :param pulumi.Input[str] checkpoint: Start time in Unix timestamp format.
        :param pulumi.Input[bool] data_initialization: Whether to execute DTS supports schema migration.
        :param pulumi.Input[bool] data_synchronization: Whether to perform incremental data migration.
        :param pulumi.Input[str] db_list: Migration object, in the format of JSON strings. For detailed definition instructions, please refer to [the description of migration, migration or subscription objects](https://help.aliyun.com/document_detail/209545.html).
        :param pulumi.Input[str] destination_endpoint_database_name: The name of migrate the database.
        :param pulumi.Input[str] destination_endpoint_engine_name: The type of destination database. Valid values: `ADS`, `ADB30`, `AS400`, `DATAHUB`, `DB2`, `GREENPLUM`, `KAFKA`, `MONGODB`, `MSSQL`, `MySQL`, `ORACLE`, `PolarDB`, `POLARDBX20`, `POLARDB_O`, `PostgreSQL`.
        :param pulumi.Input[str] destination_endpoint_instance_id: The ID of destination instance.
        :param pulumi.Input[str] destination_endpoint_instance_type: The type of destination instance. Valid values: `ADS`, `CEN`, `DATAHUB`, `DG`, `ECS`, `EXPRESS`, `GREENPLUM`, `MONGODB`, `OTHER`, `PolarDB`, `POLARDBX20`, `RDS`.
        :param pulumi.Input[str] destination_endpoint_ip: The ip of source endpoint.
        :param pulumi.Input[str] destination_endpoint_oracle_sid: The SID of Oracle database.
        :param pulumi.Input[str] destination_endpoint_password: The password of database account.
        :param pulumi.Input[str] destination_endpoint_port: The port of source endpoint.
        :param pulumi.Input[str] destination_endpoint_region: The region of destination instance.
        :param pulumi.Input[str] destination_endpoint_user_name: The username of database account.
        :param pulumi.Input[str] dts_instance_id: The Migration instance ID. The ID of `dts.MigrationInstance`.
        :param pulumi.Input[str] dts_job_name: The name of migration job.
        :param pulumi.Input[str] instance_class: The instance class. Valid values: `large`, `medium`, `micro`, `small`, `xlarge`, `xxlarge`.
        :param pulumi.Input[str] source_endpoint_database_name: The name of migrate the database.
        :param pulumi.Input[str] source_endpoint_engine_name: The type of source database. Valid values: `AS400`, `DB2`, `DMSPOLARDB`, `HBASE`, `MONGODB`, `MSSQL`, `MySQL`, `ORACLE`, `PolarDB`, `POLARDBX20`, `POLARDB_O`, `POSTGRESQL`, `TERADATA`.
        :param pulumi.Input[str] source_endpoint_instance_id: The ID of source instance.
        :param pulumi.Input[str] source_endpoint_instance_type: The type of source instance. Valid values: `CEN`, `DG`, `DISTRIBUTED_DMSLOGICDB`, `ECS`, `EXPRESS`, `MONGODB`, `OTHER`, `PolarDB`, `POLARDBX20`, `RDS`.
        :param pulumi.Input[str] source_endpoint_ip: The ip of source endpoint.
        :param pulumi.Input[str] source_endpoint_oracle_sid: The SID of Oracle database.
        :param pulumi.Input[str] source_endpoint_owner_id: The Alibaba Cloud account ID to which the source instance belongs.
        :param pulumi.Input[str] source_endpoint_password: The password of database account.
        :param pulumi.Input[str] source_endpoint_port: The port of source endpoint.
        :param pulumi.Input[str] source_endpoint_region: The region of source instance.
        :param pulumi.Input[str] source_endpoint_role: The name of the role configured for the cloud account to which the source instance belongs.
        :param pulumi.Input[str] source_endpoint_user_name: The username of database account.
        :param pulumi.Input[str] status: The status of the resource. Valid values: `Migrating`, `Suspending`. You can suspend the task by specifying `Suspending` and start the task by specifying `Migrating`.
        :param pulumi.Input[bool] structure_initialization: Whether to perform a database table structure to migrate.
        """
        ...
    @overload
    def __init__(__self__,
                 resource_name: str,
                 args: MigrationJobArgs,
                 opts: Optional[pulumi.ResourceOptions] = None):
        """
        Provides a DTS Migration Job resource.

        For information about DTS Migration Job and how to use it, see [What is Migration Job](https://www.alibabacloud.com/help/en/doc-detail/208399.html).

        > **NOTE:** Available since v1.157.0.

        ## Import

        DTS Migration Job can be imported using the id, e.g.

        ```sh
        $ pulumi import alicloud:dts/migrationJob:MigrationJob example <id>
        ```

        :param str resource_name: The name of the resource.
        :param MigrationJobArgs args: The arguments to use to populate this resource's properties.
        :param pulumi.ResourceOptions opts: Options for the resource.
        """
        ...
    def __init__(__self__, resource_name: str, *args, **kwargs):
        resource_args, opts = _utilities.get_resource_args_opts(MigrationJobArgs, pulumi.ResourceOptions, *args, **kwargs)
        if resource_args is not None:
            __self__._internal_init(resource_name, opts, **resource_args.__dict__)
        else:
            __self__._internal_init(resource_name, *args, **kwargs)

    def _internal_init(__self__,
                 resource_name: str,
                 opts: Optional[pulumi.ResourceOptions] = None,
                 checkpoint: Optional[pulumi.Input[str]] = None,
                 data_initialization: Optional[pulumi.Input[bool]] = None,
                 data_synchronization: Optional[pulumi.Input[bool]] = None,
                 db_list: Optional[pulumi.Input[str]] = None,
                 destination_endpoint_database_name: Optional[pulumi.Input[str]] = None,
                 destination_endpoint_engine_name: Optional[pulumi.Input[str]] = None,
                 destination_endpoint_instance_id: Optional[pulumi.Input[str]] = None,
                 destination_endpoint_instance_type: Optional[pulumi.Input[str]] = None,
                 destination_endpoint_ip: Optional[pulumi.Input[str]] = None,
                 destination_endpoint_oracle_sid: Optional[pulumi.Input[str]] = None,
                 destination_endpoint_password: Optional[pulumi.Input[str]] = None,
                 destination_endpoint_port: Optional[pulumi.Input[str]] = None,
                 destination_endpoint_region: Optional[pulumi.Input[str]] = None,
                 destination_endpoint_user_name: Optional[pulumi.Input[str]] = None,
                 dts_instance_id: Optional[pulumi.Input[str]] = None,
                 dts_job_name: Optional[pulumi.Input[str]] = None,
                 instance_class: Optional[pulumi.Input[str]] = None,
                 source_endpoint_database_name: Optional[pulumi.Input[str]] = None,
                 source_endpoint_engine_name: Optional[pulumi.Input[str]] = None,
                 source_endpoint_instance_id: Optional[pulumi.Input[str]] = None,
                 source_endpoint_instance_type: Optional[pulumi.Input[str]] = None,
                 source_endpoint_ip: Optional[pulumi.Input[str]] = None,
                 source_endpoint_oracle_sid: Optional[pulumi.Input[str]] = None,
                 source_endpoint_owner_id: Optional[pulumi.Input[str]] = None,
                 source_endpoint_password: Optional[pulumi.Input[str]] = None,
                 source_endpoint_port: Optional[pulumi.Input[str]] = None,
                 source_endpoint_region: Optional[pulumi.Input[str]] = None,
                 source_endpoint_role: Optional[pulumi.Input[str]] = None,
                 source_endpoint_user_name: Optional[pulumi.Input[str]] = None,
                 status: Optional[pulumi.Input[str]] = None,
                 structure_initialization: Optional[pulumi.Input[bool]] = None,
                 __props__=None):
        opts = pulumi.ResourceOptions.merge(_utilities.get_resource_opts_defaults(), opts)
        if not isinstance(opts, pulumi.ResourceOptions):
            raise TypeError('Expected resource options to be a ResourceOptions instance')
        if opts.id is None:
            if __props__ is not None:
                raise TypeError('__props__ is only valid when passed in combination with a valid opts.id to get an existing resource')
            __props__ = MigrationJobArgs.__new__(MigrationJobArgs)

            __props__.__dict__["checkpoint"] = checkpoint
            if data_initialization is None and not opts.urn:
                raise TypeError("Missing required property 'data_initialization'")
            __props__.__dict__["data_initialization"] = data_initialization
            if data_synchronization is None and not opts.urn:
                raise TypeError("Missing required property 'data_synchronization'")
            __props__.__dict__["data_synchronization"] = data_synchronization
            if db_list is None and not opts.urn:
                raise TypeError("Missing required property 'db_list'")
            __props__.__dict__["db_list"] = db_list
            __props__.__dict__["destination_endpoint_database_name"] = destination_endpoint_database_name
            if destination_endpoint_engine_name is None and not opts.urn:
                raise TypeError("Missing required property 'destination_endpoint_engine_name'")
            __props__.__dict__["destination_endpoint_engine_name"] = destination_endpoint_engine_name
            __props__.__dict__["destination_endpoint_instance_id"] = destination_endpoint_instance_id
            if destination_endpoint_instance_type is None and not opts.urn:
                raise TypeError("Missing required property 'destination_endpoint_instance_type'")
            __props__.__dict__["destination_endpoint_instance_type"] = destination_endpoint_instance_type
            __props__.__dict__["destination_endpoint_ip"] = destination_endpoint_ip
            __props__.__dict__["destination_endpoint_oracle_sid"] = destination_endpoint_oracle_sid
            __props__.__dict__["destination_endpoint_password"] = destination_endpoint_password
            __props__.__dict__["destination_endpoint_port"] = destination_endpoint_port
            __props__.__dict__["destination_endpoint_region"] = destination_endpoint_region
            __props__.__dict__["destination_endpoint_user_name"] = destination_endpoint_user_name
            if dts_instance_id is None and not opts.urn:
                raise TypeError("Missing required property 'dts_instance_id'")
            __props__.__dict__["dts_instance_id"] = dts_instance_id
            __props__.__dict__["dts_job_name"] = dts_job_name
            __props__.__dict__["instance_class"] = instance_class
            __props__.__dict__["source_endpoint_database_name"] = source_endpoint_database_name
            if source_endpoint_engine_name is None and not opts.urn:
                raise TypeError("Missing required property 'source_endpoint_engine_name'")
            __props__.__dict__["source_endpoint_engine_name"] = source_endpoint_engine_name
            __props__.__dict__["source_endpoint_instance_id"] = source_endpoint_instance_id
            if source_endpoint_instance_type is None and not opts.urn:
                raise TypeError("Missing required property 'source_endpoint_instance_type'")
            __props__.__dict__["source_endpoint_instance_type"] = source_endpoint_instance_type
            __props__.__dict__["source_endpoint_ip"] = source_endpoint_ip
            __props__.__dict__["source_endpoint_oracle_sid"] = source_endpoint_oracle_sid
            __props__.__dict__["source_endpoint_owner_id"] = source_endpoint_owner_id
            __props__.__dict__["source_endpoint_password"] = source_endpoint_password
            __props__.__dict__["source_endpoint_port"] = source_endpoint_port
            __props__.__dict__["source_endpoint_region"] = source_endpoint_region
            __props__.__dict__["source_endpoint_role"] = source_endpoint_role
            __props__.__dict__["source_endpoint_user_name"] = source_endpoint_user_name
            __props__.__dict__["status"] = status
            if structure_initialization is None and not opts.urn:
                raise TypeError("Missing required property 'structure_initialization'")
            __props__.__dict__["structure_initialization"] = structure_initialization
        super(MigrationJob, __self__).__init__(
            'alicloud:dts/migrationJob:MigrationJob',
            resource_name,
            __props__,
            opts)

    @staticmethod
    def get(resource_name: str,
            id: pulumi.Input[str],
            opts: Optional[pulumi.ResourceOptions] = None,
            checkpoint: Optional[pulumi.Input[str]] = None,
            data_initialization: Optional[pulumi.Input[bool]] = None,
            data_synchronization: Optional[pulumi.Input[bool]] = None,
            db_list: Optional[pulumi.Input[str]] = None,
            destination_endpoint_database_name: Optional[pulumi.Input[str]] = None,
            destination_endpoint_engine_name: Optional[pulumi.Input[str]] = None,
            destination_endpoint_instance_id: Optional[pulumi.Input[str]] = None,
            destination_endpoint_instance_type: Optional[pulumi.Input[str]] = None,
            destination_endpoint_ip: Optional[pulumi.Input[str]] = None,
            destination_endpoint_oracle_sid: Optional[pulumi.Input[str]] = None,
            destination_endpoint_password: Optional[pulumi.Input[str]] = None,
            destination_endpoint_port: Optional[pulumi.Input[str]] = None,
            destination_endpoint_region: Optional[pulumi.Input[str]] = None,
            destination_endpoint_user_name: Optional[pulumi.Input[str]] = None,
            dts_instance_id: Optional[pulumi.Input[str]] = None,
            dts_job_name: Optional[pulumi.Input[str]] = None,
            instance_class: Optional[pulumi.Input[str]] = None,
            source_endpoint_database_name: Optional[pulumi.Input[str]] = None,
            source_endpoint_engine_name: Optional[pulumi.Input[str]] = None,
            source_endpoint_instance_id: Optional[pulumi.Input[str]] = None,
            source_endpoint_instance_type: Optional[pulumi.Input[str]] = None,
            source_endpoint_ip: Optional[pulumi.Input[str]] = None,
            source_endpoint_oracle_sid: Optional[pulumi.Input[str]] = None,
            source_endpoint_owner_id: Optional[pulumi.Input[str]] = None,
            source_endpoint_password: Optional[pulumi.Input[str]] = None,
            source_endpoint_port: Optional[pulumi.Input[str]] = None,
            source_endpoint_region: Optional[pulumi.Input[str]] = None,
            source_endpoint_role: Optional[pulumi.Input[str]] = None,
            source_endpoint_user_name: Optional[pulumi.Input[str]] = None,
            status: Optional[pulumi.Input[str]] = None,
            structure_initialization: Optional[pulumi.Input[bool]] = None) -> 'MigrationJob':
        """
        Get an existing MigrationJob resource's state with the given name, id, and optional extra
        properties used to qualify the lookup.

        :param str resource_name: The unique name of the resulting resource.
        :param pulumi.Input[str] id: The unique provider ID of the resource to lookup.
        :param pulumi.ResourceOptions opts: Options for the resource.
        :param pulumi.Input[str] checkpoint: Start time in Unix timestamp format.
        :param pulumi.Input[bool] data_initialization: Whether to execute DTS supports schema migration.
        :param pulumi.Input[bool] data_synchronization: Whether to perform incremental data migration.
        :param pulumi.Input[str] db_list: Migration object, in the format of JSON strings. For detailed definition instructions, please refer to [the description of migration, migration or subscription objects](https://help.aliyun.com/document_detail/209545.html).
        :param pulumi.Input[str] destination_endpoint_database_name: The name of migrate the database.
        :param pulumi.Input[str] destination_endpoint_engine_name: The type of destination database. Valid values: `ADS`, `ADB30`, `AS400`, `DATAHUB`, `DB2`, `GREENPLUM`, `KAFKA`, `MONGODB`, `MSSQL`, `MySQL`, `ORACLE`, `PolarDB`, `POLARDBX20`, `POLARDB_O`, `PostgreSQL`.
        :param pulumi.Input[str] destination_endpoint_instance_id: The ID of destination instance.
        :param pulumi.Input[str] destination_endpoint_instance_type: The type of destination instance. Valid values: `ADS`, `CEN`, `DATAHUB`, `DG`, `ECS`, `EXPRESS`, `GREENPLUM`, `MONGODB`, `OTHER`, `PolarDB`, `POLARDBX20`, `RDS`.
        :param pulumi.Input[str] destination_endpoint_ip: The ip of source endpoint.
        :param pulumi.Input[str] destination_endpoint_oracle_sid: The SID of Oracle database.
        :param pulumi.Input[str] destination_endpoint_password: The password of database account.
        :param pulumi.Input[str] destination_endpoint_port: The port of source endpoint.
        :param pulumi.Input[str] destination_endpoint_region: The region of destination instance.
        :param pulumi.Input[str] destination_endpoint_user_name: The username of database account.
        :param pulumi.Input[str] dts_instance_id: The Migration instance ID. The ID of `dts.MigrationInstance`.
        :param pulumi.Input[str] dts_job_name: The name of migration job.
        :param pulumi.Input[str] instance_class: The instance class. Valid values: `large`, `medium`, `micro`, `small`, `xlarge`, `xxlarge`.
        :param pulumi.Input[str] source_endpoint_database_name: The name of migrate the database.
        :param pulumi.Input[str] source_endpoint_engine_name: The type of source database. Valid values: `AS400`, `DB2`, `DMSPOLARDB`, `HBASE`, `MONGODB`, `MSSQL`, `MySQL`, `ORACLE`, `PolarDB`, `POLARDBX20`, `POLARDB_O`, `POSTGRESQL`, `TERADATA`.
        :param pulumi.Input[str] source_endpoint_instance_id: The ID of source instance.
        :param pulumi.Input[str] source_endpoint_instance_type: The type of source instance. Valid values: `CEN`, `DG`, `DISTRIBUTED_DMSLOGICDB`, `ECS`, `EXPRESS`, `MONGODB`, `OTHER`, `PolarDB`, `POLARDBX20`, `RDS`.
        :param pulumi.Input[str] source_endpoint_ip: The ip of source endpoint.
        :param pulumi.Input[str] source_endpoint_oracle_sid: The SID of Oracle database.
        :param pulumi.Input[str] source_endpoint_owner_id: The Alibaba Cloud account ID to which the source instance belongs.
        :param pulumi.Input[str] source_endpoint_password: The password of database account.
        :param pulumi.Input[str] source_endpoint_port: The port of source endpoint.
        :param pulumi.Input[str] source_endpoint_region: The region of source instance.
        :param pulumi.Input[str] source_endpoint_role: The name of the role configured for the cloud account to which the source instance belongs.
        :param pulumi.Input[str] source_endpoint_user_name: The username of database account.
        :param pulumi.Input[str] status: The status of the resource. Valid values: `Migrating`, `Suspending`. You can suspend the task by specifying `Suspending` and start the task by specifying `Migrating`.
        :param pulumi.Input[bool] structure_initialization: Whether to perform a database table structure to migrate.
        """
        opts = pulumi.ResourceOptions.merge(opts, pulumi.ResourceOptions(id=id))

        __props__ = _MigrationJobState.__new__(_MigrationJobState)

        __props__.__dict__["checkpoint"] = checkpoint
        __props__.__dict__["data_initialization"] = data_initialization
        __props__.__dict__["data_synchronization"] = data_synchronization
        __props__.__dict__["db_list"] = db_list
        __props__.__dict__["destination_endpoint_database_name"] = destination_endpoint_database_name
        __props__.__dict__["destination_endpoint_engine_name"] = destination_endpoint_engine_name
        __props__.__dict__["destination_endpoint_instance_id"] = destination_endpoint_instance_id
        __props__.__dict__["destination_endpoint_instance_type"] = destination_endpoint_instance_type
        __props__.__dict__["destination_endpoint_ip"] = destination_endpoint_ip
        __props__.__dict__["destination_endpoint_oracle_sid"] = destination_endpoint_oracle_sid
        __props__.__dict__["destination_endpoint_password"] = destination_endpoint_password
        __props__.__dict__["destination_endpoint_port"] = destination_endpoint_port
        __props__.__dict__["destination_endpoint_region"] = destination_endpoint_region
        __props__.__dict__["destination_endpoint_user_name"] = destination_endpoint_user_name
        __props__.__dict__["dts_instance_id"] = dts_instance_id
        __props__.__dict__["dts_job_name"] = dts_job_name
        __props__.__dict__["instance_class"] = instance_class
        __props__.__dict__["source_endpoint_database_name"] = source_endpoint_database_name
        __props__.__dict__["source_endpoint_engine_name"] = source_endpoint_engine_name
        __props__.__dict__["source_endpoint_instance_id"] = source_endpoint_instance_id
        __props__.__dict__["source_endpoint_instance_type"] = source_endpoint_instance_type
        __props__.__dict__["source_endpoint_ip"] = source_endpoint_ip
        __props__.__dict__["source_endpoint_oracle_sid"] = source_endpoint_oracle_sid
        __props__.__dict__["source_endpoint_owner_id"] = source_endpoint_owner_id
        __props__.__dict__["source_endpoint_password"] = source_endpoint_password
        __props__.__dict__["source_endpoint_port"] = source_endpoint_port
        __props__.__dict__["source_endpoint_region"] = source_endpoint_region
        __props__.__dict__["source_endpoint_role"] = source_endpoint_role
        __props__.__dict__["source_endpoint_user_name"] = source_endpoint_user_name
        __props__.__dict__["status"] = status
        __props__.__dict__["structure_initialization"] = structure_initialization
        return MigrationJob(resource_name, opts=opts, __props__=__props__)

    @property
    @pulumi.getter
    def checkpoint(self) -> pulumi.Output[str]:
        """
        Start time in Unix timestamp format.
        """
        return pulumi.get(self, "checkpoint")

    @property
    @pulumi.getter(name="dataInitialization")
    def data_initialization(self) -> pulumi.Output[bool]:
        """
        Whether to execute DTS supports schema migration.
        """
        return pulumi.get(self, "data_initialization")

    @property
    @pulumi.getter(name="dataSynchronization")
    def data_synchronization(self) -> pulumi.Output[bool]:
        """
        Whether to perform incremental data migration.
        """
        return pulumi.get(self, "data_synchronization")

    @property
    @pulumi.getter(name="dbList")
    def db_list(self) -> pulumi.Output[str]:
        """
        Migration object, in the format of JSON strings. For detailed definition instructions, please refer to [the description of migration, migration or subscription objects](https://help.aliyun.com/document_detail/209545.html).
        """
        return pulumi.get(self, "db_list")

    @property
    @pulumi.getter(name="destinationEndpointDatabaseName")
    def destination_endpoint_database_name(self) -> pulumi.Output[Optional[str]]:
        """
        The name of migrate the database.
        """
        return pulumi.get(self, "destination_endpoint_database_name")

    @property
    @pulumi.getter(name="destinationEndpointEngineName")
    def destination_endpoint_engine_name(self) -> pulumi.Output[str]:
        """
        The type of destination database. Valid values: `ADS`, `ADB30`, `AS400`, `DATAHUB`, `DB2`, `GREENPLUM`, `KAFKA`, `MONGODB`, `MSSQL`, `MySQL`, `ORACLE`, `PolarDB`, `POLARDBX20`, `POLARDB_O`, `PostgreSQL`.
        """
        return pulumi.get(self, "destination_endpoint_engine_name")

    @property
    @pulumi.getter(name="destinationEndpointInstanceId")
    def destination_endpoint_instance_id(self) -> pulumi.Output[Optional[str]]:
        """
        The ID of destination instance.
        """
        return pulumi.get(self, "destination_endpoint_instance_id")

    @property
    @pulumi.getter(name="destinationEndpointInstanceType")
    def destination_endpoint_instance_type(self) -> pulumi.Output[str]:
        """
        The type of destination instance. Valid values: `ADS`, `CEN`, `DATAHUB`, `DG`, `ECS`, `EXPRESS`, `GREENPLUM`, `MONGODB`, `OTHER`, `PolarDB`, `POLARDBX20`, `RDS`.
        """
        return pulumi.get(self, "destination_endpoint_instance_type")

    @property
    @pulumi.getter(name="destinationEndpointIp")
    def destination_endpoint_ip(self) -> pulumi.Output[Optional[str]]:
        """
        The ip of source endpoint.
        """
        return pulumi.get(self, "destination_endpoint_ip")

    @property
    @pulumi.getter(name="destinationEndpointOracleSid")
    def destination_endpoint_oracle_sid(self) -> pulumi.Output[Optional[str]]:
        """
        The SID of Oracle database.
        """
        return pulumi.get(self, "destination_endpoint_oracle_sid")

    @property
    @pulumi.getter(name="destinationEndpointPassword")
    def destination_endpoint_password(self) -> pulumi.Output[Optional[str]]:
        """
        The password of database account.
        """
        return pulumi.get(self, "destination_endpoint_password")

    @property
    @pulumi.getter(name="destinationEndpointPort")
    def destination_endpoint_port(self) -> pulumi.Output[Optional[str]]:
        """
        The port of source endpoint.
        """
        return pulumi.get(self, "destination_endpoint_port")

    @property
    @pulumi.getter(name="destinationEndpointRegion")
    def destination_endpoint_region(self) -> pulumi.Output[Optional[str]]:
        """
        The region of destination instance.
        """
        return pulumi.get(self, "destination_endpoint_region")

    @property
    @pulumi.getter(name="destinationEndpointUserName")
    def destination_endpoint_user_name(self) -> pulumi.Output[Optional[str]]:
        """
        The username of database account.
        """
        return pulumi.get(self, "destination_endpoint_user_name")

    @property
    @pulumi.getter(name="dtsInstanceId")
    def dts_instance_id(self) -> pulumi.Output[str]:
        """
        The Migration instance ID. The ID of `dts.MigrationInstance`.
        """
        return pulumi.get(self, "dts_instance_id")

    @property
    @pulumi.getter(name="dtsJobName")
    def dts_job_name(self) -> pulumi.Output[str]:
        """
        The name of migration job.
        """
        return pulumi.get(self, "dts_job_name")

    @property
    @pulumi.getter(name="instanceClass")
    def instance_class(self) -> pulumi.Output[str]:
        """
        The instance class. Valid values: `large`, `medium`, `micro`, `small`, `xlarge`, `xxlarge`.
        """
        return pulumi.get(self, "instance_class")

    @property
    @pulumi.getter(name="sourceEndpointDatabaseName")
    def source_endpoint_database_name(self) -> pulumi.Output[Optional[str]]:
        """
        The name of migrate the database.
        """
        return pulumi.get(self, "source_endpoint_database_name")

    @property
    @pulumi.getter(name="sourceEndpointEngineName")
    def source_endpoint_engine_name(self) -> pulumi.Output[str]:
        """
        The type of source database. Valid values: `AS400`, `DB2`, `DMSPOLARDB`, `HBASE`, `MONGODB`, `MSSQL`, `MySQL`, `ORACLE`, `PolarDB`, `POLARDBX20`, `POLARDB_O`, `POSTGRESQL`, `TERADATA`.
        """
        return pulumi.get(self, "source_endpoint_engine_name")

    @property
    @pulumi.getter(name="sourceEndpointInstanceId")
    def source_endpoint_instance_id(self) -> pulumi.Output[Optional[str]]:
        """
        The ID of source instance.
        """
        return pulumi.get(self, "source_endpoint_instance_id")

    @property
    @pulumi.getter(name="sourceEndpointInstanceType")
    def source_endpoint_instance_type(self) -> pulumi.Output[str]:
        """
        The type of source instance. Valid values: `CEN`, `DG`, `DISTRIBUTED_DMSLOGICDB`, `ECS`, `EXPRESS`, `MONGODB`, `OTHER`, `PolarDB`, `POLARDBX20`, `RDS`.
        """
        return pulumi.get(self, "source_endpoint_instance_type")

    @property
    @pulumi.getter(name="sourceEndpointIp")
    def source_endpoint_ip(self) -> pulumi.Output[Optional[str]]:
        """
        The ip of source endpoint.
        """
        return pulumi.get(self, "source_endpoint_ip")

    @property
    @pulumi.getter(name="sourceEndpointOracleSid")
    def source_endpoint_oracle_sid(self) -> pulumi.Output[Optional[str]]:
        """
        The SID of Oracle database.
        """
        return pulumi.get(self, "source_endpoint_oracle_sid")

    @property
    @pulumi.getter(name="sourceEndpointOwnerId")
    def source_endpoint_owner_id(self) -> pulumi.Output[Optional[str]]:
        """
        The Alibaba Cloud account ID to which the source instance belongs.
        """
        return pulumi.get(self, "source_endpoint_owner_id")

    @property
    @pulumi.getter(name="sourceEndpointPassword")
    def source_endpoint_password(self) -> pulumi.Output[Optional[str]]:
        """
        The password of database account.
        """
        return pulumi.get(self, "source_endpoint_password")

    @property
    @pulumi.getter(name="sourceEndpointPort")
    def source_endpoint_port(self) -> pulumi.Output[Optional[str]]:
        """
        The port of source endpoint.
        """
        return pulumi.get(self, "source_endpoint_port")

    @property
    @pulumi.getter(name="sourceEndpointRegion")
    def source_endpoint_region(self) -> pulumi.Output[Optional[str]]:
        """
        The region of source instance.
        """
        return pulumi.get(self, "source_endpoint_region")

    @property
    @pulumi.getter(name="sourceEndpointRole")
    def source_endpoint_role(self) -> pulumi.Output[Optional[str]]:
        """
        The name of the role configured for the cloud account to which the source instance belongs.
        """
        return pulumi.get(self, "source_endpoint_role")

    @property
    @pulumi.getter(name="sourceEndpointUserName")
    def source_endpoint_user_name(self) -> pulumi.Output[Optional[str]]:
        """
        The username of database account.
        """
        return pulumi.get(self, "source_endpoint_user_name")

    @property
    @pulumi.getter
    def status(self) -> pulumi.Output[str]:
        """
        The status of the resource. Valid values: `Migrating`, `Suspending`. You can suspend the task by specifying `Suspending` and start the task by specifying `Migrating`.
        """
        return pulumi.get(self, "status")

    @property
    @pulumi.getter(name="structureInitialization")
    def structure_initialization(self) -> pulumi.Output[bool]:
        """
        Whether to perform a database table structure to migrate.
        """
        return pulumi.get(self, "structure_initialization")

