X-Git-Url: https://osm.etsi.org/gitweb/?a=blobdiff_plain;f=src%2Femuvim%2Fapi%2Fsonata%2Fdummygatekeeper.py;h=7d1f525ac8eaf3cad1b9b55702b2f704e2fcef3d;hb=c6ace2d9c93a95405acabc7b72a0a6672c01dae3;hp=fb19e45900c0ba94482dbb05c26a205ceab72ea4;hpb=301d2d31fd08d96238336c311cb959af67204256;p=osm%2Fvim-emu.git diff --git a/src/emuvim/api/sonata/dummygatekeeper.py b/src/emuvim/api/sonata/dummygatekeeper.py index fb19e45..7d1f525 100755 --- a/src/emuvim/api/sonata/dummygatekeeper.py +++ b/src/emuvim/api/sonata/dummygatekeeper.py @@ -47,6 +47,7 @@ import pkg_resources from subprocess import Popen from random import randint import ipaddress +import copy logging.basicConfig() LOG = logging.getLogger("sonata-dummy-gatekeeper") @@ -97,6 +98,8 @@ ELAN_SUBNETS = generate_subnets('10.20', 0, subnet_size=50, mask=24) # 10.30.xxx.0/30 ELINE_SUBNETS = generate_subnets('10.30', 0, subnet_size=50, mask=30) +# path to the VNFD for the SAP VNF that is deployed as internal SAP point +SAP_VNFD=None class Gatekeeper(object): @@ -247,6 +250,12 @@ class Service(object): for v in vnf_instances: self._stop_vnfi(v) + for sap_name in self.saps_ext: + ext_sap = self.saps[sap_name] + target_dc = ext_sap.get("dc") + target_dc.removeExternalSAP(sap_name, ext_sap['net']) + LOG.info("Stopping the SAP instance: %r in DC %r" % (sap_name, target_dc)) + if not GK_STANDALONE_MODE: # remove placement? # self._remove_placement(RoundRobinPlacement) @@ -484,7 +493,6 @@ class Service(object): # create list of all SAPs # check if we need to deploy management ports if USE_DOCKER_MGMT: - LOG.debug("nsd: {0}".format(self.nsd)) SAPs = [p for p in self.nsd["connection_points"] if 'management' not in p.get('type')] else: SAPs = [p for p in self.nsd["connection_points"]] @@ -508,7 +516,10 @@ class Service(object): # Each Service Access Point (connection_point) in the nsd is getting its own container (default) elif sap["type"] == "internal" or sap["type"] == "management": # add SAP to self.vnfds - sapfile = pkg_resources.resource_filename(__name__, "sap_vnfd.yml") + if SAP_VNFD is None: + sapfile = pkg_resources.resource_filename(__name__, "sap_vnfd.yml") + else: + sapfile = SAP_VNFD sap_vnfd = load_yaml(sapfile) sap_vnfd["connection_points"][0]["id"] = sap_interface sap_vnfd["name"] = sap_docker_name @@ -944,8 +955,10 @@ class Packages(fr.Resource): # first stop and delete any other running services if AUTO_DELETE: - for service_uuid in GK.services: - for instance_uuid in GK.services[service_uuid].instances: + service_list = copy.copy(GK.services) + for service_uuid in service_list: + instances_list = copy.copy(GK.services[service_uuid].instances) + for instance_uuid in instances_list: # valid service and instance UUID, stop service GK.services.get(service_uuid).stop_service(instance_uuid) LOG.info("service instance with uuid %r stopped." % instance_uuid)