Merge "Objectify firmware audit data"
This commit is contained in:
commit
4c3d7fb9c8
@ -34,6 +34,31 @@ from dcmanager.common import consts
|
|||||||
LOG = logging.getLogger(__name__)
|
LOG = logging.getLogger(__name__)
|
||||||
|
|
||||||
|
|
||||||
|
class FirmwareAuditData(object):
|
||||||
|
def __init__(self, uuid, applied, pci_vendor,
|
||||||
|
pci_device, applied_labels):
|
||||||
|
self.uuid = uuid
|
||||||
|
self.applied = applied
|
||||||
|
self.pci_vendor = pci_vendor
|
||||||
|
self.pci_device = pci_device
|
||||||
|
self.applied_labels = applied_labels
|
||||||
|
|
||||||
|
def to_dict(self):
|
||||||
|
return {
|
||||||
|
'uuid': self.uuid,
|
||||||
|
'applied': self.applied,
|
||||||
|
'pci_vendor': self.pci_vendor,
|
||||||
|
'pci_device': self.pci_device,
|
||||||
|
'applied_labels': self.applied_labels,
|
||||||
|
}
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def from_dict(cls, values):
|
||||||
|
if values is None:
|
||||||
|
return None
|
||||||
|
return cls(**values)
|
||||||
|
|
||||||
|
|
||||||
class FirmwareAudit(object):
|
class FirmwareAudit(object):
|
||||||
"""Manages tasks related to firmware audits."""
|
"""Manages tasks related to firmware audits."""
|
||||||
|
|
||||||
@ -77,7 +102,11 @@ class FirmwareAudit(object):
|
|||||||
# Filter images which have been applied on RegionOne
|
# Filter images which have been applied on RegionOne
|
||||||
for image in local_device_images:
|
for image in local_device_images:
|
||||||
if image.applied:
|
if image.applied:
|
||||||
filtered_images.append(image)
|
filtered_images.append(FirmwareAuditData(image.uuid,
|
||||||
|
image.applied,
|
||||||
|
image.pci_vendor,
|
||||||
|
image.pci_device,
|
||||||
|
image.applied_labels))
|
||||||
LOG.debug("RegionOne applied_images: %s" % filtered_images)
|
LOG.debug("RegionOne applied_images: %s" % filtered_images)
|
||||||
except Exception:
|
except Exception:
|
||||||
LOG.exception('Cannot retrieve device images for RegionOne, '
|
LOG.exception('Cannot retrieve device images for RegionOne, '
|
||||||
@ -224,7 +253,10 @@ class FirmwareAudit(object):
|
|||||||
|
|
||||||
# Check that all device images applied in RegionOne
|
# Check that all device images applied in RegionOne
|
||||||
# are applied and installed on this subcloud
|
# are applied and installed on this subcloud
|
||||||
|
# The audit_data for region one is a dictionary
|
||||||
for image in audit_data:
|
for image in audit_data:
|
||||||
|
# audit_data will be a dict from passing through RPC, so objectify
|
||||||
|
image = FirmwareAuditData.from_dict(image)
|
||||||
proceed = self._check_subcloud_device_has_image(image,
|
proceed = self._check_subcloud_device_has_image(image,
|
||||||
enabled_host_device_list,
|
enabled_host_device_list,
|
||||||
subcloud_device_image_states,
|
subcloud_device_image_states,
|
||||||
|
@ -376,6 +376,13 @@ class TestFirmwareAudit(base.DCManagerTestCase):
|
|||||||
self.mock_audit_worker_api.return_value = self.fake_audit_worker_api
|
self.mock_audit_worker_api.return_value = self.fake_audit_worker_api
|
||||||
self.addCleanup(p.stop)
|
self.addCleanup(p.stop)
|
||||||
|
|
||||||
|
def _rpc_convert(self, object_list):
|
||||||
|
# Convert to dict like what would happen calling via RPC
|
||||||
|
dict_results = []
|
||||||
|
for result in object_list:
|
||||||
|
dict_results.append(result.to_dict())
|
||||||
|
return dict_results
|
||||||
|
|
||||||
def test_init(self):
|
def test_init(self):
|
||||||
fm = firmware_audit.FirmwareAudit(self.ctxt,
|
fm = firmware_audit.FirmwareAudit(self.ctxt,
|
||||||
self.fake_dcmanager_api)
|
self.fake_dcmanager_api)
|
||||||
@ -406,6 +413,9 @@ class TestFirmwareAudit(base.DCManagerTestCase):
|
|||||||
patch_audit_data, firmware_audit_data, kubernetes_audit_data = \
|
patch_audit_data, firmware_audit_data, kubernetes_audit_data = \
|
||||||
am._get_audit_data(True, True, True)
|
am._get_audit_data(True, True, True)
|
||||||
|
|
||||||
|
# Convert to dict like what would happen calling via RPC
|
||||||
|
firmware_audit_data = self._rpc_convert(firmware_audit_data)
|
||||||
|
|
||||||
for name in ['subcloud1', 'subcloud2']:
|
for name in ['subcloud1', 'subcloud2']:
|
||||||
fm.subcloud_firmware_audit(name, firmware_audit_data)
|
fm.subcloud_firmware_audit(name, firmware_audit_data)
|
||||||
expected_calls = [
|
expected_calls = [
|
||||||
@ -439,6 +449,9 @@ class TestFirmwareAudit(base.DCManagerTestCase):
|
|||||||
patch_audit_data, firmware_audit_data, kubernetes_audit_data = \
|
patch_audit_data, firmware_audit_data, kubernetes_audit_data = \
|
||||||
am._get_audit_data(True, True, True)
|
am._get_audit_data(True, True, True)
|
||||||
|
|
||||||
|
# Convert to dict like what would happen calling via RPC
|
||||||
|
firmware_audit_data = self._rpc_convert(firmware_audit_data)
|
||||||
|
|
||||||
for name in ['subcloud1', 'subcloud2']:
|
for name in ['subcloud1', 'subcloud2']:
|
||||||
fm.subcloud_firmware_audit(name, firmware_audit_data)
|
fm.subcloud_firmware_audit(name, firmware_audit_data)
|
||||||
expected_calls = [
|
expected_calls = [
|
||||||
@ -472,6 +485,9 @@ class TestFirmwareAudit(base.DCManagerTestCase):
|
|||||||
patch_audit_data, firmware_audit_data, kubernetes_audit_data = \
|
patch_audit_data, firmware_audit_data, kubernetes_audit_data = \
|
||||||
am._get_audit_data(True, True, True)
|
am._get_audit_data(True, True, True)
|
||||||
|
|
||||||
|
# Convert to dict like what would happen calling via RPC
|
||||||
|
firmware_audit_data = self._rpc_convert(firmware_audit_data)
|
||||||
|
|
||||||
for name in ['subcloud1', 'subcloud2']:
|
for name in ['subcloud1', 'subcloud2']:
|
||||||
fm.subcloud_firmware_audit(name, firmware_audit_data)
|
fm.subcloud_firmware_audit(name, firmware_audit_data)
|
||||||
expected_calls = [
|
expected_calls = [
|
||||||
@ -505,6 +521,9 @@ class TestFirmwareAudit(base.DCManagerTestCase):
|
|||||||
patch_audit_data, firmware_audit_data, kubernetes_audit_data = \
|
patch_audit_data, firmware_audit_data, kubernetes_audit_data = \
|
||||||
am._get_audit_data(True, True, True)
|
am._get_audit_data(True, True, True)
|
||||||
|
|
||||||
|
# Convert to dict like what would happen calling via RPC
|
||||||
|
firmware_audit_data = self._rpc_convert(firmware_audit_data)
|
||||||
|
|
||||||
for name in ['subcloud1', 'subcloud2']:
|
for name in ['subcloud1', 'subcloud2']:
|
||||||
fm.subcloud_firmware_audit(name, firmware_audit_data)
|
fm.subcloud_firmware_audit(name, firmware_audit_data)
|
||||||
expected_calls = [
|
expected_calls = [
|
||||||
@ -538,6 +557,9 @@ class TestFirmwareAudit(base.DCManagerTestCase):
|
|||||||
patch_audit_data, firmware_audit_data, kubernetes_audit_data = \
|
patch_audit_data, firmware_audit_data, kubernetes_audit_data = \
|
||||||
am._get_audit_data(True, True, True)
|
am._get_audit_data(True, True, True)
|
||||||
|
|
||||||
|
# Convert to dict like what would happen calling via RPC
|
||||||
|
firmware_audit_data = self._rpc_convert(firmware_audit_data)
|
||||||
|
|
||||||
for name in ['subcloud1', 'subcloud2']:
|
for name in ['subcloud1', 'subcloud2']:
|
||||||
fm.subcloud_firmware_audit(name, firmware_audit_data)
|
fm.subcloud_firmware_audit(name, firmware_audit_data)
|
||||||
expected_calls = [
|
expected_calls = [
|
||||||
@ -571,6 +593,9 @@ class TestFirmwareAudit(base.DCManagerTestCase):
|
|||||||
patch_audit_data, firmware_audit_data, kubernetes_audit_data = \
|
patch_audit_data, firmware_audit_data, kubernetes_audit_data = \
|
||||||
am._get_audit_data(True, True, True)
|
am._get_audit_data(True, True, True)
|
||||||
|
|
||||||
|
# Convert to dict like what would happen calling via RPC
|
||||||
|
firmware_audit_data = self._rpc_convert(firmware_audit_data)
|
||||||
|
|
||||||
for name in ['subcloud1', 'subcloud2']:
|
for name in ['subcloud1', 'subcloud2']:
|
||||||
fm.subcloud_firmware_audit(name, firmware_audit_data)
|
fm.subcloud_firmware_audit(name, firmware_audit_data)
|
||||||
expected_calls = [
|
expected_calls = [
|
||||||
@ -604,6 +629,9 @@ class TestFirmwareAudit(base.DCManagerTestCase):
|
|||||||
patch_audit_data, firmware_audit_data, kubernetes_audit_data = \
|
patch_audit_data, firmware_audit_data, kubernetes_audit_data = \
|
||||||
am._get_audit_data(True, True, True)
|
am._get_audit_data(True, True, True)
|
||||||
|
|
||||||
|
# Convert to dict like what would happen calling via RPC
|
||||||
|
firmware_audit_data = self._rpc_convert(firmware_audit_data)
|
||||||
|
|
||||||
for name in ['subcloud1', 'subcloud2']:
|
for name in ['subcloud1', 'subcloud2']:
|
||||||
fm.subcloud_firmware_audit(name, firmware_audit_data)
|
fm.subcloud_firmware_audit(name, firmware_audit_data)
|
||||||
expected_calls = [
|
expected_calls = [
|
||||||
@ -637,6 +665,9 @@ class TestFirmwareAudit(base.DCManagerTestCase):
|
|||||||
patch_audit_data, firmware_audit_data, kubernetes_audit_data = \
|
patch_audit_data, firmware_audit_data, kubernetes_audit_data = \
|
||||||
am._get_audit_data(True, True, True)
|
am._get_audit_data(True, True, True)
|
||||||
|
|
||||||
|
# Convert to dict like what would happen calling via RPC
|
||||||
|
firmware_audit_data = self._rpc_convert(firmware_audit_data)
|
||||||
|
|
||||||
for name in ['subcloud1', 'subcloud2']:
|
for name in ['subcloud1', 'subcloud2']:
|
||||||
fm.subcloud_firmware_audit(name, firmware_audit_data)
|
fm.subcloud_firmware_audit(name, firmware_audit_data)
|
||||||
expected_calls = [
|
expected_calls = [
|
||||||
|
Loading…
x
Reference in New Issue
Block a user