使用 Neutron Python API 过滤浮动 IP
Filter Floating IPs with Neutron Python API
我正在使用 Neutron Python API for OpenStack 尝试使用 neutron.list_floatingips() 方法过滤特定的浮动 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')
它会 return 一个包含租户下所有浮动 IP 的字典对象,而只有特定 IP 需要 returned。我尝试(以几种不同的方式)过滤结果,类似于以下内容:
>>> neutron.list_floatingips(filter_value={'floating_ip_address': '15.xxx.xx.xx'}).get('floatingips')
它仍然 return 与不包含参数时的结果相同。所以我的问题是,为了过滤这个特定值,预期的参数是什么?
我知道我可能会过滤生成的字典值;但是,我试图避免 API return 超出必要的结果。
您需要使用 list_floatingips(floating_ip_address="ip-address")
>>> 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'}]}
>>>
我正在使用 Neutron Python API for OpenStack 尝试使用 neutron.list_floatingips() 方法过滤特定的浮动 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')
它会 return 一个包含租户下所有浮动 IP 的字典对象,而只有特定 IP 需要 returned。我尝试(以几种不同的方式)过滤结果,类似于以下内容:
>>> neutron.list_floatingips(filter_value={'floating_ip_address': '15.xxx.xx.xx'}).get('floatingips')
它仍然 return 与不包含参数时的结果相同。所以我的问题是,为了过滤这个特定值,预期的参数是什么?
我知道我可能会过滤生成的字典值;但是,我试图避免 API return 超出必要的结果。
您需要使用 list_floatingips(floating_ip_address="ip-address")
>>> 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'}]}
>>>