Updated on 2026-01-28 GMT+08:00

Updating a Migration Task

Function

This API is used to update a migration task with a specified ID.

Calling Method

For details, see Calling APIs.

Authorization Information

Each account has all the permissions required to call all APIs, but IAM users must be assigned the required permissions.

  • If you are using role/policy-based authorization, see Permissions Policies and Supported Actions for details on the required permissions.
  • If you are using identity policy-based authorization, the following identity policy-based permissions are required.

    Action

    Access Level

    Resource Type (*: required)

    Condition Key

    Alias

    Dependencies

    sms:server:updateTask

    Write

    server *

    -

    sms:server:migrationServer

    -

    -

    g:EnterpriseProjectId

URI

PUT /v3/tasks/{task_id}

Table 1 Path Parameters

Parameter

Mandatory

Type

Description

task_id

Yes

String

The migration task ID.

Minimum: 1

Maximum: 36

Request Parameters

Table 2 Request header parameters

Parameter

Mandatory

Type

Description

X-Auth-Token

Yes

String

User token.

The token can be obtained by calling the IAM API for obtaining a user token. The value of X-Subject-Token in the response header is the user token.

Minimum: 1

Maximum: 16384

Table 3 Request body parameters

Parameter

Mandatory

Type

Description

name

No

String

Task name (customizable).

The value can contain only letters, digits, underscores (_), and hyphens (-).

Minimum: 1

Maximum: 64

type

No

String

The task type. This parameter is mandatory for creating a task and optional for updating a task.

MIGRATE_FILE

MIGRATE_BLOCK

Minimum: 0

Maximum: 255

Enumeration values:

  • MIGRATE_FILE

  • MIGRATE_BLOCK

region_id

No

String

The ID of the region where the target server is located.

Minimum: 0

Maximum: 255

region_name

No

String

The name of the region where the target server is located.

Minimum: 0

Maximum: 255

exist_server

No

Boolean

Indicates whether an existing server is used as the target server. true indicates that an existing server is used as the target server. false indicates that the target server is newly created.

migration_ip

No

String

The IP address of the target server.

For public network migration, enter the EIP.

For Direct Connect migration, enter the private IP address.

If use_ipv6 is set to true, the value must be in the IPv6 format. If use_ipv6 is set to false, the value must be in the IPv4 format.

Minimum: 0

Maximum: 255

use_ipv6

No

Boolean

Whether the IP address of the destination server uses IPv6.

Default: false

use_public_ip

No

Boolean

Public network or not.

speed_limit

No

Integer

The migration rate limit, in Mbit/s.

Minimum: 0

Maximum: 1000

project_name

No

String

The name of the project to which the target server belongs.

Minimum: 0

Maximum: 255

project_id

No

String

The ID of the project to which the target server belongs.

Minimum: 0

Maximum: 255

enterprise_project

No

String

Enterprise project ID.

Minimum: 0

Maximum: 36

image_disk_id

No

String

Disk ID of the image agent on the target server.

Minimum: 0

Maximum: 255

vm_template_id

No

String

The template ID.

Minimum: 0

Maximum: 100

target_disk_ids

No

String

Disk ID array of the target server. Separate IDs with spaces. The length of a single ID cannot exceed 255 characters.

Minimum: 0

Maximum: 16384

snapshot_ids

No

String

Snapshot ID of the target server. Separate IDs with semicolons (;).

Minimum: 0

Maximum: 1024

cutovered_snapshot_ids

No

String

ID of the snapshot for cutover.

Minimum: 0

Maximum: 1024

target_server

No

TargetServer object

The target server information.

clone_server

No

CloneServer object

Clone server.

The modification on the clone server takes effect only when the source server is in the syncing, stopping, stopped, cutovering, finished, or error state.

Table 4 TargetServer

Parameter

Mandatory

Type

Description

id

No

String

The ID of the server in the SMS database.

Minimum: 0

Maximum: 255

ip

No

String

The IP address of the server. This parameter is mandatory for registration and optional for updates.

Minimum: 0

Maximum: 255

name

No

String

The server name.

Minimum: 0

Maximum: 255

hostname

No

String

The hostname of the server. This parameter is mandatory for registration and optional for updates.

Minimum: 0

Maximum: 255

os_type

No

String

The OS type of the server, which can be Windows or Linux. This parameter is mandatory for source server registration and optional for source server updates.

Minimum: 0

Maximum: 255

Enumeration values:

  • WINDOWS

  • LINUX

os_version

No

String

The OS version. This parameter is mandatory for registration and optional for updates.

Minimum: 0

Maximum: 255

firmware

No

String

The boot mode of the server, which can be BIOS or UEFI.

Minimum: 0

Maximum: 255

Enumeration values:

  • BIOS

  • UEFI

cpu_quantity

No

Integer

The number of vCPUs.

Minimum: 0

Maximum: 65535

memory

No

Long

The memory size, in MB.

Minimum: 0

Maximum: 9223372036854775807

btrfs_list

No

Array of BtrfsFileSystem objects

The Btrfs information of the server, which is mandatory for Linux. If there are no Btrfs file systems on the server, the value is an empty array [].

Array Length: 0 - 65535

networks

No

Array of NetWork objects

The information about NICs on the server.

Array Length: 0 - 65535

domain_id

No

String

The tenant domain ID.

Minimum: 0

Maximum: 255

has_rsync

No

Boolean

