From 0d718ab944fcf3a7a943e3652fa9746529510d78 Mon Sep 17 00:00:00 2001 From: Scott Baker Date: Tue, 23 Sep 2014 17:23:02 -0700 Subject: [PATCH] add sanity check functions --- .../hpc_observer/steps/sync_cdnprefix.py | 14 ++++++++++++++ .../steps/sync_contentprovider.py | 14 ++++++++++++++ .../hpc_observer/steps/sync_originserver.py | 19 ++++++++++++++++++- .../steps/sync_serviceprovider.py | 14 ++++++++++++++ 4 files changed, 60 insertions(+), 1 deletion(-) diff --git a/planetstack/hpc_observer/steps/sync_cdnprefix.py b/planetstack/hpc_observer/steps/sync_cdnprefix.py index adb95db..b773df9 100644 --- a/planetstack/hpc_observer/steps/sync_cdnprefix.py +++ b/planetstack/hpc_observer/steps/sync_cdnprefix.py @@ -24,6 +24,20 @@ class SyncCDNPrefix(SyncStep, HpcLibrary): SyncStep.__init__(self, **args) HpcLibrary.__init__(self) + 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_p_ids = [x["cdn_prefix_id"] for x in self.client.onev.ListAll("CDNPrefix")] + for p in CDNPrefix.objects.all(): + if (p.cdn_prefix_id is not None) and (p.cdn_prefix_id not in all_p_ids): + logger.info("CDN Prefix %s was not found on CMI" % p.cdn_prefix_id) + p.cdn_prefix_id=None + p.save() + def sync_record(self, cp): logger.info("sync'ing cdn prefix %s" % str(cp)) diff --git a/planetstack/hpc_observer/steps/sync_contentprovider.py b/planetstack/hpc_observer/steps/sync_contentprovider.py index e10dca9..c7335d6 100644 --- a/planetstack/hpc_observer/steps/sync_contentprovider.py +++ b/planetstack/hpc_observer/steps/sync_contentprovider.py @@ -24,6 +24,20 @@ class SyncContentProvider(SyncStep, HpcLibrary): SyncStep.__init__(self, **args) HpcLibrary.__init__(self) + 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 content provider %s" % str(cp)) account_name = self.make_account_name(cp.name) diff --git a/planetstack/hpc_observer/steps/sync_originserver.py b/planetstack/hpc_observer/steps/sync_originserver.py index 4f0ba4c..b93f8dd 100644 --- a/planetstack/hpc_observer/steps/sync_originserver.py +++ b/planetstack/hpc_observer/steps/sync_originserver.py @@ -24,6 +24,23 @@ class SyncOriginServer(SyncStep, HpcLibrary): SyncStep.__init__(self, **args) HpcLibrary.__init__(self) + 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)) @@ -45,7 +62,7 @@ class SyncOriginServer(SyncStep, HpcLibrary): id = self.client.onev.Create("OriginServer", ors_dict) ors.origin_server_id = id else: - self.client.onev.Update("OriginServer", ors.origin_server_id, ors_dict) + id = self.client.onev.Update("OriginServer", ors.origin_server_id, ors_dict) # ... something breaks (analytics) if the URL starts with http://, so we # change it in cob after we added it via onev. diff --git a/planetstack/hpc_observer/steps/sync_serviceprovider.py b/planetstack/hpc_observer/steps/sync_serviceprovider.py index 36f2689..19c6db3 100644 --- a/planetstack/hpc_observer/steps/sync_serviceprovider.py +++ b/planetstack/hpc_observer/steps/sync_serviceprovider.py @@ -24,6 +24,20 @@ class SyncServiceProvider(SyncStep, HpcLibrary): SyncStep.__init__(self, **args) HpcLibrary.__init__(self) + 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_sp_ids = [x["service_provider_id"] for x in self.client.onev.ListAll("ServiceProvider")] + for sp in ServiceProvider.objects.all(): + if (sp.service_provider_id is not None) and (sp.service_provider_id not in all_sp_ids): + logger.info("Service provider %s was not found on CMI" % sp.service_provider_id) + sp.service_provider_id=None + sp.save() + def sync_record(self, sp): logger.info("sync'ing service provider %s" % str(sp)) account_name = self.make_account_name(sp.name) -- 2.43.0