Policy Module first commit
[osm/MON.git] / policy_module / osm_policy_module / common / lcm_client.py
diff --git a/policy_module/osm_policy_module/common/lcm_client.py b/policy_module/osm_policy_module/common/lcm_client.py
new file mode 100644 (file)
index 0000000..99e3ffb
--- /dev/null
@@ -0,0 +1,32 @@
+import json
+
+from kafka import KafkaProducer
+
+from osm_policy_module.core.config import Config
+
+
+class LcmClient:
+    def __init__(self):
+        cfg = Config.instance()
+        self.kafka_server = {
+            'server': '{}:{}'.format(cfg.get('policy_module', 'kafka_server_host'),
+                                     cfg.get('policy_module', 'kafka_server_port'))}
+        self.producer = KafkaProducer(bootstrap_servers=self.kafka_server,
+                                      key_serializer=str.encode,
+                                      value_serializer=lambda v: json.dumps(v).encode('utf-8'))
+
+    def scale(self, nsr_id, name, action):
+        msg = self._create_scale_action_payload(nsr_id, name, action)
+        self.producer.send(topic='alarm_request', key='create_alarm_request', value=msg)
+        self.producer.flush()
+        pass
+
+    def _create_scale_action_payload(self, nsr_id, name, action):
+        msg = {
+            "ns_id": nsr_id,
+            "scaling_group_descriptor": {
+                "name": name,
+                "action": action
+            }
+        }
+        return msg