From 9b58320f6b40de3c33bee179d97dd0bf5bf61986 Mon Sep 17 00:00:00 2001 From: Maksim Malchuk Date: Mon, 22 May 2023 21:44:25 +0300 Subject: [PATCH] Show an error when *_bridge_ports is not a list Closes-Bug: #2020378 Change-Id: I000ae473bb759e19b48ecefdbf5d5dc19c833088 Signed-off-by: Maksim Malchuk --- kayobe/plugins/filter/networks.py | 6 +++++- kayobe/tests/unit/plugins/filter/test_networks.py | 6 ++++++ 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/kayobe/plugins/filter/networks.py b/kayobe/plugins/filter/networks.py index ed9d23b96..bbcd74407 100644 --- a/kayobe/plugins/filter/networks.py +++ b/kayobe/plugins/filter/networks.py @@ -290,7 +290,11 @@ def net_libvirt_network_name(context, name, inventory_hostname=None): @jinja2.pass_context def net_bridge_ports(context, name, inventory_hostname=None): - return net_attr(context, name, 'bridge_ports', inventory_hostname) + ports = net_attr(context, name, 'bridge_ports', inventory_hostname) + if ports and not isinstance(ports, list): + raise errors.AnsibleFilterError("Bridge ports for network '%s' should" + " be a list", name) + return ports net_bond_mode = _make_attr_filter('bond_mode') diff --git a/kayobe/tests/unit/plugins/filter/test_networks.py b/kayobe/tests/unit/plugins/filter/test_networks.py index 3e72b7786..d8d786d5b 100644 --- a/kayobe/tests/unit/plugins/filter/test_networks.py +++ b/kayobe/tests/unit/plugins/filter/test_networks.py @@ -17,6 +17,7 @@ import unittest import jinja2 +from ansible import errors from kayobe.plugins.filter import networks @@ -197,3 +198,8 @@ class TestNetworks(BaseNetworksTest): } ] self.assertEqual(expected, veths) + + def test_ensure_bridge_ports_is_list(self): + self._update_context({"net3_bridge_ports": "ens3"}) + self.assertRaises(errors.AnsibleFilterError, networks.net_bridge_ports, + self.context, "net3")