summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPedro Alvarez <pedro.alvarez@codethink.co.uk>2016-03-13 16:41:32 +0000
committerPedro Alvarez <pedro.alvarez@codethink.co.uk>2016-03-27 11:53:02 +0000
commit587f68d422c27ac0267253adedadfa1ce9c5ceca (patch)
treef19df81f2130aaa8521ce04617ea8bd818e4a2de
parentc527bf1c7da1f54cced68e7af25483e9db89baf5 (diff)
downloadmorph-587f68d422c27ac0267253adedadfa1ce9c5ceca.tar.gz
first attempt paramiko
Change-Id: Iea6523d7ee6fde41cffb2dc4b55aae7f59806c39
-rw-r--r--gear/worker.py54
1 files changed, 53 insertions, 1 deletions
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)
+
+
+