建议使用以下浏览器,以获得最佳体验。 IE 9.0+以上版本 Chrome 31+ 谷歌浏览器 Firefox 30+ 火狐浏览器
请选择 进入手机版 | 继续访问电脑版
设置昵称

在此一键设置昵称,即可参与社区互动!

确定
我再想想
选择版块
版块 热门产品云计算服务 华为云ECS服务API使用指南(1) - 获取虚拟机列表

yd_5540856...

发帖: 9|粉丝: 0

级别 : 新手上路

Rank: 1

+ 关注 发消息

发表于2017-9-2 01:07:00 88582 楼主 阅读模式| 显示全部楼层
[技术分享] 华为云ECS服务API使用指南(1) - 获取虚拟机列表

本帖最后由 yd_55408569 于 2017-9-2 01:17 编辑

背景

华为云最大的特点之一是完全基于OpenStack建设,所以也能完美的支持所有OpenStack的API以及相关生态,包括各种OpenStack CLI,开发语言(Python, Go, Java...)绑定SDK等。目前华为云已经在以下region开放了API服务:

  • cn-north-1
  • cn-south-1
  • cn-**-2

华为云官方API文档比较模糊,这一系列文章用来介绍如何在华为云上使用OpenStack API/CLI/SDK.

Region & Endpoints

要使用OpenStack API或者是任何CLI, 首先必须知道Region列表和Endpoints列表,比如Keystone(IAM), Nova(ECS), Cinder(EVS)等,详细的列表,可以参考这里

比如租户申请的虚拟机在华北区,那么:


IAM认证

采用Keystone V3 scoped auth, 具体请求参数和返回结果请参考OpenStack官方手册,这篇文章中,我们需要返回结果中的TOKEN和PROJECT_ID,来作为下一步获取虚拟机列表的参数。

  1. {
  2.     "auth": {
  3.         "identity": {
  4.             "methods": [
  5.                 "password"
  6.             ],
  7.             "password": {
  8.                 "user": {
  9.                     "id": "ee4dfb6e5540447cb3741905149d9b6e",
  10.                     "password": "devstacker"
  11.                 }
  12.             }
  13.         },
  14.         "scope": {
  15.             "project": {
  16.                 "id": "a6944d763bf64ee6a275f1263fae0352"
  17.             }
  18.         }
  19.     }
  20. }
复制代码

虚拟机列表

采用Nova V2.1 API, 具体请求参数可以参考官方API手册

代码实现

  1. #!/bin/bash

  2. # 华为云账号,不是email
  3. HEC_USER_NAME=´YOUR_HEC_USERNAME´
  4. # 华为云密码
  5. HEC_USER_PASSWD=´YOUR_HEC_PASSWORD´

  6. # Region&Endpoints,
  7. # 具体定义请参考:http://developer.hwclouds.com/endpoint.html
  8. HEC_REGION=´cn-north-1´
  9. HEC_IAM_ENDPOINT=´https://iam.cn-north-1.myhwclouds.com´
  10. HEC_ECS_ENDPOINT=´https://ecs.cn-north-1.myhwclouds.com´

  11. AUTH_PARAMS=´{
  12.   "auth": {
  13.     "identity": {
  14.       "methods": [
  15.         "password"
  16.       ],
  17.       "password": {
  18.         "user": {
  19.           "name": ´"\"$HEC_USER_NAME\""´,
  20.           "password": ´"\"$HEC_USER_PASSWD\""´,
  21.           "domain": {
  22.             "name": ´"\"$HEC_USER_NAME\""´
  23.           }
  24.         }
  25.       }
  26.     },
  27.    "scope": {
  28.       "project": {
  29.         "name": ´"\"$HEC_REGION\""´
  30.       }
  31.     }
  32.   }


  33. curl -s -i -X POST ${HEC_IAM_ENDPOINT}/v3/auth/tokens -H ´content-type: application/json´ -d "$AUTH_PARAMS" > /tmp/hec_auth_res && {
  34.     TOKEN=`cat /tmp/hec_auth_res | grep "X-Subject-Token"| awk ´{print$2}´`
  35.     echo "HEC Token is: $TOKEN"

  36.     PROJECT_ID=`tail -n 1 /tmp/hec_auth_res|python -c ´import json,sys;print json.load(sys.stdin)["token"]["project"]["id"]´`
  37.     echo "HEC Project ID is: $PROJECT_ID"

  38.     curl -i -X GET ${HEC_ECS_ENDPOINT}/v2/${PROJECT_ID}/servers -H "X-Auth-Token:${TOKEN}"
  39. }
复制代码


更多相关华为云API参考代码,请访问 https://github.com/luohao-brian/openstack-api-examples
回复 举报
分享

分享文章到朋友圈

分享文章到微博

建赟

发帖: 40|粉丝: 3

级别 : 版主

Rank: 7Rank: 7Rank: 7

+ 关注 发消息

发表于2018-4-13 19:53:16 沙发 显示全部楼层
学习一下
点赞 回复 举报

蓝书签

发帖: 18|粉丝: 7

级别 : 版主

Rank: 7Rank: 7Rank: 7

+ 关注 发消息

发表于2018-4-13 19:56:13 板凳 显示全部楼层
Mark,谢谢分享
点赞 回复 举报

游客

您需要登录后才可以回帖 登录 | 立即注册