+# def get_resource_dict(resource_type):
+# return {
+# 'resourceTypeId': resource_type.resourceTypeId,
+# 'name': resource_type.name,
+# 'description': resource_type.description,
+# 'vendor': resource_type.vendor,
+# 'model': resource_type.model,
+# 'version': resource_type.version,
+# }
+#
+#
+# def handle_filter(filter: str, f_type: str):
+# if not filter:
+# return
+#
+# filter_list = filter.strip(' []').split('|')
+#
+# match_type_count = 0
+# filters = []
+# for sub_filter in filter_list:
+# objectType, objectTypeValue = get_object_type_and_value(sub_filter)
+# if objectTypeValue == f_type:
+# match_type_count += 1
+# filters.append(sub_filter)
+# elif not objectType and f_type == 'ResourceInfo':
+# filters.append(sub_filter)
+#
+# return match_type_count, filters
+#
+#
+# def get_object_type_and_value(sub_filter):
+# exprs = sub_filter.split(';')
+# for expr in exprs:
+# items = expr.strip(' ()').split(',')
+# item_key = items[1].strip()
+# if item_key == 'objectType':
+# return True, items[2].strip()
+# return False, ''
+#
+#
+# def check_filters(filters, sub_data, uow, id):
+# for filter in filters[1]:
+# if isinstance(filter, bool) and filter:
+# return True
+#
+# try:
+# args = gen_orm_filter(ocloud.ResourceType, filter)
+# except KeyError:
+# logger.warning(
+# 'Subscription {} filter {} has wrong attribute '
+# 'name or value. Ignore the filter.'.format(
+# sub_data['subscriptionId'],
+# sub_data['filter']))
+# continue
+#
+# if len(args) == 0 and 'objectType' in filter:
+# return True
+#
+# args.append(ocloud.ResourceType.resourceTypeId == id)
+# obj_count, _ = uow.resource_types.list_with_count(*args)
+# if obj_count > 0:
+# return True
+# return False
+#
+#
+# def _notify_resourcetype(uow, notifications, data):
+# with uow:
+# resource_type = uow.resource_types.get(data.id)
+# if resource_type is None:
+# logger.warning('ResourceType {} does not exists.'.format(data.id))
+# return
+#
+# resource_type_dict = get_resource_dict(resource_type)
+#
+# subs = uow.subscriptions.list()
+# for sub in subs:
+# sub_data = sub.serialize()
+# filters = handle_filter(sub_data['filter'], 'ResourceTypeInfo')
+# logger.debug(f'filters: {filters}, sub_data: {sub_data}')
+#
+# if not filters or filters[0] == 0 or check_filters(
+# filters, sub_data, uow, data.id):
+# callback_smo(notifications, sub, data, resource_type_dict)
+# continue
+#
+# logger.info('Subscription {} filter hit, skip ResourceType {}.'
+# .format(sub_data['subscriptionId'], data.id))
+