autorun: Commander vers 1.1
authorMarius Sandu-Popa <sandupopamarius@gmail.com>
Thu, 29 Apr 2010 21:58:19 +0000 (00:58 +0300)
committerMarius Sandu-Popa <sandupopamarius@gmail.com>
Thu, 29 Apr 2010 21:58:19 +0000 (00:58 +0300)
autorun/commander/Commander.py
autorun/commander/CommanderBase.py

index 9fba3b8..e06a5bb 100644 (file)
@@ -58,13 +58,13 @@ class Commander(Thread):
                        return
                if argv[0] == 'all':
                        for node in self.nodes.getNodes():
-                               print callbacks[comm](node)
+                               callbacks[comm](node)
                elif argc==1:
                        node = self.nodes.getNode(argv[0])
                        if not node:
                                print "Unknown node id!"
                                return
-                       print callbacks[comm](node)
+                       callbacks[comm](node)
        
        def clientC(self, comm, argv):
                argc = len(argv)
@@ -80,7 +80,7 @@ class Commander(Thread):
                                if not node:
                                        print "Incompatible XML files!"
                                        return
-                               print callbacks[comm](node, si)
+                               callbacks[comm](node, si)
                elif argc==1:
                        node = self.nodes.getNode(argv[0])
                        if not node:
@@ -90,7 +90,7 @@ class Commander(Thread):
                        if not si:
                                print "Unknown client id!"
                                return
-                       print callbacks[comm](node, si) 
+                       callbacks[comm](node, si)       
                else:
                        node = self.nodes.getNode(argv[0])
                        if not node:
@@ -100,7 +100,7 @@ class Commander(Thread):
                        if not si:
                                print "Unknown client id!"
                                return
-                       print callbacks[comm](node, si)
+                       callbacks[comm](node, si)
 
        def startNodeServer(self, node):
                comm = SERVER_TYPE+" "+SERVER_DIR+SERVER_FILE+\
@@ -129,31 +129,53 @@ class Commander(Thread):
                ret = self.Commander.start(node.public_address, 
                                                        int(node.listen_port), 
                                                        config_data)    
-               print ">>>>>>>>", ret
+               #print ">>>>>>>>", ret
                if ret: si.pid = ret
        
        def stopSI(self, node, si):     