Indicates whether rsync is installed. This parameter is mandatory for Linux.

paravirtualization

No

Boolean

Indicates whether the source server is paravirtualized. This parameter is mandatory for Linux.

raw_devices

No

String

The list of raw devices. This parameter is mandatory for Linux.

Minimum: 0

Maximum: 255

driver_files

No

Boolean

Indicates whether any driver files are missing. This parameter is mandatory for Windows.

system_services

No

Boolean

Indicates whether there are abnormal services. This parameter is mandatory for Windows.

account_rights

No

Boolean

Indicates whether the account has the required permissions. This parameter is mandatory for Windows.

boot_loader

No

String

The system boot loader, which can be GRUB or LILO. This parameter is mandatory for Linux.

Enumeration values:

  • GRUB

  • LILO

system_dir

No

String

The system directory. This parameter is mandatory for Windows.

Minimum: 0

Maximum: 255

volume_groups

No

Array of VolumeGroups objects

This parameter is mandatory for Linux. If there are no volume groups, the value is an empty array [].

Array Length: 0 - 65535

vm_id

No

String

The ID of the target server. This parameter is not required for automatically created target servers.

Minimum: 0

Maximum: 255

flavor

No

String

The flavor of the target server.

Minimum: 0

Maximum: 255

disks

No

Array of TargetDisk objects

The information about target server disks, which is generally the same as that of the source server.

Array Length: 0 - 65535

image_disk_id

No

String

The ID of the disk that hosts the agent image on the target server.

Minimum: 0

Maximum: 255

snapshot_ids

No

String

The ID of the snapshot for the target server.

Minimum: 0

Maximum: 255

cutovered_snapshot_ids

No

String

The ID of the snapshot used for rollback on the target server.

Minimum: 0

Maximum: 255

Table 5 BtrfsFileSystem

Parameter

Mandatory

Type

Description

name

No

String

The file system name.

Minimum: 0

Maximum: 255

label

No

String

The file system tags. If no tag exists, the value is an empty string.

Minimum: 0

Maximum: 255

uuid

No

String

The file system UUID.

Minimum: 0

Maximum: 255

device

No

String

The device names of the Btrfs file system.

Minimum: 0

Maximum: 255

size

No

Long

The space occupied by the file system data.

Minimum: 0

Maximum: 9223372036854775807

nodesize

No

Long

The Btrfs node size.

Minimum: 0

Maximum: 9223372036854775807

sectorsize

No

Integer

The sector size.

Minimum: 0

Maximum: 2147483647

data_profile

No

String

The data profile (RAD).

Minimum: 0

Maximum: 255

system_profile

No

String

The file system profile (RAD).

Minimum: 0

Maximum: 255

metadata_profile

No

String

The metadata profile (RAD).

Minimum: 0

Maximum: 255

global_reserve1

No

String

The Btrfs file system information.

Minimum: 0

Maximum: 255

g_vol_used_size

No

Long

The used space of the Btrfs volume.

Minimum: 0

Maximum: 9223372036854775807

default_subvolid

No

String

The ID of the default subvolume.

Minimum: 0

Maximum: 255

default_subvol_name

No

String

The name of the default subvolume.

Minimum: 0

Maximum: 255

default_subvol_mountpath

No

String

The mount path of the default subvolume or Btrfs file system.

Minimum: 0

Maximum: 255

subvolumn

No

Array of BtrfsSubvolumn objects

The subvolume information.

Array Length: 0 - 65535

Table 6 BtrfsSubvolumn

Parameter

Mandatory

Type

Description

uuid

No

String

The UUID of the parent volume.

Minimum: 0

Maximum: 255

is_snapshot

No

String

Indicates whether the subvolume is a snapshot.

Minimum: 0

Maximum: 255

subvol_id

No

String

The subvolume ID.

Minimum: 0

Maximum: 255

parent_id

No

String

The parent volume ID.

Minimum: 0

Maximum: 255

subvol_name

No

String

The subvolume name.

Minimum: 0

Maximum: 255

subvol_mount_path

No

String

The mount path of the subvolume.

Minimum: 0

Maximum: 255

Table 7 NetWork

Parameter

Mandatory

Type

Description

name

No

String

The NIC name.

Minimum: 0

Maximum: 255

ip

No

String

The IP address bound to the NIC.

Minimum: 0

Maximum: 255

ipv6

No

String

The IPv6 address.

Minimum: 0

Maximum: 255

netmask

No

String

The subnet mask.

Minimum: 0

Maximum: 255

gateway

No

String

Gateway.

Minimum: 0

Maximum: 255

mtu

No

Integer

The NIC MTU. This parameter is mandatory for Linux.

Minimum: 0

Maximum: 2147483647

mac

Yes

String

The first MAC address in the list must not be empty.

Minimum: 0

Maximum: 255

id

No

String

The database record ID.

Minimum: 0

Maximum: 255

Table 8 VolumeGroups

Parameter

Mandatory

Type

Description

components

No

String

The physical volume information.

Minimum: 0

Maximum: 255

free_size

No

Long

The available space.

Minimum: 0

Maximum: 9223372036854775807

logical_volumes

No

Array of LogicalVolumes objects

The logical volume information.

Array Length: 0 - 50

name

No

String

Name.

Minimum: 0

Maximum: 255

size

No

Long

Size.

Minimum: 0

Maximum: 9223372036854775807

Table 9 LogicalVolumes

Parameter

