云社区 博客 博客详情
云社区 博客 博客详情

【华为云Stack ManageOne运营面北向对接】如何使用订单接口管理弹性云服务器 【PART 2】

混合云北向砖家 发表于 2020-03-28 16:08:07 03-28 16:08
混合云北向砖家 发表于 2020-03-28 16:08:07 2020/03/28
0
0

【摘要】 第三方系统对接华为云Stack时,可通过对接订单接口实现对云资源的生命周期管理

https://bbs.huaweicloud.com/blogs/156188

步骤9 查询子网信息

URL: https://{vpc对外访问域名}/v2.0/ports?device_id={vpc_id}(vpc_id由上一步查询获得)
请求方法:GET
请求头:
Content-Type: application/json; charset=UTF-8
Accept: application/json; charset=UTF-8
Connection: keep-alive
X-Auth-Token: MIIEeAYJKoASASn04rMqff-Q8fk7kqiCDMLfVxqj7wIdgkM1yD4=
请求体:无
响应体:
{
	"ports": [
		{
			"id": "f8e20436-6ee3-4d8d-860d-cf6607acff21",
			"name": "6df75f53-9a47-4c9d-b882-7c36f38c39eb",
			"status": "DOWN",
			"description": "",
			"admin_state_up": true,
			"fixed_ips": [
				{
					"subnet_id": "6df75f53-9a47-4c9d-b882-7c36f38c39eb",
					"ip_address": "192.168.10.24"
				}
			],
			"mac_address": "fa:16:3e:72:fe:5b",
			"network_id": "243e425b-daae-43f2-8b35-8803e163b487",
			"tenant_id": "27a008f1b83e4dfdbf1143dd336006df",
			"device_id": "7a172056-73be-4247-9f78-aaa5bed573d0",
			"device_owner": "neutron:SC_INTERNAL_NETWORK",
			"security_groups": [
				"8f760273-76b0-4bf0-872e-8a229b89934d"
			],
			"extra_dhcp_opts": [],
			"allowed_address_pairs": [],
			"binding:vnic_type": "normal",
			"binding:vif_details": {},
			"binding:host_id": "",
			"binding:profile": {},
			"created_at": "2019-06-11T01:53:47",
			"updated_at": "2019-06-11T01:53:47",
			"project_id": "27a008f1b83e4dfdbf1143dd336006df"
		}
	]
}

这里我们可以获得子网的Id,即subnet_id的值


步骤10 查询网络信息

根据获得的subnet_id,查询子网详情,获得网络Id,即network_id

URL: https://{vpc对外访问域名}/v2.0/subnets/{subnet_id}(subnet_id由上一步查询获得)
请求方法:GET
请求头:
Content-Type: application/json; charset=UTF-8
Accept: application/json; charset=UTF-8
Connection: keep-alive
X-Auth-Token: MIIEeAYJKoASASn04rMqff-Q8fk7kqiCDMLfVxqj7wIdgkM1yD4=
请求体:无
响应体:
{
	"subnet": {
		"name": "subnet-5e10",
		"cidr": "192.168.10.0/24",
		"id": "6df75f53-9a47-4c9d-b882-7c36f38c39eb",
		"description": "",
		"enable_dhcp": true,
		"network_id": "243e425b-daae-43f2-8b35-8803e163b487",
		"tenant_id": "27a008f1b83e4dfdbf1143dd336006df",
		"dns_nameservers": [
			"160.102.8.53",
			"160.102.8.54"
		],
		"allocation_pools": [
			{
				"start": "192.168.10.1",
				"end": "192.168.10.254"
			}
		],
		"host_routes": [],
		"ip_version": 4,
		"gateway_ip": null,
		"created_at": "2019-06-11T01:53:46",
		"updated_at": "2019-06-11T01:53:46",
		"project_id": "27a008f1b83e4dfdbf1143dd336006df"
	}
}

步骤11 查询安全组信息

创建VM时默认打开安全组,以便对VM的进出流量进行防护,这里示例如何查询安全组,如下:

