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

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

混合云北向砖家 发表于 2020-03-28 15:59:36 03-28 15:59
混合云北向砖家 发表于 2020-03-28 15:59:36 2020/03/28
0
0

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

1 订单接口说明

ManageOne中,用户通过申请订单的方式对云资源进行申请、变更、释放操作,实现对云资源生命周期的管理,订单接口具有以下特点:

  1. 订单支持关联审批流程(最大支持五级审批,详情参考ManageOne用户指南),用户完成资源配置并提交后,如果审批通过,Manageone会自动完成订单实施;

  2. 订单接口对云服务接口(经加固后对外开放的OpenStack接口)进行了一定程度的封装,通过调用订单接口,可以同步完成云资源的多个操作,如,申请虚拟机的同时,为虚拟机挂载数据盘,绑定弹性IP;

  3. 通过订单接口申请、释放云资源时,会同步扣除、恢复租户配额,当租户配额不够时,会导致订单实施失败;

  4. 订单接口只提供资源的申请,延期,变更,释放功能,不提供云服务的查询,操作(如虚拟机的开关机,列表查询等)功能,不能独立使用,需要配合云服务接口使用,也就是说,您需要通过ManageOne订单接口申请,延期,变更,释放云资源,使用云服务接口查询,操作云资源

说明:

    云服务接口也支持申请云资源,与使用ManageOne订单接口的区别是:

  • 通过云服务接口创建的资源,在ManageOne页面上,可以查询,操作这些资源,但不能执行变更(如扩容,减容),释放云资源的操作

  • ManageOne中为该租户设置的配额也将不再生效(即使用云服务接口申请、释放资源,ManageOne中对应租户的配额不会变化),这也意味着,如果您不加约束,租户可以超配额申请资源



2 订单接口使用场景

如第1部分所述,ManageOne订单接口是在云服务接口的基础上封装得到的,包含了ManageOne自身的运营特性,例如产品、服务、区域、配额等,使用上有一定的约束,如果您希望通过调用接口实现对华为云Stack中云资源的生命周期管理,请参考以下几个场景进行评估,符合以下任何一种场景的,建议您选择使用ManageOne订单接口进行对接:

  1. 如果您公司购买了并部署了华为云Stack产品,您希望通过自动化工具实现云服务资源的自动化发放,从而提高资源申请效率;

  2. 如果您购买了并部署了华为云Stack产品,公司围绕IT资产的运营运维有一整套流程,您希望已有的流程平台(如ITSM、BOSS等)能够与华为云Stack进行对接,实现现有流程与云服务的整合,在简化服务的申请周期,提高应用上线效率的同时,还能够实现云资源的全流程监控;

  3. 如果您是云服务提供商,将华为云Stack提供的云服务,按照租户的形式租售给了客户,客户希望实现云服务的自动化发放,需要您提供对接接口;

  4. 如果您是云服务提供商,希望现有运营平台能够与华为云Stack对接,实现租户的自动化创建,并为每个租户预置指定类型的云资源,租户的日常运维由运维部门通过ManageOne进行运维。

如果您购买了多家厂商的云平台,希望通过一套云管理软件进行纳管,建议您直接对接云服务接口进行对接,这样可以屏蔽ManageOne的运营特性,只关注云服务特性,对接起来更加灵活。

3 对接准备

  1. 订单接口参数较为复杂,建议您使用可视化工具对接口进行测试,如postman(使用前请关闭SSL证书校验),restclient等。

  2. 请参考帖子:【华为云Stack ManageOne 运营侧北向对接】北向接口对接准备工作,获取接口文档,接口对接需要的IP,域名等信息

4 订单接口对接步骤

我们知道ManageOne订单接口不能独立使用,需要配合云服务接口使用,这里给出主要的对接步骤,如下:

  1. 通过用户名和密码调用鉴权接口获取Token和user_id。

  2. (可选)通过user_id查询用户关联的project,用户是以project维度操作资源,资源也必须属于某一个project

  3. 根据选择的project的id查询project详细信息,获取region_id、支持的云服务列表、每个云服务的资源池id和包含的az(可用分区)列表。

  4. 选择需要申请的云服务类型,比如云硬盘的service_type为evs。

  5. 订购接口还需要product_id,因此通过查询可用产品列表接口获取。

  6. 根据不同的云服务定义的数据结构获取对应的参数,这部分由每个云服务具体的订购章节详细描述,参考《ManageOne 6.5.x 云服务Params参数说明》。

  7. 组合订购接口所需的所有参数,调用接口完成订购

