From 3fc3c01ba614d6210e4cc7426aa278688c88e5d4 Mon Sep 17 00:00:00 2001 From: Julien Fortin Date: Tue, 27 Dec 2016 17:03:19 +0100 Subject: [PATCH] addons: address: purge ifalias when no alias keyword is provided Ticket: CM-13044 Reviewed By: Roopa, Nikhil G, Daniel W, Testing Done: For some reason we can't simply write into a file when we want to purge the ifalias, we have to exec a command. I wasn't able to make it work in any other way. add an alias to an interface, ifreload, ip link show interface modify it, ifreload, ip link show interface remove it, ifreload, ip link show interface Signed-off-by: Julien Fortin --- addons/address.py | 11 ++++++++--- ifupdownaddons/iproute2.py | 7 +++++-- 2 files changed, 13 insertions(+), 5 deletions(-) diff --git a/addons/address.py b/addons/address.py index aa86676..fc9fa89 100644 --- a/addons/address.py +++ b/addons/address.py @@ -446,6 +446,14 @@ class address(moduleBase): def _up(self, ifaceobj, ifaceobj_getfunc=None): if not self.ipcmd.link_exists(ifaceobj.name): return + + alias = ifaceobj.get_attr_value_first('alias') + current_alias = self.ipcmd.link_get_alias(ifaceobj.name) + if alias and alias != current_alias: + self.ipcmd.link_set_alias(ifaceobj.name, alias) + elif not alias and current_alias: + self.ipcmd.link_set_alias(ifaceobj.name, '') + addr_method = ifaceobj.addr_method force_reapply = False try: @@ -472,9 +480,6 @@ class address(moduleBase): force_reapply) self._process_mtu_config(ifaceobj, ifaceobj_getfunc) - alias = ifaceobj.get_attr_value_first('alias') - if alias: - self.ipcmd.link_set_alias(ifaceobj.name, alias) try: self.ipcmd.batch_commit() except Exception as e: diff --git a/ifupdownaddons/iproute2.py b/ifupdownaddons/iproute2.py index a7aa8ac..72eda66 100644 --- a/ifupdownaddons/iproute2.py +++ b/ifupdownaddons/iproute2.py @@ -477,8 +477,11 @@ class iproute2(utilsBase): self._cache_update([ifacename, 'mtu'], mtu) def link_set_alias(self, ifacename, alias): - utils.exec_commandl(['ip', 'link', 'set', 'dev', ifacename, - 'alias', alias]) + if not alias: + utils.exec_user_command('echo "" > /sys/class/net/%s/ifalias' + % ifacename) + else: + self.write_file('/sys/class/net/%s/ifalias' % ifacename, alias) def link_get_alias(self, ifacename): return self.read_file_oneline('/sys/class/net/%s/ifalias'