X-Git-Url: https://osm.etsi.org/gitweb/?a=blobdiff_plain;f=osm_mon%2Fcore%2Fmessage_bus%2Fproducer.py;h=f6feba16352ffd22f2df43301a39ad20cb50d106;hb=refs%2Fchanges%2F70%2F6670%2F2;hp=aad8b62bdecea0d4992a3531dca3d3def1fe3c30;hpb=1e75545fdded3a1eb0bb64bc3353c52bbf7f42a8;p=osm%2FMON.git diff --git a/osm_mon/core/message_bus/producer.py b/osm_mon/core/message_bus/producer.py index aad8b62..f6feba1 100755 --- a/osm_mon/core/message_bus/producer.py +++ b/osm_mon/core/message_bus/producer.py @@ -25,19 +25,16 @@ and AWS. """ import logging - import os -import jsmin - from kafka import KafkaProducer as kaf - from kafka.errors import KafkaError __author__ = "Prithiv Mohan" __date__ = "06/Sep/2017" -json_path = os.path.abspath(os.pardir + "/MON/osm_mon/core/models/") +current_path = os.path.realpath(__file__) +json_path = os.path.abspath(os.path.join(current_path, '..', '..', 'models')) # TODO(): validate all of the request and response messages against the # json_schemas @@ -64,243 +61,115 @@ class KafkaProducer(object): self.producer = kaf( key_serializer=str.encode, value_serializer=str.encode, - bootstrap_servers=broker, api_version=(0, 10)) + bootstrap_servers=broker, api_version=(0, 10, 1)) def publish(self, key, value, topic=None): """Send the required message on the Kafka message bus.""" try: future = self.producer.send(topic=topic, key=key, value=value) - self.producer.flush() + future.get(timeout=10) 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): - """Create alarm request from SO to MON.""" - # External to MON - - payload_create_alarm = jsmin( - open(os.path.join(json_path, 'create_alarm.json')).read()) - self.publish(key, - value=message, - topic='alarm_request') - - def create_alarm_response(self, key, message, topic): - """Response to a create alarm request from MON to SO.""" - # 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): - """Alarm acknowledgement request from SO to MON.""" - # Internal to MON - - payload_acknowledge_alarm = jsmin( - open(os.path.join(json_path, 'acknowledge_alarm.json')).read()) - self.publish(key, - value=message, - topic='alarm_request') - - def list_alarm_request(self, key, message, topic): - """List alarms request from SO to MON.""" + def publish_alarm_request(self, key, message): + """Publish an alarm request.""" # External to MON - payload_alarm_list_req = jsmin( - open(os.path.join(json_path, 'list_alarm_req.json')).read()) - - self.publish(key, - value=message, - topic='alarm_request') - - def notify_alarm(self, key, message, topic): - """Notify of triggered alarm from MON to SO.""" - 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): - """Response for list alarms request from MON to SO.""" - 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): - """Update alarm request from SO to MON.""" - # External to Mon - - payload_update_alarm_req = jsmin( - open(os.path.join(json_path, 'update_alarm_req.json')).read()) - - self.publish(key, - value=message, - topic='alarm_request') - - def update_alarm_response(self, key, message, topic): - """Response from update alarm request from MON to SO.""" - # 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): - """Delete alarm request from SO to MON.""" - # External to Mon - - payload_delete_alarm_req = jsmin( - open(os.path.join(json_path, 'delete_alarm_req.json')).read()) - self.publish(key, value=message, topic='alarm_request') - def delete_alarm_response(self, key, message, topic): - """Response for a delete alarm request from MON to SO.""" - # Internal to Mon - - payload_delete_alarm_resp = jsmin( - open(os.path.join(json_path, 'delete_alarm_resp.json')).read()) + def publish_alarm_response(self, key, message): + """Publish an alarm response.""" + # Internal to MON self.publish(key, value=message, topic='alarm_response') - def create_metrics_request(self, key, message, topic): + def publish_metrics_request(self, key, message): """Create metrics request from SO to MON.""" # External to Mon - payload_create_metrics_req = jsmin( - open(os.path.join(json_path, 'create_metric_req.json')).read()) - self.publish(key, value=message, topic='metric_request') - def create_metrics_resp(self, key, message, topic): + def publish_metrics_response(self, key, message): """Response for a create metric request from MON to SO.""" # 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): + def read_metric_data_request(self, key, message): """Read metric data request from SO to MON.""" # 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=message, topic='metric_request') - def read_metric_data_response(self, key, message, topic): + def read_metric_data_response(self, key, message): """Response from MON to SO for read metric data request.""" # 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): + def list_metric_request(self, key, message): """List metric request from SO to MON.""" # External to MON - payload_metric_list_req = jsmin( - open(os.path.join(json_path, 'list_metric_req.json')).read()) - self.publish(key, value=message, topic='metric_request') - def list_metric_response(self, key, message, topic): + def list_metric_response(self, key, message): """Response from SO to MON for list metrics request.""" # 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): + def delete_metric_request(self, key, message): """Delete metric request from SO to MON.""" # External to Mon - payload_delete_metric_req = jsmin( - open(os.path.join(json_path, 'delete_metric_req.json')).read()) - self.publish(key, value=message, topic='metric_request') - def delete_metric_response(self, key, message, topic): + def delete_metric_response(self, key, message): """Response from MON to SO for delete metric request.""" # 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): + def update_metric_request(self, key, message): """Metric update request from SO to MON.""" # External to Mon - payload_update_metric_req = jsmin( - open(os.path.join(json_path, 'update_metric_req.json')).read()) - self.publish(key, value=message, topic='metric_request') - def update_metric_response(self, key, message, topic): + def update_metric_response(self, key, message): """Reponse from MON to SO for metric update.""" # 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): + def access_credentials(self, key, message): """Send access credentials to MON from SO.""" - payload_access_credentials = jsmin( - open(os.path.join(json_path, 'access_credentials.json')).read()) self.publish(key, value=message,