下面给出通过订单接口创建、释放弹性云服务器的详细步骤

5 申请弹性云服务器

这里先给出涉及到的接口清单,如下:


序号

接口功能

URL

涉及到的接口文档

调用接口使用的域名(样例)

1

鉴权

【POST】/v3/auth/tokens

《ManageOne 6.5.X OTenantSecurity服务API参考.doc》

sc.demo.com

2

查询用户关联的project列表

【GET】/rest/vdc/v3.0/users/{user_id}/projects

《ManageOne 6.5.X 运营面API参考.doc》

sc.demo.com
3

查询project详情,获取该project关联的资源池信息

【GET】/rest/vdc/v3.1/projects/{project_id}

《ManageOne 6.5.X 运营面API参考.doc》

sc.demo.com

4

查询可申请的产品列表

【GET】/rest/product/v3.0/apply/products

《ManageOne 6.5.X 运营面API参考.doc》

sc.demo.com

5

查询云资源池可用分区

【GET】/rest/serviceaccess/v3.0/available-zones

《ManageOne 6.5.X 运营面API参考.doc》

sc.demo.com

6

创建订购

【GET】/rest/subscription/v3.0/subscriptions

《ManageOne 6.5.X 运营面API参考.doc》

《ManageOne 6.5.x 云服务Params参数说明》

sc.demo.com

7

查询订单详情

【GET】/rest/order/v3.0/orders/{order_id}

《ManageOne 6.5.X 运营面API参考.doc》

sc.demo.com
8

获取镜像列表

【GET】/v2/cloudimages

《华为云Stack 6.5.X API接口参考.chm》>计算>IMS

ims.sa-fb-1.demo.com

9

获取可用规格列表

【GET】/v1/{tenant_id}/cloudservers/flavors

《华为云Stack 6.5.X API接口参考.chm》>计算>ECS

ecs.sa-fb-1.demo.com

10

获取磁盘类型

【GET】/v2/{tenant_id}/types

《华为云Stack 6.5.X API接口参考.chm》>存储>EVS

evs.sa-fb-1.demo.com

11

获取VPC信息

【GET】/v2.0/routers

《华为云Stack 6.5.X API接口参考.chm》>网络>VPC>VPC

vpc.sa-fb-1.demo.com

12

获取端口列表

【GET】/v2.0/ports

《华为云Stack 6.5.X API接口参考.chm》>网络>VPC>VPC

vpc.sa-fb-1.demo.com

13

获取子网详情

【GET】/v2.0/subnets/{subnet-id}

《华为云Stack 6.5.X API接口参考.chm》>网络>VPC>VPC

vpc.sa-fb-1.demo.com

14

获取安全组信息

【GET】/v2.0/security-groups

《华为云Stack 6.5.X API接口参考.chm》>网络>VPC>VPC

vpc.sa-fb-1.demo.com

15

获取云服务器组(即亲和性)信息(可选)

【GET】/v2.1/{tenant_id}/os-server-groups

《华为云Stack 6.5.X API接口参考.chm》>计算>ECS

ecs.sa-fb-1.demo.com

具体接口调用步骤如下:


步骤 1 获取token

调用示例:

URL:https://{ManageOne运营侧API对外域名}/v3/auth/tokens
请求方法:POST
请求头:
Content-Type: application/json;charset=UTF-8
Accept: application/json;charset=UTF-8
Connection: keep-alive
请求体:
{
	"auth": {
		"identity": {
			"methods": [
				"password"
			],
			"password": {
				"user": {
					"domain": {
						"name": "租户名"
					},
					"name": "tenantName",
					"password": "password"
				}
			}
		},
		"scope": {
			"project": {
				"domain": {
					"name": "租户名"
				},
				"id": "项目Id"
			}
		}
	}
}

响应消息如下:

响应头:

X-Subject-Token→MIIEeAYJKoASASn04rMqff-Q8fk7kqiCDMLfVxqj7wIdgkM1yD4=