Mandatory

Type

Description

block_count

No

Integer

The number of blocks.

Minimum: 0

Maximum: 2147483647

Default: 0

block_size

No

Long

Block size.

Minimum: 0

Maximum: 1048576

Default: 0

file_system

No

String

The file system.

Minimum: 0

Maximum: 255

inode_size

No

Integer

The number of inodes.

Minimum: 0

Maximum: 2147483647

inode_nums

No

Long

The number of inodes.

Minimum: 0

Maximum: 9223372036854775807

device_use

No

String

Partition type.

This is not mandatory and can be left blank. The common values are as follows:

NORMAL

OS: system device

BOOT

VOLUME_GROUP

BTRFS

Minimum: 0

Maximum: 255

mount_point

No

String

The mount point.

Minimum: 0

Maximum: 256

name

No

String

Name.

Minimum: 0

Maximum: 1024

size

No

Long

The size.

Minimum: 0

Maximum: 9223372036854775807

used_size

No

Long

The used space.

Minimum: 0

Maximum: 9223372036854775807

free_size

No

Long

The available space.

Minimum: 0

Maximum: 9223372036854775807

Table 10 TargetDisk

Parameter

Mandatory

Type

Description

id

No

Long

The disk ID.

Minimum: 0

Maximum: 9223372036854775807

device_use

No

String

The partition function. The partition can be a general, boot, or OS partition.

BOOT: boot device

OS: system device

NORMAL: general device

Default: NORMAL

Enumeration values:

  • NORMAL

  • OS

  • BOOT

disk_id

No

String

The disk ID.

Minimum: 0

Maximum: 255

name

No

String

The disk name.

Minimum: 0

Maximum: 255

physical_volumes

No

Array of TargetPhysicalVolumes objects

The logical volume information.

Array Length: 0 - 65535

size

No

Long

The size.

Minimum: 0

Maximum: 9223372036854775807

used_size

No

Long

The used space.

Minimum: 0

Maximum: 9223372036854775807

disk_index

No

String

The disk index.

Minimum: 0

Maximum: 255

os_disk

No

Boolean

Indicates whether the disk is the system disk.

partition_style

No

String

The disk partition type. This parameter is mandatory for source server registration.

MBR: Master Boot Record

GPT: GUID Partition Table

Enumeration values:

  • MBR

  • GPT

relation_name

No

String

The name of the paired disk on the Linux target ECS server.

Minimum: 0

Maximum: 255

Table 11 TargetPhysicalVolumes

Parameter

Mandatory

Type

Description

id

No

Long

The logical volume ID.

Minimum: 0

Maximum: 9223372036854775807

device_use

No

String

The partition function.

NORMAL: general device

OS: system device

BOOT: boot device

Default: NORMAL

Enumeration values:

  • NORMAL

  • OS

  • BOOT

file_system

No

String

The file system.

Minimum: 0

Maximum: 255

index

No

Integer

No.

Minimum: 0

Maximum: 2147483647

mount_point

No

String

The mount point.

Minimum: 0

Maximum: 255

name

No

String

Name.

Minimum: 0

Maximum: 255

size

No

Long

The size.

Minimum: 0

Maximum: 9223372036854775807

used_size

No

Long

The used space.

Minimum: 0

Maximum: 9223372036854775807

uuid

No

String

uuid

Minimum: 0

Maximum: 255

relation_name

No

String

The name of the paired disk on the Linux target ECS server.

Minimum: 0

Maximum: 255

free_size

No

Long

The idle partition space.

Minimum: 0

Maximum: 9223372036854775807

Table 12 CloneServer

Parameter

Mandatory

Type

Description

vm_id

No

String

The ID of the cloned server.

Minimum: 0

Maximum: 255

name

No

String

The name of the cloned server.

Minimum: 0

Maximum: 255

clone_error

No

String

The error code returned for a clone failure.

Minimum: 0

Maximum: 255

clone_state

No

String

The clone status.

NOT_READY

READY

PREPARING

CREATING

ERROR

FINISHED

Enumeration values:

  • NOT_READY

  • READY

  • PREPARING

  • CREATING

  • ERROR

  • FINISHED

error_msg

No

String

The error message returned for a clone failure.

Minimum: 0

Maximum: 1024

Response Parameters

Status code: 200

Table 13 Response body parameters

Parameter

Type

Description

id

String

The task ID.

Minimum: 1

Maximum: 255

Status code: 403

Table 14 Response body parameters

Parameter

Type

Description

error_code

String

The error code.

Minimum: 0

Maximum: 255

error_msg

String

The error message.

Minimum: 0

Maximum: 255

encoded_authorization_message

String

The encrypted authorization information.

Minimum: 0

Maximum: 65535

error_param

Array of strings

Error parameters.

Minimum: 0

Maximum: 65535

Array Length: 1 - 20

details

Array of details objects

The error details.

Array Length: 1 - 20

Table 15 details

Parameter

Type

Description

error_code

String

The SMS error code.

Minimum: 0

Maximum: 65535

error_msg

String

The SMS error message.

Minimum: 0

Maximum: 65535

Example Requests

This example updates the migration task whose ID is ef3b9722-07a0-40ae-89b0-889ee96dxxxx.

put https://{endpoint}/v3/tasks/ef3b9722-07a0-40ae-89b0-889ee96dxxxx

