Sync refactored into abstract steps
[plstackapi.git] / planetstack / observer / steps / sync_sliver_ips.py
diff --git a/planetstack/observer/steps/sync_sliver_ips.py b/planetstack/observer/steps/sync_sliver_ips.py
new file mode 100644 (file)
index 0000000..4421ca5
--- /dev/null
@@ -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]))