Propagate backend_status to failed dependent objects
authorSapan Bhatia <gwsapan@gmail.com>
Fri, 22 Aug 2014 07:05:13 +0000 (03:05 -0400)
committerSapan Bhatia <gwsapan@gmail.com>
Fri, 22 Aug 2014 07:05:13 +0000 (03:05 -0400)
planetstack/openstack_observer/syncstep.py

index 6968d2a..bca2d58 100644 (file)
@@ -66,8 +66,10 @@ class SyncStep:
                 peer_object = None
 
             if (peer_object and peer_object.pk==failed.pk and type(peer_object)==type(failed)):
-                raise FailedDependency("Failed dependency for %s:%s peer %s:%s failed  %s:%s" % (obj.__class__.__name__, str(obj.pk\\r
-), peer_object.__class__.__name__, str(peer_object.pk), failed.__class__.__name__, str(failed.pk)))
+                if (obj.backend_status!=peer_object.backend_status):
+                    obj.backend_status = peer_object.backend_status
+                    obj.save(update_fields=['backend_status'])
+                raise FailedDependency("Failed dependency for %s:%s peer %s:%s failed  %s:%s" % (obj.__class__.__name__, str(obj.pk), peer_object.__class__.__name__, str(peer_object.pk), failed.__class__.__name__, str(failed.pk)))
 
     def call(self, failed=[], deletion=False):
         pending = self.fetch_pending(deletion)