Code Review
/
pti
/
o2.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
review
|
tree
raw
|
inline
| side by side
Fix inventory subscription filter with 'neq'; fix CloudInfo notification
[pti/o2.git]
/
o2ims
/
service
/
command
/
notify_handler.py
diff --git
a/o2ims/service/command/notify_handler.py
b/o2ims/service/command/notify_handler.py
index
01c91c5
..
34470f3
100644
(file)
--- 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
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)
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
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)
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
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):
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
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)
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
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)
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
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):
def _notify_dms(uow, data):
@@
-178,7
+176,7
@@
def _notify_dms(uow, data):
if not filters:
callback_smo(sub, data, dms_dict)
continue
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)
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
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)
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
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):
def _notify_resource(uow, data):
@@
-230,7
+228,7
@@
def _notify_resource(uow, data):
if not filters:
callback_smo(sub, data, res_dict)
continue
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)
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
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)
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
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):
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]:
}
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]:
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)
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'])
# Call SMO through the SMO callback url
o = urlparse(sub_data['callback'])