X-Git-Url: https://gerrit.o-ran-sc.org/r/gitweb?a=blobdiff_plain;f=o2ims%2Fservice%2Fcommand%2Fnotify_handler.py;fp=o2ims%2Fservice%2Fcommand%2Fnotify_handler.py;h=6fd0bb29a5e4dbb31e7e661302f6ab097250fa6a;hb=9067a2b70d4b763b015aeb3d3efc925fc6cf3f07;hp=88a0e90574bbac0cd38c2b63836c9980c20ae412;hpb=76a2f103ef57cc47973f0e7914ff5b7036f49800;p=pti%2Fo2.git diff --git a/o2ims/service/command/notify_handler.py b/o2ims/service/command/notify_handler.py index 88a0e90..6fd0bb2 100644 --- a/o2ims/service/command/notify_handler.py +++ b/o2ims/service/command/notify_handler.py @@ -48,6 +48,8 @@ def notify_change_to_smo( _notify_dms(uow, notifications, cmd.data) elif msg_type == 'Resource': _notify_resource(uow, notifications, cmd.data) + elif msg_type == 'OCloud': + _notify_ocloud(uow, notifications, cmd.data) def __get_object_type_and_value(sub_filter): @@ -61,7 +63,6 @@ def __get_object_type_and_value(sub_filter): def handle_filter(filter: str, f_type: str): - print(filter) if not filter: return @@ -189,6 +190,35 @@ def _notify_dms(uow, notifications, data): .format(sub_data['subscriptionId'], data.id)) +def _notify_ocloud(uow, notifications, data): + with uow: + ocloud = uow.oclouds.get(data.id) + if ocloud is None: + logger.warning( + 'oCloud {} does not exists.'.format(data.id)) + return + + ocloud_dict = ocloud.get_notification_dict() + + subs = uow.subscriptions.list() + for sub in subs: + sub_data = sub.serialize() + logger.debug('Subscription: {}'.format(sub_data['subscriptionId'])) + filters = handle_filter( + sub_data['filter'], 'CloudInfo') + logger.debug(f'filters: {filters}, sub_data: {sub_data}') + + if not filters or filters[0] == 0 or check_filters( + filters, sub_data, uow.oclouds, + ocloud.Ocloud, + ocloud.Ocloud.oCloudId, data.id): + callback_smo(notifications, sub, data, ocloud_dict) + continue + + logger.info('Subscription {} filter hit, skip Cloud {}.' + .format(sub_data['subscriptionId'], data.id)) + + def _notify_resource(uow, notifications, data): with uow: resource = uow.resources.get(data.id)