diff --git a/tools/test/topos/obeliskHostCheck.py b/tools/test/topos/obeliskHostCheck.py
new file mode 100755
index 0000000..e928f89
--- /dev/null
+++ b/tools/test/topos/obeliskHostCheck.py
@@ -0,0 +1,91 @@
+#!/usr/bin/python
+
+import sys
+import os
+import json
+
+# TODO: if none given, use OCI
+try:
+    onosIp = sys.argv[1]
+    print "Reading hosts view from ONOS node " + onosIp + ":"
+except Exception as e:
+    print "Error reading ONOS IP arguement"
+    print e
+# Grab the json objects from ONOS
+output = os.popen("onos " + onosIp + " \"hosts -j\"" )
+hosts = json.loads( output.read() )
+#hosts = json.loads( output.split( 'Logging in as karaf\n' )[1] )
+
+hostAttachment = True
+# FIXME: topo-HA/obelisk specific mappings:
+# key is mac and value is dpid
+mappings = {}
+for i in range( 1, 29 ):  # hosts 1 through 28
+    # set up correct variables:
+    macId = "00:" * 5 + hex( i ).split( "0x" )[1].upper().zfill(2)
+    if i == 1:
+        deviceId = "1000".zfill(16)
+    elif i == 2:
+        deviceId = "2000".zfill(16)
+    elif i == 3:
+        deviceId = "3000".zfill(16)
+    elif i == 4:
+        deviceId = "3004".zfill(16)
+    elif i == 5:
+        deviceId = "5000".zfill(16)
+    elif i == 6:
+        deviceId = "6000".zfill(16)
+    elif i == 7:
+        deviceId = "6007".zfill(16)
+    elif i >= 8 and i <= 17:
+        dpid = '3' + str( i ).zfill( 3 )
+        deviceId = dpid.zfill(16)
+    elif i >= 18 and i <= 27:
+        dpid = '6' + str( i ).zfill( 3 )
+        deviceId = dpid.zfill(16)
+    elif i == 28:
+        deviceId = "2800".zfill(16)
+    mappings[ macId ] = deviceId
+
+if hosts or "Error" not in hosts:
+    if hosts == []:
+        print "WARNING: There are no hosts discovered"
+    else:
+        for host in hosts:
+            mac = None
+            location = None
+            device = None
+            port = None
+            try:
+                mac = host.get( 'mac' )
+                assert mac, "mac field could not be found for this host object"
+
+                location = host.get( 'location' )
+                assert location, "location field could not be found for this host object"
+
+                # Trim the protocol identifier off deviceId
+                device = str( location.get( 'elementId' ) ).split(':')[1]
+                assert device, "elementId field could not be found for this host location object"
+
+                port = location.get( 'port' )
+                assert port, "port field could not be found for this host location object"
+
+                # Now check if this matches where they should be
+                if mac and device and port:
+                    if device != mappings[ str( mac ) ]:
+                        print "The attachment device is incorrect for host " + str( mac ) +\
+                              ". Expected: " + mappings[ str( mac ) ] + "; Actual: " + device
+                        hostAttachment = False
+                    if str( port ) != "1":
+                        print "The attachment port is incorrect for host " + str( mac ) +\
+                              ". Expected: 1; Actual: " + str( port)
+                        hostAttachment = False
+                else:
+                    hostAttachment = False
+            except AssertionError as e:
+                print "ERROR: Json object not as expected:"
+                print e
+                print "host object: " + repr( host )
+                hostAttachment = False
+else:
+    print "No hosts json output or \"Error\" in output. hosts = " + repr( hosts )
