Repository: spark
Updated Branches:
  refs/heads/branch-1.0 d7db2e63a -> 6b5f64aaf


SPARK-1990: added compatibility for python 2.6 for ssh_read command

https://issues.apache.org/jira/browse/SPARK-1990

There were some posts on the lists that spark-ec2 does not work with Python 
2.6. In addition, we should check the Python version at the top of the script 
and exit if it's too old

Author: Anant <[email protected]>

Closes #941 from anantasty/SPARK-1990 and squashes the following commits:

4ca441d [Anant] Implmented check_optput withinthe module to work with python 2.6
c6ed85c [Anant] added compatibility for python 2.6 for ssh_read command

Conflicts:

        ec2/spark_ec2.py


Project: http://git-wip-us.apache.org/repos/asf/spark/repo
Commit: http://git-wip-us.apache.org/repos/asf/spark/commit/6b5f64aa
Tree: http://git-wip-us.apache.org/repos/asf/spark/tree/6b5f64aa
Diff: http://git-wip-us.apache.org/repos/asf/spark/diff/6b5f64aa

Branch: refs/heads/branch-1.0
Commit: 6b5f64aafcfe023851039f8caf7ba71e7d56d26e
Parents: d7db2e6
Author: Anant <[email protected]>
Authored: Mon Jun 16 23:42:27 2014 -0700
Committer: Patrick Wendell <[email protected]>
Committed: Mon Jun 16 23:45:31 2014 -0700

----------------------------------------------------------------------
 ec2/spark_ec2.py | 16 +++++++++++++++-
 1 file changed, 15 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/spark/blob/6b5f64aa/ec2/spark_ec2.py
----------------------------------------------------------------------
diff --git a/ec2/spark_ec2.py b/ec2/spark_ec2.py
index d2c29d0..8924464 100755
--- a/ec2/spark_ec2.py
+++ b/ec2/spark_ec2.py
@@ -642,9 +642,23 @@ def ssh(host, opts, command):
       time.sleep(30)
       tries = tries + 1
 
+# Backported from Python 2.7 for compatiblity with 2.6 (See SPARK-1990)
+def _check_output(*popenargs, **kwargs):
+    if 'stdout' in kwargs:
+        raise ValueError('stdout argument not allowed, it will be overridden.')
+    process = subprocess.Popen(stdout=PIPE, *popenargs, **kwargs)
+    output, unused_err = process.communicate()
+    retcode = process.poll()
+    if retcode:
+        cmd = kwargs.get("args")
+        if cmd is None:
+            cmd = popenargs[0]
+        raise subprocess.CalledProcessError(retcode, cmd, output=output)
+    return output
+
 
 def ssh_read(host, opts, command):
-  return subprocess.check_output(
+  return _check_output(
       ssh_command(opts) + ['%s@%s' % (opts.user, host), 
stringify_command(command)])
 
 

Reply via email to