{
  "name" : "MigrationTask",
  "type" : "MIGRATE_BLOCK",
  "os_type" : "WINDOWS",
  "state" : "RUNNING",
  "estimate_complete_time" : null,
  "create_date" : 1598435778000,
  "start_date" : 1598435784000,
  "finish_date" : null,
  "priority" : 1,
  "speed_limit" : 0,
  "migrate_speed" : 0.0,
  "start_target_server" : true,
  "error_json" : "",
  "total_time" : 115,
  "float_ip" : null,
  "migration_ip" : null,
  "vm_template_id" : "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxx0001",
  "region_name" : "region name",
  "region_id" : "region id",
  "project_name" : "project name",
  "project_id" : "xxxxxxxxxxxxxxxxxxxxxxxx00000001",
  "sub_tasks" : [ {
    "id" : 7278,
    "name" : "CREATE_CLOUD_SERVER",
    "progress" : 0,
    "start_date" : 1598435802000,
    "end_date" : null,
    "user_op" : "REPLICATE"
  }, {
    "id" : 7279,
    "name" : "SSL_CONFIG",
    "progress" : 0,
    "start_date" : null,
    "end_date" : null,
    "user_op" : "REPLICATE"
  }, {
    "id" : 7280,
    "name" : "ATTACH_AGENT_IMAGE",
    "progress" : 0,
    "start_date" : null,
    "end_date" : null,
    "user_op" : "REPLICATE"
  }, {
    "id" : 7281,
    "name" : "FORMAT_DISK_WINDOWS",
    "progress" : 0,
    "start_date" : null,
    "end_date" : null,
    "user_op" : "REPLICATE"
  }, {
    "id" : 7282,
    "name" : "MIGRATE_WINDOWS_BLOCK",
    "progress" : 0,
    "start_date" : null,
    "end_date" : null,
    "user_op" : "REPLICATE"
  } ],
  "source_server" : {
    "id" : "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxx0001",
    "ip" : "192.168.0.154",
    "name" : "name-win16",
    "os_type" : "WINDOWS",
    "os_version" : "WINDOWS2016_64BIT",
    "agent_version" : "1.2.0",
    "oem_system" : false,
    "state" : "initialize",
    "migration_cycle" : "replicating"
  },
  "target_server" : {
    "id" : "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxx0001",
    "vm_id" : "",
    "name" : "",
    "ip" : null,
    "os_type" : "WINDOWS",
    "os_version" : "WINDOWS2016_64BIT",
    "system_dir" : "Y:\\Windows\\System32",
    "disks" : [ {
      "id" : 88008,
      "name" : "Disk 1",
      "relation_name" : null,
      "disk_id" : "0",
      "partition_style" : "MBR",
      "size" : 42949672960,
      "used_size" : 42947575808,
      "device_use" : "OS",
      "os_disk" : true,
      "physical_volumes" : [ {
        "id" : 135055,
        "uuid" : "\\\\?\\Volume{586b7157-0000-0000-0000-100000000000}\\",
        "index" : 1,
        "name" : "Z:",
        "relation_name" : null,
        "device_use" : "BOOT",
        "file_system" : "NTFS",
        "mount_point" : null,
        "size" : 524288000,
        "used_size" : 410275840,
        "free_size" : 114012160
      }, {
        "id" : 135056,
        "uuid" : "\\\\?\\Volume{586b7157-0000-0000-0000-501f00000000}\\",
        "index" : 2,
        "name" : "Y:",
        "relation_name" : null,
        "device_use" : "OS",
        "file_system" : "NTFS",
        "mount_point" : null,
        "size" : 42423287808,
        "used_size" : 23170301952,
        "free_size" : 19252985856
      } ],
      "disk_index" : "0"
    } ],
    "volume_groups" : [ ],
    "image_disk_id" : null,
    "cutovered_snapshot_ids" : null
  },
  "clone_server" : null
}

Example Responses

Status code: 200

This API is used to update a migration task with a specified ID.

{
  "id" : "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxx0001"
}

Status code: 403

Authentication failed.

{
  "error_code" : "SMS.9004",
  "error_msg" : "The current account does not have the permission to execute policy. You do not have permission to perform action XXX on resource XXX.",
  "encoded_authorization_message" : "XXXXXX",
  "error_param" : [ "You do not have permission to perform action XXX on resource XXX." ],
  "details" : [ {
    "error_code" : "SMS.9004",
    "error_msg" : "You do not have permission to perform action XXX on resource XXX."
  } ]
}

SDK Sample Code

The SDK sample code is as follows.

This example updates the migration task whose ID is ef3b9722-07a0-40ae-89b0-889ee96dxxxx.

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
package com.huaweicloud.sdk.test;

import com.huaweicloud.sdk.core.auth.ICredential;
import com.huaweicloud.sdk.core.auth.GlobalCredentials;
import com.huaweicloud.sdk.core.exception.ConnectionException;
import com.huaweicloud.sdk.core.exception.RequestTimeoutException;
import com.huaweicloud.sdk.core.exception.ServiceResponseException;
import com.huaweicloud.sdk.sms.v3.region.SmsRegion;
import com.huaweicloud.sdk.sms.v3.*;
import com.huaweicloud.sdk.sms.v3.model.*;

import java.util.List;
import java.util.ArrayList;

public class UpdateTaskSolution {

