From d60b92a59f81222aba4f6fde983997bbd2867bca Mon Sep 17 00:00:00 2001 From: Julien Fortin Date: Tue, 15 Mar 2016 15:41:04 +0100 Subject: [PATCH] Detect and ignore the `ether` keyword in /etc/network/interface Current supported syntax: "hwaddress [ether] 01:02:03:04:05:06" Signed-off-by: Julien Fortin --- addons/address.py | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/addons/address.py b/addons/address.py index 8d9bb75..292cb72 100644 --- a/addons/address.py +++ b/addons/address.py @@ -73,8 +73,14 @@ class address(moduleBase): return True return False - def _process_bridge(self, ifaceobj, up): + def _get_hwaddress(self, ifaceobj): hwaddress = ifaceobj.get_attr_value_first('hwaddress') + if hwaddress and hwaddress.startswith("ether"): + hwaddress = hwaddress[5:].strip() + return hwaddress + + def _process_bridge(self, ifaceobj, up): + hwaddress = self._get_hwaddress(ifaceobj) addrs = ifaceobj.get_attr_value_first('address') is_vlan_dev_on_vlan_aware_bridge = False is_bridge = self.ipcmd.is_bridge(ifaceobj.name) @@ -183,7 +189,9 @@ class address(moduleBase): alias = ifaceobj.get_attr_value_first('alias') if alias: self.ipcmd.link_set_alias(ifaceobj.name, alias) - hwaddress = ifaceobj.get_attr_value_first('hwaddress') + self.ipcmd.batch_commit() + + hwaddress = self._get_hwaddress(ifaceobj) if hwaddress: self.ipcmd.link_set(ifaceobj.name, 'address', hwaddress) self.ipcmd.batch_commit() @@ -264,7 +272,7 @@ class address(moduleBase): addr_method = ifaceobj.addr_method self.query_n_update_ifaceobjcurr_attr(ifaceobj, ifaceobjcurr, 'mtu', self.ipcmd.link_get_mtu) - hwaddress = ifaceobj.get_attr_value_first('hwaddress') + hwaddress = self._get_hwaddress(ifaceobj) if hwaddress: rhwaddress = self.ipcmd.link_get_hwaddress(ifaceobj.name) if not rhwaddress or rhwaddress != hwaddress: