From 807ee8a62080994c3487298a8ebd25b5d5daa99f Mon Sep 17 00:00:00 2001 From: Lars Wirzenius Date: Mon, 24 Apr 2017 17:45:47 +0300 Subject: Move more stuff into lib.py from YarnHelper --- lib.py | 56 +++++++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 55 insertions(+), 1 deletion(-) (limited to 'lib.py') diff --git a/lib.py b/lib.py index 4982e32..611e8a1 100644 --- a/lib.py +++ b/lib.py @@ -1,4 +1,5 @@ import os +import subprocess import sys import cliapp @@ -15,6 +16,59 @@ vars = Variables(datadir) + +def ssh_key_file_for_user(user): + return os.path.abspath('{}.key'.format(user)) + + +def get_admin_ssh_key(): + return os.environ['ADMIN_SSH_KEY'] + + +def get_user_ssh_key(user): + if user is None: + return get_admin_ssh_key() + else: + return ssh_key_file_for_user(user) + + +def ssh_keygen(user): + filename = ssh_key_file_for_user(user) + cliapp.runcmd(['ssh-keygen', '-f', filename, '-N', '', '-C', user]) + with open(filename + '.pub') as f: + return f.read() + + +def env_ssh_command(user): + argv = [ + 'ssh', + '-o', 'PasswordAuthentication=no', + '-o', 'IdentitiesOnly=yes', + '-i', get_user_ssh_key(user), + ] + return ' '.join(argv) + + + +def git_as(user, args, **kwargs): + server = os.environ['GITANO_SERVER'] + env = dict(os.environ) + env['GIT_SSH_COMMAND'] = env_ssh_command(user) + return cliapp.runcmd_unchecked( + ['git'] + args, + stderr=subprocess.STDOUT, + env=env, + **kwargs) + + + +def git_as_checked(user, args, **kwargs): + exit, out, err = git_as(user, args, **kwargs) + sys.stdout.write('STDOUT from git:\n{}'.format(out)) + sys.stderr.write('STDERR from git:\n{}'.format(err)) + assertEqual(exit, 0) + + def gitano(user, args, stdin=None): server = os.environ['GITANO_SERVER'] kwargs = { @@ -22,7 +76,7 @@ def gitano(user, args, stdin=None): 'ssh_options': [ '-oPasswordAuthentication=no', '-oIdentitiesOnly=yes', - '-i', self.get_user_ssh_key(user), + '-i', get_user_ssh_key(user), ], } if stdin is not None: -- cgit v1.2.1