fix ips not set in sliver.ip
diff --git a/planetstack/openstack_observer/steps/sync_sliver_ips.py b/planetstack/openstack_observer/steps/sync_sliver_ips.py
index bd1d572..8ce78f0 100644
--- a/planetstack/openstack_observer/steps/sync_sliver_ips.py
+++ b/planetstack/openstack_observer/steps/sync_sliver_ips.py
@@ -4,6 +4,7 @@
 from planetstack.config import Config
 from observer.openstacksyncstep import OpenStackSyncStep
 from core.models.sliver import Sliver
+from util.logger import Logger, logging
 
 class SyncSliverIps(OpenStackSyncStep):
     provides=[Sliver]
@@ -17,16 +18,29 @@
         return slivers
 
     def sync_record(self, sliver):
-        driver = self.driver.client_driver(tenant=sliver.slice.name, 
-                                           deployment=sliver.node.deployment.name)  
+        driver = self.driver.client_driver(tenant=sliver.slice.name,
+                                           deployment=sliver.node.deployment.name)
         servers = driver.shell.nova.servers.findall(id=sliver.instance_id)
         if not servers:
             return
         server = servers[0]
-        ips = server.addresses.get(sliver.slice.name, [])
-        if not ips:
-            return
-        sliver.ip = ips[0]['addr']
-        if sliver.ip:
+
+        # First try to grab the dedicated public address
+        # NOTE: "ext-net" is hardcoded here.
+        ip = None
+        ext_net_addrs = server.addresses.get("ext-net")

+        if ext_net_addrs:

+            ip = ext_net_addrs[0]["addr"]

+

+        # If there was no public address, then grab the first address in the

+        # list.

+        if not ip:

+            if server.addresses:

+                addrs = server.addresses.values()[0]

+                if addrs:

+                    ip = addrs[0]["addr"]
+
+        if ip and ip!=sliver.ip:
+            sliver.ip = ip
             sliver.save()
-            logger.info("saved sliver ip: %s %s" % (sliver, ips[0]))
+            logger.info("saved sliver ip: %s %s" % (sliver, ip))