Cleanups for pci stats in preparation for RT using ComputeNode
While converting the resource tracker to use the ComputeNode
object it became apparent that there was a trivial bug in the
way tags were assigned in PciDevicePool.from_dict() and that
the format for pci stats in the examples is wrong.
The bug was that a dict was assigned to the tags field and then
items were added to it as follows:
pool.tags = {}
pool.tags.update(pool_dict)
The setter for objects is over ridden to perform type checking
and coercion for fields. In the above case the tags field is
a dict of strings, so the coercion converts all values in
the dict to be strings (if it can). In the above snippet
the values of pool_dict are not type checked or coerced because
they are added directly to the dict. The correct way to do this
is (it just so happens that pool_dict again here):
pool.tags = pool_dict
The format of the pci stats does not include an extra_info
field as was originally planned by the author. Instead tags
that would have been in extra_info are included as additional
fields. The phys_function tag was intended to have particular
meaning but has now been dropped.
The api samples and related tests for hypervisors-pci-detail-resp
and hypervisors-pci-show-resp do include extra_info, so the
samples and tests are incorrect. This patch corrects them.
The change in the samples is not an API change, only
a correction, so there is no change to the API version. However,
the api samples are included in documentation so this patch is
marked with with a document impact.
DocImpact
Change-Id: I8730f18d660777e23637b4846e06af1c3e14238e
This commit is contained in:
@@ -20,6 +20,7 @@ from oslo_log import log as logging
|
||||
|
||||
from nova import exception
|
||||
from nova.i18n import _LE
|
||||
from nova.objects import pci_device_pool
|
||||
from nova.pci import utils
|
||||
from nova.pci import whitelist
|
||||
|
||||
@@ -254,3 +255,8 @@ class PciDeviceStats(object):
|
||||
|
||||
def __ne__(self, other):
|
||||
return not (self == other)
|
||||
|
||||
def to_device_pools_obj(self):
|
||||
"""Return the contents of the pools as a PciDevicePoolList object."""
|
||||
stats = [x for x in self]
|
||||
return pci_device_pool.from_pci_stats(stats)
|
||||
|
||||
Reference in New Issue
Block a user