summary |
shortlog |
log |
commit | commitdiff |
tree
raw |
patch |
inline | side by side (from parent 1:
6e711e2)
defaults to False
stdout and stderr are now merged by default in a single trace
previous behaviour can be achieved by setting this new attribute to True
from nepi.execution.resource import ResourceManager, clsinit_copy, \
ResourceState
from nepi.resources.linux.node import LinuxNode
from nepi.execution.resource import ResourceManager, clsinit_copy, \
ResourceState
from nepi.resources.linux.node import LinuxNode
-from nepi.util.sshfuncs import ProcStatus
+from nepi.util.sshfuncs import ProcStatus, STDOUT
from nepi.util.timefuncs import tnow, tdiffsec
import os
from nepi.util.timefuncs import tnow, tdiffsec
import os
Attribute("tearDown",
"Command to be executed just before releasing the resource",
flags = Flags.Design))
Attribute("tearDown",
"Command to be executed just before releasing the resource",
flags = Flags.Design))
+ cls._register_attribute(
+ Attribute("splitStderr",
+ "requests stderr to be retrieved separately",
+ default = False))
@classmethod
def _register_traces(cls):
@classmethod
def _register_traces(cls):
# in background ( but wait until the command has
# finished to continue )
shfile = os.path.join(self.app_home, "{}.sh".format(prefix))
# in background ( but wait until the command has
# finished to continue )
shfile = os.path.join(self.app_home, "{}.sh".format(prefix))
+ # low-level spawn tools in both sshfuncs and execfuncs
+ # expect stderr=sshfuncs.STDOUT to mean std{out,err} are merged
+ stderr = "{}_stderr".format(prefix) \
+ if self.get("splitStderr") \
+ else STDOUT
+ print("{} : prefix = {}, command={}, stderr={}"
+ .format(self, prefix, command, stderr))
self.node.run_and_wait(command, self.run_home,
shfile = shfile,
overwrite = False,
pidfile = "{}_pidfile".format(prefix),
ecodefile = "{}_exitcode".format(prefix),
stdout = "{}_stdout".format(prefix),
self.node.run_and_wait(command, self.run_home,
shfile = shfile,
overwrite = False,
pidfile = "{}_pidfile".format(prefix),
ecodefile = "{}_exitcode".format(prefix),
stdout = "{}_stdout".format(prefix),
- stderr = "{}_stderr".format(prefix))
def upload_sources(self, sources = None, src_dir = None):
if not sources:
def upload_sources(self, sources = None, src_dir = None):
if not sources:
sudo = self.get("sudo") or False
stdout = "stdout"
sudo = self.get("sudo") or False
stdout = "stdout"
+ # low-level spawn tools in both sshfuncs and execfuncs
+ # expect stderr=sshfuncs.STDOUT to mean std{out,err} are merged
+ stderr = "stderr" \
+ if self.get("splitStderr") \
+ else STDOUT
stdin = os.path.join(self.app_home, "stdin") if self.get("stdin") \
else None
stdin = os.path.join(self.app_home, "stdin") if self.get("stdin") \
else None