查询迁移任务列表
功能介绍
在设置目的端后,主机迁移服务会自动创建迁移任务,使用该接口可以查询迁移任务列表。
调用方法
请参见如何调用API。
URI
GET /v3/tasks
参数 |
是否必选 |
参数类型 |
描述 |
---|---|---|---|
state |
否 |
String |
迁移任务状态 READY:准备就绪 RUNNING:迁移中 SYNCING:同步中 MIGRATE_SUCCESS:迁移成功 MIGRATE_FAIL:迁移失败 ABORTING:中止中 ABORT:中止 DELETING::删除中 SYNC_F_ROLLBACKING:同步失败回滚中 SYNC_F_ROLLBACK_SUCCESS:同步失败回滚成功 枚举值:
|
name |
否 |
String |
任务的名称 最小长度:0 最大长度:255 |
id |
否 |
String |
任务的ID 最小长度:0 最大长度:255 |
source_server_id |
否 |
String |
源端服务器的ID 最小长度:0 最大长度:255 |
limit |
否 |
Integer |
每一页记录的任务数量 最小值:0 最大值:200 缺省值:100 |
offset |
否 |
Integer |
偏移量 最小值:0 最大值:65535 缺省值:0 |
enterprise_project_id |
否 |
String |
需要查询的企业项目ID 最小长度:0 最大长度:255 |
请求参数
参数 |
是否必选 |
参数类型 |
描述 |
---|---|---|---|
X-Auth-Token |
是 |
String |
用户Token。通过调用IAM服务获取用户Token接口获取(响应消息头中X-Subject-Token的值)。 最小长度:1 最大长度:16384 |
响应参数
状态码: 200
参数 |
参数类型 |
描述 |
---|---|---|
count |
Integer |
符合要求的任务数量,不受分页影响 最小值:0 最大值:2147483647 |
tasks |
Array of TasksResponseBody objects |
查询到的任务列表 数组长度:0 - 65535 |
参数 |
参数类型 |
描述 |
---|---|---|
id |
String |
迁移任务ID 最小长度:0 最大长度:255 |
name |
String |
任务名称(用户自定义) 最小长度:0 最大长度:255 |
type |
String |
任务类型,创建时必选,更新时可选 MIGRATE_FILE:文件级迁移 MIGRATE_BLOCK:块级迁移 最小长度:0 最大长度:255 枚举值:
|
os_type |
String |
操作系统类型,分为WINDOWS和LINUX,创建时必选,更新时可选 最小长度:0 最大长度:255 枚举值:
|
state |
String |
任务状态 最小长度:0 最大长度:255 |
estimate_complete_time |
Long |
预估完成时间 最小值:0 最大值:9223372036854775807 |
create_date |
Long |
任务创建时间 最小值:0 最大值:9223372036854775807 |
priority |
Integer |
进程优先级 0:低 1:标准 2:高 最小值:0 最大值:2 枚举值:
|
speed_limit |
Integer |
迁移限速 最小值:0 最大值:65535 |
migrate_speed |
Double |
迁移速率,单位:MB/S 最小值:0 最大值:10000 |
compress_rate |
Double |
压缩率 最小值:0 最大值:10000 |
start_target_server |
Boolean |
迁移完成后是否启动目的端服务器 true:启动 false:停止 缺省值:false |
error_json |
String |
错误信息 最小长度:0 最大长度:1024 |
total_time |
Long |
任务总耗时 最小值:0 最大值:9223372036854775807 |
migration_ip |
String |
目的端服务器的IP地址。 公网迁移时请填写弹性IP地址 专线迁移时请填写私有IP地址 最小长度:0 最大长度:255 |
sub_tasks |
Array of SubTaskAssociatedWithTask objects |
任务关联的子任务信息 数组长度:0 - 65535 |
source_server |
任务关联的源端信息 |
|
enterprise_project_id |
String |
迁移项目ID 最小长度:0 最大长度:255 |
target_server |
任务关联的目的端信息 |
|
log_collect_status |
String |
日志收集状态 INIT TELL_AGENT_TO_COLLECT WAIT_AGENT_COLLECT_ACK AGENT_COLLECT_FAIL AGENT_COLLECT_SUCCESS WAIT_SERVER_COLLECT SERVER_COLLECT_FAIL SERVER_COLLECT_SUCCESS TELL_AGENT_RESET_ACL WAIT_AGENT_RESET_ACL_ACK 枚举值:
|
clone_server |
CloneServerBrief object |
克隆服务器基本信息 |
syncing |
Boolean |
是否同步 |
network_check_info |
NetworkCheckInfoRequestBody object |
网络检测相关信息 |
special_config |
Array of ConfigBody objects |
特殊配置项配置信息 数组长度:0 - 1000 |
参数 |
参数类型 |
描述 |
---|---|---|
id |
Long |
子任务ID 最小值:0 最大值:9223372036854775807 |
name |
String |
子任务名称 最小长度:0 最大长度:255 |
progress |
Integer |
子任务的进度,取值为0-100之间的整数 最小值:0 最大值:100 |
start_date |
Long |
子任务开始时间 最小值:0 最大值:9223372036854775807 |
end_date |
Long |
子任务结束时间(如果子任务还没有结束,则为空) 最小值:0 最大值:9223372036854775807 |
process_trace |
String |
迁移或同步时,具体的迁移详情 最小长度:0 最大长度:2048 |
参数 |
参数类型 |
描述 |
---|---|---|
id |
String |
源端在SMS数据库中的ID 最小长度:0 最大长度:255 |
ip |
String |
源端服务器ip,注册源端时必选,更新非必选 最小长度:0 最大长度:255 |
name |
String |
用来区分不同源端服务器的名称 最小长度:0 最大长度:255 |
os_type |
String |
源端服务器的OS类型,分为Windows和Linux,注册必选,更新非必选 最小长度:0 最大长度:255 枚举值:
|
os_version |
String |
操作系统版本,注册必选,更新非必选 最小长度:0 最大长度:255 |
oem_system |
Boolean |
是否是OEM操作系统(Windows) |
state |
String |
当前源端服务器状态 unavailable:环境校验不通过 waiting:等待 initialize:初始化 replicate:复制 syncing:持续同步 stopping:暂停中 stopped:已暂停 deleting:删除中 error:错误 cloning:等待克隆完成 testing:测试中 finished:启动目的端完成 枚举值:
|
参数 |
参数类型 |
描述 |
---|---|---|
id |
String |
目的端在SMS数据库中的ID 最小长度:0 最大长度:255 |
vm_id |
String |
目的端虚机ID 最小长度:0 最大长度:255 |
name |
String |
目的端服务器名称 最小长度:0 最大长度:255 |
ip |
String |
目的端服务器IP 最小长度:0 最大长度:255 |
os_type |
String |
目的端服务器的OS类型 WINDOWS:WINDOWS系统 LINUX:LINUX系统 最小长度:0 最大长度:255 枚举值:
|
os_version |
String |
操作系统版本 最小长度:0 最大长度:255 |
参数 |
参数类型 |
描述 |
---|---|---|
vm_id |
String |
克隆服务器ID 最小长度:0 最大长度:255 |
name |
String |
克隆虚拟机的名称 最小长度:0 最大长度:255 |
参数 |
参数类型 |
描述 |
---|---|---|
domain_connectivity |
Boolean |
域名连通性 |
destination_connectivity |
Boolean |
目的端连通性 |
network_delay |
Double |
网络时延 最小值:0 最大值:10000.0 |
network_jitter |
Double |
网络抖动 最小值:0 最大值:10000 |
migration_speed |
Double |
带宽 最小值:0 最大值:10000 |
loss_percentage |
Double |
丢包 最小值:0 最大值:100 |
cpu_usage |
Double |
CPU占用 最小值:0 最大值:100 |
mem_usage |
Double |
内存占用 最小值:0 最大值:100 |
evaluation_result |
String |
评估结果 最小长度:6 最大长度:8 |
请求示例
查询迁移任务列表
GET https://{endpoint}/v3/tasks
响应示例
状态码: 200
OK
{ "count" : 3, "tasks" : [ { "id" : "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxx0001", "name" : "sms_task_lxxxx11", "type" : "MIGRATE_FILE", "os_type" : "LINUX", "state" : "MIGRATE_SUCCESS", "estimate_complete_time" : null, "create_date" : 1585139506000, "priority" : 1, "speed_limit" : 0, "migrate_speed" : 0.0, "start_target_server" : true, "error_json" : "", "total_time" : 3878000, "migration_ip" : "", "source_server" : { "id" : "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxx0001", "ip" : "192.168.*.107", "name" : "xxx-linux-1", "os_type" : "LINUX", "os_version" : "CENTOS_7_6_64BIT", "oem_system" : false, "state" : "AVAILABLE" }, "target_server" : { "id" : "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxx0001", "vm_id" : "", "name" : "", "ip" : null, "os_type" : "LINUX", "os_version" : null }, "log_collect_status" : "INIT" }, { "id" : "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxx0001", "name" : "sms_task_xxx22", "type" : "MIGRATE_BLOCK", "os_type" : "WINDOWS", "state" : "MIGRATE_SUCCESS", "estimate_complete_time" : null, "create_date" : 1585138569000, "priority" : 1, "speed_limit" : 0, "migrate_speed" : 0.0, "start_target_server" : true, "error_json" : "", "total_time" : 10824000, "migration_ip" : "", "source_server" : { "id" : "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxx0001", "ip" : "192.168.*.245", "name" : "xxx-windows-2", "os_type" : "WINDOWS", "os_version" : "WINDOWS2012_R2_64BIT", "oem_system" : false, "state" : "AVAILABLE" }, "target_server" : { "id" : "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxx0001", "vm_id" : "", "name" : "", "ip" : null, "os_type" : "WINDOWS", "os_version" : "WINDOWS2012_R2_64BIT" }, "log_collect_status" : "INIT" }, { "id" : "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxx0001", "name" : "sms_task_leddesktop", "type" : "MIGRATE_BLOCK", "os_type" : "WINDOWS", "state" : "MIGRATE_SUCCESS", "estimate_complete_time" : null, "create_date" : 1566130392000, "priority" : 1, "speed_limit" : 200, "migrate_speed" : 0.0, "start_target_server" : true, "error_json" : "", "total_time" : 882000, "migration_ip" : "192.168.1.201", "source_server" : null, "target_server" : { "id" : "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxx0001", "vm_id" : "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxx0001", "name" : "xxx-sms-target", "ip" : null, "os_type" : "WINDOWS", "os_version" : "WINDOWS2008_R2_64BIT" }, "log_collect_status" : "INIT" } ] }
SDK代码示例
SDK代码示例如下。
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 |
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.*; public class ListTasksSolution { 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(); ListTasksRequest request = new ListTasksRequest(); request.withState(ListTasksRequest.StateEnum.fromValue("<state>")); request.withName("<name>"); request.withId("<id>"); request.withSourceServerId("<source_server_id>"); request.withLimit(<limit>); request.withOffset(<offset>); request.withEnterpriseProjectId("<enterprise_project_id>"); try { ListTasksResponse response = client.listTasks(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()); } } } |
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 |
# 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 = ListTasksRequest() request.state = "<state>" request.name = "<name>" request.id = "<id>" request.source_server_id = "<source_server_id>" request.limit = <limit> request.offset = <offset> request.enterprise_project_id = "<enterprise_project_id>" response = client.list_tasks(request) print(response) except exceptions.ClientRequestException as e: print(e.status_code) print(e.request_id) print(e.error_code) print(e.error_msg) |
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 |
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.ListTasksRequest{} stateRequest:= model.GetListTasksRequestStateEnum().<STATE> request.State = &stateRequest nameRequest:= "<name>" request.Name = &nameRequest idRequest:= "<id>" request.Id = &idRequest sourceServerIdRequest:= "<source_server_id>" request.SourceServerId = &sourceServerIdRequest limitRequest:= int32(<limit>) request.Limit = &limitRequest offsetRequest:= int32(<offset>) request.Offset = &offsetRequest enterpriseProjectIdRequest:= "<enterprise_project_id>" request.EnterpriseProjectId = &enterpriseProjectIdRequest response, err := client.ListTasks(request) if err == nil { fmt.Printf("%+v\n", response) } else { fmt.Println(err) } } |
更多编程语言的SDK代码示例,请参见API Explorer的代码示例页签,可生成自动对应的SDK代码示例。
状态码
状态码 |
描述 |
---|---|
200 |
OK |
错误码
请参见错误码。