Duplicate MAC addresses in slavemachine files are silently ignored and could cause unpredictable behaviour. This patch adds a check for MAC duplicity.
Signed-off-by: Jan Tluka jtluka@redhat.com --- lnst/Controller/SlavePool.py | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-)
diff --git a/lnst/Controller/SlavePool.py b/lnst/Controller/SlavePool.py index 67ccd63..5f94b07 100644 --- a/lnst/Controller/SlavePool.py +++ b/lnst/Controller/SlavePool.py @@ -208,11 +208,20 @@ class SlavePool: if_id = iface["id"] iface_spec = self._process_iface_xml_data(m_id, iface)
- if if_id not in machine_spec["interfaces"]: - machine_spec["interfaces"][if_id] = iface_spec - else: + # validity check, MAC and id must be unique + if if_id in machine_spec["interfaces"]: msg = "Duplicate interface id '%s'." % if_id raise SlaveMachineError(msg, iface) + + if_hwaddr = iface_spec["params"]["hwaddr"] + hwaddr_dups = [ k for k, v in machine_spec["interfaces"].iteritems()\ + if v["params"]["hwaddr"] == if_hwaddr ] + if len(hwaddr_dups) > 0: + msg = "Duplicate MAC address %s for interface '%s' and '%s'."\ + % (if_hwaddr, if_id, hwaddr_dups[0]) + raise SlaveMachineError(msg, iface) + + machine_spec["interfaces"][if_id] = iface_spec else: if "libvirt_domain" not in machine_spec["params"]: msg = "Machine '%s' has no testing interfaces. " \
On Fri, Apr 07, 2017 at 12:04:16PM +0200, Jan Tluka wrote:
Duplicate MAC addresses in slavemachine files are silently ignored and could cause unpredictable behaviour. This patch adds a check for MAC duplicity.
Signed-off-by: Jan Tluka jtluka@redhat.com
lnst/Controller/SlavePool.py | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-)
diff --git a/lnst/Controller/SlavePool.py b/lnst/Controller/SlavePool.py index 67ccd63..5f94b07 100644 --- a/lnst/Controller/SlavePool.py +++ b/lnst/Controller/SlavePool.py @@ -208,11 +208,20 @@ class SlavePool: if_id = iface["id"] iface_spec = self._process_iface_xml_data(m_id, iface)
if if_id not in machine_spec["interfaces"]:
machine_spec["interfaces"][if_id] = iface_spec
else:
# validity check, MAC and id must be unique
if if_id in machine_spec["interfaces"]: msg = "Duplicate interface id '%s'." % if_id raise SlaveMachineError(msg, iface)
if_hwaddr = iface_spec["params"]["hwaddr"]
hwaddr_dups = [ k for k, v in machine_spec["interfaces"].iteritems()\
if v["params"]["hwaddr"] == if_hwaddr ]
if len(hwaddr_dups) > 0:
msg = "Duplicate MAC address %s for interface '%s' and '%s'."\
% (if_hwaddr, if_id, hwaddr_dups[0])
raise SlaveMachineError(msg, iface)
machine_spec["interfaces"][if_id] = iface_spec else: if "libvirt_domain" not in machine_spec["params"]: msg = "Machine '%s' has no testing interfaces. " \
-- 2.7.4 _______________________________________________ LNST-developers mailing list -- lnst-developers@lists.fedorahosted.org To unsubscribe send an email to lnst-developers-leave@lists.fedorahosted.org
Acked-by: Ondrej Lichtner olichtne@redhat.com
Fri, Apr 07, 2017 at 12:04:16PM CEST, jtluka@redhat.com wrote:
Duplicate MAC addresses in slavemachine files are silently ignored and could cause unpredictable behaviour. This patch adds a check for MAC duplicity.
Signed-off-by: Jan Tluka jtluka@redhat.com
Pushed.
-Jan
lnst-developers@lists.fedorahosted.org