From b0e74bf6d2794da3a1d6e20070e9193ca57fd151 Mon Sep 17 00:00:00 2001 From: David Whiteside Date: Mon, 5 Dec 2016 16:52:47 -0700 Subject: [PATCH] fixed #8. PBSpro is detected now --- lib/tracknodes/tracknodes.py | 26 ++++++++++++++++++-------- 1 file changed, 18 insertions(+), 8 deletions(-) diff --git a/lib/tracknodes/tracknodes.py b/lib/tracknodes/tracknodes.py index 84cb2a7..b600165 100644 --- a/lib/tracknodes/tracknodes.py +++ b/lib/tracknodes/tracknodes.py @@ -171,17 +171,27 @@ def detect_pbspro(self): """ Detect if its PBSpro vs Torque """ - for line in Popen([self.nodes_cmd, '--version'], stdout=PIPE, stderr=PIPE).communicate()[1].strip().split("\n"): - fields = line.split() + pbsnodes_stdout, pbsnodes_stderr = Popen([self.nodes_cmd, '--version'], stdout=PIPE, stderr=PIPE).communicate() + for pbsnodes_out in [pbsnodes_stdout, pbsnodes_stderr]: + for line in pbsnodes_out.strip().split("\n"): + fields = line.split() - if len(fields) <= 0: - raise Exception("Unable to determine PBSpro or Torque") + if len(fields) <= 0: + # Empty Line, thats ok, maybe stderr has what we need + break - if fields[0] == "pbs_version": - return True - else: + if fields[0] == "pbs_version": + # 'pbs_version = 14.1.0', to stdout, is PBSpro + return True + elif fields[0] == "Version:": + # 'Version: 6.0.2', to stderr, is Torque + return False + + # Only care about first line break - return False + + # If this is reached, we were unable to detect PBSpro + raise Exception("Unable to determine PBSpro or Torque") def parse_nodes_cmd(self): if self.resourcemanager == "torque":