Adds yaml support in policy module 80/5980/1
authorBenjamin Diaz <bdiaz@whitestack.com>
Tue, 17 Apr 2018 14:21:51 +0000 (11:21 -0300)
committerBenjamin Diaz <bdiaz@whitestack.com>
Tue, 17 Apr 2018 14:21:51 +0000 (11:21 -0300)
Adds timeout for creation of alarm in mon client in policy module

Signed-off-by: Benjamin Diaz <bdiaz@whitestack.com>
policy_module/osm_policy_agent.cfg [deleted file]
policy_module/osm_policy_module/common/mon_client.py
policy_module/osm_policy_module/core/agent.py
policy_module/osm_policy_module/tests/unit/test_policy_agent.py [new file with mode: 0644]
policy_module/osm_policy_module/tests/unit/test_policy_config_agent.py [deleted file]
policy_module/requirements.txt

diff --git a/policy_module/osm_policy_agent.cfg b/policy_module/osm_policy_agent.cfg
deleted file mode 100644 (file)
index 54ca70a..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-[osm]
-kafka_server_host=server
-kafka_server_port=port
index 0d86046..3e81757 100644 (file)
@@ -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':
index b4ae260..f8f82b5 100644 (file)
@@ -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 (file)
index 0000000..0e12e84
--- /dev/null
@@ -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 (file)
index 0e12e84..0000000
+++ /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()
index fbdc2a8..f92cee9 100644 (file)
@@ -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