URL: https://{vpc对外访问域名}/v2.0/security-groups
请求方法:GET
请求头:
Content-Type: application/json; charset=UTF-8
Accept: application/json; charset=UTF-8
Connection: keep-alive
X-Auth-Token: MIIEeAYJKoASASn04rMqff-Q8fk7kqiCDMLfVxqj7wIdgkM1yD4=
请求体:无
响应体:
{
	"security_groups": [
		{
			"id": "8f760273-76b0-4bf0-872e-8a229b89934d",
			"name": "default",
			"description": "default",
			"tenant_id": "27a008f1b83e4dfdbf1143dd336006df",
			"security_group_rules": [
				{
					"id": "9ec17aa3-a95a-41c2-9e4c-0f1a47560225",
					"priority": null,
					"action": null,
					"direction": "ingress",
					"protocol": null,
					"ethertype": "IPv4",
					"description": "",
					"remote_group_id": "8f760273-76b0-4bf0-872e-8a229b89934d",
					"remote_ip_prefix": null,
					"tenant_id": "27a008f1b83e4dfdbf1143dd336006df",
					"port_range_max": null,
					"port_range_min": null,
					"security_group_id": "8f760273-76b0-4bf0-872e-8a229b89934d",
					"created_at": "2019-06-11T01:53:45",
					"updated_at": "2019-06-11T01:53:45",
					"project_id": "27a008f1b83e4dfdbf1143dd336006df"
				},
				{
					"id": "89b64f90-10c5-4020-8366-5d607a500095",
					"priority": null,
					"action": null,
					"direction": "egress",
					"protocol": null,
					"ethertype": "IPv4",
					"description": "",
					"remote_group_id": null,
					"remote_ip_prefix": null,
					"tenant_id": "27a008f1b83e4dfdbf1143dd336006df",
					"port_range_max": null,
					"port_range_min": null,
					"security_group_id": "8f760273-76b0-4bf0-872e-8a229b89934d",
					"created_at": "2019-06-11T01:53:45",
					"updated_at": "2019-06-11T01:53:45",
					"project_id": "27a008f1b83e4dfdbf1143dd336006df"
				},
				{
					"id": "a283abce-ce0b-44c9-984f-1d9008f9aa0e",
					"priority": null,
					"action": null,
					"direction": "ingress",
					"protocol": null,
					"ethertype": "IPv6",
					"description": "",
					"remote_group_id": "8f760273-76b0-4bf0-872e-8a229b89934d",
					"remote_ip_prefix": null,
					"tenant_id": "27a008f1b83e4dfdbf1143dd336006df",
					"port_range_max": null,
					"port_range_min": null,
					"security_group_id": "8f760273-76b0-4bf0-872e-8a229b89934d",
					"created_at": "2019-06-11T01:53:45",
					"updated_at": "2019-06-11T01:53:45",
					"project_id": "27a008f1b83e4dfdbf1143dd336006df"
				},
				{
					"id": "2849ccda-035e-460e-83b5-b7bd12ae7600",
					"priority": null,
					"action": null,
					"direction": "egress",
					"protocol": null,
					"ethertype": "IPv6",
					"description": "",
					"remote_group_id": null,
					"remote_ip_prefix": null,
					"tenant_id": "27a008f1b83e4dfdbf1143dd336006df",
					"port_range_max": null,
					"port_range_min": null,
					"security_group_id": "8f760273-76b0-4bf0-872e-8a229b89934d",
					"created_at": "2019-06-11T01:53:45",
					"updated_at": "2019-06-11T01:53:45",
					"project_id": "27a008f1b83e4dfdbf1143dd336006df"
				}
			],
			"created_at": "2019-06-11T01:53:45",
			"updated_at": "2019-06-11T01:53:45",
			"project_id": "27a008f1b83e4dfdbf1143dd336006df"
		}
	]
}

这里我们可以查到每个安全组的安全组规则,根据虚拟机的网络互通要求选取合适的安全组即可(一般选择名称为default的安全组即可),如果需要对安全组规则进行修改,可在ManageOne界面上操作