响应体:
{
	"token": {
		"expires_at": "2019-09-09T07:38:55.643000Z",
		"methods": [
			"password"
		],
		"catalog": [],
		"roles": [
			{
				"name": "vdc_adm",
				"id": "880ed0477e684b1db7634572ecf19c5c"
			},
			{
				"name": "te_admin",
				"id": "7849dd0fc806417c908bb21ea93b5def"
			},
			{
				"name": "tag_adm",
				"id": "7ef11d3399a44a56b722b3c017478e34"
			},
			{
				"name": "approv_adm",
				"id": "5528afb8b7c946b5bda00a10ca041748"
			},
			{
				"name": "vdc_owner",
				"id": "2034341ae2b44fee94c244a8069cde0b"
			}
		],
		"project": {
			"domain": {
				"name": "xssvdc",
				"id": "15488ac7aec547a68d9451c91173c68c"
			},
			"name": "xssvdc",
			"id": "27a008f1b83e4dfdbf1143dd336006df"
		},
		"issued_at": "2019-09-08T07:38:55.643000Z",
		"user": {
			"domain": {
				"name": "xssvdc",
				"id": "15488ac7aec547a68d9451c91173c68c"
			},
			"name": "xssvdc",
			"id": "b54310fb838b4f8ebf1e9d23bf9691d5"   //用户Id
		}
	}
}

从响应头中我们可以获得X-Subject-Token的值,即为我们所需要的token的值;

从响应体中还可以获得用户的Id,以便后续查询用户关联的所有的project

步骤2 查询用户关联的project(可选)

创建资源时,需要指定该资源所属的project,若一个租户下有多个project,第三方平台需要指明需要使用的project,此时需要查询该用户关联的project,若仅涉及单个project,则不涉及此操作。

需要说明的是,当选择某个project创建资源时,需要用该project参考步骤1去获取token。

调用示例如下:

URL: https://{ManageOne运营侧API对外域名}/rest/vdc/v3.1/users/{user_id}/projects
请求方法:GET
请求头:
Content-Type: application/json; charset=UTF-8
Accept: application/json; charset=UTF-8
Connection: keep-alive
X-Auth-Token: MIIEeAYJKoASASn04rMqff-Q8fk7kqiCDMLfVxqj7wIdgkM1yD4=

请求体:无
响应体:

{
	"total": 1,
	"projects": [
		{
			"domain_id": "15488ac7aec547a68d9451c91173c68c",
			"tenant_id": "39d881e6-e6a6-4516-8d8e-83446abc263b",
			"role_name": null,
			"tenant_name": "tt002",
			"regions": [
				{
					"region_status": "normal",
					"region_id": "dg-tky-1",
					"region_name": {
						"en_us": "东莞",
						"zh_cn": "东莞"
					}
				}
			],
			"level": "2",
			"role_id": null,
			"name": "pj002",
			"iam_project_name": "pj002",
			"description": null,
			"id": "4313bc0e240e4086995e606f6601b730",
			"enabled": true
		},
		{
			"domain_id": "15488ac7aec547a68d9451c91173c68c",
			"tenant_id": "1cfbb21d-3e45-4a0a-887f-c9e6ab215cec",
			"role_name": null,
			"tenant_name": "test001",
			"regions": [
				{
					"region_status": "normal",
					"region_id": "dg-tky-1",
					"region_name": {
						"en_us": "东莞",
						"zh_cn": "东莞"
					}
				}
			],
			"level": "2",
			"role_id": null,
			"name": "test001",
			"iam_project_name": "test001",
			"description": null,
			"id": "147c59f42277405e854e7a3123dea3a9",
			"enabled": true
		}
	]
}

步骤 3 查询资源池信息

创建、变更、删除资源时,需要指定资源所在的region、资源池、可用分区,我们可以通过查询project详情获取该project关联的region、资源池、可用分区信息,接口调用示例如下:

