Sync refactored into abstract steps
[plstackapi.git] / planetstack / observer / openstacksyncstep.py
diff --git a/planetstack/observer/openstacksyncstep.py b/planetstack/observer/openstacksyncstep.py
new file mode 100644 (file)
index 0000000..7bfe9f4
--- /dev/null
@@ -0,0 +1,27 @@
+import os
+import base64
+from syncstep import SyncStep
+
+class OpenStackSyncStep:
+       """ PlanetStack Sync step for copying data to OpenStack 
+       """ 
+       
+       def __init__(self, **args):
+               super(SyncStep,self).__init__(**args)
+               return
+
+       def call(self):
+               pending = self.fetch_pending()
+               failed = []
+               for o in pending:
+                       if (not self.depends_on(o, failed)):
+                               try:
+                                       self.sync_record(o)
+                                       o.enacted = datetime.now() # Is this the same timezone? XXX
+                                       o.save(update_fields=['enacted'])
+                               except:
+                                       failed.append(o)
+
+
+       def __call__(self):
+               return self.call()