From 7fe5c0fafc321135ef1d124d334b9b4d8489a65a Mon Sep 17 00:00:00 2001 From: Ryan Kelly Date: Mon, 10 Apr 2017 11:49:33 +1000 Subject: [PATCH] Allow piecemeal overrides of tokenserver backend default config. Before this change, you have either have to accept the default config for the tokenserver backend, or specify all config options and hence duplicate info from earlier in the file. With this change you can now just specify anything you want to change and we'll use the defaults for the rest. --- syncserver/__init__.py | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/syncserver/__init__.py b/syncserver/__init__.py index 735229a..64ddc3a 100644 --- a/syncserver/__init__.py +++ b/syncserver/__init__.py @@ -22,6 +22,9 @@ from tokenserver.util import _JSONError logger = logging.getLogger("syncserver") +DEFAULT_TOKENSERVER_BACKEND = "syncserver.staticnode.StaticNodeAssignment" + + def includeme(config): """Install SyncServer application into the given Pyramid configurator.""" # Set the umask so that files are created with secure permissions. @@ -53,11 +56,16 @@ def includeme(config): settings.pop("config", None) if "tokenserver.backend" not in settings: # Default to our simple static node-assignment backend - settings["tokenserver.backend"] =\ - "syncserver.staticnode.StaticNodeAssignment" - settings["tokenserver.sqluri"] = sqluri - settings["tokenserver.node_url"] = public_url - settings["endpoints.sync-1.5"] = "{node}/storage/1.5/{uid}" + settings["tokenserver.backend"] = DEFAULT_TOKENSERVER_BACKEND + if settings["tokenserver.backend"] == DEFAULT_TOKENSERVER_BACKEND: + # Provide some additional defaults for the default backend, + # unless overridden in the config. + if "tokenserver.sqluri" not in settings: + settings["tokenserver.sqluri"] = sqluri + if "tokenserver.node_url" not in settings: + settings["tokenserver.node_url"] = public_url + if "endpoints.sync-1.5" not in settings: + settings["endpoints.sync-1.5"] = "{node}/storage/1.5/{uid}" if "tokenserver.monkey_patch_gevent" not in settings: # Default to no gevent monkey-patching settings["tokenserver.monkey_patch_gevent"] = False