diff --git a/edge-monitoring/VERSION b/edge-monitoring/VERSION
index 9e11b32..d15723f 100644
--- a/edge-monitoring/VERSION
+++ b/edge-monitoring/VERSION
@@ -1 +1 @@
-0.3.1
+0.3.2
diff --git a/edge-monitoring/edge_monitoring_server.py b/edge-monitoring/edge_monitoring_server.py
index 8ac3ea5..1bea10c 100755
--- a/edge-monitoring/edge_monitoring_server.py
+++ b/edge-monitoring/edge_monitoring_server.py
@@ -180,6 +180,20 @@
     return jsonify({'edge': req_edge}), 201
 
 
+@app.route('/edges/<string:name>', methods=['DELETE'])
+def delete_edge(name):
+    print("delete edge request " + name)
+    result = False
+    for i in range(len(edges)):
+        if edges[i]['name'] == name:
+            del edges[i]
+            result = True
+            break
+    if not result:
+        abort(404)
+    return jsonify({'result': True})
+
+
 if __name__ == '__main__':
     if SECRET_ICAL_URL:
         print(" * Starting maintenance calendar polling thread")
diff --git a/edge-monitoring/test_edge_monitoring_server.py b/edge-monitoring/test_edge_monitoring_server.py
index cf26f88..cb3a78a 100755
--- a/edge-monitoring/test_edge_monitoring_server.py
+++ b/edge-monitoring/test_edge_monitoring_server.py
@@ -18,6 +18,18 @@
 import edge_monitoring_server as ems
 import datetime
 import pytz
+import json
+import time
+
+
+test_edge = {
+    'name': 'production-edge-onf-menlo',
+    'status': {
+        'control_plane': 'connected',
+        'user_plane': 'connected'
+    },
+    'last_update': time.time()
+}
 
 
 class MyEvent:
@@ -36,6 +48,9 @@
 
 
 class TestEdgeMonitoringServer(unittest.TestCase):
+    def setUp(self):
+        self.app = ems.app.test_client()
+
     def test_match_location(self):
         event = MyEvent(location = "production-edge-onf-menlo, (Compute)-MP-1-Aether Production")
         self.assertTrue(ems.is_my_event(event, "production-edge-onf-menlo"))
@@ -97,6 +112,29 @@
         now = datetime.datetime(2020, 9, 3, 12, 0, tzinfo=pytz.utc)
         self.assertFalse(ems.in_maintenance_window(events, "production-edge-onf-menlo", now))
 
+    def test_get_edges(self):
+        response = self.app.get('/edges')
+        data = json.loads(response.get_data(as_text=True))
+        self.assertEqual(len(data['edges']), 1)
+        self.assertEqual(data['edges'][0]['name'], 'production-edge-example')
+
+    def test_create_and_delete_edge(self):
+        response = self.app.post('/edges', json=test_edge)
+        data = json.loads(response.get_data(as_text=True))
+        self.assertEqual(data['edge']['name'], 'production-edge-onf-menlo')
+
+        response = self.app.get('/edges')
+        data = json.loads(response.get_data(as_text=True))
+        self.assertEqual(len(data['edges']), 2)
+
+        response = self.app.delete('/edges/production-edge-onf-menlo')
+        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')
+        data = json.loads(response.get_data(as_text=True))
+        self.assertEqual(len(data['edges']), 1)
 
 
 if __name__ == '__main__':