-               return self.Commander.stop(node.public_address, 
+               ret = self.Commander.stop(node.public_address, 
                                                        int(node.listen_port), 
                                                        si.pid)
        
        def statusSI(self, node, si):
-               return self.Commander.status(node.public_address, 
+               ret = self.Commander.status(node.public_address, 
                                                        int(node.listen_port), 
                                                        si.pid)
+               if ret: print ret
                
        def getNodeStatus(self, node):  
-               return self.Commander.getClients(node.public_address, 
+               ret = self.Commander.getClients(node.public_address, 
                                        int(node.listen_port)) 
+               if ret:
+                       print 'node ' + node.id +  ' (' + node.public_address +\
+                               ":" +node.public_port  + " -> " + node.private_address +\
+                               ":" +node.listen_port  +' ):'
+                       for l in ret:
+                               print " -" + l[0] + " client(pid:" + str(l[1]) +") on \"" + l[2] +"\""
 
        def getNodeOutput(self, node):
-               return self.Commander.getOutput(node.public_address, 
+               ret = self.Commander.getOutput(node.public_address, 
                                        int(node.listen_port)) 
-               
+               if ret:
+                       print 'node ' + node.id +  ' (' + node.public_address +\
+                               ":" +node.public_port  + " -> " + node.private_address +\
+                               ":" +node.listen_port  +' ):'
+                       for l in ret:
+                               print " -" + l[0] + " client on \"" + l[1] + "\" outputs at:"
+                               for ll in l[2:]:
+                                       print "\t" + ll[1] + ": "+ll[0]
+               print ""
+
        def nodeArchive(self, node):
-               return self.Commander.archive(node.public_address, 
+               ret = self.Commander.archive(node.public_address, 
                                        int(node.listen_port))
-
+               if ret:
+                       print 'node ' + node.id +  ' (' + node.public_address +\
+                               ":" +node.public_port  + " -> " + node.private_address +\
+                               ":" +node.listen_port  +' ):'
+                       for l in ret:
+                               print "archiving ... " +l
+                               
        def cleanNode(self, node):
                pass    
        
@@ -220,7 +242,7 @@ class Commander(Thread):
                        " KB/s" + ", Up:" +si.upload_limit  + " KB/s" + ' )' 
        
        def about(self):
-               print "Commander version 1.0.3"
+               print "Commander version 1.1"
                print "Enter \"help\" for instructions"
        
 if __name__ == "__main__":
index f6a0678..c1c2f77 100644 (file)
@@ -17,9 +17,6 @@ class CommanderBase():
                        self.sendMsg(pickle.dumps((msg_type, config_data)))
                        response = self.recvMsg()
                        return response
-               except Exception, e:
-                       print "Ups: Could not complete request"
-                       print e
                finally:
                        self.sock.close()
 
@@ -45,66 +42,83 @@ class CommanderBase():
                return dd
 
        def getClients(self, public_address, listen_port):      
-               msg_type, msg_data = self.sendComm(public_address, 
-                                                                               listen_port, 
-                                                                               GET_CLIENTS, 
-                                                                               "")
-               if msg_type == ACK_MSG:
-                       return msg_data
-               else:
-                       error("get_clients", msg_data)
+               try:
+                       msg_type, msg_data = self.sendComm(public_address, 
+                                                                                       listen_port, 
+                                                                                       GET_CLIENTS, 
+                                                                                       "")
+                       if msg_type == ACK_MSG:
+                               return msg_data
+                       else:
+                               error("get_clients", msg_data)
+               except Exception, e:
+                       print e
 
        def getOutput(self, public_address, listen_port):
-               msg_type, msg_data = self.sendComm(public_address, 
-                                                                               listen_port, 
-                                                                               GET_OUTPUT, 
-                                                                               "")
-               if msg_type == ACK_MSG:
-                       return msg_data
-               else:
-                       error("get_output", msg_data)
+               try:
+                       msg_type, msg_data = self.sendComm(public_address, 
+                                                                                       listen_port, 
+                                                                                       GET_OUTPUT, 
+                                                                                       "")
+                       if msg_type == ACK_MSG:
+                               return msg_data
+                       else:
+                               error("get_output", msg_data)
+               except Exception, e:
+                       print e
        
        def archive(self, public_address, listen_port):
-               msg_type, msg_data = self.sendComm(public_address, 
-                                                                               listen_port, 
-                                                                               ARCHIVE, 
-                                                                               "")
-               if msg_type == ACK_MSG:
-                       return msg_data
-               else:
-                       error("archive", msg_data)
+               try:
+                       msg_type, msg_data = self.sendComm(public_address, 
+                                                                                       listen_port, 
+                                                                                       ARCHIVE, 
+                                                                                       "")
+                       if msg_type == ACK_MSG:
+                               return msg_data
+                       else:
+                               error("archive", msg_data)
+               except Exception, e:
+                       print e
 
-       def start(self, public_address, listen_port, config_data):      
-               msg_type, msg_data = self.sendComm(public_address, 
-                                                                               listen_port, 
-                                                                               START_MSG, 
-                                                                               config_data)
-               if msg_type == ACK_MSG:
-                       return msg_data
-               else:
-                       error("start_client", msg_data)
+       def start(self, public_address, listen_port, config_data):
+               try:
+                       msg_type, msg_data = self.sendComm(public_address, 
+                                                                                       listen_port, 
+                                                                                       START_MSG, 
+                                                                                       config_data)
+                       if msg_type == ACK_MSG:
+                               return msg_data
+                       else:
+                               error("start_client", msg_data)
+               except Exception, e:
+                       print e
        
        def stop(self, public_address, listen_port, client_pid):
-               msg_type, msg_data = self.sendComm(public_address, 
-                                                                               listen_port, 
-                                                                               STOP_MSG,
-                                                                               client_pid) 
-                       
-               if msg_type == ACK_MSG:
-                       return True
-               else:
-                       error("stop_client", msg_data)
+               try:
+                       msg_type, msg_data = self.sendComm(public_address, 
+                                                                                       listen_port, 
+                                                                                       STOP_MSG,
+                                                                                       client_pid) 
+                               
+                       if msg_type == ACK_MSG:
+                               return True
+                       else:
+                               error("stop_client", msg_data)
+               except Exception, e:
+                       print e
        
        def status(self, public_address, listen_port, client_pid):      
-               msg_type, msg_data = self.sendComm(public_address, 
-                                                                               listen_port, 
-                                                                               GET_STATUS, 
-                                                                               client_pid)
-               if msg_type == ACK_MSG:
-                       return msg_data
-               else:
-                       error("start_client", msg_data)
-       
+               try:
+                       msg_type, msg_data = self.sendComm(public_address, 
+                                                                                       listen_port, 
+                                                                                       GET_STATUS, 
+                                                                                       client_pid)
+                       if msg_type == ACK_MSG:
+                               return msg_data
+                       else:
+                               error("start_client", msg_data)
+               except Exception, e:
+                       print e
        
        def clean(self):
                pass