summaryrefslogtreecommitdiff
path: root/poky/meta/lib/oeqa/utils/nfs.py
diff options
context:
space:
mode:
authorJason M. Bills <jason.m.bills@linux.intel.com>2019-10-22 23:54:16 +0300
committerJason M. Bills <jason.m.bills@linux.intel.com>2019-10-22 23:54:16 +0300
commit9722c6ee87766a45a337c094d1293de81cdcb106 (patch)
tree08b57716ae3c02fef2bc870b634019e692fd70e6 /poky/meta/lib/oeqa/utils/nfs.py
parent35e295e2a161fcf146ea031de53431b2888521fa (diff)
parent5b6cc97bf138293b6af12d5d3003bb66c700c48a (diff)
downloadopenbmc-9722c6ee87766a45a337c094d1293de81cdcb106.tar.xz
Merge branch 'master' of ssh://git-amr-1.devtools.intel.com:29418/openbmc-openbmc into HEAD
Diffstat (limited to 'poky/meta/lib/oeqa/utils/nfs.py')
-rw-r--r--poky/meta/lib/oeqa/utils/nfs.py39
1 files changed, 39 insertions, 0 deletions
diff --git a/poky/meta/lib/oeqa/utils/nfs.py b/poky/meta/lib/oeqa/utils/nfs.py
new file mode 100644
index 000000000..a37686c91
--- /dev/null
+++ b/poky/meta/lib/oeqa/utils/nfs.py
@@ -0,0 +1,39 @@
+# SPDX-License-Identifier: MIT
+import os
+import sys
+import tempfile
+import contextlib
+import socket
+from oeqa.utils.commands import bitbake, get_bb_var, Command
+from oeqa.utils.network import get_free_port
+
+@contextlib.contextmanager
+def unfs_server(directory, logger = None):
+ unfs_sysroot = get_bb_var("RECIPE_SYSROOT_NATIVE", "unfs3-native")
+ if not os.path.exists(os.path.join(unfs_sysroot, "usr", "bin", "unfsd")):
+ # build native tool
+ bitbake("unfs3-native -c addto_recipe_sysroot")
+
+ exports = None
+ cmd = None
+ try:
+ # create the exports file
+ with tempfile.NamedTemporaryFile(delete = False) as exports:
+ exports.write("{0} (rw,no_root_squash,no_all_squash,insecure)\n".format(directory).encode())
+
+ # find some ports for the server
+ nfsport, mountport = get_free_port(udp = True), get_free_port(udp = True)
+
+ nenv = dict(os.environ)
+ nenv['PATH'] = "{0}/sbin:{0}/usr/sbin:{0}/usr/bin:".format(unfs_sysroot) + nenv.get('PATH', '')
+ cmd = Command(["unfsd", "-d", "-p", "-N", "-e", exports.name, "-n", str(nfsport), "-m", str(mountport)],
+ bg = True, env = nenv, output_log = logger)
+ cmd.run()
+ yield nfsport, mountport
+ finally:
+ if cmd is not None:
+ cmd.stop()
+ if exports is not None:
+ # clean up exports file
+ os.unlink(exports.name)
+