[lnst] system_config: Multiple values for single option support

Jiří Pírko jirka at fedoraproject.org
Tue Aug 21 12:09:43 UTC 2012


commit a9eb732077a0a2cfa0392e85387f2604e4781ced
Author: Radek Pazdera <rpazdera at redhat.com>
Date:   Thu Aug 16 14:13:30 2012 +0200

    system_config: Multiple values for single option support
    
    This commit fixes bug (trac #3) in system config code, namely the
    NetTestCommandSystemConfig class.
    
    In cases when value was assigned to a same option multiple times
    within a single system_config command, only the first value was
    used. The remaining ones were discarded.
    
    Now the option is set one by one to all the values as they are
    specified in the command.
    
    Signed-off-by: Radek Pazdera <rpazdera at redhat.com>

 NetTest/NetTestCommand.py |   11 +++++++----
 NetTest/NetTestParse.py   |    5 ++++-
 2 files changed, 11 insertions(+), 5 deletions(-)
---
diff --git a/NetTest/NetTestCommand.py b/NetTest/NetTestCommand.py
index 8c0ef82..ae1297f 100644
--- a/NetTest/NetTestCommand.py
+++ b/NetTest/NetTestCommand.py
@@ -147,8 +147,10 @@ class NetTestCommandSystemConfig(NetTestCommandGeneric):
             val = [{"value": self._command["value"]}]
             self._command["options"] = {opt: val}
 
-        for option, values in self._command["options"].iteritems():
-            new_val = values[0]["value"]
+        for option, opt_data in self._command["options"].iteritems():
+            new_values = []
+            for record in opt_data:
+                new_values.append(record["value"])
 
             option_abspath = os.path.abspath(option)
             if option_abspath[0:5] != "/sys/" and \
@@ -159,12 +161,13 @@ class NetTestCommandSystemConfig(NetTestCommandGeneric):
 
             try:
                 prev_val = self._retrive_option(option)
-                self._set_option(option, new_val)
+                for new_val in new_values:
+                    self._set_option(option, new_val)
             except ExecCmdFail:
                 self.set_fail("Unable to set %s config option!" % option)
                 return
 
-            res_data[option] = {"current_val": new_val,
+            res_data[option] = {"current_val": new_values[-1],
                                 "previous_val": prev_val}
 
         res = {"passed": True}
diff --git a/NetTest/NetTestParse.py b/NetTest/NetTestParse.py
index 13141e9..7af2084 100644
--- a/NetTest/NetTestParse.py
+++ b/NetTest/NetTestParse.py
@@ -407,7 +407,10 @@ class CommandParse(RecipeParser):
 
         command["machine_id"] = machine_id
         command["type"]  = self._get_attribute(node, "type")
-        command["value"] = self._get_attribute(node, "value")
+
+        command["value"] = None
+        if self._has_attribute(node, "value"):
+            command["value"] = self._get_attribute(node, "value")
 
         if self._has_attribute(node, "timeout"):
             command["timeout"] = self._get_attribute(node, "timeout", int)


More information about the LNST-developers mailing list