AETHER-1027 Remove deleted edge from Prometheus metrics

Change-Id: Ia870e9c9835b1bbb7d23839134173fff360811c4
diff --git a/edge-monitoring/Makefile b/edge-monitoring/Makefile
index 0fc83de..f199fa4 100644
--- a/edge-monitoring/Makefile
+++ b/edge-monitoring/Makefile
@@ -57,8 +57,8 @@
 docker-push:
 	docker push ${ADAPTER_IMAGENAME}
 
-venv: ${VENVDIR}
-	virtualenv --python=python3.7 ${VENVDIR};\
+${VENVDIR}:
+	virtualenv --python=python3 ${VENVDIR};\
         source ./${VENVDIR}/bin/activate ; set -u ;\
         pip install -r requirements.txt
 
diff --git a/edge-monitoring/VERSION b/edge-monitoring/VERSION
index 267577d..2b7c5ae 100644
--- a/edge-monitoring/VERSION
+++ b/edge-monitoring/VERSION
@@ -1 +1 @@
-0.4.1
+0.4.2
diff --git a/edge-monitoring/edge_monitoring_server.py b/edge-monitoring/edge_monitoring_server.py
index 05cd859..aa9de66 100755
--- a/edge-monitoring/edge_monitoring_server.py
+++ b/edge-monitoring/edge_monitoring_server.py
@@ -117,6 +117,18 @@
             edge['status']['control_plane'] = "no result"
             edge['status']['user_plane'] = "no result"
 
+def remove_edge_from_metrics(name):
+    try:
+        cp_status.remove(name)
+        up_status.remove(name)
+        last_update.remove(name)
+    except:
+        pass
+
+    try:
+        maint_window.remove(name)
+    except:
+        pass
 
 @app.route('/edges/metrics', methods=['GET'])
 def get_prometheus_metrics():
@@ -197,6 +209,7 @@
     for i in range(len(edges)):
         if edges[i]['name'] == name:
             del edges[i]
+            remove_edge_from_metrics(name)
             result = True
             break
     if not result:
diff --git a/edge-monitoring/test_edge_monitoring_server.py b/edge-monitoring/test_edge_monitoring_server.py
index 5e4748f..423c310 100755
--- a/edge-monitoring/test_edge_monitoring_server.py
+++ b/edge-monitoring/test_edge_monitoring_server.py
@@ -131,10 +131,21 @@
         data = json.loads(response.get_data(as_text=True))
         self.assertEqual(len(data['edges']), 2)
 
+        response = self.app.get('/edges/metrics')
+        data = response.get_data(as_text=True)
+        self.assertTrue('aetheredge_status_control_plane{name="ace-menlo-pixel"} 2.0' in data)
+        self.assertTrue('aetheredge_status_user_plane{name="ace-menlo-pixel"} 2.0' in data)
+        self.assertTrue('aetheredge_last_update{name="ace-menlo-pixel"}' in data)
+
         response = self.app.delete('/edges/ace-menlo-pixel')
         data = json.loads(response.get_data(as_text=True))
         self.assertEqual(data['result'], True)
-        response = self.app.get('/edges', json=test_edge)
+
+        response = self.app.get('/edges/metrics')
+        data = response.get_data(as_text=True)
+        self.assertFalse('aetheredge_status_control_plane{name="ace-menlo-pixel"} 2.0' in data)
+        self.assertFalse('aetheredge_status_user_plane{name="ace-menlo-pixel"} 2.0' in data)
+        self.assertFalse('aetheredge_last_update{name="ace-menlo-pixel"}' in data)
 
         response = self.app.get('/edges')
         data = json.loads(response.get_data(as_text=True))