[Kimchi-devel] [PATCHv6 1/2] utils: Add nfs prevalication

lvroyce0210 at gmail.com lvroyce0210 at gmail.com
Mon Jan 20 13:11:07 UTC 2014


From: Royce Lv <lvroyce at linux.vnet.ibm.com>

Abstract a helper function to parse cmd result.
Usage:
    (1)get cmd result with subprocess.call or subprocess.Popen
    (2) call pass_cmd_output to get formated outputs
Example:
    blkid = subprocess.Popen(["cat", "/proc/mounts"],
                stdout=subprocess.PIPE, stderr=subprocess.PIPE)
    outs = blkid.communicate()[0]
    output_items= ['path', 'mnt_point', 'type', 'option']
        utils.parse_cmd_output(outs, output_items)
Sample output:
    [{'path': '/dev/sda8', 'type': 'ext4',
      'option': 'rw,relatime,data=ordered', 'mnt_point': '/home'},
     {'path': 'localhost:/home/royce/isorepo', 'type': 'nfs4',
      'option': 'rw...addr=127.0.0.1', 'mnt_point': '/mnt'}]

    To prevent future mount of nfs path will hang,
    we will try nfs path with a quick mount,
    if this check fails, report warning to user.

Signed-off-by: Royce Lv <lvroyce at linux.vnet.ibm.com>
---
 src/kimchi/utils.py | 8 ++++++++
 1 file changed, 8 insertions(+)

diff --git a/src/kimchi/utils.py b/src/kimchi/utils.py
index 331da91..5d6e8ea 100644
--- a/src/kimchi/utils.py
+++ b/src/kimchi/utils.py
@@ -154,3 +154,11 @@ def run_command(cmd, timeout=None):
     finally:
         if timer and not timeout_flag[0]:
             timer.cancel()
+
+
+def parse_cmd_output(output, output_items):
+    res = []
+    for line in output.split("\n"):
+        res.append(dict(zip(output_items, line.split())))
+
+    return res
-- 
1.8.1.2




More information about the Kimchi-devel mailing list