    public static void main(String[] args) {
        // The AK and SK used for authentication are hard-coded or stored in plaintext, which has great security risks. It is recommended that the AK and SK be stored in ciphertext in configuration files or environment variables and decrypted during use to ensure security.
        // In this example, AK and SK are stored in environment variables for authentication. Before running this example, set environment variables CLOUD_SDK_AK and CLOUD_SDK_SK in the local environment
        String ak = System.getenv("CLOUD_SDK_AK");
        String sk = System.getenv("CLOUD_SDK_SK");

        ICredential auth = new GlobalCredentials()
                .withAk(ak)
                .withSk(sk);

        SmsClient client = SmsClient.newBuilder()
                .withCredential(auth)
                .withRegion(SmsRegion.valueOf("<YOUR REGION>"))
                .build();
        UpdateTaskRequest request = new UpdateTaskRequest();
        request.withTaskId("{task_id}");
        PutTaskReq body = new PutTaskReq();
        List<SubTask> listbodySubTasks = new ArrayList<>();
        listbodySubTasks.add(
            new SubTask()
                .withId(7278L)
                .withName("CREATE_CLOUD_SERVER")
                .withProgress(0)
                .withStartDate(1598435802000L)
                .withUserOp("REPLICATE")
        );
        listbodySubTasks.add(
            new SubTask()
                .withId(7279L)
                .withName("SSL_CONFIG")
                .withProgress(0)
                .withUserOp("REPLICATE")
        );
        listbodySubTasks.add(
            new SubTask()
                .withId(7280L)
                .withName("ATTACH_AGENT_IMAGE")
                .withProgress(0)
                .withUserOp("REPLICATE")
        );
        listbodySubTasks.add(
            new SubTask()
                .withId(7281L)
                .withName("FORMAT_DISK_WINDOWS")
                .withProgress(0)
                .withUserOp("REPLICATE")
        );
        listbodySubTasks.add(
            new SubTask()
                .withId(7282L)
                .withName("MIGRATE_WINDOWS_BLOCK")
                .withProgress(0)
                .withUserOp("REPLICATE")
        );
        List<TargetPhysicalVolumes> listDisksPhysicalVolumes = new ArrayList<>();
        listDisksPhysicalVolumes.add(
            new TargetPhysicalVolumes()
                .withId(135055L)
                .withDeviceUse(TargetPhysicalVolumes.DeviceUseEnum.fromValue("BOOT"))
                .withFileSystem("NTFS")
                .withIndex(1)
                .withName("Z:")
                .withSize(524288000L)
                .withUsedSize(410275840L)
                .withUuid("\\?\Volume{586b7157-0000-0000-0000-100000000000}\")
                .withFreeSize(114012160L)
        );
        listDisksPhysicalVolumes.add(
            new TargetPhysicalVolumes()
                .withId(135056L)
                .withDeviceUse(TargetPhysicalVolumes.DeviceUseEnum.fromValue("OS"))
                .withFileSystem("NTFS")
                .withIndex(2)
                .withName("Y:")
                .withSize(42423287808L)
                .withUsedSize(23170301952L)
                .withUuid("\\?\Volume{586b7157-0000-0000-0000-501f00000000}\")
                .withFreeSize(19252985856L)
        );
        List<TargetDisk> listTargetServerDisks = new ArrayList<>();
        listTargetServerDisks.add(
            new TargetDisk()
                .withId(88008L)
                .withDeviceUse(TargetDisk.DeviceUseEnum.fromValue("OS"))
                .withDiskId("0")
                .withName("Disk 1")
                .withPhysicalVolumes(listDisksPhysicalVolumes)
                .withSize(42949672960L)
                .withUsedSize(42947575808L)
                .withDiskIndex("0")
                .withOsDisk(true)
                .withPartitionStyle(TargetDisk.PartitionStyleEnum.fromValue("MBR"))
        );
        TargetServer targetServerbody = new TargetServer();
        targetServerbody.withDisks(listTargetServerDisks)
            .withVolumeGroups()
            .withVmId("")
            .withId("xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxx0001")
            .withOsVersion("WINDOWS2016_64BIT")
            .withSystemDir("Y:\Windows\System32")
            .withOsType(TargetServer.OsTypeEnum.fromValue("WINDOWS"))
            .withName("");
        PostSourceServerBody sourceServerbody = new PostSourceServerBody();
        sourceServerbody.withId("xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxx0001")
            .withIp("192.168.0.154")
            .withName("name-win16")
            .withOsType(PostSourceServerBody.OsTypeEnum.fromValue("WINDOWS"))
            .withOsVersion("WINDOWS2016_64BIT")
            .withAgentVersion("1.2.0")
            .withMigrationCycle(PostSourceServerBody.MigrationCycleEnum.fromValue("replicating"))
            .withState(PostSourceServerBody.StateEnum.fromValue("initialize"))
            .withOemSystem(false);
        body.withSubTasks(listbodySubTasks);
        body.withTotalTime(115L);
        body.withErrorJson("");
        body.withMigrateSpeed((double)0.0);
        body.withStartDate(1598435784000L);
        body.withCreateDate(1598435778000L);
        body.withState(PutTaskReq.StateEnum.fromValue("RUNNING"));
        body.withTargetServer(targetServerbody);
        body.withSourceServer(sourceServerbody);
        body.withVmTemplateId("xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxx0001");
        body.withProjectId("xxxxxxxxxxxxxxxxxxxxxxxx00000001");
        body.withProjectName("project name");
        body.withSpeedLimit(0);
        body.withRegionName("region name");
        body.withStartTargetServer(true);
        body.withRegionId("region id");
        body.withPriority(PutTaskReq.PriorityEnum.NUMBER_1);
        body.withOsType(PutTaskReq.OsTypeEnum.fromValue("WINDOWS"));
        body.withType(PutTaskReq.TypeEnum.fromValue("MIGRATE_BLOCK"));
        body.withName("MigrationTask");
        request.withBody(body);
        try {
            UpdateTaskResponse response = client.updateTask(request);
            System.out.println(response.toString());
        } catch (ConnectionException e) {
            e.printStackTrace();
        } catch (RequestTimeoutException e) {
            e.printStackTrace();
        } catch (ServiceResponseException e) {
            e.printStackTrace();
            System.out.println(e.getHttpStatusCode());
            System.out.println(e.getRequestId());
            System.out.println(e.getErrorCode());
            System.out.println(e.getErrorMsg());
        }
    }
}

This example updates the migration task whose ID is ef3b9722-07a0-40ae-89b0-889ee96dxxxx.

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
# coding: utf-8

import os
from huaweicloudsdkcore.auth.credentials import GlobalCredentials
from huaweicloudsdksms.v3.region.sms_region import SmsRegion
from huaweicloudsdkcore.exceptions import exceptions
from huaweicloudsdksms.v3 import *

if __name__ == "__main__":
    # The AK and SK used for authentication are hard-coded or stored in plaintext, which has great security risks. It is recommended that the AK and SK be stored in ciphertext in configuration files or environment variables and decrypted during use to ensure security.
    # In this example, AK and SK are stored in environment variables for authentication. Before running this example, set environment variables CLOUD_SDK_AK and CLOUD_SDK_SK in the local environment
    ak = os.environ["CLOUD_SDK_AK"]
    sk = os.environ["CLOUD_SDK_SK"]

    credentials = GlobalCredentials(ak, sk)

    client = SmsClient.new_builder() \
        .with_credentials(credentials) \
        .with_region(SmsRegion.value_of("<YOUR REGION>")) \
        .build()

    try:
        request = UpdateTaskRequest()
        request.task_id = "{task_id}"
        listSubTasksbody = [
            SubTask(
                id=7278,
                name="CREATE_CLOUD_SERVER",
                progress=0,
                start_date=1598435802000,
                user_op="REPLICATE"
            ),
            SubTask(
                id=7279,
                name="SSL_CONFIG",
                progress=0,
                user_op="REPLICATE"
            ),
            SubTask(
                id=7280,
                name="ATTACH_AGENT_IMAGE",
                progress=0,
                user_op="REPLICATE"
            ),
            SubTask(
                id=7281,
                name="FORMAT_DISK_WINDOWS",
                progress=0,
                user_op="REPLICATE"
            ),
            SubTask(
                id=7282,
                name="MIGRATE_WINDOWS_BLOCK",
                progress=0,
                user_op="REPLICATE"
            )
        ]
        listPhysicalVolumesDisks = [
            TargetPhysicalVolumes(
                id=135055,
                device_use="BOOT",
                file_system="NTFS",
                index=1,
                name="Z:",
                size=524288000,
                used_size=410275840,
                uuid="\\?\Volume{586b7157-0000-0000-0000-100000000000}\",
                free_size=114012160
            ),
            TargetPhysicalVolumes(
                id=135056,
                device_use="OS",
                file_system="NTFS",
                index=2,
                name="Y:",
                size=42423287808,
                used_size=23170301952,
                uuid="\\?\Volume{586b7157-0000-0000-0000-501f00000000}\",
                free_size=19252985856
            )
        ]
        listDisksTargetServer = [
            TargetDisk(
                id=88008,
                device_use="OS",
                disk_id="0",
                name="Disk 1",
                physical_volumes=listPhysicalVolumesDisks,
                size=42949672960,
                used_size=42947575808,
                disk_index="0",
                os_disk=True,
                partition_style="MBR"
            )
        ]
        targetServerbody = TargetServer(
            disks=listDisksTargetServer,
            vm_id="",
            id="xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxx0001",
            os_version="WINDOWS2016_64BIT",
            system_dir="Y:\Windows\System32",
            os_type="WINDOWS",
            name=""
        )
        sourceServerbody = PostSourceServerBody(
            id="xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxx0001",
            ip="192.168.0.154",
            name="name-win16",
            os_type="WINDOWS",
            os_version="WINDOWS2016_64BIT",
            agent_version="1.2.0",
            migration_cycle="replicating",
            state="initialize",
            oem_system=False
        )
        request.body = PutTaskReq(
            sub_tasks=listSubTasksbody,
            total_time=115,
            error_json="",
            migrate_speed=0.0,
            start_date=1598435784000,
            create_date=1598435778000,
            state="RUNNING",
            target_server=targetServerbody,
            source_server=sourceServerbody,
            vm_template_id="xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxx0001",
            project_id="xxxxxxxxxxxxxxxxxxxxxxxx00000001",
            project_name="project name",
            speed_limit=0,
            region_name="region name",
            start_target_server=True,
            region_id="region id",
            priority=1,
            os_type="WINDOWS",
            type="MIGRATE_BLOCK",
            name="MigrationTask"
        )
        response = client.update_task(request)
        print(response)
    except exceptions.ClientRequestException as e:
        print(e.status_code)
        print(e.request_id)
        print(e.error_code)
        print(e.error_msg)

This example updates the migration task whose ID is ef3b9722-07a0-40ae-89b0-889ee96dxxxx.

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
package main

import (
	"fmt"
	"github.com/huaweicloud/huaweicloud-sdk-go-v3/core/auth/global"
    sms "github.com/huaweicloud/huaweicloud-sdk-go-v3/services/sms/v3"
	"github.com/huaweicloud/huaweicloud-sdk-go-v3/services/sms/v3/model"
    region "github.com/huaweicloud/huaweicloud-sdk-go-v3/services/sms/v3/region"
)

func main() {
    // The AK and SK used for authentication are hard-coded or stored in plaintext, which has great security risks. It is recommended that the AK and SK be stored in ciphertext in configuration files or environment variables and decrypted during use to ensure security.
    // In this example, AK and SK are stored in environment variables for authentication. Before running this example, set environment variables CLOUD_SDK_AK and CLOUD_SDK_SK in the local environment
    ak := os.Getenv("CLOUD_SDK_AK")
    sk := os.Getenv("CLOUD_SDK_SK")

    auth := global.NewCredentialsBuilder().
        WithAk(ak).
        WithSk(sk).
        Build()

    client := sms.NewSmsClient(
        sms.SmsClientBuilder().
            WithRegion(region.ValueOf("<YOUR REGION>")).
            WithCredential(auth).
            Build())

    request := &model.UpdateTaskRequest{}
	request.TaskId = "{task_id}"
	idSubTasks:= int64(7278)
	nameSubTasks:= "CREATE_CLOUD_SERVER"
	startDateSubTasks:= int64(1598435802000)
	userOpSubTasks:= "REPLICATE"
	idSubTasks1:= int64(7279)
	nameSubTasks1:= "SSL_CONFIG"
	userOpSubTasks1:= "REPLICATE"
	idSubTasks2:= int64(7280)
	nameSubTasks2:= "ATTACH_AGENT_IMAGE"
	userOpSubTasks2:= "REPLICATE"
	idSubTasks3:= int64(7281)
	nameSubTasks3:= "FORMAT_DISK_WINDOWS"
	userOpSubTasks3:= "REPLICATE"
	idSubTasks4:= int64(7282)
	nameSubTasks4:= "MIGRATE_WINDOWS_BLOCK"
	userOpSubTasks4:= "REPLICATE"
	var listSubTasksbody = []model.SubTask{
        {
            Id: &idSubTasks,
            Name: &nameSubTasks,
            Progress: int32(0),
            StartDate: &startDateSubTasks,
            UserOp: &userOpSubTasks,
        },
        {
            Id: &idSubTasks1,
            Name: &nameSubTasks1,
            Progress: int32(0),
            UserOp: &userOpSubTasks1,
        },
        {
            Id: &idSubTasks2,
            Name: &nameSubTasks2,
            Progress: int32(0),
            UserOp: &userOpSubTasks2,
        },
        {
            Id: &idSubTasks3,
            Name: &nameSubTasks3,
            Progress: int32(0),
            UserOp: &userOpSubTasks3,
        },
        {
            Id: &idSubTasks4,
            Name: &nameSubTasks4,
            Progress: int32(0),
            UserOp: &userOpSubTasks4,
        },
    }
	idPhysicalVolumes:= int64(135055)
	deviceUsePhysicalVolumes:= model.GetTargetPhysicalVolumesDeviceUseEnum().BOOT
	fileSystemPhysicalVolumes:= "NTFS"
	indexPhysicalVolumes:= int32(1)
	namePhysicalVolumes:= "Z:"
	sizePhysicalVolumes:= int64(524288000)
	usedSizePhysicalVolumes:= int64(410275840)
	uuidPhysicalVolumes:= "\\?\Volume{586b7157-0000-0000-0000-100000000000}\"
	freeSizePhysicalVolumes:= int64(114012160)
	idPhysicalVolumes1:= int64(135056)
	deviceUsePhysicalVolumes1:= model.GetTargetPhysicalVolumesDeviceUseEnum().OS
	fileSystemPhysicalVolumes1:= "NTFS"
	indexPhysicalVolumes1:= int32(2)
	namePhysicalVolumes1:= "Y:"
	sizePhysicalVolumes1:= int64(42423287808)
	usedSizePhysicalVolumes1:= int64(23170301952)
	uuidPhysicalVolumes1:= "\\?\Volume{586b7157-0000-0000-0000-501f00000000}\"
	freeSizePhysicalVolumes1:= int64(19252985856)
	var listPhysicalVolumesDisks = []model.TargetPhysicalVolumes{
        {
            Id: &idPhysicalVolumes,
            DeviceUse: &deviceUsePhysicalVolumes,
            FileSystem: &fileSystemPhysicalVolumes,
            Index: &indexPhysicalVolumes,
            Name: &namePhysicalVolumes,
            Size: &sizePhysicalVolumes,
            UsedSize: &usedSizePhysicalVolumes,
            Uuid: &uuidPhysicalVolumes,
            FreeSize: &freeSizePhysicalVolumes,
        },
        {
            Id: &idPhysicalVolumes1,
            DeviceUse: &deviceUsePhysicalVolumes1,
            FileSystem: &fileSystemPhysicalVolumes1,
            Index: &indexPhysicalVolumes1,
            Name: &namePhysicalVolumes1,
            Size: &sizePhysicalVolumes1,
            UsedSize: &usedSizePhysicalVolumes1,
            Uuid: &uuidPhysicalVolumes1,
            FreeSize: &freeSizePhysicalVolumes1,
        },
    }
	idDisks:= int64(88008)
	deviceUseDisks:= model.GetTargetDiskDeviceUseEnum().OS
	diskIdDisks:= "0"
	nameDisks:= "Disk 1"
	sizeDisks:= int64(42949672960)
	usedSizeDisks:= int64(42947575808)
	diskIndexDisks:= "0"
	osDiskDisks:= true
	partitionStyleDisks:= model.GetTargetDiskPartitionStyleEnum().MBR
	var listDisksTargetServer = []model.TargetDisk{
        {
            Id: &idDisks,
            DeviceUse: &deviceUseDisks,
            DiskId: &diskIdDisks,
            Name: &nameDisks,
            PhysicalVolumes: &listPhysicalVolumesDisks,
            Size: &sizeDisks,
            UsedSize: &usedSizeDisks,
            DiskIndex: &diskIndexDisks,
            OsDisk: &osDiskDisks,
            PartitionStyle: &partitionStyleDisks,
        },
    }
	vmIdTargetServer:= ""
	idTargetServer:= "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxx0001"
	osVersionTargetServer:= "WINDOWS2016_64BIT"
	systemDirTargetServer:= "Y:\Windows\System32"
	targetServerbody := &model.TargetServer{
		Disks: listDisksTargetServer,
		VmId: &vmIdTargetServer,
		Id: &idTargetServer,
		OsVersion: &osVersionTargetServer,
		SystemDir: &systemDirTargetServer,
		OsType: model.GetTargetServerOsTypeEnum().WINDOWS,
		Name: "",
	}
	idSourceServer:= "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxx0001"
	ipSourceServer:= "192.168.0.154"
	nameSourceServer:= "name-win16"
	osTypeSourceServer:= model.GetPostSourceServerBodyOsTypeEnum().WINDOWS
	osVersionSourceServer:= "WINDOWS2016_64BIT"
	agentVersionSourceServer:= "1.2.0"
	migrationCycleSourceServer:= model.GetPostSourceServerBodyMigrationCycleEnum().REPLICATING
	stateSourceServer:= model.GetPostSourceServerBodyStateEnum().INITIALIZE
	oemSystemSourceServer:= false
	sourceServerbody := &model.PostSourceServerBody{
		Id: &idSourceServer,
		Ip: &ipSourceServer,
		Name: &nameSourceServer,
		OsType: &osTypeSourceServer,
		OsVersion: &osVersionSourceServer,
		AgentVersion: &agentVersionSourceServer,
		MigrationCycle: &migrationCycleSourceServer,
		State: &stateSourceServer,
		OemSystem: &oemSystemSourceServer,
	}
	totalTimePutTaskReq:= int64(115)
	errorJsonPutTaskReq:= ""
	migrateSpeedPutTaskReq:= float64(0.0)
	startDatePutTaskReq:= int64(1598435784000)
	createDatePutTaskReq:= int64(1598435778000)
	statePutTaskReq:= model.GetPutTaskReqStateEnum().RUNNING
	vmTemplateIdPutTaskReq:= "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxx0001"
	projectIdPutTaskReq:= "xxxxxxxxxxxxxxxxxxxxxxxx00000001"
	projectNamePutTaskReq:= "project name"
	speedLimitPutTaskReq:= int32(0)
	regionNamePutTaskReq:= "region name"
	startTargetServerPutTaskReq:= true
	regionIdPutTaskReq:= "region id"
	priorityPutTaskReq:= model.GetPutTaskReqPriorityEnum().E_1
	osTypePutTaskReq:= model.GetPutTaskReqOsTypeEnum().WINDOWS
	typePutTaskReq:= model.GetPutTaskReqTypeEnum().MIGRATE_BLOCK
	namePutTaskReq:= "MigrationTask"
	request.Body = &model.PutTaskReq{
		SubTasks: &listSubTasksbody,
		TotalTime: &totalTimePutTaskReq,
		ErrorJson: &errorJsonPutTaskReq,
		MigrateSpeed: &migrateSpeedPutTaskReq,
		StartDate: &startDatePutTaskReq,
		CreateDate: &createDatePutTaskReq,
		State: &statePutTaskReq,
		TargetServer: targetServerbody,
		SourceServer: sourceServerbody,
		VmTemplateId: &vmTemplateIdPutTaskReq,
		ProjectId: &projectIdPutTaskReq,
		ProjectName: &projectNamePutTaskReq,
		SpeedLimit: &speedLimitPutTaskReq,
		RegionName: &regionNamePutTaskReq,
		StartTargetServer: &startTargetServerPutTaskReq,
		RegionId: &regionIdPutTaskReq,
		Priority: &priorityPutTaskReq,
		OsType: &osTypePutTaskReq,
		Type: &typePutTaskReq,
		Name: &namePutTaskReq,
	}
	response, err := client.UpdateTask(request)
	if err == nil {
        fmt.Printf("%+v\n", response)
    } else {
        fmt.Println(err)
    }
}

For SDK sample code of more programming languages, see the Sample Code tab in API Explorer. SDK sample code can be automatically generated.

Status Codes

Status Code

Description

200

This API is used to update a migration task with a specified ID.

403

Authentication failed.

Error Codes

See Error Codes.