commit 0ef6bee3be7a0c6b34647bcefde366cca42a66e0 Author: Radek Pazdera rpazdera@redhat.com Date: Mon Aug 13 12:01:42 2012 +0200
NetTest: Adding 'network' attribute to netdevice
This commit introduces networks into LNST netdevices. Up to this point we were unaware of how the devices are connected to each other. The network attribute adds this information directly into the recipe.
So if you later receive a recipe, you can configure your underlying physical network accordingly. This will be also useful with the upcomming virtual networks and interfaces, because LNST will be able to set up the virtual network automatically.
See the following example:
Machine 1: <netdevice hwaddr="52:54:00:11:D5:A8" network="channel-1" phys_id="1" type="eth"/> <netdevice hwaddr="52:54:00:2E:CD:A8" network="channel-2" phys_id="1" type="eth"/>
Machine 2: <netdevice hwaddr="52:54:00:2E:D5:A8" network="channel-1" phys_id="1" type="eth"/> <netdevice hwaddr="52:54:00:2E:D5:A8" network="channel-2" phys_id="1" type="eth"/>
Machine 1 is connected to machine 2 with two networks, channel-1 and channel-2.
Signed-off-by: Radek Pazdera rpazdera@redhat.com
NetTest/NetTestController.py | 16 +++++++++++++++- NetTest/NetTestParse.py | 1 + 2 files changed, 16 insertions(+), 1 deletions(-) --- diff --git a/NetTest/NetTestController.py b/NetTest/NetTestController.py index 4e34c90..8e23152 100644 --- a/NetTest/NetTestController.py +++ b/NetTest/NetTestController.py @@ -39,11 +39,14 @@ class NetTestController: self._recipe = {} definitions = {"recipe": self._recipe}
+ self._recipe["networks"] = {} + ntparse = NetTestParse(recipe_path) ntparse.set_recipe(self._recipe) ntparse.set_definitions(definitions)
- ntparse.register_event_handler("netdevice_ready", ignore_event) + ntparse.register_event_handler("netdevice_ready", + self._prepare_device) ntparse.register_event_handler("machine_info_ready", self._prepare_slave) ntparse.register_event_handler("interface_config_ready", @@ -75,6 +78,17 @@ class NetTestController: session.command, status) raise Exception("Session Die.")
+ def _prepare_device(self, machine_id, dev_id): + info = self._get_machineinfo(machine_id) + dev = self._recipe["machines"][machine_id]["netdevices"][dev_id] + + dev_net = dev["network"] + networks = self._recipe["networks"] + if not dev_net in networks: + networks[dev_net] = {"members": []} + + networks[dev_net]["members"].append((machine_id, dev_id)) + def _prepare_interface(self, machine_id, netdev_config_id): rpc = self._get_machinerpc(machine_id) info = self._get_machineinfo(machine_id) diff --git a/NetTest/NetTestParse.py b/NetTest/NetTestParse.py index e52f0f3..32d75e1 100644 --- a/NetTest/NetTestParse.py +++ b/NetTest/NetTestParse.py @@ -145,6 +145,7 @@ class NetMachineConfigParse(RecipeParser):
dev = machine["netdevices"][phys_id] = {} dev["type"] = self._get_attribute(node, "type") + dev["network"] = self._get_attribute(node, "network") dev["hwaddr"] = normalize_hwaddr(self._get_attribute(node, "hwaddr"))
if self._has_attribute(node, "name"):
lnst-developers@lists.fedorahosted.org