In the class InterfaceAPI there are many functions of the following
prototype:
def <func_name>(self, <args>):
return self._if.<func_name>(<args>)
or sometimes:
def <func_name>(self, <args>):
return VolatileValue(self._if.<func_name>, <args>)
All this function holds no logic of their own and can be generated in run
time. This commit replaces 25 functions of this type with lambdas created
in the init.
Signed-off-by: Nogah Frankel <nogahf(a)mellanox.com>
---
lnst/Controller/Task.py | 93 ++++++++++++-------------------------------------
1 file changed, 23 insertions(+), 70 deletions(-)
diff --git a/lnst/Controller/Task.py b/lnst/Controller/Task.py
index 6fd1946..3c56025 100644
--- a/lnst/Controller/Task.py
+++ b/lnst/Controller/Task.py
@@ -557,24 +557,34 @@ class InterfaceAPI(object):
def __init__(self, interface, host):
self._if = interface
self._host = host
+ self._init_manufacture_funcs()
- def get_id(self):
- return self._if.get_id()
-
- def get_type(self):
- return self._if.get_type()
+ def _if_func_call(self, name, args=[], dict_args={}, is_volatile=False):
+ func = getattr(self._if, name)
+ if is_volatile:
+ return VolatileValue(func, *args, **dict_args)
+ else:
+ return func(*args, **dict_args)
- def get_network(self):
- return self._if.get_network()
+ def _add_if_func(self, name, is_volatile=False):
+ func = lambda *args, **dict_args: \
+ self._if_func_call(name, args, dict_args, is_volatile)
+ setattr(self, name, func)
- def get_driver(self):
- return VolatileValue(self._if.get_driver)
+ _IF_FUNCS = ["get_id", "get_type", "get_network",
"set_mtu",
+ "link_stats", "set_link_up",
"set_link_down", "get_netns",
+ "set_addresses", "get_br_vlans",
"get_br_fdbs", "set_speed",
+ "set_autoneg", "slave_add", "slave_del",
"get_devlink_name",
+ "get_devlink_port_name", "get_ethtool_stats",
"enable_lldp",
+ "set_pause_on", "set_pause_off"]
+ _IF_VOLATILES = ["get_driver", "get_devname",
"get_hwaddr", "get_mtu"]
- def get_devname(self):
- return VolatileValue(self._if.get_devname)
+ def _init_manufacture_funcs(self):
+ for i in self._IF_FUNCS:
+ self._add_if_func(i)
+ for i in self._IF_VOLATILES:
+ self._add_if_func(i, True)
- def get_hwaddr(self):
- return VolatileValue(self._if.get_hwaddr)
def get_ip(self, ip_index=0, selector={}):
return VolatileValue(self._if.get_address, ip_index)
@@ -597,27 +607,9 @@ class InterfaceAPI(object):
def get_ip_prefix(self, ip_index=0):
return self.get_prefix(ip_index)
- def get_mtu(self):
- return VolatileValue(self._if.get_mtu)
-
- def set_mtu(self, mtu):
- return self._if.set_mtu(mtu)
-
- def link_stats(self):
- return self._if.link_stats()
-
- def set_link_up(self):
- return self._if.set_link_up()
-
- def set_link_down(self):
- return self._if.set_link_down()
-
def get_host(self):
return self._host
- def get_netns(self):
- return self._if.get_netns()
-
def reset(self, ip=None, netns=None):
self._if.address_cleanup()
self._if.down()
@@ -633,9 +625,6 @@ class InterfaceAPI(object):
self._if.up()
self._if.address_setup()
- def set_addresses(self, ips):
- self._if.set_addresses(ips)
-
def add_route(self, dest, ipv6 = False):
self._if.add_route(dest, ipv6)
@@ -669,9 +658,6 @@ class InterfaceAPI(object):
"untagged": untagged,
"self": self, "master": master})
- def get_br_vlans(self):
- return self._if.get_br_vlans()
-
def add_br_fdb(_self, hwaddr, self=False, master=False, vlan_tci=None):
_self._if.add_br_fdb({"hwaddr": hwaddr, "self": self,
"master": master,
"vlan_id": vlan_tci})
@@ -680,9 +666,6 @@ class InterfaceAPI(object):
_self._if.del_br_fdb({"hwaddr": hwaddr, "self": self,
"master": master,
"vlan_id": vlan_tci})
- def get_br_fdbs(self):
- return self._if.get_br_fdbs()
-
def set_br_learning(_self, on=True, self=False, master=False):
_self._if.set_br_learning({"on": on, "self": self,
"master": master})
@@ -696,36 +679,6 @@ class InterfaceAPI(object):
def set_br_state(_self, state, self=False, master=False):
_self._if.set_br_state({"state": state, "self": self,
"master": master})
- def set_speed(self, speed):
- return self._if.set_speed(speed)
-
- def set_autoneg(self):
- return self._if.set_autoneg()
-
- def slave_add(self, slave_id):
- return self._if.slave_add(slave_id)
-
- def slave_del(self, slave_id):
- return self._if.slave_del(slave_id)
-
- def get_devlink_name(self):
- return self._if.get_devlink_name()
-
- def get_devlink_port_name(self):
- return self._if.get_devlink_port_name()
-
- def get_ethtool_stats(self):
- return self._if.get_ethtool_stats()
-
- def enable_lldp(self):
- return self._if.enable_lldp()
-
- def set_pause_on(self):
- return self._if.set_pause_on()
-
- def set_pause_off(self):
- return self._if.set_pause_off()
-
class ModuleAPI(object):
""" An API class representing a module. """
--
2.4.3