X-Git-Url: https://osm.etsi.org/gitweb/?a=blobdiff_plain;f=emuvim%2Fapi%2Fzerorpcapi.py;fp=emuvim%2Fapi%2Fzerorpcapi.py;h=88d7740dd1d4e2349674106a85039c50cd7c541a;hb=9c252b6c886bc254872fd1dfe3c19fab6fe15570;hp=0000000000000000000000000000000000000000;hpb=db05bfd96fc98ec1e688521ced5f84b2c569f06d;p=osm%2Fvim-emu.git diff --git a/emuvim/api/zerorpcapi.py b/emuvim/api/zerorpcapi.py new file mode 100644 index 0000000..88d7740 --- /dev/null +++ b/emuvim/api/zerorpcapi.py @@ -0,0 +1,53 @@ +""" +Distributed Cloud Emulator (dcemulator) +(c) 2015 by Manuel Peuster +""" + +import logging +import threading +import zerorpc + +logging.basicConfig(level=logging.DEBUG) + + +class ZeroRpcApiEndpoint(object): + + def __init__(self, listenip, port): + self.dcs = {} + self.ip = listenip + self.port = port + logging.debug("Created API endpoint %s(%s:%d)" % ( + self.__class__.__name__, self.ip, self.port)) + + def connectDatacenter(self, dc): + self.dcs[dc.name] = dc + logging.info("Connected DC(%s) to API endpoint %s(%s:%d)" % ( + dc.name, self.__class__.__name__, self.ip, self.port)) + + def start(self): + thread = threading.Thread(target=self._api_server_thread, args=()) + thread.daemon = True + thread.start() + logging.debug("Started API endpoint %s(%s:%d)" % ( + self.__class__.__name__, self.ip, self.port)) + + def _api_server_thread(self): + s = zerorpc.Server(MultiDatacenterApi(self.dcs)) + s.bind("tcp://%s:%d" % (self.ip, self.port)) + s.run() + + +class MultiDatacenterApi(object): + + def __init__(self, dcs): + self.dcs = dcs + + def compute_action_start(self, dc_name, compute_name): + # TODO return UUID / IP ? + logging.info("compute start") + + def compute_action_stop(self, dc_name, compute_name): + logging.info("compute stop") + + def compute_list(self): + pass