X-Git-Url: https://gerrit.o-ran-sc.org/r/gitweb?a=blobdiff_plain;ds=inline;f=o2ims%2Fservice%2Fcommand%2Fnotify_handler.py;h=34470f3ebf6f2958aad68ff6542612c5bb28c76a;hb=7e21b8d5ceabc857812194f7a865066e4f13ad85;hp=01c91c5099ceaef82f29049a0e876362cb6dbaad;hpb=413424db37c0c950fdb2d3e53f627dd5e909ae16;p=pti%2Fo2.git diff --git a/o2ims/service/command/notify_handler.py b/o2ims/service/command/notify_handler.py index 01c91c5..34470f3 100644 --- a/o2ims/service/command/notify_handler.py +++ b/o2ims/service/command/notify_handler.py @@ -78,7 +78,7 @@ def _notify_resourcetype(uow, data): if not filters: callback_smo(sub, data, resource_type_dict) continue - filter_effect = 0 + filter_hit = False for filter in filters: try: args = gen_orm_filter(ocloud.ResourceType, filter) @@ -89,20 +89,19 @@ def _notify_resourcetype(uow, data): sub_data['subscriptionId'], sub_data['filter'])) continue - if len(args) == 0: - continue + if len(args) == 0 and 'objectType' in filter: + filter_hit = True + break args.append(ocloud.ResourceType.resourceTypeId == data.id) - ret = uow.resource_types.list_with_count(*args) - if ret[0] > 0: - logger.debug( - 'ResourcePool {} skip for subscription {} because of' - ' the filter.' - .format(data.id, sub_data['subscriptionId'])) - filter_effect += 1 + obj_count, _ = uow.resource_types.list_with_count(*args) + if obj_count > 0: + filter_hit = True break - if filter_effect > 0: - continue - callback_smo(sub, data, resource_type_dict) + if filter_hit: + logger.info('Subscription {} filter hit, skip ResourceType {}.' + .format(sub_data['subscriptionId'], data.id)) + else: + callback_smo(sub, data, resource_type_dict) def _notify_resourcepool(uow, data): @@ -127,7 +126,7 @@ def _notify_resourcepool(uow, data): if not filters: callback_smo(sub, data, resource_pool_dict) continue - filter_effect = 0 + filter_hit = False for filter in filters: try: args = gen_orm_filter(ocloud.ResourcePool, filter) @@ -138,20 +137,19 @@ def _notify_resourcepool(uow, data): sub_data['subscriptionId'], sub_data['filter'])) continue - if len(args) == 0: - continue + if len(args) == 0 and 'objectType' in filter: + filter_hit = True + break args.append(ocloud.ResourcePool.resourcePoolId == data.id) - ret = uow.resource_pools.list_with_count(*args) - if ret[0] > 0: - logger.debug( - 'ResourcePool {} skip for subscription {} because of' - ' the filter.' - .format(data.id, sub_data['subscriptionId'])) - filter_effect += 1 + obj_count, _ = uow.resource_pools.list_with_count(*args) + if obj_count > 0: + filter_hit = True break - if filter_effect > 0: - continue - callback_smo(sub, data, resource_pool_dict) + if filter_hit: + logger.info('Subscription {} filter hit, skip ResourcePool {}.' + .format(sub_data['subscriptionId'], data.id)) + else: + callback_smo(sub, data, resource_pool_dict) def _notify_dms(uow, data): @@ -178,7 +176,7 @@ def _notify_dms(uow, data): if not filters: callback_smo(sub, data, dms_dict) continue - filter_effect = 0 + filter_hit = False for filter in filters: try: args = gen_orm_filter(ocloud.DeploymentManager, filter) @@ -189,21 +187,21 @@ def _notify_dms(uow, data): sub_data['subscriptionId'], sub_data['filter'])) continue - if len(args) == 0: - continue + if len(args) == 0 and 'objectType' in filter: + filter_hit = True + break args.append( ocloud.DeploymentManager.deploymentManagerId == data.id) - ret = uow.deployment_managers.list_with_count(*args) - if ret[0] > 0: - logger.debug( - 'DeploymentManager {} skip for subscription {} because' - ' of the filter.' - .format(data.id, sub_data['subscriptionId'])) - filter_effect += 1 + obj_count, _ = uow.deployment_managers.list_with_count(*args) + if obj_count > 0: + filter_hit = True break - if filter_effect > 0: - continue - callback_smo(sub, data, dms_dict) + if filter_hit: + logger.info('Subscription {} filter hit, skip ' + 'DeploymentManager {}.' + .format(sub_data['subscriptionId'], data.id)) + else: + callback_smo(sub, data, dms_dict) def _notify_resource(uow, data): @@ -230,7 +228,7 @@ def _notify_resource(uow, data): if not filters: callback_smo(sub, data, res_dict) continue - filter_effect = 0 + filter_hit = False for filter in filters: try: args = gen_orm_filter(ocloud.Resource, filter) @@ -241,20 +239,20 @@ def _notify_resource(uow, data): sub_data['subscriptionId'], sub_data['filter'])) continue - if len(args) == 0: - continue + if len(args) == 0 and 'objectType' in filter: + filter_hit = True + break args.append(ocloud.Resource.resourceId == data.id) - ret = uow.resources.list_with_count(res_pool_id, *args) - if ret[0] > 0: - logger.debug( - 'Resource {} skip for subscription {} because of ' - 'the filter.' - .format(data.id, sub_data['subscriptionId'])) - filter_effect += 1 + obj_count, _ = uow.resources.list_with_count( + res_pool_id, *args) + if obj_count > 0: + filter_hit = True break - if filter_effect > 0: - continue - callback_smo(sub, data, res_dict) + if filter_hit: + logger.info('Subscription {} filter hit, skip Resource {}.' + .format(sub_data['subscriptionId'], data.id)) + else: + callback_smo(sub, data, res_dict) def handle_filter(filter: str, f_type: str): @@ -294,15 +292,15 @@ def callback_smo(sub: Subscription, msg: Message2SMO, obj_dict: dict = None): } if msg.notificationEventType in [NotificationEventEnum.DELETE, NotificationEventEnum.MODIFY]: - callback['priorObjectState'] = obj_dict + callback['priorObjectState'] = json.dumps(obj_dict) if msg.notificationEventType in [NotificationEventEnum.CREATE, NotificationEventEnum.MODIFY]: - callback['postObjectState'] = obj_dict + callback['postObjectState'] = json.dumps(obj_dict) if msg.notificationEventType == NotificationEventEnum.DELETE: callback.pop('objectRef') 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(callback_data)) # Call SMO through the SMO callback url o = urlparse(sub_data['callback'])