X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=planetstack%2Fhpc_observer%2Fsteps%2Fsync_originserver.py;h=92ac0f4f70de43497e7a7ca02eb5fe949588abdf;hb=7c30a429254eaf1cd2fe6721f783c2d3cb7e8d67;hp=e57c282247dcced4c74c7922a621546ee47a8859;hpb=88be16c0264985f0b6fa16a7f4c047bd598115a7;p=plstackapi.git diff --git a/planetstack/hpc_observer/steps/sync_originserver.py b/planetstack/hpc_observer/steps/sync_originserver.py index e57c282..92ac0f4 100644 --- a/planetstack/hpc_observer/steps/sync_originserver.py +++ b/planetstack/hpc_observer/steps/sync_originserver.py @@ -24,8 +24,22 @@ class SyncOriginServer(SyncStep, HpcLibrary): SyncStep.__init__(self, **args) HpcLibrary.__init__(self) - def fetch_pending(self): - return OriginServer.objects.filter(Q(enacted__lt=F('updated')) | Q(enacted=None)) + def fetch_pending(self, deleted): + self.sanity_check() + + return SyncStep.fetch_pending(self, deleted) + + def sanity_check(self): + # sanity check to make sure our PS objects have CMI objects behind them + all_ors_ids = [x["origin_server_id"] for x in self.client.onev.ListAll("OriginServer")] + for ors in OriginServer.objects.all(): + if (ors.origin_server_id is not None) and (ors.origin_server_id not in all_ors_ids): + # we have an origin server ID, but it doesn't exist in the CMI + # something went wrong + # start over + logger.info("origin server %s was not found on CMI" % ors.origin_server_id) + ors.origin_server_id=None + ors.save() def sync_record(self, ors): logger.info("sync'ing origin server %s" % str(ors)) @@ -55,4 +69,9 @@ class SyncOriginServer(SyncStep, HpcLibrary): url = url[7:] self.client.cob.UpdateContent(ors.origin_server_id, {"url": url}) + ors.silent = True ors.save() + + def delete_record(self, m): + if m.origin_server_id is not None: + self.client.onev.Delete("OriginServer", m.origin_server_id)