URL: https://{ManageOne运营侧API对外域名}/rest/vdc/v3.1/projects/{project_id}
请求方法:GET
请求头:
Content-Type: application/json; charset=UTF-8
Accept: application/json; charset=UTF-8
Connection: keep-alive
X-Auth-Token: MIIEeAYJKoASASn04rMqff-Q8fk7kqiCDMLfVxqj7wIdgkM1yD4=
请求体:无
响应体:
{
	"project": {
		"domain_id": "15488ac7aec547a68d9451c91173c68c",
		"tenant_id": "d58cc7b4-59a8-49ff-8f0c-0c7dff90b5e9",
		"tenant_name": "xssvdc",
		"regions": [
			{
				"region_status": "normal",
				"cloud_infras": [
					{
						"cloud_infra_status": null,
						"cloud_infra_name": null,
						"cloud_infra_type": null,
						"azs": [],
						"cloud_infra_id": null
					},
					{
						"cloud_infra_status": "normal",
						"cloud_infra_name": "OpenStack_dg-tky-1",
						"cloud_infra_type": "FUSION_CLOUD",
						"azs": [
							{
								"az_status": "normal",
								"az_name": "华为",
								"az_id": "az0.dc0"
							}
						],
						"cloud_infra_id": "FUSION_CLOUD_dg-tky-1"
					},
					{
						"cloud_infra_status": "normal",
						"cloud_infra_name": "VMware_dg-tky-1",
						"cloud_infra_type": "VMWARE",
						"azs": [],
						"cloud_infra_id": "VMWARE_dg-tky-1"
					}
				],
				"region_id": "dg-tky-1",
				"region_name": {
					"en_us": "东莞",
					"zh_cn": "东莞"
				}
			}
		],
		"is_shared": false,
		"name": "xssvdc",
		"tenant_type": "vdc",
		"region_name": null,
		"id": "27a008f1b83e4dfdbf1143dd336006df",
		"enabled": true
	}
}

此处我们可以获得region_id、cloud_infra_id、az_id,需要注意的是,创建资源时指定的AZ必须与cloud_infra_id、region_id匹配,不能交叉混用!!!

步骤4 查询产品列表

不同的云服务在ManageOne中体现为对外提供不同的产品,查询时需要指定产品类型(service_type),常用类型有:

service_type

云服务名称

ecs

弹性云服务器

evs

云硬盘

ims

镜像服务

vpc

虚拟私有云

vfw

虚拟防火墙

elb

弹性负载均衡

as

弹性伸缩

bms

裸金属服务

调用示例如下:

URL: https://{ManageOne运营侧API对外域名}/rest/product/v3.0/apply/products?service_type={ecs,evs,ims,vpc,vfw,elb,as,bms}&region_id={region_id}&start=1&limit=4
请求方法:GET
请求头:
Content-Type: application/json; charset=UTF-8
Accept: application/json; charset=UTF-8
Connection: keep-alive
X-Auth-Token: MIIEeAYJKoASASn04rMqff-Q8fk7kqiCDMLfVxqj7wIdgkM1yD4=
请求体:无

响应体:
{
	"total": 2,
	"products": [
		{
			"product_id": "825d46284622441884854db2013c66a0",
			"service_type": "ecs",
			"create_vdc_id": "all",
			"create_user_id": "406f2fd692ac4feab83ff56eace1af2a",
			"icon_id": "defaulticonecs",
			"catalog_id": "1",
			"region_id": "dg-tky-1",
			"params": "{\"region_id\":\"dg-tky-1\",\"isHana\":false,\"availableZone\":{\"availableZoneId\":\"az0.dc0\",\"isLocked\":true,\"azName\":\"华为\",\"azType\":\"KVM\"},\"is_support_disaster\":{\"isDisaster\":\"userDefine\",\"isLocked\":true},\"hostSpecType\":{\"hostSpecServiceType\":\"normal\",\"isLocked\":true},\"flavor\":{\"flavorRef\":\"c89d4da4-fdad-4de7-81ba-42ef89ec4ca8\",\"isLocked\":true},\"root_volume\":{\"volumetype\":\"IPSAN\",\"isLocked\":true,\"volumeName\":\"SATA\"},\"image\":{\"imageRef\":\"833c9fe8-d27d-4238-a7e3-e43a683159a8\",\"imageType\":\"gold\",\"isLocked\":true},\"cloudArea\":{\"isLocked\":true}}",
			"name": "{\"en_US\":\"ecs_2b93\",\"zh_CN\":\"ecs_2b93\"}",
			"description": "{\"zh_CN\":\"\"}",
			"create_time": 1567400783000,
			"publish_status": "publish",
			"deletable_status": "normal",
			"is_default": false,
			"resource_pool_id": "",
			"project_id": "",
			"az_id": "az0.dc0",
			"secret_params": null,
			"product_type": null
		},
		{
			"product_id": "71347fb04fed43b5bb1eea9527f845ae",
			"service_type": "ecs",
			"create_vdc_id": "all",
			"create_user_id": "138539a4c8604121be05c1f932e947fe",
			"icon_id": "defaulticonecs",
			"catalog_id": "1",
			"region_id": "dg-tky-1",
			"params": "{}",
			"name": "{\"en_US\":\"ECS\",\"zh_CN\":\"弹性云服务器\"}",
			"description": "{\"zh_CN\": \"由CPU、内存、磁盘等组成的随时可获取、弹性可扩展、按需使用的虚拟的计算服务器。\",\"en_US\": \"Provides scalable virtual compute servers consisting of CPUs, memory, and disks resources.\"}",
			"create_time": 1560197802000,
			"publish_status": "publish",
			"deletable_status": "normal",
			"is_default": true,
			"resource_pool_id": "",
			"project_id": "",
			"az_id": "",
			"secret_params": null,
			"product_type": null
		}
	]
}

