【API进阶之路】前浪的绝地反击与自我证明
上周,被我司实习生摆了一道,在公司新项目上,实习生推荐的弹性云服务器取代了我的虚拟机方案(了解前情请戳:因为不会创建云服务器,我被实习生摆了一道),最终公司的新项目还是部署在了华为云弹性云服务器上。
难道作为前浪的我们就要这么被社会所抛弃了么?伸手缕了缕所剩不多的头发,心里暗暗地想:“伙计们,我要和你们一样坚强,不能被生活打败!”
事实证明,实习生虽然接受新鲜事物快,但在专业技术上还是略显稚嫩。
确定采用华为云弹性云服务器之后,项目也进入了开发环节,慢慢地我发现,小实习生对于如何查询服务器的各种状态并不是很熟练,经常听到他自己在那嘀嘀咕咕:
●云服务器上一次更新时间是怎么查来着?
●云服务器的磁盘要怎么配置来着?
●云服务器状态怎么查来着?
......
后浪们,姜还是老的辣呀,刚好这些问题在最近的学习中都了解过,于是我迅速写了一份文档:《3步搞定弹性云服务器查询》,写完之后发到了公司研发群里,领导给了我一个大大的赞,还专门@实习生“要多向前辈学习”。
《3步搞定弹性云服务器查询》内容如下:
步骤1:指定limit查询云服务器详情列表
1、接口相关信息
URI格式: GET /v2.1/{project_id}/servers/detail
2、 请求示例
GET: https://{endpoint}/v2.1/743b4c0428d945316666666666666666/servers/detail?limit=100
limit值可根据云服务器数据调整。
3、 响应示例
{ "servers": [ ...... { "tenant_id": "743b4c0428d945316666666666666666", "metadata": { }, "addresses": { "140fd038-c4ae-4c32-ac07-34b525eb6b95": [ { "OS-EXT-IPS-MAC:mac_addr": "fa:16:3e:e9:91:50", "addr": "192.168.0.178", "OS-EXT-IPS:type": "fixed", "version": 4 } ] }, "OS-EXT-STS:task_state": null, "OS-DCF:diskConfig": "MANUAL", "OS-EXT-AZ:availability_zone": "xxx", "links": [ { "rel": "self", "href": "https://ecs.xxx/v2.1/743b4c0428d945316666666666666666/servers/f215afe8-b0c2-41cc-9191-585638166812" }, { "rel": "bookmark", "href": "https://ecs.xxx/743b4c0428d945316666666666666666/servers/f215afe8-b0c2-41cc-9191-585638166812" } ], "OS-EXT-STS:power_state": 4, "id": "f215afe8-b0c2-41cc-9191-585638166812", "os-extended-volumes:volumes_attached": [ { "id": "546cf622-b9e5-4784-b659-6881e711f283" } ], "OS-EXT-SRV-ATTR:host": "pod01.xxx", "accessIPv4": "", "image": { "links": [ { "rel": "bookmark", "href": "https://ecs.xxx/743b4c0428d945316666666666666666/images/5c13381a-4a54-4ea5-a3b5-e7f7069f19a4" } ], "id": "5c13381a-4a54-4ea5-a3b5-e7f7069f19a4" }, "OS-SRV-USG:terminated_at": null, "accessIPv6": "", "created": "2019-08-09T02:35:04Z", "hostId": "31397656d6b318d01431f60c481d8425dc58eb421d237a385ceb80ee", "OS-EXT-SRV-ATTR:hypervisor_hostname": "nova022@36", "flavor": { "links": [ { "rel": "bookmark", "href": "https://ecs.xxx/743b4c0428d945316666666666666666/flavors/s3.large.4" } ], "id": "s3.large.4" }, "key_name": null, "security_groups": [ { "name": "sg-1e22" } ], "config_drive": "", "OS-EXT-STS:vm_state": "stopped", "user_id": "a8c20feabb5245e0bae4ef27618f932b", "OS-EXT-SRV-ATTR:instance_name": "instance-004bf55f", "name": "ecs-f090", "OS-SRV-USG:launched_at": "2019-08-09T02:35:23.000000", "updated": "2019-08-13T03:12:39Z", "status": "SHUTOFF" } ], "servers_links": [ { "rel": "next", "href": "https://ecs.xxx/v2.1/743b4c0428d945316666666666666666/servers/detail?limit=100&marker=f215afe8-b0c2-41cc-9191-585638166812" } ] }
步骤2:指定limit与marker查询云服务器详情列表
1、接口相关信息
URI格式: GET /v2.1/{project_id}/servers/detail
接口与 步骤1 保持一致。
2、请求示例
GET: https://{endpoint}/v2.1/743b4c0428d945316666666666666666/servers/detail?limit=100&marker=f215afe8-b0c2-41cc-9191-585638166812
接口返回了下一页的接口URI,参考返回body体中的 servers_links 中的href字段,如果不存在该字段,表示已经不存在下一页。
3、响应示例
{ "servers": [ ..... { "tenant_id": "743b4c0428d945316666666666666666", "metadata": { }, "addresses": { "140fd038-c4ae-4c32-ac07-34b525eb6b95": [ { "OS-EXT-IPS-MAC:mac_addr": "fa:16:3e:a5:2b:f8", "addr": "192.168.0.169", "OS-EXT-IPS:type": "fixed", "version": 4 } ] }, "OS-EXT-STS:task_state": null, "OS-DCF:diskConfig": "MANUAL", "OS-EXT-AZ:availability_zone": "xxxc", "links": [ { "rel": "self", "href": "https://xxx/v2.1/743b4c0428d945316666666666666666/servers/62348919-0188-43ec-aae6-82c1e96c49eb" }, { "rel": "bookmark", "href": "https://ecs.xxx/743b4c0428d945316666666666666666/servers/62348919-0188-43ec-aae6-82c1e96c49eb" } ], "OS-EXT-STS:power_state": 4, "id": "62348919-0188-43ec-aae6-82c1e96c49eb", "os-extended-volumes:volumes_attached": [ { "id": "f0bb068a-61c1-4dc8-8455-09857773c3ff" } ], "OS-EXT-SRV-ATTR:host": "pod01.xxx", "accessIPv4": "", "image": { "links": [ { "rel": "bookmark", "href": "https://ecs.xxx/743b4c0428d945316666666666666666/images/3a64bd37-955e-40cd-ab9e-129db56bc05d" } ], "id": "3a64bd37-955e-40cd-ab9e-129db56bc05d" }, "OS-SRV-USG:terminated_at": null, "accessIPv6": "", "created": "2019-07-27T03:06:48Z", "hostId": "31397656d6b318d01431f60c481d8425dc58eb421d237a385ceb80ee", "OS-EXT-SRV-ATTR:hypervisor_hostname": "nova022@36", "flavor": { "links": [ { "rel": "bookmark", "href": "https://ecs.xxx/743b4c0428d945316666666666666666/flavors/s3.medium.4" } ], "id": "s3.medium.4" }, "key_name": null, "security_groups": [ { "name": "sg-1e22" } ], "config_drive": "", "OS-EXT-STS:vm_state": "stopped", "user_id": "f7e10ccf7abc4757b483895c3e06964a", "OS-EXT-SRV-ATTR:instance_name": "instance-004a0eea", "name": "test-dx", "OS-SRV-USG:launched_at": "2019-07-27T03:07:05.000000", "updated": "2019-08-13T03:12:38Z", "status": "SHUTOFF" } ], "servers_links": [ { "rel": "next", "href": "https://ecs.xxx/v2.1/743b4c0428d945316666666666666666/servers/detail?limit=100&marker=62348919-0188-43ec-aae6-82c1e96c49eb" } ] }
步骤3:汇总查询结果
参考1持续调用,如果查询的云服务器列表为空,或者返回的body体中不存在servers_links 字段,表明所有云服务器查询完成。
汇总所有查询到的云服务器即当前查询条件下的所有云服务器。
其实呀,我也是刚刚开始学习云服务器的相关知识,刚好在华为云的官网看到了一篇关于查询弹性云服务器的文档。技术原理都是相通的,做研发10年,积累的经验和技能是我们的优势,但想要不被后浪所取代,仍然要保持学习的步伐,而华为云官网上的很多文档,就是我们了解和学习最新技术应用方式的一个很好的渠道。
目前API Explorer平台已开放EI企业智能、计算、应用服务、网络、软件开发平台、视频等70+云服务,共上线2000+个API、6000+个错误码。在前期试运行期间,华为云API Explorer平台上的API接口也已被多家企业成功接入。
点击查看详情:《华为云一站式API解决方案平台API Explorer上线》
据悉,华为云API Explorer平台在未来几个月会实现更多功能,比如支持SDK示例代码、CLI等特性,同时也会开放更多的云服务API接口,连接更多开发者实现创新、拓宽创新边界。
- 点赞
- 收藏
- 关注作者
评论(0)