【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接口,连接更多开发者实现创新、拓宽创新边界。
【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)