2015-10-14 16 views
0

我正在利用OpenStack的Neutron Python API尝试使用neutron.list_floatingips()方法过滤特定的浮动IP。从本质上讲,我试图模仿这种行为:使用中子Python API过滤浮动IP

$ neutron floatingip-list --tenant-id xxx | grep 15.xxx.xx.xx 
| 4ec7639a-47ca-40a8-8cd9-7bc5272f666f | 10.0.0.15 | 15.xxx.xx.xx | 64994354-4921-48ce-b819-d34d194c631c | 

的问题是执行的时候调用的API这样:

>>> neutron.list_floatingips().get('floatingips') 

它会返回一个字典对象与所有的浮动的当只有特定的IP需要被返回时,租户下的IP。我已经尝试(在几个不同的方式)来过滤结果,类似如下:

>>> neutron.list_floatingips(filter_value={'floating_ip_address': '15.xxx.xx.xx'}).get('floatingips') 

它仍返回相同的结果时,不包括参数。所以我的问题是,为了筛选这个特定的价值,预期的理由是什么?

我知道我可能有可能通过生成的字典值进行筛选;但是,我试图避免让API返回比必要的更多结果。

回答

0

您将需要使用list_floatingips(floating_ip_address = “IP地址”)

>>> n_h.list_floatingips() 
{'floatingips': [{u'router_id': None, u'status': u'ACTIVE', u'tenant_id': u'8537ba5eb1d74d42ac22dcf840c4081a', u'floating_network_id': u'd06e2261-e3c7-4753-afaa-de3efe371f1f', u'fixed_ip_address': None, u'floating_ip_address': u'10.1.1.5', u'port_id': None, u'id': u'ca22da1f-cce0-4d73-98d2-21522313b15f'}, {u'router_id': None, u'status': u'ACTIVE', u'tenant_id': u'8537ba5eb1d74d42ac22dcf840c4081a', u'floating_network_id': u'd06e2261-e3c7-4753-afaa-de3efe371f1f', u'fixed_ip_address': None, u'floating_ip_address': u'10.1.1.3', u'port_id': None, u'id': u'6965571a-2cc8-4a81-b083-c29c690eab8d'}]} 
>>> n_h.list_floatingips(floating_ip_address='10.1.1.5') 
{'floatingips': [{u'router_id': None, u'status': u'ACTIVE', u'tenant_id': u'8537ba5eb1d74d42ac22dcf840c4081a', u'floating_network_id': u'd06e2261-e3c7-4753-afaa-de3efe371f1f', u'fixed_ip_address': None, u'floating_ip_address': u'10.1.1.5', u'port_id': None, u'id': u'ca22da1f-cce0-4d73-98d2-21522313b15f'}]} 
>>>