openStack 调用API方式create router

刚接触openStack,先用api进行各个组件的创建,从而创建一台外网可以访问的虚机;

这里记录下创建router时的一些做法,因为刚接触可能会有理解错误的地方,希望各位多多指正。

官方api docs文档http://developer.openstack.org/api-ref-networking-v2-ext.html

这里用的是openStack的Icehouse版本,采用google 的插件Advanced rest Client进行api调用。当然前提是已经部署好了一套openStack的环境。

openStack 调用API方式create router_第1张图片

                                  Advanced rest Client 调用api 操作

network默认端口是9696

1、router在创建时可以指定floating_ip,也可以不指定;
若在语法中不指定时,首先需要提前创建floating_ip, 若无可用的则将返回错误信息如下:
requeset:
{
    "router": {
        "external_gateway_info": {
            "network_id": "1d8b48f2-dc17-48b6-b143-6e21663f9c5f"    // 公网的network_id
        }
    }
}
response:(Error
{
    "NeutronError": {
        "message": "Bad router request: Specified external ip [] is not a floating ip or there's no remaining floating ip to use in external network 1d8b48f2-dc17-48b6-b143-6e21663f9c5f for tenant 1437b9a6432b48c09e89d2284640d28b",
        "type": "BadRequest",
        "detail": ""
    }
}
如果已经创建了多个floating_ip,则自动将会把router 与其中一个 floating_ip进行绑定;

2、若在创建router时,有多个floating_ip,需要指定某个ip,则可以在语法中进行指定;
首先我们创建多个floating_ip;
request:
    "router": {
        "name": "specify the fix floating_ip",
        "external_gateway_info": {
            "network_id": "1d8b48f2-dc17-48b6-b143-6e21663f9c5f",    //公网的network_id ;
            "external_fixed_ips": [
                {          
                    "ip_address": "10.161.111.30"        // 指定的floating_ip地址;
                }
            ]
        }
    }
}
response:
{
    "router": {
        "status": "ACTIVE",
        "external_gateway_info": {
            "network_id": "1d8b48f2-dc17-48b6-b143-6e21663f9c5f",
            "external_fixed_ips": [
                {
                    "subnet_id": "e23fb611-03bf-4b9f-82ae-8cc52eb2f344",
                    "ip_address": "10.161.111.30"
                }
            ]
        },
        "dedicated": false,
        "name": "specify the fix floating_ip",
        "admin_state_up": true,
        "tenant_id": "1437b9a6432b48c09e89d2284640d28b",
        "domain_id": null,
        "id": "b0ea9d03-9880-49a8-8008-3e52f3f4e536"
    }
}
返回信息表明已经创建router成功,并且绑定了floating_ip:10.161.111.30 ;




你可能感兴趣的:(openStack)