X-Git-Url: https://gerrit.o-ran-sc.org/r/gitweb?a=blobdiff_plain;f=o2ims%2Fservice%2Fcommand%2Fnotify_alarm_handler.py;h=b630d1e571e153a6b6cd5f4f593a362fb0a3fed2;hb=e161cae314703d7717d55099566c2d3fe112ca52;hp=d5e049e1e905fbbf459f976324fd1fcb98736bb6;hpb=1dd2947529e5910d37c55472bfc81915d3caa38b;p=pti%2Fo2.git diff --git a/o2ims/service/command/notify_alarm_handler.py b/o2ims/service/command/notify_alarm_handler.py index d5e049e..b630d1e 100644 --- a/o2ims/service/command/notify_alarm_handler.py +++ b/o2ims/service/command/notify_alarm_handler.py @@ -14,17 +14,12 @@ # import redis # import requests -import ssl import json -from urllib.parse import urlparse from o2common.config import conf from o2common.domain.filter import gen_orm_filter from o2common.service.unit_of_work import AbstractUnitOfWork -from o2common.service.command.handler import get_https_conn_default -from o2common.service.command.handler import get_http_conn -from o2common.service.command.handler import get_https_conn_selfsigned -from o2common.service.command.handler import post_data +from o2common.adapter.notifications import AbstractNotifications from o2ims.domain import commands from o2ims.domain.alarm_obj import AlarmSubscription, AlarmEvent2SMO, \ @@ -37,13 +32,14 @@ logger = o2logging.get_logger(__name__) def notify_alarm_to_smo( cmd: commands.PubAlarm2SMO, uow: AbstractUnitOfWork, + notifications: AbstractNotifications, ): logger.debug('In notify_alarm_to_smo') data = cmd.data with uow: alarm = uow.alarm_event_records.get(data.id) if alarm is None: - logger.debug('Alarm Event {} does not exists.'.format(data.id)) + logger.warning('Alarm Event {} does not exists.'.format(data.id)) return subs = uow.alarm_subscriptions.list() @@ -53,7 +49,7 @@ def notify_alarm_to_smo( sub_data['alarmSubscriptionId'])) if not sub_data.get('filter', None): - callback_smo(sub, data, alarm) + callback_smo(notifications, sub, data, alarm) continue try: args = gen_orm_filter(AlarmEventRecord, sub_data['filter']) @@ -63,7 +59,7 @@ def notify_alarm_to_smo( 'name or value. Ignore the filter'.format( sub_data['alarmSubscriptionId'], sub_data['filter'])) - callback_smo(sub, data, alarm) + callback_smo(notifications, sub, data, alarm) continue args.append(AlarmEventRecord.alarmEventRecordId == data.id) ret = uow.alarm_event_records.list_with_count(*args) @@ -73,11 +69,11 @@ def notify_alarm_to_smo( 'the filter.' .format(data.id, sub_data['alarmSubscriptionId'])) continue - callback_smo(sub, data, alarm) + callback_smo(notifications, sub, data, alarm) -def callback_smo(sub: AlarmSubscription, msg: AlarmEvent2SMO, - alarm: AlarmEventRecord): +def callback_smo(notifications: AbstractNotifications, sub: AlarmSubscription, + msg: AlarmEvent2SMO, alarm: AlarmEventRecord): sub_data = sub.serialize() alarm_data = alarm.serialize() callback = { @@ -97,37 +93,7 @@ def callback_smo(sub: AlarmSubscription, msg: AlarmEvent2SMO, 'perceivedSeverity': alarm_data['perceivedSeverity'], 'extensions': json.loads(alarm_data['extensions']) } - # logger.warning(callback) - callback_data = json.dumps(callback) - logger.info('URL: {}, data: {}'.format( - sub_data['callback'], callback_data)) + logger.info('callback URL: {}'.format(sub_data['callback'])) + logger.debug('callback data: {}'.format(json.dumps(callback))) - o = urlparse(sub_data['callback']) - if o.scheme == 'https': - conn = get_https_conn_default(o.netloc) - else: - conn = get_http_conn(o.netloc) - try: - rst, status = post_data(conn, o.path, callback_data) - if rst is True: - logger.info( - 'Notify alarm to SMO successed with status: {}'.format(status)) - return - logger.error('Notify alarm Response code is: {}'.format(status)) - except ssl.SSLCertVerificationError as e: - logger.debug( - 'Notify alarm try to post data with trusted ca \ - failed: {}'.format(e)) - if 'self signed' in str(e): - conn = get_https_conn_selfsigned(o.netloc) - try: - return post_data(conn, o.path, callback_data) - except Exception as e: - logger.info( - 'Notify alarm with self-signed ca failed: {}'.format(e)) - # TODO: write the status to extension db table. - return False - return False - except Exception as e: - logger.critical('Notify alarm except: {}'.format(e)) - return False + return notifications.send(sub_data['callback'], callback)