From e63ecbe94136e4b8e126640ff2bb81ed0e3831a0 Mon Sep 17 00:00:00 2001 From: Siddharth Vinothkumar Date: Fri, 17 Jul 2015 05:37:21 +0100 Subject: [PATCH 1/2] CA-176801: Work around rpcinfo intricacies to determine nfs versions Signed-off-by: Siddharth Vinothkumar --- drivers/nfs.py | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/drivers/nfs.py b/drivers/nfs.py index a603182e0..b9be36ef4 100644 --- a/drivers/nfs.py +++ b/drivers/nfs.py @@ -65,9 +65,8 @@ def check_server_tcp(server, nfsversion=DEFAULT_NFSVERSION): False otherwise. """ try: - util.ioretry(lambda: util.pread([RPCINFO_BIN, "-t", - "%s" % server, "nfs", nfsversion]), - errlist=[errno.EPERM], maxretry=2, nofail=True) + sv = get_supported_nfs_versions(server) + return (True if nfsversion in sv else False) except util.CommandException, inst: raise NfsException("rpcinfo failed or timed out: return code %d" % inst.code) @@ -207,14 +206,15 @@ def scan_srlist(path, dconf): def get_supported_nfs_versions(server): """Return list of supported nfs versions.""" - valid_versions = ['3', '4'] - supported_versions = [] + valid_versions = set(['3', '4']) + cv = set() try: - ns = util.pread2([RPCINFO_BIN, "-t", "%s" % server, "nfs"]) - for l in ns.strip().split("\n"): - if l.split()[3] in valid_versions: - supported_versions.append(l.split()[3]) - - return supported_versions + ns = util.pread2([RPCINFO_BIN, "-p", "%s" % server]) + ns = ns.split("\n") + for i in range(len(ns)): + if ns[i].find("nfs") > 0: + cvi = ns[i].split()[1] + cv.add(cvi) + return list(cv & valid_versions) except: util.SMlog("Unable to obtain list of valid nfs versions") From 7d63a8cdfcba53ffcf3e4288d608a79555c082a2 Mon Sep 17 00:00:00 2001 From: Siddharth Vinothkumar Date: Fri, 17 Jul 2015 11:36:12 +0100 Subject: [PATCH 2/2] CA-176801: [UnitTest] Fix assert after changes to nfs.py Signed-off-by: Siddharth Vinothkumar --- tests/test_nfs.py | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/tests/test_nfs.py b/tests/test_nfs.py index 0f1cea91f..6d9ae764c 100644 --- a/tests/test_nfs.py +++ b/tests/test_nfs.py @@ -10,15 +10,13 @@ class Test_nfs(unittest.TestCase): def test_check_server_tcp(self, pread): nfs.check_server_tcp('aServer') - pread.assert_called_once_with(['/usr/sbin/rpcinfo', '-t', 'aServer', - 'nfs', '3']) + pread.assert_called_once_with(['/usr/sbin/rpcinfo', '-p', 'aServer'], quiet=False) @mock.patch('util.pread') def test_check_server_tcp_nfsversion(self, pread): nfs.check_server_tcp('aServer', 'aNfsversion') - pread.assert_called_once_with(['/usr/sbin/rpcinfo', '-t', 'aServer', - 'nfs', 'aNfsversion']) + pread.assert_called_once_with(['/usr/sbin/rpcinfo', '-p', 'aServer'], quiet=False) def get_soft_mount_pread(self, binary, vers): return ([binary, 'remoteserver:remotepath', 'mountpoint', '-o',