From 03498ede2b84dcd4a0a9c7392733141d8f99468e Mon Sep 17 00:00:00 2001 From: Serghei Mihai Date: Mon, 11 May 2015 18:24:53 +0200 Subject: [PATCH 1/2] settings: deployed services exposed in KNOWN_SERVICES setting (#6711) Current service domain and secret computed for each service --- hobo/multitenant/settings_loaders.py | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) diff --git a/hobo/multitenant/settings_loaders.py b/hobo/multitenant/settings_loaders.py index af6aa88..f0c1c62 100644 --- a/hobo/multitenant/settings_loaders.py +++ b/hobo/multitenant/settings_loaders.py @@ -1,6 +1,7 @@ import os import json import urlparse +import hashlib from importlib import import_module from django.conf import settings @@ -31,6 +32,39 @@ class FileBaseSettingsLoader(object): raise NotImplemented +class KnownServices(FileBaseSettingsLoader): + FILENAME = 'hobo.json' + + def update_settings_from_path(self, tenant_settings, path): + known_services = {} + with file(path) as f: + hobo_json = json.load(f) + services = hobo_json.get('services') + base_url, secret = [(s.get('base_url'), s.get('secret_key')) + for s in services if s.get('this')][0] + orig = urlparse.urlparse(base_url).netloc.split(':')[0] + secret = hashlib.sha1(orig+secret).hexdigest() + + for service in services: + service_id = service.get('service-id') + + service_data = { + 'url': service.get('base_url'), + 'title': service.get('title'), + 'orig': orig, + 'secret': secret, + 'variables': service.get('variables') + } + if service_id in known_services: + known_services[service_id][service.get('slug')] = service_data + else: + known_services[service_id] = { + service.get('slug'): service_data + } + + tenant_settings.KNOWN_SERVICES = known_services + + class TemplateVars(FileBaseSettingsLoader): FILENAME = 'hobo.json' -- 2.1.4