如何通过ip-address API获取仅依赖于openstacksdk字段的特殊端口信息,如openstack-client工具所显示的结果:
# openstack port list --fixed-ip ip-address=1.1.1.1
+-----+------+-------------+---------------------------------------+--------+
| ID | Name | MAC Address | Fixed IP Addresses | Status |
+-----+------+-------------+---------------------------------------+--------+
| f23 | | fa:*****:ad | ip_address='1.1.1.1', subnet_id='821' | ACTIVE |
+-----+------+-------------+---------------------------------------+--------+我试过这些方法,但都没有用:
port = conn.network.get_port(openstack.network.v2.port.Port(fixed_ips=[{'subnet_id'" '821', 'ip_address': '1.1.1.1'}]))openstack.exceptions.InvalidRequest: Request requires an ID but none was foundport = conn.network.ports(fixed_ips=[{'ip_address': '1.1.1.1'}])openstack.exceptions.BadRequestException: BadRequestException: 400: Client Error for url: domain:9696/v2.0/ports?fixed_ips=ip_address, Invalid input for operation: 'ip_address' is not of the form <key>=[value].port = conn.network.ports(fixed_ips=['1.1.1.1'])penstack.exceptions.BadRequestException: BadRequestException: 400: Client Error for url: domain:9696/v2.0/ports?fixed_ips=1.1.1.1, Invalid input for operation: '1.1.1.1' is not of the form <key>=[value].port = conn.network.ports(ip_address='1.1.1.1')openstack.exceptions.BadRequestException: BadRequestException: 400: Client Error for url: https://gzi-ost.2980.com:9696/v2.0/ports?ip_address=1.1.1.1, ['ip_address'] is invalid attribute for filtering请参阅以下文档:network.port-operations和openstack api列表-端口-详细信息。
我怎样才能做到这一点?提前谢谢你。
还有一件事,我以前不知道port_id,只知道固定的ip-address。
发布于 2022-05-06 13:18:01
显然,我的错,问题是我的请求参数有一个错误的格式数据。
通过import urllib解决它,在Python3中编码请求json数据。
conn.network.ports(fixed_ips=urllib.parse.urlencode({'ip_address': '1.1.1.1'}))或
conn.list_ports({'fixed_ips': urllib.parse.urlencode({'ip_address': '1.1.1.1'})})https://stackoverflow.com/questions/72045300
复制相似问题