X-Git-Url: https://osm.etsi.org/gitweb/?a=blobdiff_plain;ds=sidebyside;f=policy_module%2Fosm_policy_module%2Fcore%2Fagent.py;h=f8f82b52db8cad59aa092362fc46f1216831ec1a;hb=022f26af98045df7c51c8151712927b4f7b15a96;hp=c329743b15f57d032fc755413ce1936887f623fc;hpb=62781ff00b30790610cf4cc2ef5ed5422c571e10;p=osm%2FMON.git diff --git a/policy_module/osm_policy_module/core/agent.py b/policy_module/osm_policy_module/core/agent.py index c329743..f8f82b5 100644 --- a/policy_module/osm_policy_module/core/agent.py +++ b/policy_module/osm_policy_module/core/agent.py @@ -1,5 +1,29 @@ +# -*- 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 json import logging +import yaml from kafka import KafkaConsumer from osm_policy_module.core.config import Config @@ -21,18 +45,21 @@ class PolicyModuleAgent: # Initialize Kafka consumer log.info("Connecting to Kafka server at %s", kafka_server) + # TODO: Add logic to handle deduplication of messages when using group_id. + # See: https://stackoverflow.com/a/29836412 consumer = KafkaConsumer(bootstrap_servers=kafka_server, key_deserializer=bytes.decode, - value_deserializer=bytes.decode, - group_id="policy-module-agent") + value_deserializer=bytes.decode) consumer.subscribe(['lcm_pm', 'alarm_response']) for message in consumer: log.info("Message arrived: %s", message) - log.info("Message key: %s", message.key) try: if message.key == 'configure_scaling': - content = json.loads(message.value) + try: + content = json.loads(message.value) + except: + content = yaml.safe_load(message.value) log.info("Creating scaling record in DB") # TODO: Use transactions: http://docs.peewee-orm.com/en/latest/peewee/transactions.html scaling_record = ScalingRecord.create( @@ -67,7 +94,7 @@ class PolicyModuleAgent: alarm = ScalingAlarm.select().where(ScalingAlarm.alarm_id == alarm_id).get() if alarm: lcm_client = LcmClient() - log.info("Sending scaling action message: %s", json.dumps(alarm)) + log.info("Sending scaling action message for ns: %s", alarm_id) lcm_client.scale(alarm.scaling_record.nsr_id, alarm.scaling_record.name, alarm.action) except Exception: log.exception("Error consuming message: ")