diff --git a/edge-monitoring-server/test_edge_monitoring_server.py b/edge-monitoring-server/test_edge_monitoring_server.py
index f365c95..24b8953 100755
--- a/edge-monitoring-server/test_edge_monitoring_server.py
+++ b/edge-monitoring-server/test_edge_monitoring_server.py
@@ -14,7 +14,7 @@
 
 
 test_edge = {
-    'name': 'ace-menlo-pixel',
+    'name': 'ace-menlo-rasp-pi',
     'status': {
         'control_plane': 'connected',
         'user_plane': 'connected'
@@ -49,7 +49,7 @@
 }
 
 test_edge_status_only = {
-    'name': 'ace-menlo-pixel',
+    'name': 'ace-menlo-rasp-pi',
     'status': {
         'control_plane': 'connected',
         'user_plane': 'connected'
@@ -58,7 +58,7 @@
 }
 
 test_edge_no_speedtest = {
-    'name': 'ace-menlo-pixel',
+    'name': 'ace-menlo-rasp-pi',
     'status': {
         'control_plane': 'connected',
         'user_plane': 'connected'
@@ -71,7 +71,7 @@
 }
 
 test_edge_no_signal_quality = {
-    'name': 'ace-menlo-pixel',
+    'name': 'ace-menlo-rasp-pi',
     'status': {
         'control_plane': 'connected',
         'user_plane': 'connected'
@@ -102,7 +102,7 @@
 }
 
 test_edge_no_iperf = {
-    'name': 'ace-menlo-pixel',
+    'name': 'ace-menlo-rasp-pi',
     'status': {
         'control_plane': 'connected',
         'user_plane': 'connected'
@@ -154,57 +154,57 @@
         return self.emulated_time
 
     def _assert_status_metrics_exist(self, data):
-        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)
-        self.assertTrue('aetheredge_connect_test_ok{name="ace-menlo-pixel"} 1.0' in data)
-        self.assertTrue('aetheredge_ping_test_ok{name="ace-menlo-pixel"} 1.0' in data)
-        self.assertTrue('aetheredge_e2e_tests_ok{name="ace-menlo-pixel"} 1.0' in data)
-        self.assertTrue('aetheredge_e2e_tests_down{name="ace-menlo-pixel"} 0.0' in data)
+        self.assertTrue('aetheredge_status_control_plane{name="ace-menlo-rasp-pi"} 2.0' in data)
+        self.assertTrue('aetheredge_status_user_plane{name="ace-menlo-rasp-pi"} 2.0' in data)
+        self.assertTrue('aetheredge_last_update{name="ace-menlo-rasp-pi"}' in data)
+        self.assertTrue('aetheredge_connect_test_ok{name="ace-menlo-rasp-pi"} 1.0' in data)
+        self.assertTrue('aetheredge_ping_test_ok{name="ace-menlo-rasp-pi"} 1.0' in data)
+        self.assertTrue('aetheredge_e2e_tests_ok{name="ace-menlo-rasp-pi"} 1.0' in data)
+        self.assertTrue('aetheredge_e2e_tests_down{name="ace-menlo-rasp-pi"} 0.0' in data)
 
     def _assert_speedtest_metrics_exist(self, data):
-        self.assertTrue('aetheredge_ping_dns_test_min{name="ace-menlo-pixel"} 2.0' in data)
-        self.assertTrue('aetheredge_ping_dns_test_avg{name="ace-menlo-pixel"} 4.0' in data)
-        self.assertTrue('aetheredge_ping_dns_test_max{name="ace-menlo-pixel"} 6.0' in data)
-        self.assertTrue('aetheredge_ping_dns_test_stddev{name="ace-menlo-pixel"} 1.0' in data)
-        self.assertTrue('aetheredge_ping_iperf_server_test_min{name="ace-menlo-pixel"} 1.0' in data)
-        self.assertTrue('aetheredge_ping_iperf_server_test_avg{name="ace-menlo-pixel"} 3.0' in data)
-        self.assertTrue('aetheredge_ping_iperf_server_test_max{name="ace-menlo-pixel"} 5.0' in data)
-        self.assertTrue('aetheredge_ping_iperf_server_test_stddev{name="ace-menlo-pixel"} 1.0' in data)
-        self.assertTrue('aetheredge_iperf_cluster_downlink_test{name="ace-menlo-pixel"} 100.0' in data)
-        self.assertTrue('aetheredge_iperf_cluster_uplink_test{name="ace-menlo-pixel"} 10.0' in data)
+        self.assertTrue('aetheredge_ping_dns_test_min{name="ace-menlo-rasp-pi"} 2.0' in data)
+        self.assertTrue('aetheredge_ping_dns_test_avg{name="ace-menlo-rasp-pi"} 4.0' in data)
+        self.assertTrue('aetheredge_ping_dns_test_max{name="ace-menlo-rasp-pi"} 6.0' in data)
+        self.assertTrue('aetheredge_ping_dns_test_stddev{name="ace-menlo-rasp-pi"} 1.0' in data)
+        self.assertTrue('aetheredge_ping_iperf_server_test_min{name="ace-menlo-rasp-pi"} 1.0' in data)
+        self.assertTrue('aetheredge_ping_iperf_server_test_avg{name="ace-menlo-rasp-pi"} 3.0' in data)
+        self.assertTrue('aetheredge_ping_iperf_server_test_max{name="ace-menlo-rasp-pi"} 5.0' in data)
+        self.assertTrue('aetheredge_ping_iperf_server_test_stddev{name="ace-menlo-rasp-pi"} 1.0' in data)
+        self.assertTrue('aetheredge_iperf_cluster_downlink_test{name="ace-menlo-rasp-pi"} 100.0' in data)
+        self.assertTrue('aetheredge_iperf_cluster_uplink_test{name="ace-menlo-rasp-pi"} 10.0' in data)
 
     def _assert_signal_quality_metrics_exist(self, data):
-        self.assertTrue('aetheredge_signal_quality_rsrq{name="ace-menlo-pixel"} 30' in data)
-        self.assertTrue('aetheredge_signal_quality_rsrp{name="ace-menlo-pixel"} 80' in data)
+        self.assertTrue('aetheredge_signal_quality_rsrq{name="ace-menlo-rasp-pi"} 30' in data)
+        self.assertTrue('aetheredge_signal_quality_rsrp{name="ace-menlo-rasp-pi"} 80' in data)
 
     def test_match_location(self):
-        event = MyEvent(location = "ace-menlo-pixel-production")
-        self.assertTrue(ems.is_my_event(event, "ace-menlo-pixel"))
+        event = MyEvent(location = "ace-menlo-rasp-pi-production")
+        self.assertTrue(ems.is_my_event(event, "ace-menlo-rasp-pi"))
         event = MyEvent(location = "(Compute)-MP-1-Aether Production")
-        self.assertTrue(ems.is_my_event(event, "ace-menlo-pixel"))
+        self.assertTrue(ems.is_my_event(event, "ace-menlo-rasp-pi"))
 
     def test_match_description(self):
-        event = MyEvent(description = "ace-menlo-pixel-production")
-        self.assertTrue(ems.is_my_event(event, "ace-menlo-pixel"))
+        event = MyEvent(description = "ace-menlo-rasp-pi-production")
+        self.assertTrue(ems.is_my_event(event, "ace-menlo-rasp-pi"))
         event = MyEvent(description = "(Compute)-MP-1-Aether Production")
-        self.assertTrue(ems.is_my_event(event, "ace-menlo-pixel"))
+        self.assertTrue(ems.is_my_event(event, "ace-menlo-rasp-pi"))
 
     def test_match_summary(self):
-        event = MyEvent(summary = "ace-menlo-pixel-production")
-        self.assertTrue(ems.is_my_event(event, "ace-menlo-pixel"))
+        event = MyEvent(summary = "ace-menlo-rasp-pi-production")
+        self.assertTrue(ems.is_my_event(event, "ace-menlo-rasp-pi"))
         event = MyEvent(summary = "(Compute)-MP-1-Aether Production")
-        self.assertTrue(ems.is_my_event(event, "ace-menlo-pixel"))
+        self.assertTrue(ems.is_my_event(event, "ace-menlo-rasp-pi"))
 
     def test_no_match(self):
-        event = MyEvent(summary = "ace-menlo-pixel-production, (Compute)-MP-1-Aether Production")
+        event = MyEvent(summary = "ace-menlo-rasp-pi-production, (Compute)-MP-1-Aether Production")
         self.assertFalse(ems.is_my_event(event, "ace-intel"))
         self.assertFalse(ems.is_my_event(event, "(Compute)-MP-1-Aether Staging"))
         self.assertFalse(ems.is_my_event(event, "ace-menlo"))
 
     def test_missing_field(self):
         event = MyEventNoLoc(description = "(Compute)-MP-1-Aether Production")
-        self.assertTrue(ems.is_my_event(event, "ace-menlo-pixel"))
+        self.assertTrue(ems.is_my_event(event, "ace-menlo-rasp-pi"))
 
     def test_in_window(self):
         events = []
@@ -212,25 +212,25 @@
         events.append(MyEvent(location = "(Compute)-MP-1-Aether Production",
             start = now - datetime.timedelta(hours=1),
             end = now + datetime.timedelta(hours=1)))
-        self.assertTrue(ems.in_maintenance_window(events, "ace-menlo-pixel", now))
+        self.assertTrue(ems.in_maintenance_window(events, "ace-menlo-rasp-pi", now))
         self.assertFalse(ems.in_maintenance_window(events, "ace-tucson", now))
 
     def test_not_in_window(self):
         events = []
         now = datetime.datetime.now(pytz.utc)
-        events.append(MyEvent(location = "ace-menlo-pixel-production",
+        events.append(MyEvent(location = "ace-menlo-rasp-pi-production",
             start = now + datetime.timedelta(hours=1),
             end = now + datetime.timedelta(hours=2)))
-        self.assertFalse(ems.in_maintenance_window(events, "ace-menlo-pixel", now))
+        self.assertFalse(ems.in_maintenance_window(events, "ace-menlo-rasp-pi", now))
 
     def test_no_events(self):
         events = []
         now = datetime.datetime.now(pytz.utc)
-        self.assertFalse(ems.in_maintenance_window(events, "ace-menlo-pixel", now))
+        self.assertFalse(ems.in_maintenance_window(events, "ace-menlo-rasp-pi", now))
 
     def test_all_day_events(self):
         events = []
-        events.append(MyEvent(location = "ace-menlo-pixel-production",
+        events.append(MyEvent(location = "ace-menlo-rasp-pi-production",
             start = datetime.datetime(2020, 9, 2, 0, 0),
             end = datetime.datetime(2020, 9, 3, 0, 0),
             all_day = True))
@@ -238,10 +238,10 @@
         ems.process_all_day_events(events)
 
         now = datetime.datetime(2020, 9, 2, 12, 0, tzinfo=pytz.utc)
-        self.assertTrue(ems.in_maintenance_window(events, "ace-menlo-pixel", now))
+        self.assertTrue(ems.in_maintenance_window(events, "ace-menlo-rasp-pi", now))
 
         now = datetime.datetime(2020, 9, 3, 12, 0, tzinfo=pytz.utc)
-        self.assertFalse(ems.in_maintenance_window(events, "ace-menlo-pixel", now))
+        self.assertFalse(ems.in_maintenance_window(events, "ace-menlo-rasp-pi", now))
 
     def test_get_edges(self):
         response = self.app.get('/edges')
@@ -252,7 +252,7 @@
     def test_create_and_delete_edge_legacy(self):
         response = self.app.post('/edges', json=test_edge)
         data = json.loads(response.get_data(as_text=True))
-        self.assertEqual(data['edge']['name'], 'ace-menlo-pixel')
+        self.assertEqual(data['edge']['name'], 'ace-menlo-rasp-pi')
 
         response = self.app.get('/edges')
         data = json.loads(response.get_data(as_text=True))
@@ -266,14 +266,14 @@
         self._assert_speedtest_metrics_exist(data)
         self._assert_signal_quality_metrics_exist(data)
 
-        response = self.app.delete('/edges/ace-menlo-pixel')
+        response = self.app.delete('/edges/ace-menlo-rasp-pi')
         data = json.loads(response.get_data(as_text=True))
         self.assertEqual(data['result'], True)
 
         response = self.app.get('/edges/metrics')
         data = response.get_data(as_text=True)
         # print(data)
-        self.assertFalse('ace-menlo-pixel' in data)
+        self.assertFalse('ace-menlo-rasp-pi' in data)
 
         response = self.app.get('/edges')
         data = json.loads(response.get_data(as_text=True))
@@ -282,7 +282,7 @@
     def test_create_and_delete_edge(self):
         response = self.app.post('/testresults', json=test_edge)
         data = json.loads(response.get_data(as_text=True))
-        self.assertEqual(data['edge']['name'], 'ace-menlo-pixel')
+        self.assertEqual(data['edge']['name'], 'ace-menlo-rasp-pi')
 
         response = self.app.get('/edges')
         data = json.loads(response.get_data(as_text=True))
@@ -296,14 +296,14 @@
         self._assert_speedtest_metrics_exist(data)
         self._assert_signal_quality_metrics_exist(data)
 
-        response = self.app.delete('/testresults/ace-menlo-pixel')
+        response = self.app.delete('/testresults/ace-menlo-rasp-pi')
         data = json.loads(response.get_data(as_text=True))
         self.assertEqual(data['result'], True)
 
         response = self.app.get('/edges/metrics')
         data = response.get_data(as_text=True)
         # print(data)
-        self.assertFalse('ace-menlo-pixel' in data)
+        self.assertFalse('ace-menlo-rasp-pi' in data)
 
         response = self.app.get('/edges')
         data = json.loads(response.get_data(as_text=True))
@@ -312,7 +312,7 @@
     def test_create_and_delete_edge_speed_test(self):
         response = self.app.post('/testresults', json=test_edge)
         data = json.loads(response.get_data(as_text=True))
-        self.assertEqual(data['edge']['name'], 'ace-menlo-pixel')
+        self.assertEqual(data['edge']['name'], 'ace-menlo-rasp-pi')
 
         response = self.app.get('/edges/metrics')
         data = response.get_data(as_text=True)
@@ -320,71 +320,71 @@
 
         self._assert_speedtest_metrics_exist(data)
 
-        response = self.app.delete('/testresults/ace-menlo-pixel')
+        response = self.app.delete('/testresults/ace-menlo-rasp-pi')
         data = json.loads(response.get_data(as_text=True))
         self.assertEqual(data['result'], True)
 
     def test_backwards_compatible_status_only(self):
         response = self.app.post('/testresults', json=test_edge_status_only)
         data = json.loads(response.get_data(as_text=True))
-        self.assertEqual(data['edge']['name'], 'ace-menlo-pixel')
+        self.assertEqual(data['edge']['name'], 'ace-menlo-rasp-pi')
 
         response = self.app.get('/edges/metrics')
         data = response.get_data(as_text=True)
         # print(data)
 
-        self.assertFalse('aetheredge_signal_quality_rsrq{name="ace-menlo-pixel"}' in data)
-        self.assertFalse('aetheredge_signal_quality_rsrp{name="ace-menlo-pixel"}' in data)
+        self.assertFalse('aetheredge_signal_quality_rsrq{name="ace-menlo-rasp-pi"}' in data)
+        self.assertFalse('aetheredge_signal_quality_rsrp{name="ace-menlo-rasp-pi"}' in data)
 
         self._assert_status_metrics_exist(data)
 
-        response = self.app.delete('/testresults/ace-menlo-pixel')
+        response = self.app.delete('/testresults/ace-menlo-rasp-pi')
         data = json.loads(response.get_data(as_text=True))
         self.assertEqual(data['result'], True)
 
     def test_backwards_compatible_no_speedtest(self):
         response = self.app.post('/testresults', json=test_edge_no_speedtest)
         data = json.loads(response.get_data(as_text=True))
-        self.assertEqual(data['edge']['name'], 'ace-menlo-pixel')
+        self.assertEqual(data['edge']['name'], 'ace-menlo-rasp-pi')
 
         response = self.app.get('/edges/metrics')
         data = response.get_data(as_text=True)
         # print(data)
 
-        self.assertFalse('aetheredge_ping_dns_test_min{name="ace-menlo-pixel"}' in data)
-        self.assertFalse('aetheredge_ping_dns_test_avg{name="ace-menlo-pixel"}' in data)
-        self.assertFalse('aetheredge_ping_dns_test_max{name="ace-menlo-pixel"}' in data)
-        self.assertFalse('aetheredge_ping_dns_test_stddev{name="ace-menlo-pixel"}' in data)
-        self.assertFalse('aetheredge_ping_iperf_server_test_min{name="ace-menlo-pixel"}' in data)
-        self.assertFalse('aetheredge_ping_iperf_server_test_avg{name="ace-menlo-pixel"}' in data)
-        self.assertFalse('aetheredge_ping_iperf_server_test_max{name="ace-menlo-pixel"}' in data)
-        self.assertFalse('aetheredge_ping_iperf_server_test_stddev{name="ace-menlo-pixel"}' in data)
-        self.assertFalse('aetheredge_iperf_cluster_downlink_test{name="ace-menlo-pixel"}' in data)
-        self.assertFalse('aetheredge_iperf_cluster_uplink_test{name="ace-menlo-pixel"}' in data)
+        self.assertFalse('aetheredge_ping_dns_test_min{name="ace-menlo-rasp-pi"}' in data)
+        self.assertFalse('aetheredge_ping_dns_test_avg{name="ace-menlo-rasp-pi"}' in data)
+        self.assertFalse('aetheredge_ping_dns_test_max{name="ace-menlo-rasp-pi"}' in data)
+        self.assertFalse('aetheredge_ping_dns_test_stddev{name="ace-menlo-rasp-pi"}' in data)
+        self.assertFalse('aetheredge_ping_iperf_server_test_min{name="ace-menlo-rasp-pi"}' in data)
+        self.assertFalse('aetheredge_ping_iperf_server_test_avg{name="ace-menlo-rasp-pi"}' in data)
+        self.assertFalse('aetheredge_ping_iperf_server_test_max{name="ace-menlo-rasp-pi"}' in data)
+        self.assertFalse('aetheredge_ping_iperf_server_test_stddev{name="ace-menlo-rasp-pi"}' in data)
+        self.assertFalse('aetheredge_iperf_cluster_downlink_test{name="ace-menlo-rasp-pi"}' in data)
+        self.assertFalse('aetheredge_iperf_cluster_uplink_test{name="ace-menlo-rasp-pi"}' in data)
 
         self._assert_status_metrics_exist(data)
         self._assert_signal_quality_metrics_exist(data)
 
-        response = self.app.delete('/testresults/ace-menlo-pixel')
+        response = self.app.delete('/testresults/ace-menlo-rasp-pi')
         data = json.loads(response.get_data(as_text=True))
         self.assertEqual(data['result'], True)
 
     def test_backwards_compatible_no_signal_quality(self):
         response = self.app.post('/testresults', json=test_edge_no_signal_quality)
         data = json.loads(response.get_data(as_text=True))
-        self.assertEqual(data['edge']['name'], 'ace-menlo-pixel')
+        self.assertEqual(data['edge']['name'], 'ace-menlo-rasp-pi')
 
         response = self.app.get('/edges/metrics')
         data = response.get_data(as_text=True)
         # print(data)
 
-        self.assertFalse('aetheredge_signal_quality_rsrq{name="ace-menlo-pixel"}' in data)
-        self.assertFalse('aetheredge_signal_quality_rsrp{name="ace-menlo-pixel"}' in data)
+        self.assertFalse('aetheredge_signal_quality_rsrq{name="ace-menlo-rasp-pi"}' in data)
+        self.assertFalse('aetheredge_signal_quality_rsrp{name="ace-menlo-rasp-pi"}' in data)
 
         self._assert_status_metrics_exist(data)
         self._assert_speedtest_metrics_exist(data)
 
-        response = self.app.delete('/testresults/ace-menlo-pixel')
+        response = self.app.delete('/testresults/ace-menlo-rasp-pi')
         data = json.loads(response.get_data(as_text=True))
         self.assertEqual(data['result'], True)
 
@@ -401,7 +401,7 @@
 
         self.emulated_time += (ems.NO_RESULT_THRESHOLD + 1)
 
-        response = self.app.get('/edges/ace-menlo-pixel')
+        response = self.app.get('/edges/ace-menlo-rasp-pi')
         data = json.loads(response.get_data(as_text=True))
         # print(json.dumps(data, indent=2))
 
@@ -414,20 +414,20 @@
     def test_backwards_compatible_no_iperf(self):
         response = self.app.post('/testresults', json=test_edge_no_iperf)
         data = json.loads(response.get_data(as_text=True))
-        self.assertEqual(data['edge']['name'], 'ace-menlo-pixel')
+        self.assertEqual(data['edge']['name'], 'ace-menlo-rasp-pi')
 
         response = self.app.get('/edges/metrics')
         data = response.get_data(as_text=True)
         # print(data)
 
-        self.assertFalse('aetheredge_iperf_cluster_downlink{name="ace-menlo-pixel"}' in data)
-        self.assertFalse('aetheredge_iperf_cluster_uplink{name="ace-menlo-pixel"}' in data)
-        self.assertFalse('aetheredge_ping_iperf_server_test_min{name="ace-menlo-pixel"}' in data)
-        self.assertFalse('aetheredge_ping_iperf_server_test_avg{name="ace-menlo-pixel"}' in data)
-        self.assertFalse('aetheredge_ping_iperf_server_test_max{name="ace-menlo-pixel"}' in data)
-        self.assertFalse('aetheredge_ping_iperf_server_test_stddev{name="ace-menlo-pixel"}' in data)
+        self.assertFalse('aetheredge_iperf_cluster_downlink{name="ace-menlo-rasp-pi"}' in data)
+        self.assertFalse('aetheredge_iperf_cluster_uplink{name="ace-menlo-rasp-pi"}' in data)
+        self.assertFalse('aetheredge_ping_iperf_server_test_min{name="ace-menlo-rasp-pi"}' in data)
+        self.assertFalse('aetheredge_ping_iperf_server_test_avg{name="ace-menlo-rasp-pi"}' in data)
+        self.assertFalse('aetheredge_ping_iperf_server_test_max{name="ace-menlo-rasp-pi"}' in data)
+        self.assertFalse('aetheredge_ping_iperf_server_test_stddev{name="ace-menlo-rasp-pi"}' in data)
 
-        response = self.app.delete('/testresults/ace-menlo-pixel')
+        response = self.app.delete('/testresults/ace-menlo-rasp-pi')
         data = json.loads(response.get_data(as_text=True))
         self.assertEqual(data['result'], True)
 
@@ -441,7 +441,7 @@
         self.assertEqual(response.status_code, 400)
         response = self.app.get('/edges/metrics')
         data = response.get_data(as_text=True)
-        self.assertFalse('ace-menlo-pixel' in data)
+        self.assertFalse('ace-menlo-rasp-pi' in data)
 
         no_status = deepcopy(test_edge)
         del no_status['status']
@@ -449,7 +449,7 @@
         self.assertEqual(response.status_code, 400)
         response = self.app.get('/edges/metrics')
         data = response.get_data(as_text=True)
-        self.assertFalse('ace-menlo-pixel' in data)
+        self.assertFalse('ace-menlo-rasp-pi' in data)
 
         bad_status = deepcopy(test_edge)
         bad_status['status']['control_plane'] = 1
@@ -457,7 +457,7 @@
         self.assertEqual(response.status_code, 400)
         response = self.app.get('/edges/metrics')
         data = response.get_data(as_text=True)
-        self.assertFalse('ace-menlo-pixel' in data)
+        self.assertFalse('ace-menlo-rasp-pi' in data)
 
         bad_ping_result = deepcopy(test_edge)
         bad_ping_result['speedtest']['ping']['dns']['min'] = "foo"
@@ -465,7 +465,7 @@
         self.assertEqual(response.status_code, 400)
         response = self.app.get('/edges/metrics')
         data = response.get_data(as_text=True)
-        self.assertFalse('ace-menlo-pixel' in data)
+        self.assertFalse('ace-menlo-rasp-pi' in data)
 
         bad_iperf_result = deepcopy(test_edge)
         bad_iperf_result['speedtest']['iperf']['cluster']['uplink'] = "foo"
@@ -473,7 +473,7 @@
         self.assertEqual(response.status_code, 400)
         response = self.app.get('/edges/metrics')
         data = response.get_data(as_text=True)
-        self.assertFalse('ace-menlo-pixel' in data)
+        self.assertFalse('ace-menlo-rasp-pi' in data)
 
         bad_signal_quality = deepcopy(test_edge)
         del bad_signal_quality['signal_quality']['rsrq']
@@ -481,7 +481,7 @@
         self.assertEqual(response.status_code, 400)
         response = self.app.get('/edges/metrics')
         data = response.get_data(as_text=True)
-        self.assertFalse('ace-menlo-pixel' in data)
+        self.assertFalse('ace-menlo-rasp-pi' in data)
 
 if __name__ == '__main__':
     import xmlrunner
