implementing orchestrator

community
Steve L. Nyemba 8 years ago
parent 45bd19cd66
commit 48a80a9b8e

@ -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

Loading…
Cancel
Save