summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ironic/db/sqlalchemy/api.py6
-rw-r--r--ironic/tests/base.py15
-rw-r--r--ironic/tests/unit/conductor/test_manager.py3
-rw-r--r--ironic/tests/unit/conductor/test_utils.py11
4 files changed, 17 insertions, 18 deletions
diff --git a/ironic/db/sqlalchemy/api.py b/ironic/db/sqlalchemy/api.py
index 93a211fc3..31ec9647e 100644
--- a/ironic/db/sqlalchemy/api.py
+++ b/ironic/db/sqlalchemy/api.py
@@ -1379,12 +1379,14 @@ class Connection(api.Connection):
def list_hardware_type_interfaces(self, hardware_types):
with _session_for_read() as session:
- query = (session.query(models.ConductorHardwareInterfaces)
+ query = (session.query(models.ConductorHardwareInterfaces,
+ models.Conductor)
+ .join(models.Conductor)
.filter(models.ConductorHardwareInterfaces.hardware_type
.in_(hardware_types)))
query = _filter_active_conductors(query)
- return query.all()
+ return [row[0] for row in query]
@oslo_db_api.retry_on_deadlock
def register_conductor_hardware_interfaces(self, conductor_id, interfaces):
diff --git a/ironic/tests/base.py b/ironic/tests/base.py
index 348f15c20..69e449d3b 100644
--- a/ironic/tests/base.py
+++ b/ironic/tests/base.py
@@ -102,6 +102,11 @@ class WarningsFixture(fixtures.Fixture):
category=UserWarning,
)
+ # NOTE(gibi): The UUIDFields emits a warning if the value is not a
+ # valid UUID. Let's escalate that to an exception in the test to
+ # prevent adding violations.
+ warnings.filterwarnings('error', message='.* is an invalid UUID.')
+
# Enable deprecation warnings to capture upcoming SQLAlchemy changes
warnings.filterwarnings(
@@ -125,16 +130,6 @@ class WarningsFixture(fixtures.Fixture):
category=sqla_exc.SAWarning,
)
- # ...but filter everything out until we get around to fixing them
- # TODO(stephenfin): Fix all of these
-
- warnings.filterwarnings(
- 'ignore',
- module='ironic',
- message='SELECT statement has a cartesian product ',
- category=sqla_exc.SAWarning,
- )
-
# FIXME(stephenfin): We can remove this once oslo.db is fixed
# https://review.opendev.org/c/openstack/oslo.db/+/856453
warnings.filterwarnings(
diff --git a/ironic/tests/unit/conductor/test_manager.py b/ironic/tests/unit/conductor/test_manager.py
index 7278486a5..5244e4c4b 100644
--- a/ironic/tests/unit/conductor/test_manager.py
+++ b/ironic/tests/unit/conductor/test_manager.py
@@ -5089,7 +5089,8 @@ class ManagerDoSyncPowerStateTestCase(db_base.DbTestCase):
self.power = self.driver.power
self.node = obj_utils.create_test_node(
self.context, driver='fake-hardware', maintenance=False,
- provision_state=states.AVAILABLE, instance_uuid=uuidutils.uuid)
+ provision_state=states.AVAILABLE,
+ instance_uuid=uuidutils.generate_uuid())
self.task = mock.Mock(spec_set=['context', 'driver', 'node',
'upgrade_lock', 'shared'])
self.task.context = self.context
diff --git a/ironic/tests/unit/conductor/test_utils.py b/ironic/tests/unit/conductor/test_utils.py
index 52fc72436..27c4bfa86 100644
--- a/ironic/tests/unit/conductor/test_utils.py
+++ b/ironic/tests/unit/conductor/test_utils.py
@@ -243,11 +243,12 @@ class NodePowerActionTestCase(db_base.DbTestCase):
self.config(host='my-host')
# Required for exception handling
mock_notif.__name__ = 'NodeSetPowerStateNotification'
- node = obj_utils.create_test_node(self.context,
- uuid=uuidutils.generate_uuid(),
- driver='fake-hardware',
- instance_uuid=uuidutils.uuid,
- power_state=states.POWER_OFF)
+ node = obj_utils.create_test_node(
+ self.context,
+ uuid=uuidutils.generate_uuid(),
+ driver='fake-hardware',
+ instance_uuid=uuidutils.generate_uuid(),
+ power_state=states.POWER_OFF)
task = task_manager.TaskManager(self.context, node.uuid)
get_power_mock.return_value = states.POWER_OFF