Possibility to deploy external (as host interface) and internal (as container, default) SAPs.
This is specified in the NSD, by the connection_points type (external/internal)
diff --git a/src/emuvim/dcemulator/monitoring.py b/src/emuvim/dcemulator/monitoring.py
index 269a7e0..ce24a40 100755
--- a/src/emuvim/dcemulator/monitoring.py
+++ b/src/emuvim/dcemulator/monitoring.py
@@ -34,7 +34,7 @@
from prometheus_client import start_http_server, Summary, Histogram, Gauge, Counter, REGISTRY, CollectorRegistry, \
pushadd_to_gateway, push_to_gateway, delete_from_gateway
import threading
-from subprocess import Popen
+from subprocess import Popen, check_call
import os
import docker
import json
@@ -535,8 +535,15 @@
def _stop_container(self, name):
- container = self.dockercli.containers.get(name)
- container.remove(force=True)
+ #container = self.dockercli.containers.get(name)
+ #container.stop()
+ #container.remove(force=True)
+
+ # the only robust way to stop these containers is via Popen, it seems
+ time.sleep(1)
+ cmd = ['docker', 'rm', '-f', name]
+ Popen(cmd)
+
def update_skewmon(self, vnf_name, resource_name, action):
diff --git a/src/emuvim/dcemulator/node.py b/src/emuvim/dcemulator/node.py
index c5ac9b3..e0eb7d3 100755
--- a/src/emuvim/dcemulator/node.py
+++ b/src/emuvim/dcemulator/node.py
@@ -246,6 +246,24 @@
return True
+ def attachExternalSAP(self, sap_name, sap_ip):
+ # create SAP as OVS internal interface
+ sap_intf = self.switch.attachInternalIntf(sap_name, sap_ip)
+
+ # add this as a link to the DCnetwork graph, so it is available for routing
+ attr_dict2 = {'src_port_id': sap_name, 'src_port_nr': None,
+ 'src_port_name': sap_name,
+ 'dst_port_id': self.switch.ports[sap_intf], 'dst_port_nr': self.switch.ports[sap_intf],
+ 'dst_port_name': sap_intf.name}
+ self.net.DCNetwork_graph.add_edge(sap_name, self.switch.name, attr_dict=attr_dict2)
+
+ attr_dict2 = {'dst_port_id': sap_name, 'dst_port_nr': None,
+ 'dst_port_name': sap_name,
+ 'src_port_id': self.switch.ports[sap_intf], 'src_port_nr': self.switch.ports[sap_intf],
+ 'src_port_name': sap_intf.name}
+ self.net.DCNetwork_graph.add_edge(self.switch.name, sap_name, attr_dict=attr_dict2)
+
+
def listCompute(self):
"""
Return a list of all running containers assigned to this