From 587f68d422c27ac0267253adedadfa1ce9c5ceca Mon Sep 17 00:00:00 2001 From: Pedro Alvarez Date: Sun, 13 Mar 2016 16:41:32 +0000 Subject: first attempt paramiko Change-Id: Iea6523d7ee6fde41cffb2dc4b55aae7f59806c39 --- gear/worker.py | 54 +++++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 53 insertions(+), 1 deletion(-) diff --git a/gear/worker.py b/gear/worker.py index d1e961aa..8b782be5 100644 --- a/gear/worker.py +++ b/gear/worker.py @@ -9,6 +9,53 @@ import json from subprocess import Popen, PIPE, STDOUT import distbuild +from contextlib import contextmanager +import paramiko + +import logging +logging.basicConfig() + + +@contextmanager +def ssh_manager(host, port, username, key): + ''' + returns -> ssh connection ready to be used + ''' + connected = False + + t = paramiko.Transport((host, port)) +use client?? http://docs.paramiko.org/en/1.16/api/client.html + t.start_client() + + try: + ki = paramiko.RSAKey.from_private_key_file(key) + except Exception, e: + print 'Failed loading' % (key, e) + raise e + + agent = paramiko.Agent() + agent_keys = agent.get_keys() + (ki,) + if len(agent_keys) == 0: + print 'No agent keys found in %s!!' % (key) + return + + for key in agent_keys: + print 'Trying ssh-agent key %s' % key.get_fingerprint().encode('hex'), + try: + t.auth_publickey(username, key) + print '... success!' + connected = True + continue + except paramiko.SSHException, e: + print '... failed!', e + + try: + if connected: + yield t + else: + yield False + finally: + t.close() while True: print "DEBUG: Waiting for job" @@ -56,5 +103,10 @@ while True: if kind == 'stratum': suffixes.append(filename + '.meta') - + + with ssh_manager('localhost', 22, 'root', '/root/gerritbot/gerritbot_rsa') as conn: + print conn job.sendWorkComplete(artifact.cache_key) + + + -- cgit v1.2.1