From b63e887ba2ffde68ffc035d222f9da2b2b9d4c39 Mon Sep 17 00:00:00 2001 From: SidneyAn Date: Tue, 26 Nov 2019 15:14:46 +0800 Subject: [PATCH] Add return values for implement of "pci_device_create" In the describe of abstract method "pci_device_create", it expects a PciDevice object as return value. But nothing is returned in current implement by the end. In this commit a PciDevice object will be returned. this commit also include unit test case: test_create_devices_on_a_server Closes-bug: 1853921 Change-Id: Ibf58328facac91d82b40f8f24be84e8eeda9a0c9 Signed-off-by: SidneyAn (cherry picked from commit 67b40789ff31e18736dac302a308900e1c14c82c) --- .../sysinv/sysinv/sysinv/db/sqlalchemy/api.py | 8 +++-- .../sysinv/sysinv/tests/db/test_sysinv.py | 9 +++++ sysinv/sysinv/sysinv/sysinv/tests/db/utils.py | 33 +++++++++++++++++++ 3 files changed, 48 insertions(+), 2 deletions(-) diff --git a/sysinv/sysinv/sysinv/sysinv/db/sqlalchemy/api.py b/sysinv/sysinv/sysinv/sysinv/db/sqlalchemy/api.py index 83d8f7dc1a..8224ec7035 100644 --- a/sysinv/sysinv/sysinv/sysinv/db/sqlalchemy/api.py +++ b/sysinv/sysinv/sysinv/sysinv/db/sqlalchemy/api.py @@ -1834,6 +1834,7 @@ class Connection(api.Connection): values['host_id'])) raise exception.PCIAddrAlreadyExists(pciaddr=values['pciaddr'], host=values['host_id']) + return self._pci_device_get(values['pciaddr'], values['host_id']) @objects.objectify(objects.pci_device) def pci_device_get_all(self, hostid=None): @@ -1842,8 +1843,7 @@ class Connection(api.Connection): query = query.filter_by(host_id=hostid) return query.all() - @objects.objectify(objects.pci_device) - def pci_device_get(self, deviceid, hostid=None): + def _pci_device_get(self, deviceid, hostid=None): query = model_query(models.PciDevice) if hostid: query = query.filter_by(host_id=hostid) @@ -1855,6 +1855,10 @@ class Connection(api.Connection): return result + @objects.objectify(objects.pci_device) + def pci_device_get(self, deviceid, hostid=None): + return self._pci_device_get(deviceid, hostid) + @objects.objectify(objects.pci_device) def pci_device_get_list(self, limit=None, marker=None, sort_key=None, sort_dir=None): diff --git a/sysinv/sysinv/sysinv/sysinv/tests/db/test_sysinv.py b/sysinv/sysinv/sysinv/sysinv/tests/db/test_sysinv.py index 73e5ad8f10..48d4dd3cec 100644 --- a/sysinv/sysinv/sysinv/sysinv/tests/db/test_sysinv.py +++ b/sysinv/sysinv/sysinv/sysinv/tests/db/test_sysinv.py @@ -136,6 +136,15 @@ class DbNodeTestCase(base.DbTestCase): utils.get_test_port(name='eth0', pciaddr="00:03.0")) self.assertEqual(n['id'], p['host_id']) + def test_create_devices_on_a_server(self): + n = self._create_test_ihost() + + forihostid = n['id'] + + d = self.dbapi.pci_device_create(forihostid, + utils.get_test_pci_devices()) + self.assertEqual(n['id'], d['host_id']) + def test_create_storageVolume_on_a_server(self): n = self._create_test_ihost() diff --git a/sysinv/sysinv/sysinv/sysinv/tests/db/utils.py b/sysinv/sysinv/sysinv/sysinv/tests/db/utils.py index 276040924d..65ceab16e3 100644 --- a/sysinv/sysinv/sysinv/sysinv/tests/db/utils.py +++ b/sysinv/sysinv/sysinv/sysinv/tests/db/utils.py @@ -1172,3 +1172,36 @@ def create_test_app(**kw): del app_data['id'] dbapi = db_api.get_instance() return dbapi.kube_app_create(app_data) + + +def get_test_pci_devices(**kw): + pci_devices = { + 'id': kw.get('id', 2345), + 'host_id': kw.get('host_id', 2), + 'name': kw.get('name', 'pci_0000_00_02_0 '), + 'pciaddr': kw.get('pciaddr', '0000:00:02.0'), + 'pclass_id': kw.get('pclass_id', '030000'), + 'pvendor_id': kw.get('pvendor_id', '8086'), + 'pdevice_id': kw.get('pdevice_id', '3ea5'), + 'pclass': kw.get('pclass', 'VGA compatible controller'), + 'pvendor': kw.get('pvendor', 'Intel Corporation'), + 'pdevice': kw.get('pdevice', 'Iris Plus Graphics 655'), + 'numa_node': kw.get('numa_node', -1), + 'enabled': kw.get('enabled', True), + 'driver': kw.get('driver', '') + } + return pci_devices + + +def create_test_pci_devices(**kw): + """Create test pci devices entry in DB and return PciDevice DB object. + Function to be used to create test pci device objects in the database. + :param kw: kwargs with overriding values for pci device attributes. + :returns: Test PciDevice DB object. + """ + pci_devices = get_test_pci_devices(**kw) + # Let DB generate ID if it isn't specified explicitly + if 'id' not in kw: + del pci_devices['id'] + dbapi = db_api.get_instance() + return dbapi.pci_device_create(pci_devices['host_id'], pci_devices)