响应体中,is_default字段值为true的产品表示,该产品为系统预置产品,没有关联人和审批流程,申请该产品后,不需要经过任何审批流程,直接对订单进行实施

步骤 5 查询可用镜像

查询可用的镜像列,请求示例如下:

URL: https://{ims对外访问域名}/v2/cloudimages
请求方法:GET
请求头:
Content-Type: application/json;charset=UTF-8
Accept: application/json;charset=UTF-8
Connection: keep-alive
X-Auth-Token: MIIEeAYJKoASASn04rMqff-Q8fk7kqiCDMLfVxqj7wIdgkM1yD4=
请求体:无
响应体:
{
	"images": [
		{
			"schema": "/v2/schemas/image",
			"__support_live_resize": "False",
			"__system_encrypted": "",
			"min_disk": 300,
			"created_at": "2019-09-05T06:24:52Z",
			"__image_source_type": "glance",
			"container_format": "bare",
			"__system_support_market": false,
			"file": "/v2/images/fd01fd4c-a2a4-4a81-bda5-81351b3db99c/file",
			"updated_at": "2019-09-05T06:25:44Z",
			"protected": true,
			"checksum": "7a455643c33d8433b51325045a3d9994",
			"id": "fd01fd4c-a2a4-4a81-bda5-81351b3db99c",
			"__support_static_ip": "False",
			"__isregistered": "true",
			"min_ram": 8192,
			"file_format": "qcow2",
			"owner": "a21752d4272b4ffa82725c1f0c61173f",
			"hw_firmware_type": "bios",
			"__os_type": "Linux",
			"__imagetype": "gold",
			"visibility": "public",
			"file_name": "**.qcow2",
			"cloudinit": "False",
			"__quick_start": "False",
			"virtual_env_type": "FusionCompute",
			"__support_kvm": "true",
			"hw_disk_bus": "virtio",
			"tags": [],
			"__platform": "EulerOS",
			"is_auto_config": "false",
			"size": 587923456,
			"__os_bit": "64",
			"__os_version": "EulerOS 2.2 64bit",
			"name": "EulerOS2.2.4.1",
			"self": "/v2/images/fd01fd4c-a2a4-4a81-bda5-81351b3db99c",
			"disk_format": "qcow2",
			"__admin_encrypted": "",
			"describe": "",
			"virtual_size": null,
			"status": "active"
		},
		{
			"schema": "/v2/schemas/image",
			"__support_live_resize": "False",
			"__system_encrypted": "",
			"min_disk": 20,
			"created_at": "2019-06-11T01:48:33Z",
			"__image_source_type": "glance",
			"container_format": "bare",
			"__system_support_market": false,
			"file": "/v2/images/833c9fe8-d27d-4238-a7e3-e43a683159a8/file",
			"updated_at": "2019-06-11T01:49:55Z",
			"protected": true,
			"checksum": "eff39ae88e39b2e654d60b9f4c7faf47",
			"id": "833c9fe8-d27d-4238-a7e3-e43a683159a8",
			"__support_static_ip": "False",
			"__isregistered": "true",
			"min_ram": 1024,
			"file_format": "qcow2",
			"owner": "a21752d4272b4ffa82725c1f0c61173f",
			"hw_firmware_type": "bios",
			"__os_type": "Linux",
			"__imagetype": "gold",
			"visibility": "public",
			"file_name": "**.qcow2",
			"cloudinit": "False",
			"__quick_start": "False",
			"virtual_env_type": "FusionCompute",
			"__support_kvm": "true",
			"hw_disk_bus": "virtio",
			"tags": [],
			"__platform": "EulerOS",
			"is_auto_config": "false",
			"size": 928961536,
			"__os_bit": "64",
			"__os_version": "EulerOS 2.5 64bit",
			"name": "EulerOS",
			"self": "/v2/images/833c9fe8-d27d-4238-a7e3-e43a683159a8",
			"disk_format": "qcow2",
			"__admin_encrypted": "",
			"describe": "",
			"virtual_size": null,
			"status": "active"
		}
	]
}

