X-Git-Url: https://osm.etsi.org/gitweb/?a=blobdiff_plain;f=osm_mon%2Fcore%2Fmessage_bus%2Fproducer.py;h=573e332f9b887ac47381a105cea5402d85152a94;hb=93699898c51364cde193d8d441f4aed45670e7bf;hp=85b608a15fe956e934bd8d1e7edc34bfeba59f52;hpb=767619b30dc95631d7dd54a4e17cac125c37b7aa;p=osm%2FMON.git diff --git a/osm_mon/core/message_bus/producer.py b/osm_mon/core/message_bus/producer.py old mode 100755 new mode 100644 index 85b608a..573e332 --- a/osm_mon/core/message_bus/producer.py +++ b/osm_mon/core/message_bus/producer.py @@ -1,8 +1,8 @@ -# Copyright 2017 Intel Research and Development Ireland Limited +# Copyright 2018 Whitestack, LLC # ************************************************************* # This file is part of OSM Monitoring module -# All Rights Reserved to Intel Corporation +# 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 @@ -17,284 +17,19 @@ # under the License. # For those usages not covered by the Apache License, Version 2.0 please -# contact: prithiv.mohan@intel.com or adrian.hoban@intel.com +# contact: bdiaz@whitestack.com or glavado@whitestack.com ## -''' -This is a kafka producer app that interacts with the SO and the plugins of the -datacenters like OpenStack, VMWare, AWS. -''' +from kafka import KafkaProducer -from kafka import KafkaProducer as kaf -from kafka.errors import KafkaError -import logging -import json -import jsmin -import os -from os import listdir -from jsmin import jsmin +from osm_mon.core.settings import Config -__author__ = "Prithiv Mohan" -__date__ = "06/Sep/2017" -json_path=os.path.abspath(os.pardir+"/MON/osm_mon/core/models/") +class Producer(KafkaProducer): + def __init__(self): + cfg = Config.instance() + super().__init__(bootstrap_servers=cfg.BROKER_URI, + key_serializer=str.encode, + value_serializer=str.encode) -class KafkaProducer(object): - - def __init__(self, topic): - - self._topic = topic - - if "BROKER_URI" in os.environ: - broker = os.getenv("BROKER_URI") - else: - broker = "localhost:9092" - - ''' - If the broker URI is not set in the env by default, - localhost container is taken as the host because an instance of - is already running. - ''' - - self.producer = kaf( - key_serializer=str.encode, - value_serializer=str.encode, - bootstrap_servers=broker, api_version=(0, 10)) - - def publish(self, key, value, topic=None): - try: - future = self.producer.send(topic=topic, key=key, value=value) - self.producer.flush() - except Exception: - logging.exception("Error publishing to {} topic." .format(topic)) - raise - try: - record_metadata = future.get(timeout=10) - logging.debug("TOPIC:", record_metadata.topic) - logging.debug("PARTITION:", record_metadata.partition) - logging.debug("OFFSET:", record_metadata.offset) - except KafkaError: - pass - - def create_alarm_request(self, key, message, topic): - - # External to MON - - payload_create_alarm = jsmin( - open(os.path.join(json_path, 'create_alarm.json')).read()) - self.publish(key, - value=json.dumps(payload_create_alarm), - topic='alarm_request') - - def create_alarm_response(self, key, message, topic): - - # Internal to MON - - payload_create_alarm_resp = jsmin( - open(os.path.join(json_path, 'create_alarm_resp.json')).read()) - - self.publish(key, - value=message, - topic='alarm_response') - - def acknowledge_alarm(self, key, message, topic): - - # Internal to MON - - payload_acknowledge_alarm = jsmin( - open(os.path.join(json_path, 'acknowledge_alarm.json')).read()) - - self.publish(key, - value=json.dumps(payload_acknowledge_alarm), - topic='alarm_request') - - def list_alarm_request(self, key, message, topic): - - # External to MON - - payload_alarm_list_req = jsmin( - open(os.path.join(json_path, 'list_alarm_req.json')).read()) - - self.publish(key, - value=json.dumps(payload_alarm_list_req), - topic='alarm_request') - - def notify_alarm(self, key, message, topic): - - payload_notify_alarm = jsmin( - open(os.path.join(json_path, 'notify_alarm.json')).read()) - - self.publish(key, - value=message, - topic='alarm_response') - - def list_alarm_response(self, key, message, topic): - - payload_list_alarm_resp = jsmin( - open(os.path.join(json_path, 'list_alarm_resp.json')).read()) - - self.publish(key, - value=message, - topic='alarm_response') - - def update_alarm_request(self, key, message, topic): - - # External to Mon - - payload_update_alarm_req = jsmin( - open(os.path.join(json_path, 'update_alarm_req.json')).read()) - - self.publish(key, - value=json.dumps(payload_update_alarm_req), - topic='alarm_request') - - def update_alarm_response(self, key, message, topic): - - # Internal to Mon - - payload_update_alarm_resp = jsmin( - open(os.path.join(json_path, 'update_alarm_resp.json')).read()) - - self.publish(key, - value=message, - topic='alarm_response') - - def delete_alarm_request(self, key, message, topic): - - # External to Mon - - payload_delete_alarm_req = jsmin( - open(os.path.join(json_path, 'delete_alarm_req.json')).read()) - - self.publish(key, - value=json.dumps(payload_delete_alarm_req), - topic='alarm_request') - - def delete_alarm_response(self, key, message, topic): - - # Internal to Mon - - payload_delete_alarm_resp = jsmin( - open(os.path.join(json_path, 'delete_alarm_resp.json')).read()) - - self.publish(key, - value=message, - topic='alarm_response') - - def create_metrics_request(self, key, message, topic): - - # External to Mon - - payload_create_metrics_req = jsmin( - open(os.path.join(json_path, 'create_metric_req.json')).read()) - - self.publish(key, - value=json.dumps(payload_create_metrics_req), - topic='metric_request') - - def create_metrics_resp(self, key, message, topic): - - # Internal to Mon - - payload_create_metrics_resp = jsmin( - open(os.path.join(json_path, 'create_metric_resp.json')).read()) - - self.publish(key, - value=message, - topic='metric_response') - - def read_metric_data_request(self, key, message, topic): - - # External to Mon - - payload_read_metric_data_request = jsmin( - open(os.path.join(json_path, 'read_metric_data_req.json')).read()) - - self.publish(key, - value=json.dumps(payload_read_metric_data_request), - topic='metric_request') - - def read_metric_data_response(self, key, message, topic): - - # Internal to Mon - - payload_metric_data_response = jsmin( - open(os.path.join(json_path, 'read_metric_data_resp.json')).read()) - - self.publish(key, - value=message, - topic='metric_response') - - def list_metric_request(self, key, message, topic): - - # External to MON - - payload_metric_list_req = jsmin( - open(os.path.join(json_path, 'list_metric_req.json')).read()) - - self.publish(key, - value=json.dumps(payload_metric_list_req), - topic='metric_request') - - def list_metric_response(self, key, message, topic): - - # Internal to MON - - payload_metric_list_resp = jsmin( - open(os.path.join(json_path, 'list_metrics_resp.json')).read()) - - self.publish(key, - value=message, - topic='metric_response') - - def delete_metric_request(self, key, message, topic): - - # External to Mon - - payload_delete_metric_req = jsmin( - open(os.path.join(json_path, 'delete_metric_req.json')).read()) - - self.publish(key, - value=json.dumps(payload_delete_metric_req), - topic='metric_request') - - def delete_metric_response(self, key, message, topic): - - # Internal to Mon - - payload_delete_metric_resp = jsmin( - open(os.path.join(json_path, 'delete_metric_resp.json')).read()) - - self.publish(key, - value=message, - topic='metric_response') - - def update_metric_request(self, key, message, topic): - - # External to Mon - - payload_update_metric_req = jsmin( - open(os.path.join(json_path, 'update_metric_req.json')).read()) - - self.publish(key, - value=json.dumps(payload_update_metric_req), - topic='metric_request') - - def update_metric_response(self, key, message, topic): - - # Internal to Mon - - payload_update_metric_resp = jsmin( - open(os.path.join(json_path, 'update_metric_resp.json')).read()) - - self.publish(key, - value=message, - topic='metric_response') - - def access_credentials(self, key, message, topic): - - payload_access_credentials = jsmin( - open(os.path.join(json_path, 'access_credentials.json')).read()) - - self.publish(key, - value=json.dumps(payload_access_credentials), - topic='access_credentials') + def send(self, topic, value=None, key=None, partition=None, timestamp_ms=None): + return super().send(topic, value, key, partition, timestamp_ms)