From: Benjamin Diaz Date: Tue, 17 Apr 2018 14:21:51 +0000 (-0300) Subject: Adds yaml support in policy module X-Git-Tag: v4.0.0~12^2 X-Git-Url: https://osm.etsi.org/gitweb/?a=commitdiff_plain;h=54634e6c12b80111e20a10c4f258dd0bfd4a944b;p=osm%2FMON.git Adds yaml support in policy module Adds timeout for creation of alarm in mon client in policy module Signed-off-by: Benjamin Diaz --- diff --git a/policy_module/osm_policy_agent.cfg b/policy_module/osm_policy_agent.cfg deleted file mode 100644 index 54ca70a..0000000 --- a/policy_module/osm_policy_agent.cfg +++ /dev/null @@ -1,3 +0,0 @@ -[osm] -kafka_server_host=server -kafka_server_port=port diff --git a/policy_module/osm_policy_module/common/mon_client.py b/policy_module/osm_policy_module/common/mon_client.py index 0d86046..3e81757 100644 --- a/policy_module/osm_policy_module/common/mon_client.py +++ b/policy_module/osm_policy_module/common/mon_client.py @@ -50,7 +50,8 @@ class MonClient: future.get(timeout=60) consumer = KafkaConsumer(bootstrap_servers=self.kafka_server, key_deserializer=bytes.decode, - value_deserializer=bytes.decode) + value_deserializer=bytes.decode, + consumer_timeout_ms=10000) consumer.subscribe(['alarm_response']) for message in consumer: if message.key == 'create_alarm_response': diff --git a/policy_module/osm_policy_module/core/agent.py b/policy_module/osm_policy_module/core/agent.py index b4ae260..f8f82b5 100644 --- a/policy_module/osm_policy_module/core/agent.py +++ b/policy_module/osm_policy_module/core/agent.py @@ -23,6 +23,7 @@ ## import json import logging +import yaml from kafka import KafkaConsumer from osm_policy_module.core.config import Config @@ -55,7 +56,10 @@ class PolicyModuleAgent: log.info("Message arrived: %s", message) 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( diff --git a/policy_module/osm_policy_module/tests/unit/test_policy_agent.py b/policy_module/osm_policy_module/tests/unit/test_policy_agent.py new file mode 100644 index 0000000..0e12e84 --- /dev/null +++ b/policy_module/osm_policy_module/tests/unit/test_policy_agent.py @@ -0,0 +1,44 @@ +# -*- 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 os +import unittest + +from osm_policy_module.core.agent import PolicyModuleAgent + + +class PolicyAgentTest(unittest.TestCase): + def setUp(self): + self.agent = PolicyModuleAgent() + + def test_get_alarm_configs(self): + with open(os.path.join(os.path.dirname(__file__), '../examples/configure_scaling_full_example.json')) as file: + example = json.load(file) + alarm_configs = self.agent._get_alarm_configs(example) + # TODO Improve assertions + self.assertEqual(len(alarm_configs), 2) + + +if __name__ == '__main__': + unittest.main() diff --git a/policy_module/osm_policy_module/tests/unit/test_policy_config_agent.py b/policy_module/osm_policy_module/tests/unit/test_policy_config_agent.py deleted file mode 100644 index 0e12e84..0000000 --- a/policy_module/osm_policy_module/tests/unit/test_policy_config_agent.py +++ /dev/null @@ -1,44 +0,0 @@ -# -*- 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 os -import unittest - -from osm_policy_module.core.agent import PolicyModuleAgent - - -class PolicyAgentTest(unittest.TestCase): - def setUp(self): - self.agent = PolicyModuleAgent() - - def test_get_alarm_configs(self): - with open(os.path.join(os.path.dirname(__file__), '../examples/configure_scaling_full_example.json')) as file: - example = json.load(file) - alarm_configs = self.agent._get_alarm_configs(example) - # TODO Improve assertions - self.assertEqual(len(alarm_configs), 2) - - -if __name__ == '__main__': - unittest.main() diff --git a/policy_module/requirements.txt b/policy_module/requirements.txt index fbdc2a8..f92cee9 100644 --- a/policy_module/requirements.txt +++ b/policy_module/requirements.txt @@ -1,4 +1,5 @@ kafka==1.3.* peewee==3.1.* jsonschema==2.6.* -six \ No newline at end of file +six +pyyaml \ No newline at end of file