In the class Interface there are many functions of the following prototype:
def <function name> (self, <additional arguments>):
return self._machine._rpc_call_x(self._netns, <str name>, \
self._id, <additional arguments>)
where the <function name> and <str name> are often the same and the
additional arguments (if exist) sent without change.
All this function holds no logic of their own and can be generated in run
time.
This commit replaces 23 functions of this type with lambdas created in
the init.
Signed-off-by: Nogah Frankel <nogahf(a)mellanox.com>
---
lnst/Controller/Machine.py | 106 ++++++++++++---------------------------------
1 file changed, 28 insertions(+), 78 deletions(-)
diff --git a/lnst/Controller/Machine.py b/lnst/Controller/Machine.py
index 74bd64e..3c8790a 100644
--- a/lnst/Controller/Machine.py
+++ b/lnst/Controller/Machine.py
@@ -632,6 +632,34 @@ class Interface(object):
self._driver = None
self._devlink = None
self._routes = []
+ self._init_manufacture_funcs()
+
+ _MACHINE_RPC_CALL = ["link_stats", "set_link_up",
"set_link_down",
+ "add_br_vlan", "del_br_vlan",
"get_br_vlans",
+ "add_br_fdb", "del_br_fdb",
"get_br_fdbs",
+ "set_br_learning", "set_br_learning_sync",
+ "set_br_flooding", "set_br_state",
"set_speed",
+ "set_autoneg", "get_ethtool_stats",
"enable_lldp",
+ "set_pause_on", "set_pause_off"]
+
+ _MACHINE_RPC_CALL_DIFF_NAME = [("up", "set_device_up"),
+ ("down", "set_device_down"),
+ ("address_setup",
"device_address_setup"),
+
("address_cleanup","device_address_cleanup")
+ ]
+
+ def _create_machine_rpc_call_func(self, name, func_name):
+ func = lambda *args: self._machine._rpc_call_x(self._netns, func_name,
+ self.get_id(), *args)
+ setattr(self, name, func)
+
+ def _init_manufacture_funcs(self):
+ for name, func_name in self._MACHINE_RPC_CALL_DIFF_NAME:
+ if not hasattr(self, name):
+ self._create_machine_rpc_call_func(name, func_name)
+ for name in self._MACHINE_RPC_CALL:
+ if not hasattr(self, name):
+ self._create_machine_rpc_call_func(name, name)
def get_id(self):
return self._id
@@ -774,10 +802,6 @@ class Interface(object):
self._mtu = mtu
return self._mtu
- def link_stats(self):
- stats = self._machine._rpc_call_x(self._netns, "link_stats",
- self._id)
- return stats
def set_addresses(self, ips):
self._addresses = ips
@@ -850,24 +874,6 @@ class Interface(object):
return config
- def up(self):
- self._machine._rpc_call_x(self._netns, "set_device_up", self._id)
-
- def down(self):
- self._machine._rpc_call_x(self._netns, "set_device_down", self._id)
-
- def address_setup(self):
- self._machine._rpc_call_x(self._netns, "device_address_setup",
self._id)
-
- def address_cleanup(self):
- self._machine._rpc_call_x(self._netns, "device_address_cleanup",
self._id)
-
- def set_link_up(self):
- self._machine._rpc_call_x(self._netns, "set_link_up", self._id)
-
- def set_link_down(self):
- self._machine._rpc_call_x(self._netns, "set_link_down", self._id)
-
def initialize(self):
phys_devs = self._machine._rpc_call("map_if_by_hwaddr",
self._id, self._hwaddr)
@@ -924,50 +930,6 @@ class Interface(object):
"return_if_netns", self.get_id())
self._configured = False
- def add_br_vlan(self, br_vlan_info):
- self._machine._rpc_call_x(self._netns, "add_br_vlan",
- self._id, br_vlan_info)
-
- def del_br_vlan(self, br_vlan_info):
- self._machine._rpc_call_x(self._netns, "del_br_vlan",
- self._id, br_vlan_info)
-
- def get_br_vlans(self):
- return self._machine._rpc_call_x(self._netns, "get_br_vlans",
self._id)
-
- def add_br_fdb(self, br_fdb_info):
- self._machine._rpc_call_x(self._netns, "add_br_fdb",
- self._id, br_fdb_info)
-
- def del_br_fdb(self, br_fdb_info):
- self._machine._rpc_call_x(self._netns, "del_br_fdb",
- self._id, br_fdb_info)
-
- def get_br_fdbs(self):
- return self._machine._rpc_call_x(self._netns, "get_br_fdbs", self._id)
-
- def set_br_learning(self, br_learning_info):
- self._machine._rpc_call_x(self._netns, "set_br_learning", self._id,
- br_learning_info)
-
- def set_br_learning_sync(self, br_learning_sync_info):
- self._machine._rpc_call_x(self._netns, "set_br_learning_sync",
self._id,
- br_learning_sync_info)
-
- def set_br_flooding(self, br_flooding_info):
- self._machine._rpc_call_x(self._netns, "set_br_flooding", self._id,
- br_flooding_info)
-
- def set_br_state(self, br_state_info):
- self._machine._rpc_call_x(self._netns, "set_br_state", self._id,
- br_state_info)
-
- def set_speed(self, speed):
- self._machine._rpc_call_x(self._netns, "set_speed", self._id, speed)
-
- def set_autoneg(self):
- self._machine._rpc_call_x(self._netns, "set_autoneg", self._id)
-
def slave_add(self, if_id):
self._machine._rpc_call_x(self._netns, "slave_add", self._id, if_id)
self.add_slave(self._machine.get_interface(if_id))
@@ -988,18 +950,6 @@ class Interface(object):
self._devlink["port_index"])
return None
- def get_ethtool_stats(self):
- return self._machine._rpc_call_x(self._netns, "get_ethtool_stats",
- self._id)
-
- def enable_lldp(self):
- return self._machine._rpc_call_x(self._netns, "enable_lldp", self._id)
-
- def set_pause_on(self):
- return self._machine._rpc_call_x(self._netns, "set_pause_on",
self._id)
-
- def set_pause_off(self):
- return self._machine._rpc_call_x(self._netns, "set_pause_off",
self._id)
class StaticInterface(Interface):
""" Static interface
--
2.4.3