这一步主要获得镜像Id,以及使用该镜像创建虚拟机时,所要求的最小磁盘(min_disk),和最小内存(min_ram),后续创建虚拟机时所选择的规格需要大于等于镜像的最低要求,否则会创建失败

步骤6 查询可用规格

查询可用规格列表,示例如下:

URL: https://{ecs对外访问域名}/v1/{project_id}/cloudservers/flavors(project_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=
请求体:无
响应体:
{
	"flavors": [
		{
			"id": "3e1ce3aa-ab7b-4e85-aba0-e6b13f0cf75c",
			"name": "2U2G",
			"vcpus": "2",
			"ram": 2048,
			"disk": "0",
			"swap": "",
			"links": [
				{
					"rel": "self",
					"href": "https://compute-ext.az0.dc0.domainname.com/v1.0/27a008f1b83e4dfdbf1143dd336006df/flavors/3e1ce3aa-ab7b-4e85-aba0-e6b13f0cf75c",
					"type": null
				},
				{
					"rel": "bookmark",
					"href": "https://compute-ext.az0.dc0.domainname.com/27a008f1b83e4dfdbf1143dd336006df/flavors/3e1ce3aa-ab7b-4e85-aba0-e6b13f0cf75c",
					"type": null
				}
			],
			"OS-FLV-EXT-DATA:ephemeral": 0,
			"rxtx_factor": null,
			"OS-FLV-DISABLED:disabled": false,
			"rxtx_quota": null,
			"rxtx_cap": null,
			"os-flavor-access:is_public": null,
			"os_extra_specs": {
				"hw:cpu_policy": "shared",
				"ecs:virtualization_env_types": "CloudCompute",
				"ecs:performancetype": "normal",
				"resource_type": "IOoptimized",
				"ims:blankVolume": "true",
				"huawei:extBootType": "Volume"
			}
		},
		{
			"id": "ab00a9f3-da3f-4ec2-aa9f-c1624eecfbae",
			"name": "4U4G",
			"vcpus": "4",
			"ram": 4096,
			"disk": "0",
			"swap": "",
			"links": [
				{
					"rel": "self",
					"href": "https://compute-ext.az0.dc0.domainname.com/v1.0/27a008f1b83e4dfdbf1143dd336006df/flavors/ab00a9f3-da3f-4ec2-aa9f-c1624eecfbae",
					"type": null
				},
				{
					"rel": "bookmark",
					"href": "https://compute-ext.az0.dc0.domainname.com/27a008f1b83e4dfdbf1143dd336006df/flavors/ab00a9f3-da3f-4ec2-aa9f-c1624eecfbae",
					"type": null
				}
			],
			"OS-FLV-EXT-DATA:ephemeral": 0,
			"rxtx_factor": null,
			"OS-FLV-DISABLED:disabled": false,
			"rxtx_quota": null,
			"rxtx_cap": null,
			"os-flavor-access:is_public": null,
			"os_extra_specs": {
				"hw:cpu_policy": "shared",
				"ecs:virtualization_env_types": "CloudCompute",
				"ecs:performancetype": "normal",
				"resource_type": "IOoptimized",
				"ims:blankVolume": "true",
				"huawei:extBootType": "Volume"
			}
		},
		{
			"id": "c89d4da4-fdad-4de7-81ba-42ef89ec4ca8",
			"name": "1U1G",
			"vcpus": "1",
			"ram": 1024,
			"disk": "0",
			"swap": "",
			"links": [
				{
					"rel": "self",
					"href": "https://compute-ext.az0.dc0.domainname.com/v1.0/27a008f1b83e4dfdbf1143dd336006df/flavors/c89d4da4-fdad-4de7-81ba-42ef89ec4ca8",
					"type": null
				},
				{
					"rel": "bookmark",
					"href": "https://compute-ext.az0.dc0.domainname.com/27a008f1b83e4dfdbf1143dd336006df/flavors/c89d4da4-fdad-4de7-81ba-42ef89ec4ca8",
					"type": null
				}
			],
			"OS-FLV-EXT-DATA:ephemeral": 0,
			"rxtx_factor": null,
			"OS-FLV-DISABLED:disabled": false,
			"rxtx_quota": null,
			"rxtx_cap": null,
			"os-flavor-access:is_public": null,
			"os_extra_specs": {
				"hw:cpu_policy": "shared",
				"ecs:virtualization_env_types": "CloudCompute",
				"ecs:performancetype": "normal",
				"resource_type": "IOoptimized",
				"ims:blankVolume": "true",
				"huawei:extBootType": "Volume"
			}
		}
	]
}

