From 14411ac0ec0df8a32ab5d360c5a7fdb87ca51e26 Mon Sep 17 00:00:00 2001 From: Alex Shatov Date: Tue, 20 Mar 2018 10:55:03 -0400 Subject: 2.4.0 dns based discovery of deployment-handler - policy-handler uses dns based discovery of deployment-handler - driven by config - new data structure for deploy_handler section of config -- changed from string "deployment_handler" in 2.3.1 to structure in 2.4.0 deploy_handler : # name of deployment-handler service # used by policy-handler for logging target_entity : "deployment_handler" # url of the deployment-handler service # for policy-handler to direct the policy-updates to # - expecting dns to resolve the name # deployment_handler to ip address url : "http://deployment_handler:8188" - logic is backwards compatible with 2.3.1 format - removed import pip from audit -- import pip broken in pip 9.0.2 (2018-03-19) -- import pip conflicts with requests -- pip API is not officially supported -- see links for more https://github.com/pypa/pip/issues/5079 https://github.com/pypa/pip/issues/5081 Change-Id: Ifcaba6cfd714f3099ab7a25fe979a3696a6460fc Signed-off-by: Alex Shatov Issue-ID: DCAEGEN2-404 --- policyhandler/deploy_handler.py | 38 +++++++++++++++++++++++++++++--------- policyhandler/onap/audit.py | 14 +++++--------- 2 files changed, 34 insertions(+), 18 deletions(-) (limited to 'policyhandler') diff --git a/policyhandler/deploy_handler.py b/policyhandler/deploy_handler.py index f1a1294..139e660 100644 --- a/policyhandler/deploy_handler.py +++ b/policyhandler/deploy_handler.py @@ -24,9 +24,9 @@ import logging import requests from .config import Config +from .customize import CustomizerUser from .discovery import DiscoveryClient from .onap.audit import REQUEST_X_ECOMP_REQUESTID, Audit, AuditHttpCode -from .customize import CustomizerUser POOL_SIZE = 1 @@ -38,7 +38,7 @@ class DeployHandler(object): _requests_session = None _config = None _url = None - _url_path = None + _url_policy = None _target_entity = None _custom_kwargs = None _server_instance_uuid = None @@ -66,10 +66,30 @@ class DeployHandler(object): requests.adapters.HTTPAdapter(pool_connections=POOL_SIZE, pool_maxsize=POOL_SIZE) ) - DeployHandler._target_entity = Config.config.get("deploy_handler", "deploy_handler") - DeployHandler._url = DiscoveryClient.get_service_url(audit, DeployHandler._target_entity) - DeployHandler._url_path = (DeployHandler._url or "") + '/policy' - DeployHandler._logger.info("DeployHandler url(%s)", DeployHandler._url) + config_dh = Config.config.get("deploy_handler") + if config_dh and isinstance(config_dh, dict): + # dns based routing to deployment-handler + # config for policy-handler >= 2.4.0 + # "deploy_handler" : { + # "target_entity" : "deployment_handler", + # "url" : "http://deployment_handler:8188" + # } + DeployHandler._target_entity = config_dh.get("target_entity", "deployment_handler") + DeployHandler._url = config_dh.get("url") + DeployHandler._logger.info("dns based routing to %s: url(%s)", + DeployHandler._target_entity, DeployHandler._url) + + if not DeployHandler._url: + # discover routing to deployment-handler at consul-services + if not isinstance(config_dh, dict): + # config for policy-handler <= 2.3.1 + # "deploy_handler" : "deployment_handler" + DeployHandler._target_entity = str(config_dh or "deployment_handler") + DeployHandler._url = DiscoveryClient.get_service_url(audit, DeployHandler._target_entity) + + DeployHandler._url_policy = str(DeployHandler._url or "") + '/policy' + DeployHandler._logger.info( + "got %s policy url(%s)", DeployHandler._target_entity, DeployHandler._url_policy) @staticmethod def policy_update(audit, message): @@ -83,14 +103,14 @@ class DeployHandler(object): DeployHandler._lazy_init(audit) sub_aud = Audit(aud_parent=audit, targetEntity=DeployHandler._target_entity, - targetServiceName=DeployHandler._url_path) + targetServiceName=DeployHandler._url_policy) headers = {REQUEST_X_ECOMP_REQUESTID : sub_aud.request_id} msg_str = json.dumps(message) headers_str = json.dumps(headers) log_action = "post to {0} at {1}".format( - DeployHandler._target_entity, DeployHandler._url_path) + DeployHandler._target_entity, DeployHandler._url_policy) log_data = " msg={0} headers={1}".format(msg_str, headers_str) log_line = log_action + log_data DeployHandler._logger.info(log_line) @@ -107,7 +127,7 @@ class DeployHandler(object): res = None try: res = DeployHandler._requests_session.post( - DeployHandler._url_path, json=message, headers=headers, + DeployHandler._url_policy, json=message, headers=headers, **DeployHandler._custom_kwargs ) except requests.exceptions.RequestException as ex: diff --git a/policyhandler/onap/audit.py b/policyhandler/onap/audit.py index 4e8378c..109e3ff 100644 --- a/policyhandler/onap/audit.py +++ b/policyhandler/onap/audit.py @@ -25,16 +25,15 @@ audit = Audit(request_id=None, headers=None, msg=None) """ +import copy +import json import os import sys -import json -import uuid import time -import copy +import uuid from datetime import datetime -from threading import Lock from enum import Enum -from pip import utils as pip_utils +from threading import Lock from .CommonLogger import CommonLogger from .health import Health @@ -125,8 +124,6 @@ class Audit(object): _logger_audit = None _health = Health() _py_ver = sys.version.replace("\n", "") - _packages = sorted([pckg.project_name + "==" + pckg.version - for pckg in pip_utils.get_installed_distributions()]) @staticmethod def init(service_name, service_version, config_file_path): @@ -154,8 +151,7 @@ class Audit(object): "started" : str(Audit._started), "now" : str(now), "uptime" : str(now - Audit._started), - "stats" : Audit._health.dump(), - "packages" : Audit._packages + "stats" : Audit._health.dump() } def __init__(self, request_id=None, req_message=None, aud_parent=None, **kwargs): -- cgit 1.2.3-korg