X-Git-Url: https://osm.etsi.org/gitweb/?a=blobdiff_plain;f=policy_module%2Fosm_policy_module%2Fcmd%2Fpolicy_module_agent.py;fp=policy_module%2Fosm_policy_module%2Fcmd%2Fpolicy_module_agent.py;h=ac0316750637f09a4c28ed8af48efc6b3446f504;hb=17ebe3794d0dc2712b1438f3fc5469ca10d752e1;hp=0000000000000000000000000000000000000000;hpb=f315c3bf13c14d6a71c2909b4e4a8632f7df1c2e;p=osm%2FMON.git diff --git a/policy_module/osm_policy_module/cmd/policy_module_agent.py b/policy_module/osm_policy_module/cmd/policy_module_agent.py new file mode 100644 index 0000000..ac03167 --- /dev/null +++ b/policy_module/osm_policy_module/cmd/policy_module_agent.py @@ -0,0 +1,77 @@ +# -*- coding: utf-8 -*- + +# Copyright 2018 Whitestack, LLC +# ************************************************************* + +# This file is part of OSM Monitoring module +# All Rights Reserved to Whitestack, LLC + +# Licensed under the Apache License, Version 2.0 (the "License"); you may +# not use this file except in compliance with the License. You may obtain +# a copy of the License at + +# http://www.apache.org/licenses/LICENSE-2.0 + +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT +# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the +# License for the specific language governing permissions and limitations +# under the License. + +# For those usages not covered by the Apache License, Version 2.0 please +# contact: bdiaz@whitestack.com or glavado@whitestack.com +## +import argparse +import logging +import sys +import logstash + +from osm_policy_module.core.agent import PolicyModuleAgent +from osm_policy_module.core.config import Config +from osm_policy_module.core.database import DatabaseManager + + +def main(): + cfg = Config.instance() + parser = argparse.ArgumentParser(prog='pm-scaling-config-agent') + parser.add_argument('--config-file', nargs='?', help='Policy module agent configuration file') + args = parser.parse_args() + if args.config_file: + cfg.load_file(args.config_file) + # TODO: Handle different log levels in config + if cfg.get('policy_module', 'log_dir') == 'stdout': + logging.basicConfig(stream=sys.stdout, + format='%(asctime)s %(message)s', + datefmt='%m/%d/%Y %I:%M:%S %p', + level=logging.INFO) + else: + logging.basicConfig(filename=cfg.get('policy_module', 'log_dir') + 'pm_agent.log', + format='%(asctime)s %(message)s', + datefmt='%m/%d/%Y %I:%M:%S %p', filemode='a', + level=logging.INFO) + if cfg.get('policy_module', 'enable_logstash_handler') == 'true': + logstash_host = cfg.get('policy_module', 'logstash_host') + logstash_port = int(cfg.get('policy_module', 'logstash_port')) + root_logger = logging.getLogger() + root_logger.addHandler(logstash.TCPLogstashHandler(logstash_host, logstash_port, version=1)) + root_logger.info("Logstash handler configured.") + kafka_logger = logging.getLogger('kafka') + kafka_logger.setLevel(logging.WARN) + kafka_formatter = logging.Formatter( + '%(asctime)s - %(name)s - %(levelname)s - %(message)s') + kafka_handler = logging.StreamHandler(sys.stdout) + kafka_handler.setFormatter(kafka_formatter) + kafka_logger.addHandler(kafka_handler) + log = logging.getLogger(__name__) + log.info("Config: %s", cfg) + log.info("Syncing database...") + db_manager = DatabaseManager() + db_manager.create_tables() + log.info("Database synced correctly.") + log.info("Starting policy module agent...") + agent = PolicyModuleAgent() + agent.run() + + +if __name__ == '__main__': + main()