[lnst] NetTest: Adding 'network' attribute to netdevice

Jiří Pírko jirka at fedoraproject.org
Mon Aug 13 11:37:09 UTC 2012


commit 0ef6bee3be7a0c6b34647bcefde366cca42a66e0
Author: Radek Pazdera <rpazdera at 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 at 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"):


More information about the LNST-developers mailing list