+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))
+
+