X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=planetstack%2Fhpc_observer%2Fsteps%2Fsync_serviceprovider.py;h=19c6db3c9bee1aa5728e1589a2060fe9d5dddb13;hb=0d718ab944fcf3a7a943e3652fa9746529510d78;hp=d6820d65a594418c03d01f1883e9df05a603e8dc;hpb=f52084579318ff0ca52115af40c3a6b05f17446e;p=plstackapi.git diff --git a/planetstack/hpc_observer/steps/sync_serviceprovider.py b/planetstack/hpc_observer/steps/sync_serviceprovider.py index d6820d6..19c6db3 100644 --- a/planetstack/hpc_observer/steps/sync_serviceprovider.py +++ b/planetstack/hpc_observer/steps/sync_serviceprovider.py @@ -6,7 +6,6 @@ from planetstack.config import Config from observer.syncstep import SyncStep from core.models import Service from hpc.models import ServiceProvider -from requestrouter.models import RequestRouterService from util.logger import Logger, logging # hpclibrary will be in steps/.. @@ -25,17 +24,33 @@ class SyncServiceProvider(SyncStep, HpcLibrary): SyncStep.__init__(self, **args) HpcLibrary.__init__(self) - def fetch_pending(self): - return ServiceProvider.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_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) print "XXX", sp.name, account_name + sp_dict = {"account": account_name, "name": sp.name, "enabled": sp.enabled} if not sp.service_provider_id: - id = self.client.onev.Create("ServiceProvider", {"account": account_name, "name": sp.name, "enabled": sp.enabled}) + id = self.client.onev.Create("ServiceProvider", sp_dict) sp.service_provider_id = id else: - self.client.onev.Update("ServiceProvider", {"account": account_name, "name": sp.name, "enabled": sp.enabled}) + self.client.onev.Update("ServiceProvider", sp.service_provider_id, sp_dict) sp.save() + + def delete_record(self, m): + print "XXX delete service provider", m + self.client.onev.Delete("ServiceProvider", m.service_provider_id)