git://git.onelab.eu
/
nepi.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
applied the except and raise fixers to the master branch to close the gap with py3
[nepi.git]
/
src
/
nepi
/
util
/
execfuncs.py
diff --git
a/src/nepi/util/execfuncs.py
b/src/nepi/util/execfuncs.py
index
98b9d73
..
cc95bdf
100644
(file)
--- a/
src/nepi/util/execfuncs.py
+++ b/
src/nepi/util/execfuncs.py
@@
-3,9
+3,8
@@
# Copyright (C) 2013 INRIA
#
# This program is free software: you can redistribute it and/or modify
# Copyright (C) 2013 INRIA
#
# This program is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
+# it under the terms of the GNU General Public License version 2 as
+# published by the Free Software Foundation;
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
@@
-17,8
+16,10
@@
#
# Author: Alina Quereilhac <alina.quereilhac@inria.fr>
#
# Author: Alina Quereilhac <alina.quereilhac@inria.fr>
-from nepi.util.sshfuncs import ProcStatus, STDOUT
+from nepi.util.sshfuncs import ProcStatus, STDOUT
, log, shell_escape
+import logging
+import shlex
import subprocess
def lexec(command,
import subprocess
def lexec(command,
@@
-36,15
+37,26
@@
def lexec(command,
if sudo:
command = "sudo %s" % command
if sudo:
command = "sudo %s" % command
- elif user:
- command = "su %s ; %s " % (user, command)
+
+ # XXX: Doing 'su user' blocks waiting for a password on stdin
+ #elif user:
+ # command = "su %s ; %s " % (user, command)
+
+ proc = subprocess.Popen(command,
+ shell = True,
+ stdout = subprocess.PIPE,
+ stderr = subprocess.PIPE)
+ out = err = ""
+ log_msg = "lexec - command %s " % command
- proc = subprocess.Popen(command, shell=True,
- stdout = subprocess.PIPE,
- stderr = subprocess.PIPE)
+ try:
+ out, err = proc.communicate()
+ log(log_msg, logging.DEBUG, out, err)
+ except:
+ log(log_msg, logging.ERROR, out, err)
+ raise
- out, err = proc.communicate()
return ((out, err), proc)
def lcopy(source, dest, recursive = False):
return ((out, err), proc)
def lcopy(source, dest, recursive = False):
@@
-52,21
+64,35
@@
def lcopy(source, dest, recursive = False):
Copies from/to localy.
"""
Copies from/to localy.
"""
- if TRACE:
- print "scp", source, dest
-
- command = ["cp"]
+ args = ["cp"]
if recursive:
if recursive:
- command.append("-R")
-
- command.append(src)
- command.append(dst)
-
- proc = subprocess.Popen(command,
+ args.append("-r")
+
+ if isinstance(source, list):
+ args.extend(source)
+ else:
+ args.append(source)
+
+ if isinstance(dest, list):
+ args.extend(dest)
+ else:
+ args.append(dest)
+
+ proc = subprocess.Popen(args,
stdout=subprocess.PIPE,
stderr=subprocess.PIPE)
stdout=subprocess.PIPE,
stderr=subprocess.PIPE)
- out, err = p.communicate()
+ out = err = ""
+ command = " ".join(args)
+ log_msg = " lcopy - command %s " % command
+
+ try:
+ out, err = proc.communicate()
+ log(log_msg, logging.DEBUG, out, err)
+ except:
+ log(log_msg, logging.ERROR, out, err)
+ raise
+
return ((out, err), proc)
def lspawn(command, pidfile,
return ((out, err), proc)
def lspawn(command, pidfile,
@@
-118,7
+144,7
@@
def lspawn(command, pidfile,
'stdin' : stdin,
}
'stdin' : stdin,
}
- cmd = "%(create)s%(gohome)s rm -f %(pidfile)s ; %(sudo)s
nohup
bash -c %(command)s " % {
+ cmd = "%(create)s%(gohome)s rm -f %(pidfile)s ; %(sudo)s bash -c %(command)s " % {
'command' : shell_escape(daemon_command),
'sudo' : 'sudo -S' if sudo else '',
'pidfile' : shell_escape(pidfile),
'command' : shell_escape(daemon_command),
'sudo' : 'sudo -S' if sudo else '',
'pidfile' : shell_escape(pidfile),
@@
-129,7
+155,7
@@
def lspawn(command, pidfile,
(out,err), proc = lexec(cmd)
if proc.wait():
(out,err), proc = lexec(cmd)
if proc.wait():
- raise RuntimeError
, "Failed to set up application on host %s: %s %s" % (host, out,err,
)
+ raise RuntimeError
("Failed to set up application on host %s: %s %s" % (host, out,err,)
)
return ((out,err), proc)
return ((out,err), proc)