步骤12 查询亲和性组

如果需要指定虚拟机的亲和性和反亲和性组,还需要指定云服务器组,查询方法如下:

URL: https://{ecs对外访问域名}/v2.1/{project_id}/os-server-groups(project_id与获取token使用的一致)
请求方法:GET
请求头:
Content-Type: application/json; charset=UTF-8
Accept: application/json; charset=UTF-8
Connection: keep-alive
X-Auth-Token: MIIEeAYJKoASASn04rMqff-Q8fk7kqiCDMLfVxqj7wIdgkM1yD4=
请求体:无
响应体:
{
	"server_groups": [
		{
			"members": [],
			"metadata": {},
			"id": "3ba519b8-ab42-4893-90d4-021e672c353e",
			"policies": [
				"soft-affinity"
			],
			"name": "SvrGrp-ac02"
		}
	]
}

至此,我们获得了创建弹性云服务器的所有参数,订购参数如下:

序号

参数名称

参考值

备注

1

operate_type

apply

申请,固定值apply

2

project_id

2bb0XXXd70d

project_id,准备工作中获取,必选

3

product_id

4c1b27eexxx4c2f

产品Id,步骤4拿到,必选

4

region_id

cn-global-1

区域id,步骤3拿到,必选

5

time_zone

GMT+08:00

参考当地时区

6

tenancy

30(String类型)

申请时长,单位为天,为“0”时,表示不限时长,必选

7

service_type

ecs

弹性云服务器,填写选择的service_type,必选

8

tenantId

2bb0XXXd70d

project_id,准备工作中获取,必选

9

availability_zone

az1.dc1

可用分区id,步骤3拿到,必选

10

name

ecs-7001

ECS名称,自定义即可,必选

11

imageRef


必选,镜像Id,接口为:【GET】/v2/cloudimages,参考《华为云Stack 6.5.X API接口参考.chm》

12

flavorRef


必选,规格Id,接口为:【GET】/v1/{tenant_id}/cloudservers/flavors,

,参考《华为云Stack 6.5.X API接口参考.chm》

13

root_volume:volumetype


必选,ECS系统盘类型,接口为:【GET】/v2/{tenant_id}/types,

,参考《华为云Stack 6.5.X API接口参考.chm》

14

root_volume:size

40

ECS系统盘大小,自定义,必选

15

vpcid

4653XXXXcb3799f

必选,vpc的Id,接口为:【GET】/v2.0/routers,接口响应中,router的Id即为vpcId,

,参考《华为云Stack 6.5.X API接口参考.chm》

16

nics:subnet_id

f6662XXX3a3e310

必选,此处需填写网络Id,接口为:【GET 】/v2.0/subnets/{subnet-id}

17

nics:"binding:profile":disable_security_groups

false

是否关闭安全组,默认打开,必选

18

security_groups:id

478eXXX76b47d2

必选,安全组Id,接口为:【GET】/v2.0/security-groups,参考《华为云Stack 6.5.X API接口参考.chm》

19

count

1

需要创建的弹性云服务器个数,自定义即可,最大支持一次性创建20台,必选

20

extendparam:regionID

cn-global-1

区域id,步骤3拿到,必选

21

metadata:op_svc_userid

4885cxxxx97fb85

用户的Id,步骤1拿到,必选

22

metadata:__instance_vwatchdog

false

是否开启软件狗(软件狗为虚拟机提供一种心跳检测机制,主要用于监视虚拟机内部系统的健康状况),如需开启软件狗,请确保所选镜像已安装符合标准IPMI软件狗的喂狗程序,否则可能导致虚拟机反复重启,必选

23

metadata:_ha_policy_type

false

是否启用ECS HA(启用HA功能后,如果云服务器或者云服务器所在主机故障,系统会在其他主机上重建云服务器,保证业务连续性)。该能力受管理员配置的全局HA策略限制,只有在管理员配置了全局HA策略后,基于云主机的HA策略才会生效,必选

