← Back to team overview

yahoo-eng-team team mailing list archive

[Bug 1383345] Re: PCI-Passthrough : TypeError: pop() takes at most 1 argument (2 given

 

** Also affects: nova/juno
   Importance: Undecided
       Status: New

-- 
You received this bug notification because you are a member of Yahoo!
Engineering Team, which is subscribed to OpenStack Compute (nova).
https://bugs.launchpad.net/bugs/1383345

Title:
  PCI-Passthrough : TypeError: pop() takes at most 1 argument (2 given

Status in OpenStack Compute (nova):
  Fix Released
Status in OpenStack Compute (nova) juno series:
  New

Bug description:
  Setting the below causes nova to fail.

  # White list of PCI devices available to VMs. For example:
  # pci_passthrough_whitelist =  [{"vendor_id": "8086",
  # "product_id": "0443"}] (multi valued)
  #pci_passthrough_whitelist=
  pci_passthrough_whitelist=[{"vendor_id":"8086","product_id":"10fb"}]

  Fails with :
  CRITICAL nova [-] TypeError: pop() takes at most 1 argument (2 given) 
  2014-10-17 15:28:59.968 7153 CRITICAL nova [-] TypeError: pop() takes at most 1 argument (2 given)
  2014-10-17 15:28:59.968 7153 TRACE nova Traceback (most recent call last):
  2014-10-17 15:28:59.968 7153 TRACE nova   File "/usr/bin/nova-compute", line 10, in <module>
  2014-10-17 15:28:59.968 7153 TRACE nova     sys.exit(main())
  2014-10-17 15:28:59.968 7153 TRACE nova   File "/usr/lib/python2.7/site-packages/nova/cmd/compute.py", line 72, in main
  2014-10-17 15:28:59.968 7153 TRACE nova     db_allowed=CONF.conductor.use_local)
  2014-10-17 15:28:59.968 7153 TRACE nova   File "/usr/lib/python2.7/site-packages/nova/service.py", line 275, in create
  2014-10-17 15:28:59.968 7153 TRACE nova     db_allowed=db_allowed)
  2014-10-17 15:28:59.968 7153 TRACE nova   File "/usr/lib/python2.7/site-packages/nova/service.py", line 148, in __init__
  2014-10-17 15:28:59.968 7153 TRACE nova     self.manager = manager_class(host=self.host, *args, **kwargs)
  2014-10-17 15:28:59.968 7153 TRACE nova   File "/usr/lib/python2.7/site-packages/nova/compute/manager.py", line 631, in __init__
  2014-10-17 15:28:59.968 7153 TRACE nova     self.driver = driver.load_compute_driver(self.virtapi, compute_driver)
  2014-10-17 15:28:59.968 7153 TRACE nova   File "/usr/lib/python2.7/site-packages/nova/virt/driver.py", line 1402, in load_compute_driver
  2014-10-17 15:28:59.968 7153 TRACE nova     virtapi)
  2014-10-17 15:28:59.968 7153 TRACE nova   File "/usr/lib/python2.7/site-packages/nova/openstack/common/importutils.py", line 50, in import_object_ns
  2014-10-17 15:28:59.968 7153 TRACE nova     return import_class(import_value)(*args, **kwargs)
  2014-10-17 15:28:59.968 7153 TRACE nova   File "/usr/lib/python2.7/site-packages/nova/virt/libvirt/driver.py", line 405, in __init__
  2014-10-17 15:28:59.968 7153 TRACE nova     self.dev_filter = pci_whitelist.get_pci_devices_filter()
  2014-10-17 15:28:59.968 7153 TRACE nova   File "/usr/lib/python2.7/site-packages/nova/pci/pci_whitelist.py", line 88, in get_pci_devices_filter
  2014-10-17 15:28:59.968 7153 TRACE nova     return PciHostDevicesWhiteList(CONF.pci_passthrough_whitelist)
  2014-10-17 15:28:59.968 7153 TRACE nova   File "/usr/lib/python2.7/site-packages/nova/pci/pci_whitelist.py", line 68, in __init__
  2014-10-17 15:28:59.968 7153 TRACE nova     self.specs = self._parse_white_list_from_config(whitelist_spec)
  2014-10-17 15:28:59.968 7153 TRACE nova   File "/usr/lib/python2.7/site-packages/nova/pci/pci_whitelist.py", line 49, in _parse_white_list_from_config
  2014-10-17 15:28:59.968 7153 TRACE nova     spec = pci_devspec.PciDeviceSpec(jsonspec)
  2014-10-17 15:28:59.968 7153 TRACE nova   File "/usr/lib/python2.7/site-packages/nova/pci/pci_devspec.py", line 132, in __init__
  2014-10-17 15:28:59.968 7153 TRACE nova     self._init_dev_details()
  2014-10-17 15:28:59.968 7153 TRACE nova   File "/usr/lib/python2.7/site-packages/nova/pci/pci_devspec.py", line 137, in _init_dev_details
  2014-10-17 15:28:59.968 7153 TRACE nova     self.vendor_id = details.pop("vendor_id", ANY)

  Changing the config to:
  pci_passthrough_whitelist={"vendor_id":"8086","product_id":"10fb"}

  Fixes the above.

  In Icehouse, PCI Passthrough worked with passing a list, in Juno it is
  broken.

To manage notifications about this bug go to:
https://bugs.launchpad.net/nova/+bug/1383345/+subscriptions


References