此处可获得每个规格规定的vCPU、ram和磁盘大小;需要说明的是:disk的值为0表示不限制,此时虚拟机的系统盘大小以镜像中规定的min_disk的值为准,也可指定比镜像中规定的min_disk大的值

步骤7 查询磁盘类型


URL: https://{evs对外访问域名}/v2/{project_id}/types(project_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=
请求体:无
响应体:
{
	"volume_types": [
		{
			"name": "omVolumeType1",
			"qos_specs_id": null,
			"extra_specs": {
				"volume_backend_name": "murano",
				"HW:availability_zone": "manage-az"
			},
			"is_public": true,
			"id": "e7c4de8a-7af8-42ae-ad8d-6fe72c426563",
			"description": null
		},
		{
			"name": "omVolumeType0",
			"qos_specs_id": null,
			"extra_specs": {
				"volume_backend_name": "murano",
				"HW:availability_zone": "manage-az"
			},
			"is_public": true,
			"id": "da8f6774-a7c7-4dfb-80cb-ab3620bea495",
			"description": null
		},
		{
			"name": "IPSAN",
			"qos_specs_id": null,
			"extra_specs": {
				"volume_backend_name": "Business_Pool",
				"drivers:LUNType": "Thick",
				"hw:localdev": "2102350FDF10GC000024",
				"HW:availability_zone": "az0.dc0"
			},
			"is_public": true,
			"id": "854aaa0e-8927-4991-ad56-cbe26c90ce4a",
			"description": "IPSAN"
		},
		{
			"name": "manager.fsa.csg",
			"qos_specs_id": null,
			"extra_specs": {
				"volume_backend_name": "murano",
				"HW:availability_zone": "manage-az"
			},
			"is_public": true,
			"id": "d2072abc-b64a-4f38-8ee7-a03a1a76aad7",
			"description": "manager.fsa.csg"
		}
	]
}

此处我们查询出很多个磁盘类型,需要过滤处理,在步骤3中我们查询到了可用的可用分区(AZ),这里我们需要根据选择的AZ过滤得到指定AZ的可用磁盘类型,如,我们选用az0.dc0创建VM,则此处az0.dc0可用的磁盘分区为IPSAN(即HW:availability_zone的值为az0.dc0的这一磁盘类型)

步骤 8 查询VPC

URL: https://{vpc对外访问域名}/v2.0/routers
请求方法:GET
请求头:
Content-Type: application/json; charset=UTF-8
Accept: application/json; charset=UTF-8
Connection: keep-alive
X-Auth-Token: MIIEeAYJKoASASn04rMqff-Q8fk7kqiCDMLfVxqj7wIdgkM1yD4=
请求体:无
响应体:
{
	"routers": [
		{
			"id": "7a172056-73be-4247-9f78-aaa5bed573d0",
			"name": "vpc-5e10",
			"status": "ACTIVE",
			"description": "{\"product_id\":\"04e12eba75e243368f5cb6a0f52db4af\",\"tenancy\":\"0\",\"region_id\":\"dg-tky-1\",\"order_id\":\"20190611015342195818052\",\"status\":\"normal\"}",
			"tenant_id": "27a008f1b83e4dfdbf1143dd336006df",
			"admin_state_up": true,
			"routes": [],
			"created_at": "2019-06-11T01:53:44",
			"updated_at": "2019-06-11T01:53:44",
			"project_id": "27a008f1b83e4dfdbf1143dd336006df"
		}
	]
}

此处的id,即为VPC Id

未完待续



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

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

评论 (0)


0/1000
评论

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

评论

您还没有写博客的权限!

温馨提示

您确认删除评论吗?

确定
取消
温馨提示

您确认删除评论吗?

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

确定
取消
温馨提示

您确认删除博客吗?

确定
取消

确认删除

您确认删除博客吗?

确认删除

您确认删除评论吗?

温馨提示

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

确定
取消