24

display


用于ManageOne页面显示订购虚拟机的参数,根据订购接口的其他参数填写对应的值,值可以置空,但为了增强订单的可读性,强烈建议填写该参数

25

user_data

IyEvYmluXXXXL2Jhc

必选参数(键必须有,值可为空),仅当选择的镜像是linux系统类型,且支持cloud-init时,可以使用该参数注入用户数据,或者修改虚拟机密码,构造方法参考本表后续说明。

26

secret_params

采用账户密码登录示例:{\"metadata\":{\"admin_pass\":\"\"}}

采用密钥对登录示例:{\"metadata\":{},\"key_name\":\"KeyPair-a182\"}

必选参数(键必须有,值可为空);

若使用的镜像类型为windows,请选择admin_pass参数注入用户密码;

若选择密钥对登陆,需要填写正确的密钥对名称,密钥对查询方法,参考下文keypair管理章节






说明:

user_data参数的作用主要是用户文件注入或者实现修改用户密码的功能,所有注入的内容需要使用Base64编码,下面分别给出几种常用的使用场景和示例:

  1. 修改root用户密码

    仅适用于支持cloud-init的linux镜像,实现原理是通过在创建ECS时注入一段脚本,来修改root,编写格式如下:

    修改密码脚本格式样例(base64编码前样例)

    备注

    #cloud-config

    runcmd:

    - echo 'root: {cryptedPWD}' | chpasswd -e

    {cryptedPWD}即用户设置的密码的加密值,加密方法为base64_sha512,可以使用apache的commons-codec包中的org.apache.commons.codec.digest.Sha2Crypt.sha512Crypt方法进行加密处理

    构造好脚本内容后,需要对脚本内容进行base64编码处理,base64编码处理可以使用apache的commons-codec包中的方法(在org.apache.commons.codec.binary.Base64类中),示例如下:

    String pwdShell = "#cloud-config\n"

    +"\nruncmd:\n"

    +"  - echo 'root:$6$nngqph$8MBO7oQ4S6e5YuIwS6omVLiPGxmEzUqXyLxOQ6vKeFy6F0jCd.7vk5EVBGmb6J4PKkRAcvDjU8K3h/6ww7SNL0' | chpasswd -e\n";

    String desc = Base64.encodeBase64String((pwdShell .getBytes()));

  2. 注入用户数据(也可用于修改用户密码)

    仅适用于支持cloud-init的linux镜像,需要对脚本内容进行base64编码处理,base64编码处理可以使用apache的commons-codec包中的方法(在org.apache.commons.codec.binary.Base64类中),样例如下:

    #cloud-config

    hostname: my1.cloudman.cc

    manage_etc_hosts: true

    说明如下:

    cloud-init 只会读取以 #cloud-config 开头的数据,所以这一行一定要写对。

    hostname: my1.cloudman.cc 告诉 cloud-init 将 hostname 设置为 my1.cloudman.cc。

    manage_etc_hosts: true 告诉 cloud-init 更新 /etc/hosts 文件。

  3. 修改windows虚拟机密码

    仅适用于支持cloud-init的windows镜像,需要对脚本内容进行base64编码处理,base64编码处理可以使用apache的commons-codec包中的方法(在org.apache.commons.codec.binary.Base64类中),样例如下:

    "rem cmd\nnet user {customUser}  {customPdw} /add\nnet localgroup administrators {customUser} /add"

    {customUser}、{customPdw}根据实际数据填写

步骤13 创建订单,申请弹性云服务器

订单接口中的params参数说明,请参考《ManageOne 6.5.x 云服务Params参数说明

URL:  https://{ManageOne运营侧API对外域名}/rest/subscription/v3.0/subscriptions
请求方法:POST
请求头:
Content-Type: application/json; charset=UTF-8
Accept: application/json; charset=UTF-8
Connection: keep-alive
X-Auth-Token: MIIEeAYJKoASASn04rMqff-Q8fk7kqiCDMLfVxqj7wIdgkM1yD4=
请求体:
{
	"subscriptions": [
		{
			"operate_type": "apply",
			"project_id": "27a008f1b83e4dfdbf1143dd336006df",
			"product_id": "71347fb04fed43b5bb1eea9527f845ae",
			"region_id": "dg-tky-1",
			"time_zone": "GMT+08:00",
			"tenancy": "365",
			"service_type": "ecs",
			"params": "{\"tenantId\":\"27a008f1b83e4dfdbf1143dd336006df\",\"availability_zone\":\"az0.dc0\",\"name\":\"ecs-e960\",\"imageRef\":\"833c9fe8-d27d-4238-a7e3-e43a683159a8\",\"flavorRef\":\"c89d4da4-fdad-4de7-81ba-42ef89ec4ca8\",\"config_drive\":false,\"root_volume\":{\"volumetype\":\"IPSAN\",\"size\":20,\"extendparam\":{\"resourceSpecCode\":\"\",\"resourceType\":\"\"}},\"data_volumes\":[],\"vpcid\":\"7a172056-73be-4247-9f78-aaa5bed573d0\",\"nics\":[{\"subnet_id\":\"243e425b-daae-43f2-8b35-8803e163b487\",\"ip_address\":\"\",\"ip_address_v6\":\"\",\"nictype\":\"\",\"physical_network\":\"\",\"extra_dhcp_opts\":[],\"binding:profile\":{\"disable_security_groups\":false,\"availability_zone\":\"az0.dc0\"}}],\"security_groups\":[{\"id\":\"8f760273-76b0-4bf0-872e-8a229b89934d\"}],\"personality\":[],\"count\":1,\"extendparam\":{\"chargingMode\":0,\"regionID\":\"dg-tky-1\"},\"metadata\":{\"op_svc_userid\":\"b54310fb838b4f8ebf1e9d23bf9691d5\",\"__instance_vwatchdog\":\"false\",\"_ha_policy_type\":\"remote_rebuild\"},\"tags\":[],\"display\":{\"zh_CN\":[{\"label\":\"区域\",\"type\":\"string\",\"value\":\"东莞\"},{\"label\":\"名称\",\"type\":\"string\",\"value\":\"ecs-e960\"},{\"label\":\"可用分区\",\"type\":\"string\",\"value\":\"华为\"},{\"label\":\"规格\",\"type\":\"string\",\"value\":\"1U1G\"},{\"label\":\"镜像\",\"type\":\"string\",\"value\":\"EulerOS\"},{\"label\":\"系统盘\",\"type\":\"string\",\"value\":\"SATA,20GB\"}],\"en_US\":[{\"label\":\"Region\",\"type\":\"string\",\"value\":\"东莞\"},{\"label\":\"Name\",\"type\":\"string\",\"value\":\"ecs-e960\"},{\"label\":\"AZ\",\"type\":\"string\",\"value\":\"华为\"},{\"label\":\"Flavor\",\"type\":\"string\",\"value\":\"1U1G\"},{\"label\":\"Image\",\"type\":\"string\",\"value\":\"EulerOS\"},{\"label\":\"System Disk\",\"type\":\"string\",\"value\":\"SATA,20GB\"}]},\"extra\":{\"devices\":[{\"device_type\":\"cdrom\"}]}}",
			"secret_params": "{\"metadata\":{},\"key_name\":\"\"}"
		}
	]
}
响应体:
{
	"purchases": [
		{
			"subscription_id": "20190914104422606990067"
		}
	],
	"expected_total": 0,
	"error_details": null
}

subscription_id即为订单ID

步骤14 查询订单详情,确认订单实施状态

订单提交成功后,需要定时轮询订单状态,直到订单状态(status字段)为成功

URL: https://{ManageOne运营侧API对外域名}/rest/order/v3.0/orders/{order_id}(order_id由上一步响应体获得)
请求方法:POST
请求头:
Content-Type: application/json; charset=UTF-8
Accept: application/json; charset=UTF-8
Connection: keep-alive
X-Auth-Token: MIIEeAYJKoASASn04rMqff-Q8fk7kqiCDMLfVxqj7wIdgkM1yD4=
请求体:无
响应体:
{
	"order_id": "20190914104422606990067",
	"parents_id": null,
	"type": "apply",
	"service_type": "vpc",
	"params": "{\"regionId\":\"dg-tky-1\",\"tenant_id\":\"27a008f1b83e4dfdbf1143dd336006df\",\"vpc\":{\"name\":\"vpc-5e10\",\"ntp\":[],\"ntp_v6\":[]},\"subnet\":{\"regionId\":\"dg-tky-1\",\"tenantId\":\"27a008f1b83e4dfdbf1143dd336006df\",\"availableZoneId\":\"\",\"name\":\"subnet-5e10\",\"dhcpEnable\":true,\"cidr\":\"192.168.10.0/24\",\"physicalNetwork\":\"physnet1\",\"segmentationId\":\"177\",\"routed\":false,\"dnsList\":[\"160.102.8.53\",\"160.102.8.54\"]},\"display\":{\"en_US\":[{\"label\":\"Region\",\"value\":\"东莞\",\"type\":\"string\"},{\"label\":\"VPC Name\",\"value\":\"vpc-5e10\",\"type\":\"string\"},{\"label\":\"External Network\",\"value\":\"\",\"type\":\"string\"}],\"zh_CN\":[{\"label\":\"区域\",\"value\":\"东莞\",\"type\":\"string\"},{\"label\":\"VPC名称\",\"value\":\"vpc-5e10\",\"type\":\"string\"},{\"label\":\"外部网络\",\"value\":\"\",\"type\":\"string\"}]}}",
	"create_user_id": "b54310fb838b4f8ebf1e9d23bf9691d5",
	"create_user_name": "xssvdc",
	"vdc_id": "d58cc7b4-59a8-49ff-8f0c-0c7dff90b5e9",
	"vdc_name": "xssvdc",
	"status": "successed",
	"create_time": "2019-06-11 01:53:42",
	"implement_time": "2019-06-11 01:53:43",
	"complete_time": "2019-06-11 01:53:48",
	"project_id": "27a008f1b83e4dfdbf1143dd336006df",
	"cloud_infra_id": null,
	"product_id": "04e12eba75e243368f5cb6a0f52db4af",
	"region_id": "dg-tky-1",
	"product_defination_params": "{\"en_US\":\"VPC\",\"zh_CN\":\"虚拟私有云\"}",
	"tenancy": "0",
	"original_tenancy": "0",
	"time_zone": null,
	"comments": null,
	"contract_number": null,
	"rate_params": null,
	"domain_id": null
}


6 删除弹性云服务器

删除弹性云服务器,我们需要指定弹性云服务器的Id,弹性云服务器所属的区域,AZ等信息,步骤如下:

步骤 1 获取token

参考第5章 步骤1即可

步骤2 查询区域列表

参考 第5章 步骤3即可

步骤3 查询弹性云服务器列表

URL: https://{ecs对外访问域名}/v2.1/{tenant_id}/servers/detail(tenant_id即为获取token指定的project的id)
请求方法:GET
请求头:
Content-Type: application/json; charset=UTF-8
Accept: application/json; charset=UTF-8
Connection: keep-alive
X-Auth-Token: MIIEeAYJKoASASn04rMqff-Q8fk7kqiCDMLfVxqj7wIdgkM1yD4=
请求体:无
响应体:
{
	"servers": [
		{
			"tenant_id": "27a008f1b83e4dfdbf1143dd336006df",
			"addresses": {
				"subnet-5e10": [
					{
						"OS-EXT-IPS-MAC:mac_addr": "fa:16:3e:7d:58:2e",
						"addr": "192.168.10.94",
						"OS-EXT-IPS:type": "fixed",
						"version": 4
					}
				]
			},
			"metadata": {
				"__instance_vwatchdog": "false",
				"_ha_policy_type": "remote_rebuild",
				"server_expiry": "2020-09-13 15:59:59",
				"cascaded.instance_extrainfo": "current_mem:1024,max_mem:4194304,max_cpu:1,cpu_num_for_one_plug:1,org_cpu:1,xml_support_live_resize:False,num_of_mem_plug:0,org_mem:1024,iohang_timeout:720,current_cpu:1,pcibridge:2"
			},
			"OS-EXT-STS:task_state": null,
			"OS-DCF:diskConfig": "MANUAL",
			"OS-EXT-AZ:availability_zone": "az0.dc0",
			"links": [
				{
					"rel": "self",
					"href": "https://ecs.dg-tky-1.dg-tky.com/v2/27a008f1b83e4dfdbf1143dd336006df/servers/4cebeef2-c78f-4ff2-b974-199f57df0ead"
				},
				{
					"rel": "bookmark",
					"href": "https://ecs.dg-tky-1.dg-tky.com/27a008f1b83e4dfdbf1143dd336006df/servers/4cebeef2-c78f-4ff2-b974-199f57df0ead"
				}
			],
			"OS-EXT-STS:power_state": 1,
			"id": "4cebeef2-c78f-4ff2-b974-199f57df0ead",
			"os-extended-volumes:volumes_attached": [
				{
					"id": "827b127e-a646-48ab-98bf-4945d058adbb"
				}
			],
			"OS-EXT-SRV-ATTR:host": "CAD800FA-1663-E611-9CA9-AC6175662B02",
			"image": {
				"links": [
					{
						"rel": "bookmark",
						"href": "https://ecs.dg-tky-1.dg-tky.com/27a008f1b83e4dfdbf1143dd336006df/images/833c9fe8-d27d-4238-a7e3-e43a683159a8"
					}
				],
				"id": "833c9fe8-d27d-4238-a7e3-e43a683159a8"
			},
			"OS-SRV-USG:terminated_at": null,
			"accessIPv4": "",
			"accessIPv6": "",
			"created": "2019-09-14T10:48:08Z",
			"hostId": "8edd142af886b1ea5f9f9d2d7cbaaee8956943b185e7dad3d70dcbbd",
			"OS-EXT-SRV-ATTR:hypervisor_hostname": "CAD800FA-1663-E611-9CA9-AC6175662B02",
			"key_name": null,
			"flavor": {
				"links": [
					{
						"rel": "bookmark",
						"href": "https://ecs.dg-tky-1.dg-tky.com/27a008f1b83e4dfdbf1143dd336006df/flavors/c89d4da4-fdad-4de7-81ba-42ef89ec4ca8"
					}
				],
				"id": "c89d4da4-fdad-4de7-81ba-42ef89ec4ca8"
			},
			"security_groups": [
				{
					"name": "default"
				}
			],
			"config_drive": "",
			"OS-EXT-STS:vm_state": "active",
			"OS-EXT-SRV-ATTR:instance_name": "instance-00000078",
			"user_id": "b54310fb838b4f8ebf1e9d23bf9691d5",
			"name": "ecs-e960",
			"progress": 0,
			"OS-SRV-USG:launched_at": "2019-09-14T10:48:16.000000",
			"updated": "2019-09-14T10:48:32Z",
			"status": "ACTIVE"
		}
	]
}

我们现在获得了删除弹性云服务器所需的所有参数,订购接口所需主要参数如下:

序号

参数名称

参考值

备注

1

operate_type

delete

固定值delete

2

project_id

2bb0XXXd70d

project_id,,必选

3

region_id

cn-global-1

区域id,参考步骤2

4

service_type

ecs

弹性云服务器,填写ecs

5

tenancy


到期时间【可选】

6

display


用于ManageOne页面显示,参考样例即可

7

ids:id

42e5xxxb466

虚拟机Id,接口为:【GET】 /v2.1/{tenant_id}/servers/detail,参考华为云Stack 6.5.X API接口参考.chm》

8

delete_publicip

false

是否删除ECS绑定的弹性IP,若填false则删除虚拟机时,不会释放该虚拟机绑定的弹性IP

9

delete_volume

false

是否删除ECS上挂载的数据盘,系统盘在删除ECS时,是默认删除的

步骤4 调用订单接口删除弹性云服务器

订单接口中的params参数说明,请参考《ManageOne 6.5.x 云服务Params参数说明

URL:  https://{ManageOne运营侧API对外域名}/rest/subscription/v3.0/subscriptions
请求方法:POST
请求头:
Content-Type: application/json; charset=UTF-8
Accept: application/json; charset=UTF-8
Connection: keep-alive
X-Auth-Token: MIIEeAYJKoASASn04rMqff-Q8fk7kqiCDMLfVxqj7wIdgkM1yD4=
请求体:
{
	"subscriptions": [
		{
			"operate_type": "delete",
			"project_id": "27a008f1b83e4dfdbf1143dd336006df",
			"service_type": "ecs",
			"params": "{\"count\":1,\"display\":{\"zh_CN\":[{\"label\":\"区域\",\"type\":\"string\",\"value\":\"东莞\"},{\"label\":\"名称\",\"type\":\"string\",\"value\":\"ecs-e960\"},{\"label\":\"可用分区\",\"type\":\"string\",\"value\":\"华为\"},{\"label\":\"是否删除系统盘\",\"type\":\"string\",\"value\":\"是\"},{\"label\":\"是否删除数据盘\",\"type\":\"string\",\"value\":\"是\"},{\"label\":\"是否删除快照\",\"type\":\"string\",\"value\":\"是\"}],\"en_US\":[{\"label\":\"Region\",\"type\":\"string\",\"value\":\"东莞\"},{\"label\":\"Name\",\"type\":\"string\",\"value\":\"ecs-e960\"},{\"label\":\"AZ\",\"type\":\"string\",\"value\":\"华为\"},{\"label\":\"System Disk\",\"type\":\"string\",\"value\":\"Yes\"},{\"label\":\"Data Disk\",\"type\":\"string\",\"value\":\"Yes\"},{\"label\":\"Snapshot\",\"type\":\"string\",\"value\":\"Yes\"}]},\"ids\":[{\"id\":\"4cebeef2-c78f-4ff2-b974-199f57df0ead\"}],\"delete_publicip\":false,\"delete_volume\":true,\"delete_snapshot\":true}",
			"secret_params": "",
			"region_id": "dg-tky-1"
		}
	]
}
响应体:
{
	"purchases": [
		{
			"subscription_id": "20190914110658422269247"
		}
	],
	"expected_total": 0,
	"error_details": null
}

同样的,我们需要调用订单查询接口(参考底5章 步骤14),查询订单状态,直到虚拟机删除完成


补充说明:

  1. 弹性云服务器的查询、电源管理、磁盘挂载卸载、弹性IP的绑定解绑等操作均需要调用云服务的接口,具体接口参考文档《为云Stack 6.5.1 API接口参考.chm》中“计算”-->“ECS”章节。

  2. ECS的申请、删除、变更需要使用ManageOne订单接口,不可将ManageOne订单接口与ECS接口混用(如:使用ManageOne订单接口创建资源,使用ECS接口删除资源),否则会导致ManageOne上数据展示异常



登录后可下载附件,请登录或者注册

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区),文章链接,文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件至:huaweicloud.bbs@huawei.com进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容。
评论文章 //点赞 收藏 0
点赞
分享文章到微博
分享文章到朋友圈

评论 (0)


0/1000
评论

登录后可评论,请 登录注册

评论

您还没有写博客的权限!

温馨提示

您确认删除评论吗?

确定
取消
温馨提示

您确认删除评论吗?

删除操作无法恢复,请谨慎操作。

确定
取消
温馨提示

您确认删除博客吗?

确定
取消

确认删除

您确认删除博客吗?

确认删除

您确认删除评论吗?

温馨提示

登录超时或用户已下线,请重新登录!!!

确定
取消