[openstack-dev][CLI] How to set NoneType in openstack CLI's json format string?
Hi all, I'm using openstack command like this, and got error: ``` gyw@c1:~$ openstack port create --network selfservice --vnic-type remote-managed \
--binding-profile '{"pci_vendor_info": None, "pci_slot": None, "physical_network": None, "card_serial_number": "AB0123XX0042", "pf_mac_address": "08:c0:eb:8e:bd:f8", "vf_num":1, "vnic_type": "remote-managed"}' \ pf0vf0 Expected '<key>=<value>' or JSON data for option --binding-profile, but encountered JSON parsing error: Expecting value: line 1 column 21 (char 20)
So how to set "pci_vendor_info" to NoneType of python in openstack CLI's
json format string?
BTW, "NoneType of python" means the NoneType in python code, like these
comment in
https://github.com/openstack/neutron/blob/stable/yoga/neutron/common/ovn/utils.py
# With this example param_set: # # param_set = { # 'do_not_check_this_key': None, # 'pci_slot': [str], # 'physical_network': [str, type(None)] # } # # We confirm that each binding_profile key is of one of the listed types, # allowing validation of polymorphic entries. # # 'physical_network' is polymorphic because: When a VNIC_REMOTE_MANAGED or # VNIC_DIRECT with PORT_CAP_SWITCHDEV capability port is attached to a # project network backed by an overlay (tunneled) network the value will be # 'None'. For the case of ports attached to a project network backed by # VLAN the value will be of type ``str``. This comes from Nova and is # provided in the ``physical_network`` tag in the Nova PCI Passthrough # configuration. # # In the above example the type of the value behind 'do_not_check_this_key' # will not be checked, 'pci_slot' must be ``str``, 'physical_network must # be either ``str`` or ``NoneType``. ``` Thank you~ ---- Simon Jones
On Wed, 2023-02-22 at 09:44 +0800, Simon Jones wrote:
Hi all,
I'm using openstack command like this, and got error:
``` gyw@c1:~$ openstack port create --network selfservice --vnic-type remote- managed \
--binding-profile '{"pci_vendor_info": None, "pci_slot": None, "physical_network": None, "card_serial_number": "AB0123XX0042", "pf_mac_address": "08:c0:eb:8e:bd:f8", "vf_num":1, "vnic_type": "remote- managed"}' \ pf0vf0 Expected '<key>=<value>' or JSON data for option --binding-profile, but encountered JSON parsing error: Expecting value: line 1 column 21 (char 20)
So how to set "pci_vendor_info" to NoneType of python in openstack CLI's json format string?
You need a JSON string, as the error message indicates. None is Python. null is JSON.
import json binding_profile = {"pci_vendor_info": None, "pci_slot": None} json.dumps(binding_profile) '{"pci_vendor_info": null, "pci_slot": null}'
Stephen
BTW, "NoneType of python" means the NoneType in python code, like these comment in https://github.com/openstack/neutron/blob/stable/yoga/neutron/common/ovn/uti...
``` # With this example param_set: # # param_set = { # 'do_not_check_this_key': None, # 'pci_slot': [str], # 'physical_network': [str, type(None)] # } # # We confirm that each binding_profile key is of one of the listed types, # allowing validation of polymorphic entries. # # 'physical_network' is polymorphic because: When a VNIC_REMOTE_MANAGED or # VNIC_DIRECT with PORT_CAP_SWITCHDEV capability port is attached to a # project network backed by an overlay (tunneled) network the value will be # 'None'. For the case of ports attached to a project network backed by # VLAN the value will be of type ``str``. This comes from Nova and is # provided in the ``physical_network`` tag in the Nova PCI Passthrough # configuration. # # In the above example the type of the value behind 'do_not_check_this_key' # will not be checked, 'pci_slot' must be ``str``, 'physical_network must # be either ``str`` or ``NoneType``. ```
Thank you~
---- Simon Jones
participants (2)
-
Simon Jones
-
Stephen Finucane