7be3f60076417fc6f6c75e014a6f8c00faf6e442
2 Distributed Cloud Emulator (dcemulator)
3 (c) 2015 by Manuel Peuster <manuel.peuster@upb.de>
10 logging
.basicConfig(level
=logging
.DEBUG
)
13 class ZeroRpcApiEndpoint(object):
15 def __init__(self
, listenip
, port
):
19 logging
.debug("Created API endpoint %s(%s:%d)" % (
20 self
.__class
__.__name
__, self
.ip
, self
.port
))
22 def connectDatacenter(self
, dc
):
23 self
.dcs
[dc
.name
] = dc
24 logging
.info("Connected DC(%s) to API endpoint %s(%s:%d)" % (
25 dc
.name
, self
.__class
__.__name
__, self
.ip
, self
.port
))
28 thread
= threading
.Thread(target
=self
._api
_server
_thread
, args
=())
31 logging
.debug("Started API endpoint %s(%s:%d)" % (
32 self
.__class
__.__name
__, self
.ip
, self
.port
))
34 def _api_server_thread(self
):
35 s
= zerorpc
.Server(MultiDatacenterApi(self
.dcs
))
36 s
.bind("tcp://%s:%d" % (self
.ip
, self
.port
))
40 class MultiDatacenterApi(object):
42 def __init__(self
, dcs
):
45 def compute_action_start(self
, dc_name
, compute_name
):
46 # TODO return UUID / IP ?
47 logging
.debug("RPC CALL: compute start")
48 if dc_name
in self
.dcs
:
49 self
.dcs
[dc_name
].addCompute(compute_name
)
51 def compute_action_stop(self
, dc_name
, compute_name
):
52 logging
.info("compute stop")
53 if dc_name
in self
.dcs
:
54 self
.dcs
[dc_name
].removeCompute(compute_name
)
56 def compute_list(self
):