X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=planetstack%2Fhpc_observer%2Fsteps%2Fsync_contentprovider.py;h=cebe1869264592b7cfa60c38d321841376b0fcbb;hb=7c30a429254eaf1cd2fe6721f783c2d3cb7e8d67;hp=b78a7a8f79dbbf1bb21acb6823bb893c9dcb3243;hpb=cd96a8cb85bf35d1c70a7b2183c6f59e4d66b8a7;p=plstackapi.git diff --git a/planetstack/hpc_observer/steps/sync_contentprovider.py b/planetstack/hpc_observer/steps/sync_contentprovider.py index b78a7a8..cebe186 100644 --- a/planetstack/hpc_observer/steps/sync_contentprovider.py +++ b/planetstack/hpc_observer/steps/sync_contentprovider.py @@ -24,11 +24,22 @@ class SyncContentProvider(SyncStep, HpcLibrary): SyncStep.__init__(self, **args) HpcLibrary.__init__(self) - def fetch_pending(self): - return ContentProvider.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_cp_ids = [x["content_provider_id"] for x in self.client.onev.ListAll("ContentProvider")] + for cp in ContentProvider.objects.all(): + if (cp.content_provider_id is not None) and (cp.content_provider_id not in all_cp_ids): + logger.info("Content provider %s was not found on CMI" % cp.content_provider_id) + cp.content_provider_id=None + cp.save() def sync_record(self, cp): - logger.info("sync'ing service provider %s" % str(cp)) + logger.info("sync'ing content provider %s" % str(cp)) account_name = self.make_account_name(cp.name) print "XXX", cp.name, account_name @@ -37,12 +48,20 @@ class SyncContentProvider(SyncStep, HpcLibrary): spid = cp.serviceProvider.service_provider_id - cp_dict = {"account": account_name, "name": cp.name, "enabled": sp.enabled, "service_provider_id": spid} + cp_dict = {"account": account_name, "name": cp.name, "enabled": cp.enabled} + + #print cp_dict - if not cp.service_provider_id: + if not cp.content_provider_id: + cp_dict["service_provider_id"] = spid id = self.client.onev.Create("ContentProvider", cp_dict) cp.content_provider_id = id else: - self.client.onev.Update("ContentProvider", cp_dict) + self.client.onev.Update("ContentProvider", cp.content_provider_id, cp_dict) cp.save() + + def delete_record(self, m): + if m.content_provider_id is not None: + self.client.onev.Delete("ContentProvider", m.content_provider_id) +