将Bluemix容器IP分配的状态返回为JSON

时间:2016-03-05 19:13:38

标签: json containers ibm-cloud

我正在尝试使用containers service available from IBM Bluemix更好地自动部署容器。我目前正处于创建脚本以分配IP地址,然后点击REST端点以更新DNS条目的位置。

可以使用IBM Containers plug-incf ic ip bind等命令来管理IP地址。但是,在执行该命令之前,我想知道哪些IP地址可用。这通常使用cf ic ip list命令来完成,该命令的输出如下所示:     已分配的公共IP地址数:8

Listing the IP addresses in this space...
IP Address      Container ID   
1.1.1.1       
1.1.1.2        
2.1.1.1      
2.1.1.2         deadbeef-aaaa-4444-bbbb-012345678912   
2.1.1.3        
2.1.1.4        
1.1.1.3       
2.1.1.5   

这对人类来说是有用的输出,但是需要大量额外的重复操作才能处理脚本。有没有办法简单地让这个命令返回可能来自API的JSON输出?对于常规的CloudFoundry命令,我们可以使用cf curl并获得可用的输出,但这里似乎没有模拟。

1 个答案:

答案 0 :(得分:3)

您可以使用IBM Containers REST API

curl -X GET --header "Accept: application/json" --header "X-Auth-Token: xxxxxxxx" --header "X-Auth-Project-Id: xxxxxxxx" "https://containers-api.ng.bluemix.net/v3/containers/floating-ips?all=true"

输出示例(出于隐私目的,我在下面修改了输出):

[
    {
        "Bindings": {
            "ContainerId": null
        }, 
        "IpAddress": "111.111.1111.1111", 
        "MetaId": "607c9e7afaf54f89b4d1c926", 
        "PortId": null, 
        "Status": "DOWN"
    }, 
    {
        "Bindings": {
            "ContainerId": "abcdefg-123"
        }, 
        "IpAddress": "111.111.1111.1112", 
        "MetaId": "607c9e7afaf54f89b4d1c9262d", 
        "PortId": "8fa30c31-1128-43da-b709", 
        "Status": "ACTIVE"
    }, 
    {
        "Bindings": {
            "ContainerId": "abcdefg-123"
        }, 
        "IpAddress": "111.111.1111.1113", 
        "MetaId": "607c9e7afaf54f89b4d1c9262", 
        "PortId": "6f698778-94f6-43d0-95d1", 
        "Status": "ACTIVE"
    }, 
    {
        "Bindings": {
            "ContainerId": null
        }, 
        "IpAddress": "111.111.1111.1114", 
        "MetaId": "607c9e7afaf54f89b4d1c926", 
        "PortId": null, 
        "Status": "DOWN"
    }
]

获取X-Auth-Token的令牌和X-Auth-Project-Id的空间ID:

$ cf oauth-token
$ cf space <space-name> --guid