Fixes bugs for integration with MON module
[osm/MON.git] / policy_module / osm_policy_module / common / lcm_client.py
1 import json
2 import logging
3
4 from kafka import KafkaProducer
5
6 from osm_policy_module.core.config import Config
7
8 log = logging.getLogger(__name__)
9
10
11 class LcmClient:
12 def __init__(self):
13 cfg = Config.instance()
14 self.kafka_server = '{}:{}'.format(cfg.get('policy_module', 'kafka_server_host'),
15 cfg.get('policy_module', 'kafka_server_port'))
16 self.producer = KafkaProducer(bootstrap_servers=self.kafka_server,
17 key_serializer=str.encode,
18 value_serializer=str.encode)
19
20 def scale(self, nsr_id, name, action):
21 msg = self._create_scale_action_payload(nsr_id, name, action)
22 log.info("Sending scale action message: %s", json.dumps(msg))
23 self.producer.send(topic='lcm_pm', key='trigger_scaling', value=json.dumps(msg))
24 self.producer.flush()
25
26 def _create_scale_action_payload(self, nsr_id, name, action):
27 msg = {
28 "ns_id": nsr_id,
29 "scaling_group_descriptor": {
30 "name": name,
31 "action": action
32 }
33 }
34 return msg