X-Git-Url: https://osm.etsi.org/gitweb/?a=blobdiff_plain;f=src%2Femuvim%2Fapi%2Fzerorpc%2Fcompute.py;h=39ccec29a86a2086b5d5b9c39f4039a7c6142b60;hb=5b37641a26aef3691b6f5ad2e3d1b768841eee8f;hp=59b960c4af8779d22434864fe9831bb01f391b98;hpb=53337bc9b5cd5b6c613453b04c4f9cd703a61344;p=osm%2Fvim-emu.git diff --git a/src/emuvim/api/zerorpc/compute.py b/src/emuvim/api/zerorpc/compute.py index 59b960c..39ccec2 100644 --- a/src/emuvim/api/zerorpc/compute.py +++ b/src/emuvim/api/zerorpc/compute.py @@ -56,22 +56,24 @@ class MultiDatacenterApi(object): def __init__(self, dcs): self.dcs = dcs - def compute_action_start(self, dc_label, compute_name, image, command, network): + def compute_action_start(self, dc_label, compute_name, image, network, command): """ - Start a new compute instance: A docker container + Start a new compute instance: A docker container (note: zerorpc does not support keyword arguments) :param dc_label: name of the DC :param compute_name: compute container name :param image: image name :param command: command to execute - :param network: - :return: networks list({"ip": "10.0.0.254/8"}, {"ip": "11.0.0.254/24"}) + :param network: list of all interface of the vnf, with their parameters (id=id1,ip=x.x.x.x/x),... + :return: networks list({"id":"input","ip": "10.0.0.254/8"}, {"id":"output","ip": "11.0.0.254/24"}) """ # TODO what to return UUID / given name / internal name ? logging.debug("RPC CALL: compute start") try: c = self.dcs.get(dc_label).startCompute( compute_name, image=image, command=command, network=network) - return str(c.name) + #return str(c.name) + # return docker inspect dict + return c.getStatus() except Exception as ex: logging.exception("RPC error.") return ex.message @@ -111,6 +113,25 @@ class MultiDatacenterApi(object): logging.exception("RPC error.") return ex.message + def compute_profile(self, dc_label, compute_name, image, kwargs): + # note: zerorpc does not support keyword arguments + + ## VIM/dummy gatekeeper's tasks: + # start vnf + vnf_status = self.compute_action_start(self, dc_label, compute_name, image, + kwargs.get('network'), + kwargs.get('command')) + # start traffic source (with fixed ip addres, no use for now...) + self.compute_action_start(self, dc_label, 'psrc', 'profile_source', [{'id':'output'}], None) + # link vnf to traffic source + DCNetwork = self.dcs.get(dc_label).net + DCNetwork.setChain() + + + + + + def datacenter_list(self): logging.debug("RPC CALL: datacenter list") try: @@ -126,3 +147,10 @@ class MultiDatacenterApi(object): except Exception as ex: logging.exception("RPC error.") return ex.message + +''' +if __name__ == "__main__": + test = MultiDatacenterApi({}) + test.compute_profile('dc1','vnf1', 'image',network='',command='test',other='other') +''' +