diff options
Diffstat (limited to 'policyhandler/config.py')
-rw-r--r-- | policyhandler/config.py | 89 |
1 files changed, 15 insertions, 74 deletions
diff --git a/policyhandler/config.py b/policyhandler/config.py index 7033096..8e6edf9 100644 --- a/policyhandler/config.py +++ b/policyhandler/config.py @@ -1,8 +1,5 @@ -"""read and use the config""" - -# org.onap.dcae # ================================================================================ -# Copyright (c) 2017 AT&T Intellectual Property. All rights reserved. +# Copyright (c) 2017-2018 AT&T Intellectual Property. All rights reserved. # ================================================================================ # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -19,13 +16,13 @@ # # ECOMP is a trademark and service mark of AT&T Intellectual Property. -import os -import json +"""read and use the config""" + import copy -import re -import base64 +import json import logging import logging.config +import os from .discovery import DiscoveryClient @@ -45,7 +42,7 @@ class Config(object): FIELD_POLICY_ENGINE = "policy_engine" wservice_port = 25577 _logger = logging.getLogger("policy_handler.config") - config = None + settings = None @staticmethod def merge(new_config): @@ -53,23 +50,19 @@ class Config(object): if not new_config: return - if not Config.config: - Config.config = new_config + if not Config.settings: + Config.settings = new_config return new_config = copy.deepcopy(new_config) - Config.config.update(new_config) + Config.settings.update(new_config) @staticmethod def get_system_name(): """find the name of the policy-handler system to be used as the key in consul-kv for config of policy-handler """ - system_name = None - if Config.config: - system_name = Config.config.get(Config.FIELD_SYSTEM) - - return system_name or Config.SERVICE_NAME_POLICY_HANDLER + return (Config.settings or {}).get(Config.FIELD_SYSTEM, Config.SERVICE_NAME_POLICY_HANDLER) @staticmethod def discover(): @@ -78,27 +71,14 @@ class Config(object): new_config = DiscoveryClient.get_value(discovery_key) if not new_config or not isinstance(new_config, dict): - Config._logger.warn("unexpected config from discovery: %s", new_config) + Config._logger.warning("unexpected config from discovery: %s", new_config) return Config._logger.debug("loaded config from discovery(%s): %s", \ discovery_key, json.dumps(new_config)) - Config._logger.debug("config before merge from discovery: %s", json.dumps(Config.config)) + Config._logger.debug("config before merge from discovery: %s", json.dumps(Config.settings)) Config.merge(new_config.get(Config.SERVICE_NAME_POLICY_HANDLER)) - Config._logger.debug("merged config from discovery: %s", json.dumps(Config.config)) - - @staticmethod - def upload_to_discovery(): - """upload the current config settings to the discovery service""" - if not Config.config or not isinstance(Config.config, dict): - Config._logger.error("unexpected config: %s", Config.config) - return - - discovery_key = Config.get_system_name() - latest_config = json.dumps({Config.SERVICE_NAME_POLICY_HANDLER:Config.config}) - DiscoveryClient.put_kv(discovery_key, latest_config) - Config._logger.debug("uploaded config to discovery(%s): %s", \ - discovery_key, latest_config) + Config._logger.info("merged config from discovery: %s", json.dumps(Config.settings)) @staticmethod def load_from_file(file_path=None): @@ -112,7 +92,7 @@ class Config(object): loaded_config = json.load(config_json) if not loaded_config: - Config._logger.info("config not loaded from file: %s", file_path) + Config._logger.warning("config not loaded from file: %s", file_path) return Config._logger.info("config loaded from file: %s", file_path) @@ -122,44 +102,5 @@ class Config(object): Config.wservice_port = loaded_config.get(Config.FIELD_WSERVICE_PORT, Config.wservice_port) Config.merge(loaded_config.get(Config.SERVICE_NAME_POLICY_HANDLER)) + Config._logger.info("config loaded from file: %s", json.dumps(Config.settings)) return True - -class PolicyEngineConfig(object): - """main config of the application""" - # PATH_TO_PROPERTIES = r'logs/policy_engine.properties' - PATH_TO_PROPERTIES = r'tmp/policy_engine.properties' - PYPDP_URL = "PYPDP_URL = {0}{1}, {2}, {3}\n" - CLIENT_ID = "CLIENT_ID = {0}\n" - CLIENT_KEY = "CLIENT_KEY = {0}\n" - ENVIRONMENT = "ENVIRONMENT = {0}\n" - _logger = logging.getLogger("policy_handler.pe_config") - - @staticmethod - def save_to_file(): - """create the policy_engine.properties for policy-engine client""" - file_path = PolicyEngineConfig.PATH_TO_PROPERTIES - - try: - config = Config.config[Config.FIELD_POLICY_ENGINE] - headers = config["headers"] - remove_basic = re.compile(r"(^Basic )") - client_auth = headers["ClientAuth"] - basic_client_auth = bool(remove_basic.match(client_auth)) - client_parts = base64.b64decode(remove_basic.sub("", client_auth)).split(":") - auth_parts = base64.b64decode(remove_basic.sub("", headers["Authorization"])).split(":") - - props = PolicyEngineConfig.PYPDP_URL.format(config["url"], config["path_pdp"], - auth_parts[0], auth_parts[1]) - props += PolicyEngineConfig.CLIENT_ID.format(client_parts[0]) - props += PolicyEngineConfig.CLIENT_KEY.format(base64.b64encode(client_parts[1])) - props += PolicyEngineConfig.ENVIRONMENT.format(headers["Environment"]) - - with open(file_path, 'w') as prp_file: - prp_file.write(props) - PolicyEngineConfig._logger.info("created %s basic_client_auth %s", - file_path, basic_client_auth) - return basic_client_auth - except IOError: - PolicyEngineConfig._logger.error("failed to save to %s", file_path) - except KeyError: - PolicyEngineConfig._logger.error("unexpected config for %s", Config.FIELD_POLICY_ENGINE) |