From cd96a8cb85bf35d1c70a7b2183c6f59e4d66b8a7 Mon Sep 17 00:00:00 2001 From: Scott Baker Date: Mon, 6 Jan 2014 16:31:58 -0800 Subject: [PATCH] contentprovider step, WIP --- .../steps/sync_contentprovider.py | 48 +++++++++++++++++++ 1 file changed, 48 insertions(+) create mode 100644 planetstack/hpc_observer/steps/sync_contentprovider.py diff --git a/planetstack/hpc_observer/steps/sync_contentprovider.py b/planetstack/hpc_observer/steps/sync_contentprovider.py new file mode 100644 index 0000000..b78a7a8 --- /dev/null +++ b/planetstack/hpc_observer/steps/sync_contentprovider.py @@ -0,0 +1,48 @@ +import os +import sys +import base64 +from django.db.models import F, Q +from planetstack.config import Config +from observer.syncstep import SyncStep +from core.models import Service +from hpc.models import ServiceProvider, ContentProvider +from util.logger import Logger, logging + +# hpclibrary will be in steps/.. +parentdir = os.path.join(os.path.dirname(__file__),"..") +sys.path.insert(0,parentdir) + +from hpclib import HpcLibrary + +logger = Logger(level=logging.INFO) + +class SyncContentProvider(SyncStep, HpcLibrary): + provides=[ContentProvider] + requested_interval=0 + + def __init__(self, **args): + SyncStep.__init__(self, **args) + HpcLibrary.__init__(self) + + def fetch_pending(self): + return ContentProvider.objects.filter(Q(enacted__lt=F('updated')) | Q(enacted=None)) + + def sync_record(self, cp): + logger.info("sync'ing service provider %s" % str(cp)) + account_name = self.make_account_name(cp.name) + print "XXX", cp.name, account_name + + if (not cp.serviceProvider) or (not cp.serviceProvider.service_provider_id): + return + + spid = cp.serviceProvider.service_provider_id + + cp_dict = {"account": account_name, "name": cp.name, "enabled": sp.enabled, "service_provider_id": spid} + + if not cp.service_provider_id: + id = self.client.onev.Create("ContentProvider", cp_dict) + cp.content_provider_id = id + else: + self.client.onev.Update("ContentProvider", cp_dict) + + cp.save() -- 2.43.0