]> git-server-git.apps.pok.os.sepia.ceph.com Git - remoto.git/commitdiff
backends: have a preference for executables to look for, better detection
authorAlfredo Deza <alfredo@deza.pe>
Wed, 13 Mar 2019 15:25:05 +0000 (11:25 -0400)
committerAlfredo Deza <alfredo@deza.pe>
Wed, 13 Mar 2019 15:25:05 +0000 (11:25 -0400)
Signed-off-by: Alfredo Deza <alfredo@deza.pe>
remoto/backends/__init__.py

index de3d8b2ea63a1c09b413b87e1ee73f40c73eea54..5866fb5b6a9e085f9d064e9cfffee14cc50d2031 100644 (file)
@@ -298,14 +298,19 @@ def get_python_executable(conn):
     when executing. Avoids the problem of different Python versions, or distros
     that do not use ``python`` but do ``python3``
     """
-    out, err, code = check(conn, ['which', 'python'])
-    error_msg = 'Unable to determine python executable, will use "%s"' % conn.interpreter
-    if code:
-        conn.logger.warning(error_msg)
-        return conn.interpreter
-    else:
-        try:
-            return out[0].strip()
-        except IndexError:
-            conn.logger.warning(error_msg)
-            return conn.interpreter
+    # executables in order of preference:
+    executables = ['python3', 'python', 'python2.7']
+    for executable in executables:
+        conn.logger.debug('trying to determine remote python executable with %s' % executable)
+        out, err, code = check(conn, ['which', executable])
+        if code:
+            conn.logger.warning('skipping %s, was not found in path' % executable)
+        else:
+            try:
+                return out[0].strip()
+            except IndexError:
+                conn.logger.warning('could not parse stdout: %s' % out)
+
+    # if all fails, we just return whatever the main connection had
+    conn.logger.info('Falling back to using interpreter: %s' % conn.interpreter)
+    return conn.interpreter