【API进阶之路】前浪的绝地反击与自我证明

举报
Cynthia成 发表于 2020/06/03 15:39:57 2020/06/03
【摘要】 上周被我司实习生摆了一道,这次且看前浪的绝地反击!

上周,被我司实习生摆了一道,在公司新项目上,实习生推荐的弹性云服务器取代了我的虚拟机方案(了解前情请戳:因为不会创建云服务器,我被实习生摆了一道),最终公司的新项目还是部署在了华为云弹性云服务器上。

难道作为前浪的我们就要这么被社会所抛弃了么?伸手缕了缕所剩不多的头发,心里暗暗地想:“伙计们,我要和你们一样坚强,不能被生活打败!”

事实证明,实习生虽然接受新鲜事物快,但在专业技术上还是略显稚嫩。

确定采用华为云弹性云服务器之后,项目也进入了开发环节,慢慢地我发现,小实习生对于如何查询服务器的各种状态并不是很熟练,经常听到他自己在那嘀嘀咕咕:

●云服务器上一次更新时间是怎么查来着?

●云服务器的磁盘要怎么配置来着?

●云服务器状态怎么查来着?

 ......

后浪们,姜还是老的辣呀,刚好这些问题在最近的学习中都了解过,于是我迅速写了一份文档:《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

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

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

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。