X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=planetstack%2Fec2_observer%2Fsyncstep.py;fp=planetstack%2Fec2_observer%2Fsyncstep.py;h=dcfea7db80316457798b540fd0991aef9534f14c;hb=63d73c4faba34dab4d688b9c1b49263f043eb04c;hp=187b318c82a50ea303a065cedbe75009508840cd;hpb=fe7ba0aefb3c5b50cb2f9eed68f76b710a6e63c5;p=plstackapi.git diff --git a/planetstack/ec2_observer/syncstep.py b/planetstack/ec2_observer/syncstep.py index 187b318..dcfea7d 100644 --- a/planetstack/ec2_observer/syncstep.py +++ b/planetstack/ec2_observer/syncstep.py @@ -44,12 +44,22 @@ class SyncStep: return def fetch_pending(self, deletion=False): - return [] + # This is the most common implementation of fetch_pending + # Steps should override it if they have their own logic + # for figuring out what objects are outstanding. + main_obj = self.provides[0] + if (not deleted): + objs = main_obj.objects.filter(Q(enacted__lt=F('updated')) | Q(enacted=None)) + else: + objs = main_obj.deleted_objects.all() + + return objs #return Sliver.objects.filter(ip=None) def check_dependencies(self, obj, failed): for dep in self.dependencies: - peer_object = getattr(obj, dep.lower()) + peer_name = dep[0].lower() + dep[1:] # django names are camelCased with the first letter lower + peer_object = getattr(obj, peer_name) if (peer_object.pk==failed.pk): raise FailedDependency