gnunet-svn
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[GNUnet-SVN] r28188 - gnunet-planetlab/gplmt/gplmt


From: gnunet
Subject: [GNUnet-SVN] r28188 - gnunet-planetlab/gplmt/gplmt
Date: Fri, 19 Jul 2013 11:21:49 +0200

Author: wachs
Date: 2013-07-19 11:21:49 +0200 (Fri, 19 Jul 2013)
New Revision: 28188

Modified:
   gnunet-planetlab/gplmt/gplmt/Worker.py
Log:
planetlab specific connect function


Modified: gnunet-planetlab/gplmt/gplmt/Worker.py
===================================================================
--- gnunet-planetlab/gplmt/gplmt/Worker.py      2013-07-19 09:19:48 UTC (rev 
28187)
+++ gnunet-planetlab/gplmt/gplmt/Worker.py      2013-07-19 09:21:49 UTC (rev 
28188)
@@ -256,20 +256,20 @@
             g_logger.log (self.node.hostname + " : Trying to connect to '" 
+Util.print_ssh_connection (self.node) + "'")
             if self.node.username is not None: #credentials are supplied in 
node file
                 if (self.node.password is not None):
-                    g_logger.log ( "Using node information " + 
self.node.username + " " +self.node.password)                      
+                    g_logger.log (self.node.hostname + " : Using node 
information username '" + self.node.username + " and password '" 
+self.node.password +"'")                      
                     self.ssh.connect (self.node.hostname,
                                 port=self.node.port or 22,
                                 username=self.node.username,
                                 password=self.node.password,
                                 timeout=10)
                 else:
-                    g_logger.log ( "Using node information " + 
self.node.username)
+                    g_logger.log (self.node.hostname + " : Using node 
information ;" + self.node.username +"'")
                     self.ssh.connect (self.node.hostname,
                                  port=self.node.port or 22,
                                  username=self.node.username,
                                  timeout=10)                                   
     
             elif ("" != g_configuration.ssh_username):
-                g_logger.log ( "Using node information " + 
g_configuration.ssh_username  + " " + g_configuration.ssh_password)
+                g_logger.log (self.node.hostname + " : Using node information 
username '" + g_configuration.ssh_username  + "' and password '" + 
g_configuration.ssh_password +"'")
                 self.ssh.connect (self.node.hostname,
                          port=self.node.port or 22,
                          username=g_configuration.ssh_username, 
@@ -277,14 +277,14 @@
                          timeout=10,
                          key_filename=keyfile)
             elif ("" != g_configuration.ssh_password):
-                g_logger.log ( "Using node information " + 
g_configuration.ssh_password)
+                g_logger.log (self.node.hostname + " : Using node information 
password '" + g_configuration.ssh_password + "'")
                 self.ssh.connect (self.node.hostname,
                              port=self.node.port or 22,
                              password=g_configuration.self.ssh_password,
                              timeout=10,
                              key_filename=keyfile)
             else:
-                g_logger.log ("Using no information")
+                g_logger.log (self.node.hostname + " : Using no information")
                 self.ssh.connect (self.node.hostname,
                              port=self.node.port or 22,
                              timeout=10,
@@ -493,17 +493,44 @@
     
 class PlanetLabWorker (RemoteSSHWorker):
     def connect (self):
-        raise NotImplementedError (inspect.stack()[0][3]) 
-    def disconnect (self):       
-        raise NotImplementedError (inspect.stack()[0][3])  
-    def exec_run_per_host (self, task):
-        raise NotImplementedError (inspect.stack()[0][3]) 
-    def exec_run (self,task):
-        raise NotImplementedError (inspect.stack()[0][3]) 
-    def exec_put (self, task):
-        raise NotImplementedError (inspect.stack()[0][3]) 
-    def exec_get (self, task):
-        raise NotImplementedError (inspect.stack()[0][3]) 
+        self.ssh = None
+        if (interrupt):
+            return TaskExecutionResult(Tasks.Taskresult.user_interrupt, 
"interrupted by user", "")            
+        try: 
+            self.ssh = paramiko.SSHClient()
+            
+            if (g_configuration.ssh_use_known_hosts):
+                g_logger.log (self.node.hostname + " : Loading known hosts")
+                self.ssh.load_system_host_keys ()
+            # Automatically add new hostkeys
+            if (g_configuration.ssh_add_unkown_hostkeys == True):
+                self.ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
+            # check for private key existance
+            keyfile = None
+            if (g_configuration.ssh_keyfile != None): 
+                if (os.path.exists (g_configuration.ssh_keyfile)):
+                    g_logger.log (self.node.hostname + " : Found " + 
g_configuration.ssh_keyfile)
+                    keyfile = g_configuration.ssh_keyfile
+                else:
+                    g_logger.log (self.node.hostname + " : Not found " + 
g_configuration.ssh_keyfile)
+            g_logger.log (self.node.hostname + " : Trying to connect to '" 
+Util.print_ssh_connection (self.node) + "'")
+            g_logger.log (self.node.hostname + " : Using node information 
username '" + g_configuration.pl_slicename  + "'")
+            self.ssh.connect (self.node.hostname,
+                     port=self.node.port or 22,
+                     username=g_configuration.pl_slicename, 
+                     timeout=10,
+                     key_filename=keyfile)
+            self.transport = self.ssh.get_transport()                         
+        except (IOError,
+                paramiko.SSHException,
+                paramiko.BadHostKeyException, 
+                paramiko.AuthenticationException,
+                socket.error) as e:  
+            g_logger.log (self.node.hostname + " : Error while trying to 
connect: " + str(e))
+            return TaskExecutionResult (Tasks.Taskresult.fail, str(e), "")
+        g_logger.log (self.node.hostname + " : Connected!")
+        return TaskExecutionResult (Tasks.Taskresult.success, "", "")
+  
 
 class NodeWorker ():
     def __init__(self, target, node, tasks):
@@ -524,7 +551,7 @@
         elif (self.target == Targets.Target (Targets.Target.remote_ssh)):
             self.thread = RemoteSSHWorker (1, self.node, self.tasks);
         elif (self.target == Targets.Target (Targets.Target.planetlab)):
-            self.thread = RemoteSSHWorker (1, self.node, self.tasks);   
+            self.thread = PlanetLabWorker (1, self.node, self.tasks);   
         return        
     def start (self):
         g_logger.log ("Starting execution for node " + self.node.hostname)




reply via email to

[Prev in Thread] Current Thread [Next in Thread]