Sync refactored into abstract steps
diff --git a/planetstack/observer/steps/sync_sliver_ips.py b/planetstack/observer/steps/sync_sliver_ips.py
new file mode 100644
index 0000000..4421ca5
--- /dev/null
+++ b/planetstack/observer/steps/sync_sliver_ips.py
@@ -0,0 +1,22 @@
+import os
+import base64
+from planetstack.config import Config
+
+class SyncSliverIps(OpenStackSyncStep):
+	provides=[Sliver]
+	def fetch_pending(self):
+		slivers = Sliver.objects.filter(ip=None)
+		return slivers
+
+	def sync_record(self, sliver):
+		self.manager.init_admin(tenant=sliver.slice.name)
+		servers = self.manager.driver.shell.nova.servers.findall(id=sliver.instance_id)
+		if not servers:
+			continue
+		server = servers[0]
+		ips = server.addresses.get(sliver.slice.name, [])
+		if not ips:
+			continue
+		sliver.ip = ips[0]['addr']
+		sliver.save()
+		logger.info("saved sliver ip: %s %s" % (sliver, ips[0]))