+
+ logger.info('Subscription {} filter hit, skip ResourceType {}.'
+ .format(sub_data['subscriptionId'], data.id))
+
+
+def _notify_resourcepool(uow, notifications, data):
+ with uow:
+ resource_pool = uow.resource_pools.get(data.id)
+ if resource_pool is None:
+ logger.warning('ResourcePool {} does not exists.'.format(data.id))
+ return
+
+ resource_pool_dict = resource_pool.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'], 'ResourcePoolInfo')
+ logger.debug(f'filters: {filters}, sub_data: {sub_data}')
+
+ if not filters or filters[0] == 0 or check_filters(
+ filters, sub_data, uow.resource_pools, ocloud.ResourcePool,
+ ocloud.ResourcePool.resourcePoolId, data.id):
+ callback_smo(notifications, sub, data, resource_pool_dict)
+ continue
+
+ logger.info('Subscription {} filter hit, skip ResourcePool {}.'
+ .format(sub_data['subscriptionId'], data.id))
+
+
+def _notify_dms(uow, notifications, data):
+ with uow:
+ dms = uow.deployment_managers.get(data.id)
+ if dms is None:
+ logger.warning(
+ 'DeploymentManager {} does not exists.'.format(data.id))
+ return
+
+ dms_dict = dms.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'], 'DeploymentManagerInfo')
+ logger.debug(f'filters: {filters}, sub_data: {sub_data}')
+
+ if not filters or filters[0] == 0 or check_filters(
+ filters, sub_data, uow.deployment_managers,
+ ocloud.DeploymentManager,
+ ocloud.DeploymentManager.deploymentManagerId, data.id):
+ callback_smo(notifications, sub, data, dms_dict)
+ continue
+
+ logger.info('Subscription {} filter hit, skip '
+ 'DeploymentManager {}.'
+ .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)
+ if resource is None:
+ logger.warning('Resource {} does not exists.'.format(data.id))
+ return
+ res_pool_id = resource.serialize()['resourcePoolId']
+ logger.debug('res pool id is {}'.format(res_pool_id))
+
+ res_dict = resource.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'], 'ResourceInfo')
+ if not filters or filters[0] == 0:
+ callback_smo(notifications, sub, data, res_dict)
+ continue
+ if filters[0] > 0 and not filters[1]:
+ continue
+ filter_hit = False
+ for filter in filters[1]: