| 
						
						
							
								
							
						
						
					 | 
					 | 
					@ -17,6 +17,10 @@ import subprocess
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					from monitor import ProcessCounter
 | 
					 | 
					 | 
					 | 
					from monitor import ProcessCounter
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					from utils.transport import QueueListener, QueueWriter
 | 
					 | 
					 | 
					 | 
					from utils.transport import QueueListener, QueueWriter
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					class Actor(Thread):
 | 
					 | 
					 | 
					 | 
					class Actor(Thread):
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					        @staticmethod
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					        def instance(id,config):
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					                pass
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					    
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						def __init__(self,config):
 | 
					 | 
					 | 
					 | 
						def __init__(self,config):
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							Thread.__init__(self)
 | 
					 | 
					 | 
					 | 
							Thread.__init__(self)
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							self.config = config
 | 
					 | 
					 | 
					 | 
							self.config = config
 | 
				
			
			
		
	
	
		
		
			
				
					| 
						
							
								
							
						
						
							
								
							
						
						
					 | 
					 | 
					@ -78,16 +82,7 @@ class Actor(Thread):
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                qwriter.write(label=qid,row=content)
 | 
					 | 
					 | 
					 | 
					                qwriter.write(label=qid,row=content)
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                #qwriter.close()
 | 
					 | 
					 | 
					 | 
					                #qwriter.close()
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                pass
 | 
					 | 
					 | 
					 | 
					                pass
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						def run(self):
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							info = {}
 | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							host	= self.config['api']
 | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							uid	= self.config['key']
 | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							qid	= self.config['id']
 | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							
 | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							qlistener = QueueListener(qid=qid,uid=uid,host=host)		
 | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							qlistener.callback = self.callback
 | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							qlistener.read()
 | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							r = [self.process(item) for item in self.items]
 | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					class Kill(Actor):
 | 
					 | 
					 | 
					 | 
					class Kill(Actor):
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						def __init__(self,config):
 | 
					 | 
					 | 
					 | 
						def __init__(self,config):
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							Actor.__init__(self,config)
 | 
					 | 
					 | 
					 | 
							Actor.__init__(self,config)
 | 
				
			
			
		
	
	
		
		
			
				
					| 
						
						
						
							
								
							
						
					 | 
					 | 
					@ -106,12 +101,53 @@ class Start(Actor):
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							cmd = " ".join([path,args])
 | 
					 | 
					 | 
					 | 
							cmd = " ".join([path,args])
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							self.execute(cmd)
 | 
					 | 
					 | 
					 | 
							self.execute(cmd)
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						
 | 
					 | 
					 | 
					 | 
						
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					class Orchestrator(Actor):
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					        def __init__(self,config):
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					                self.actors = {}
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					                for id in config :
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					                    _config_ = config[id]
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					                    item = Actor.instance(id,config[id])
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					                    self.actors[id] = item
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					                pass
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
						def callback(self,channel,method,header,stream):
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					                print [self.getIdentifier(),stream]
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					                message = json.loads(stream)
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					                content = message['content']
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					                sender = message['from']
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					                if content.lower() == 'quit' :
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					                    channel.close()
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					                    print " *** ",self.getIdentifier()
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					                elif content.lower() == 'ping':
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					                    self.post(to=sender,content="1")
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					                else:
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					                    self.process(content)
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					                    self.post(to=sender,content=content)
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					                
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					            
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					        def process(self,item):
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					                id = item['cmd']
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					                actor = self.actors[id]
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					                actor.process(item) ;
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
						def run(self):
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
							info = {}
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
							host	= self.config['api']
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
							uid	= self.config['key']
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
							qid	= self.config['id']
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
							
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
							qlistener = QueueListener(qid=qid,uid=uid,host=host)		
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
							qlistener.callback = self.callback
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
							qlistener.read()
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
							r = [self.process(item) for item in self.items]
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					"""
 | 
					 | 
					 | 
					 | 
					"""
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    This class is designed to send a message to a given AMQP enpoint
 | 
					 | 
					 | 
					 | 
					    This class is designed to send a message to a given AMQP enpoint
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    The AMQP endpoint is implemented by QueueWriter class
 | 
					 | 
					 | 
					 | 
					    The AMQP endpoint is implemented by QueueWriter class
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					"""
 | 
					 | 
					 | 
					 | 
					"""
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					class Alert(Actor):
 | 
					 | 
					 | 
					 | 
					class Alert(Actor):
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        def process(self,item):
 | 
					 | 
					 | 
					 | 
					        def process(self,item):
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					                
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                pass
 | 
					 | 
					 | 
					 | 
					                pass
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					            
 | 
					 | 
					 | 
					 | 
					            
 | 
				
			
			
		
	
	
		
		
			
				
					| 
						
							
								
							
						
						
						
					 | 
					 | 
					
 
 |