projects
/
osm
/
vim-emu.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (from parent 1:
1c4dcf3
)
added stubs for stopping a running service and implemented removing a vnfd
author
edmaas
<eduard.maas@uni-paderborn.de>
Thu, 29 Sep 2016 11:19:22 +0000
(13:19 +0200)
committer
edmaas
<eduard.maas@uni-paderborn.de>
Thu, 29 Sep 2016 11:19:22 +0000
(13:19 +0200)
src/emuvim/api/sonata/dummygatekeeper.py
patch
|
blob
|
history
diff --git
a/src/emuvim/api/sonata/dummygatekeeper.py
b/src/emuvim/api/sonata/dummygatekeeper.py
index
8a9416c
..
2a994bd
100755
(executable)
--- a/
src/emuvim/api/sonata/dummygatekeeper.py
+++ b/
src/emuvim/api/sonata/dummygatekeeper.py
@@
-258,6
+258,18
@@
class Service(object):
LOG.info("Service started. Instance id: %r" % instance_uuid)
return instance_uuid
LOG.info("Service started. Instance id: %r" % instance_uuid)
return instance_uuid
+ def stop_service(self):
+ """
+ This method stops a running service instance.
+ It iterates over all VNFDs, stopping them each
+ and removing them from their data center.
+
+ :return:
+ """
+
+
+
+
def _start_vnfd(self, vnfd):
"""
Start a single VNFD of this service
def _start_vnfd(self, vnfd):
"""
Start a single VNFD of this service
@@
-296,6
+308,20
@@
class Service(object):
vnfi = target_dc.startCompute(self.vnf_name2docker_name[vnf_name], network=intfs, image=docker_name, flavor_name="small")
return vnfi
vnfi = target_dc.startCompute(self.vnf_name2docker_name[vnf_name], network=intfs, image=docker_name, flavor_name="small")
return vnfi
+ def _stop_vnfd(self, vnf_name):
+ """
+ Stop a VNFD specified by its name.
+
+ :param vnf_name: Name of the vnf to be stopped
+ :return:
+ """
+ if vnf_name not in self.vnfds:
+ raise Exception("VNFD with name %s not found." % vnf_name)
+ vnfd = self.vnfds[vnf_name]
+ dc = vnfd.get("dc")
+ LOG.info("Stopping %r contained in %r in DC %r" % (vnf_name, self.vnf_name2docker_name[vnf_name], dc)
+ dc.stopCompute(self.vnf_name2docker_name[vnf_name])
+
def _get_vnf_instance(self, instance_uuid, name):
"""
Returns the Docker object for the given VNF name (or Docker name).
def _get_vnf_instance(self, instance_uuid, name):
"""
Returns the Docker object for the given VNF name (or Docker name).
@@
-511,7
+537,7
@@
class RoundRobinDcPlacement(object):
"""
def place(self, nsd, vnfds, dcs):
c = 0
"""
def place(self, nsd, vnfds, dcs):
c = 0
- dcs_list = list(dcs.itervalues())
+ dcs_list = list(dcs.itervalues())
for name, vnfd in vnfds.iteritems():
vnfd["dc"] = dcs_list[c % len(dcs_list)]
c += 1 # inc. c to use next DC
for name, vnfd in vnfds.iteritems():
vnfd["dc"] = dcs_list[c % len(dcs_list)]
c += 1 # inc. c to use next DC
@@
-602,6
+628,22
@@
class Instantiations(fr.Resource):
return {"service_instantiations_list": [
list(s.instances.iterkeys()) for s in GK.services.itervalues()]}
return {"service_instantiations_list": [
list(s.instances.iterkeys()) for s in GK.services.itervalues()]}
+ def delete(self):
+ """
+ Stops a running service specified by its UUID.
+
+ :return:
+ """
+ # try to extract the service UUID from the request
+ json_data = request.get_json(force=True)
+ service_uuid = json_data.get("service_uuid")
+
+ if service_uuid in GK.services:
+ # valid service UUID, stop service
+ GK.services.get(service_uuid).stop_service()
+ return "", 0
+ return "Service not found", 404
+
# create a single, global GK object
GK = Gatekeeper()
# create a single, global GK object
GK = Gatekeeper()