hadong has uploaded a new change for review. Change subject: Hide _flush() output on the remote_storage page ......................................................................
Hide _flush() output on the remote_storage page Redirect stderr and stdout to /dev/null so the screen doesn't get cluttered. Change-Id: I1f5fbb5dc30430e3ac79cf14df8a1093dee3eda0 Bug-Url: https://bugzilla.redhat.com/show_bug.cgi?id=1072660 Signed-off-by: hadong <[email protected]> --- M src/ovirt/node/utils/system.py 1 file changed, 39 insertions(+), 8 deletions(-) git pull ssh://gerrit.ovirt.org:29418/ovirt-node refs/changes/65/25365/1 diff --git a/src/ovirt/node/utils/system.py b/src/ovirt/node/utils/system.py index 18d66c4..4e9071b 100644 --- a/src/ovirt/node/utils/system.py +++ b/src/ovirt/node/utils/system.py @@ -560,23 +560,54 @@ class Filesystem(base.Base): """A class for finding and handling filesystems""" + device = None + + def __init__(self, device): + self.device = device + + @staticmethod + def _flush(): + """Let all pending operations finish and flush anything to any disks + E.g. iscsi etc + + pipe() is used to capture the output of the calls + """ + # Don't litter the screen with output, so get a handle to /dev/null + with open(os.devnull, 'wb') as DEVNULL: + process.call(["partprobe"] + [x for x in glob.glob("/dev/mapper/*") + if not re.match(r'.*\/control$', x)], + stdout=DEVNULL, stderr=DEVNULL) + process.call(["udevadm", "settle"], stdout=DEVNULL, stderr=DEVNULL) + @staticmethod def by_label(label): """Determines whether a filesystem with a given label is present on this system """ - process.call(["partprobe"] + [x for x in glob.glob("/dev/mapper/*") - if not re.match(r'.*\/control$', x)]) - process.call(["udevadm", "settle"]) + fs = None try: - process.check_call(["/sbin/blkid", "-c", "/dev/null", "-l", "-o", - "device", "-t", 'LABEL="%s"' % label]) + Filesystem._flush() + with open(os.devnull, 'wb') as DEVNULL: + device = process.check_output(["blkid", "-c", "/dev/null", + "-L", label], stderr=DEVNULL) - return True + fs = Filesystem(label, device) except process.CalledProcessError as e: - LOGGER.exception("Failed to resolve disks: %s" % e.cmd) - return False + LOGGER.debug("Failed to resolve disks: %s" % e.cmd, exc_info=True) + return fs + + def _tokens(self): + tokens = process.check_output(["blkid", "-o", "export", self.device]) + return parse_varfile(tokens) + + def label(self): + return self._tokens().get("LABEL", None) + + def mountpoints(self): + targets = process.check_output(["findmnt", "-o", "target", "-n", + self.device]).split("\n") + return [Mount(t.strip()) for t in targets] class Mount(base.Base): -- To view, visit http://gerrit.ovirt.org/25365 To unsubscribe, visit http://gerrit.ovirt.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I1f5fbb5dc30430e3ac79cf14df8a1093dee3eda0 Gerrit-PatchSet: 1 Gerrit-Project: ovirt-node Gerrit-Branch: master Gerrit-Owner: hadong <[email protected]> Gerrit-Reviewer: Ryan Barry <[email protected]> _______________________________________________ node-patches mailing list [email protected] http://lists.ovirt.org/mailman/listinfo/node-patches
