From bea873776a074bb64c510d8cf6ab4b21ccc3e591 Mon Sep 17 00:00:00 2001 From: peusterm Date: Wed, 16 Mar 2016 19:37:35 +0100 Subject: [PATCH] Access to DC list in dummy gk --- src/emuvim/api/sonata/__init__.py | 2 +- src/emuvim/api/sonata/dummygatekeeper.py | 29 ++++++++++++++++-------- 2 files changed, 20 insertions(+), 11 deletions(-) diff --git a/src/emuvim/api/sonata/__init__.py b/src/emuvim/api/sonata/__init__.py index 14182c5..541ba67 100644 --- a/src/emuvim/api/sonata/__init__.py +++ b/src/emuvim/api/sonata/__init__.py @@ -40,4 +40,4 @@ class SonataDummyGatekeeperEndpoint(object): logging.debug("Started API endpoint %s" % self) def _api_server_thread(self): - dgk.start_rest_api(self.ip, self.port) + dgk.start_rest_api(self.ip, self.port, self.dcs) diff --git a/src/emuvim/api/sonata/dummygatekeeper.py b/src/emuvim/api/sonata/dummygatekeeper.py index 4241e79..71fb559 100644 --- a/src/emuvim/api/sonata/dummygatekeeper.py +++ b/src/emuvim/api/sonata/dummygatekeeper.py @@ -28,6 +28,7 @@ class Gatekeeper(object): def __init__(self): self.services = dict() + self.dcs = list() LOG.info("Create SONATA dummy gatekeeper.") def register_service_package(self, service_uuid, service): @@ -62,12 +63,18 @@ class Service(object): self.local_docker_files = dict() self.instances = dict() - def start_service(self, service_uuid): + def start_service(self): # TODO implement method - # 1. parse descriptors - # 2. do the corresponding dc.startCompute(name="foobar") calls - # 3. store references to the compute objects in self.instantiations - pass + instance_uuid = str(uuid.uuid4()) + # 1. parse descriptors and get name of each docker container + for vnfd in self.vnfds.itervalues(): + for u in vnfd.get("virtual_deployment_units"): + docker_name = u.get("vm_image") + # 2. do the corresponding dc.startCompute(name="foobar") calls + print "start %r" % docker_name + print "available dcs: %r " % GK.dcs + # 3. store references to the compute objects in self.instantiations + return instance_uuid def onboard(self): """ @@ -217,12 +224,13 @@ class Instantiations(fr.Resource): """ # TODO implement method (start real service) json_data = request.get_json(force=True) - service_uuid = json_data.get("service_uuid") - if service_uuid is not None: - service_instance_uuid = str(uuid.uuid4()) + service_uuid = list(GK.services.iterkeys())[0] #json_data.get("service_uuid") # TODO only for quick testing + if service_uuid in GK.services: LOG.info("Starting service %r" % service_uuid) + service_instance_uuid = GK.services.get(service_uuid).start_service() + LOG.info("Service started. Instance id: %r" % service_instance_uuid) return {"service_instance_uuid": service_instance_uuid} - return None + return "Service not found", 404 def get(self): """ @@ -244,7 +252,8 @@ api.add_resource(Packages, '/api/packages') api.add_resource(Instantiations, '/api/instantiations') -def start_rest_api(host, port): +def start_rest_api(host, port, datacenters=list()): + GK.dcs = datacenters # start the Flask server (not the best performance but ok for our use case) app.run(host=host, port=port, -- 2.25.1