Loading services/TS29222_CAPIF_Access_Control_Policy_API/capif_acl/core/internal_service_ops.py +22 −4 Original line number Diff line number Diff line from datetime import datetime, timedelta from flask import current_app Loading Loading @@ -36,6 +35,22 @@ class InternalServiceOps(Resource): if r is None: mycol.update_one({"service_id": service_id, "aef_id": aef_id}, { "$push": {"api_invoker_policies": invoker_acl.to_dict()}}) inserted_invoker_acl = mycol.find_one({"service_id": service_id, "aef_id": aef_id, "api_invoker_policies.api_invoker_id": invoker_id}, {"_id": 0}) current_app.logger.info(inserted_invoker_acl) inserted_invoker_acl_camel = dict_to_camel_case(inserted_invoker_acl) current_app.logger.info(inserted_invoker_acl_camel) created_invoker_policy = next((policy for policy in inserted_invoker_acl_camel['apiInvokerPolicies'] if policy['apiInvokerId'] == invoker_id), None) accCtrlPolListExt = { "apiId": service_id, "apiInvokerPolicies": [created_invoker_policy] } RedisEvent("ACCESS_CONTROL_POLICY_UPDATE", acc_ctrl_pol_list=accCtrlPolListExt).send_event() else: current_app.logger.info( f"Creating service ACLs for service: {service_id}") Loading @@ -55,9 +70,12 @@ class InternalServiceOps(Resource): current_app.logger.info(inserted_service_acls) inserted_service_acls_camel = dict_to_camel_case(inserted_service_acls) current_app.logger.info(inserted_service_acls_camel) created_invoker_policy = next((policy for policy in inserted_service_acls_camel['apiInvokerPolicies'] if policy['apiInvokerId'] == invoker_id), None) accCtrlPolListExt = { "apiId": service_id, "apiInvokerPolicies": inserted_service_acls_camel['apiInvokerPolicies'] "apiInvokerPolicies": [created_invoker_policy] } RedisEvent("ACCESS_CONTROL_POLICY_UPDATE", acc_ctrl_pol_list=accCtrlPolListExt).send_event() Loading services/TS29222_CAPIF_Events_API/capif_events/core/notifications.py +35 −13 Original line number Diff line number Diff line Loading @@ -40,18 +40,16 @@ class Notifications(): event_detail={} current_app.logger.debug(f"event: {event_detail_redis}") # The nth entry in the "eventFilters" attribute shall correspond to the nth entry in the "events" attribute event_filters = sub.get("event_filters", None) event_filter=None current_app.logger.debug(f"Event filters: {event_filters}") if event_filters: try: event_filter = event_filters[sub.get("events", []).index(event)] event_filter = None if all(value is None for value in event_filters[sub.get("events", []).index(event)].values()) else event_filters[sub.get("events", []).index(event)] current_app.logger.debug(f"Event filters: {event_filter}") except IndexError: event_filter=None if event in ["SERVICE_API_AVAILABLE", "SERVICE_API_UNAVAILABLE"]: current_app.logger.debug(event_filter) if event_filter: api_ids_list = event_filter.get("api_ids", None) if api_ids_list and event_detail_redis.get('apiIds', None)[0] in api_ids_list: Loading Loading @@ -84,9 +82,17 @@ class Notifications(): event_detail["apiInvokerIds"]=event_detail_redis.get('apiInvokerIds', None) elif event in ["ACCESS_CONTROL_POLICY_UPDATE"]: if event_filter: invoker_ids_list = event_filter.get("api_invoker_ids", None) api_ids_list = event_filter.get("api_ids", None) if invoker_ids_list and (event_detail_redis.get('apiInvokerIds', None)[0] in invoker_ids_list or event_detail_redis.get('api_ids', None)[0] in api_ids_list): filter_invoker_ids = event_filter.get("api_invoker_ids", []) filter_api_ids = event_filter.get("api_ids", []) invoker_ids_list = [invoker.get("apiInvokerId") for invoker in event_detail_redis.get("accCtrlPolList", None).get("apiInvokerPolicies")] api_id = event_detail_redis.get("accCtrlPolList").get("apiId", None) if (filter_api_ids and not filter_invoker_ids) and (api_id in filter_api_ids): event_detail["accCtrlPolList"]=event_detail_redis.get('accCtrlPolList', None) elif (not filter_api_ids and filter_invoker_ids) and bool(set(filter_invoker_ids) & set(invoker_ids_list)): event_detail["accCtrlPolList"]=event_detail_redis.get('accCtrlPolList', None) elif (filter_api_ids and filter_invoker_ids) and bool(set(filter_invoker_ids) & set(invoker_ids_list)) and api_id in filter_api_ids: event_detail["accCtrlPolList"]=event_detail_redis.get('accCtrlPolList', None) else: continue Loading @@ -94,15 +100,31 @@ class Notifications(): event_detail["accCtrlPolList"]=event_detail_redis.get('accCtrlPolList', None) elif event in ["SERVICE_API_INVOCATION_SUCCESS", "SERVICE_API_INVOCATION_FAILURE"]: if event_filter: invoker_ids_list = event_filter.get("api_invoker_ids", None) api_ids_list = event_filter.get("api_ids", None) aef_ids_list = event_filter.get("aef_ids", None) if invoker_ids_list and (event_detail_redis.get('apiInvokerIds', None)[0] in invoker_ids_list or event_detail_redis.get('apiIds', None)[0] in api_ids_list or event_detail_redis.get('aefIds', None)[0] in aef_ids_list ): filter_invoker_ids = event_filter.get("api_invoker_ids", None) filter_api_ids = event_filter.get("api_ids", None) filter_aef_ids = event_filter.get("aef_ids", None) invoker_id = event_detail_redis.get("invocationLogs", None)[0].get("api_invoker_id", None) aef_id = event_detail_redis.get("invocationLogs", None)[0].get("aef_id", None) api_id = event_detail_redis.get("invocationLogs", None)[0].get("logs", None)[0].get("api_id", None) if (filter_api_ids and not filter_invoker_ids and not filter_aef_ids) and (api_id in filter_api_ids): event_detail["invocationLogs"]=event_detail_redis.get('invocationLogs', None) elif (not filter_api_ids and filter_invoker_ids and not filter_aef_ids) and invoker_id in filter_invoker_ids: event_detail["invocationLogs"]=event_detail_redis.get('invocationLogs', None) elif (not filter_api_ids and not filter_invoker_ids and filter_aef_ids) and aef_id in filter_aef_ids: event_detail["invocationLogs"]=event_detail_redis.get('invocationLogs', None) elif (filter_api_ids and filter_invoker_ids and not filter_aef_ids) and (api_id in filter_api_ids) and invoker_id in filter_invoker_ids: event_detail["invocationLogs"]=event_detail_redis.get('invocationLogs', None) elif (filter_api_ids and not filter_invoker_ids and filter_aef_ids) and (api_id in filter_api_ids) and aef_id in filter_aef_ids: event_detail["invocationLogs"]=event_detail_redis.get('invocationLogs', None) elif (not filter_api_ids and filter_invoker_ids and filter_aef_ids) and invoker_id in filter_invoker_ids and aef_id in filter_aef_ids: event_detail["invocationLogs"]=event_detail_redis.get('invocationLogs', None) elif (filter_api_ids and filter_invoker_ids and filter_aef_ids) and (api_id in filter_api_ids) and invoker_id in filter_invoker_ids and aef_id in filter_aef_ids: event_detail["invocationLogs"]=event_detail_redis.get('invocationLogs', None) else: continue else: event_detail["invocationLogs"]=event_detail_redis.get('invocationLogs', None) elif event in ["API_TOPOLOGY_HIDING_CREATED", "API_TOPOLOGY_HIDING_REVOKED"]: Loading Loading
services/TS29222_CAPIF_Access_Control_Policy_API/capif_acl/core/internal_service_ops.py +22 −4 Original line number Diff line number Diff line from datetime import datetime, timedelta from flask import current_app Loading Loading @@ -36,6 +35,22 @@ class InternalServiceOps(Resource): if r is None: mycol.update_one({"service_id": service_id, "aef_id": aef_id}, { "$push": {"api_invoker_policies": invoker_acl.to_dict()}}) inserted_invoker_acl = mycol.find_one({"service_id": service_id, "aef_id": aef_id, "api_invoker_policies.api_invoker_id": invoker_id}, {"_id": 0}) current_app.logger.info(inserted_invoker_acl) inserted_invoker_acl_camel = dict_to_camel_case(inserted_invoker_acl) current_app.logger.info(inserted_invoker_acl_camel) created_invoker_policy = next((policy for policy in inserted_invoker_acl_camel['apiInvokerPolicies'] if policy['apiInvokerId'] == invoker_id), None) accCtrlPolListExt = { "apiId": service_id, "apiInvokerPolicies": [created_invoker_policy] } RedisEvent("ACCESS_CONTROL_POLICY_UPDATE", acc_ctrl_pol_list=accCtrlPolListExt).send_event() else: current_app.logger.info( f"Creating service ACLs for service: {service_id}") Loading @@ -55,9 +70,12 @@ class InternalServiceOps(Resource): current_app.logger.info(inserted_service_acls) inserted_service_acls_camel = dict_to_camel_case(inserted_service_acls) current_app.logger.info(inserted_service_acls_camel) created_invoker_policy = next((policy for policy in inserted_service_acls_camel['apiInvokerPolicies'] if policy['apiInvokerId'] == invoker_id), None) accCtrlPolListExt = { "apiId": service_id, "apiInvokerPolicies": inserted_service_acls_camel['apiInvokerPolicies'] "apiInvokerPolicies": [created_invoker_policy] } RedisEvent("ACCESS_CONTROL_POLICY_UPDATE", acc_ctrl_pol_list=accCtrlPolListExt).send_event() Loading
services/TS29222_CAPIF_Events_API/capif_events/core/notifications.py +35 −13 Original line number Diff line number Diff line Loading @@ -40,18 +40,16 @@ class Notifications(): event_detail={} current_app.logger.debug(f"event: {event_detail_redis}") # The nth entry in the "eventFilters" attribute shall correspond to the nth entry in the "events" attribute event_filters = sub.get("event_filters", None) event_filter=None current_app.logger.debug(f"Event filters: {event_filters}") if event_filters: try: event_filter = event_filters[sub.get("events", []).index(event)] event_filter = None if all(value is None for value in event_filters[sub.get("events", []).index(event)].values()) else event_filters[sub.get("events", []).index(event)] current_app.logger.debug(f"Event filters: {event_filter}") except IndexError: event_filter=None if event in ["SERVICE_API_AVAILABLE", "SERVICE_API_UNAVAILABLE"]: current_app.logger.debug(event_filter) if event_filter: api_ids_list = event_filter.get("api_ids", None) if api_ids_list and event_detail_redis.get('apiIds', None)[0] in api_ids_list: Loading Loading @@ -84,9 +82,17 @@ class Notifications(): event_detail["apiInvokerIds"]=event_detail_redis.get('apiInvokerIds', None) elif event in ["ACCESS_CONTROL_POLICY_UPDATE"]: if event_filter: invoker_ids_list = event_filter.get("api_invoker_ids", None) api_ids_list = event_filter.get("api_ids", None) if invoker_ids_list and (event_detail_redis.get('apiInvokerIds', None)[0] in invoker_ids_list or event_detail_redis.get('api_ids', None)[0] in api_ids_list): filter_invoker_ids = event_filter.get("api_invoker_ids", []) filter_api_ids = event_filter.get("api_ids", []) invoker_ids_list = [invoker.get("apiInvokerId") for invoker in event_detail_redis.get("accCtrlPolList", None).get("apiInvokerPolicies")] api_id = event_detail_redis.get("accCtrlPolList").get("apiId", None) if (filter_api_ids and not filter_invoker_ids) and (api_id in filter_api_ids): event_detail["accCtrlPolList"]=event_detail_redis.get('accCtrlPolList', None) elif (not filter_api_ids and filter_invoker_ids) and bool(set(filter_invoker_ids) & set(invoker_ids_list)): event_detail["accCtrlPolList"]=event_detail_redis.get('accCtrlPolList', None) elif (filter_api_ids and filter_invoker_ids) and bool(set(filter_invoker_ids) & set(invoker_ids_list)) and api_id in filter_api_ids: event_detail["accCtrlPolList"]=event_detail_redis.get('accCtrlPolList', None) else: continue Loading @@ -94,15 +100,31 @@ class Notifications(): event_detail["accCtrlPolList"]=event_detail_redis.get('accCtrlPolList', None) elif event in ["SERVICE_API_INVOCATION_SUCCESS", "SERVICE_API_INVOCATION_FAILURE"]: if event_filter: invoker_ids_list = event_filter.get("api_invoker_ids", None) api_ids_list = event_filter.get("api_ids", None) aef_ids_list = event_filter.get("aef_ids", None) if invoker_ids_list and (event_detail_redis.get('apiInvokerIds', None)[0] in invoker_ids_list or event_detail_redis.get('apiIds', None)[0] in api_ids_list or event_detail_redis.get('aefIds', None)[0] in aef_ids_list ): filter_invoker_ids = event_filter.get("api_invoker_ids", None) filter_api_ids = event_filter.get("api_ids", None) filter_aef_ids = event_filter.get("aef_ids", None) invoker_id = event_detail_redis.get("invocationLogs", None)[0].get("api_invoker_id", None) aef_id = event_detail_redis.get("invocationLogs", None)[0].get("aef_id", None) api_id = event_detail_redis.get("invocationLogs", None)[0].get("logs", None)[0].get("api_id", None) if (filter_api_ids and not filter_invoker_ids and not filter_aef_ids) and (api_id in filter_api_ids): event_detail["invocationLogs"]=event_detail_redis.get('invocationLogs', None) elif (not filter_api_ids and filter_invoker_ids and not filter_aef_ids) and invoker_id in filter_invoker_ids: event_detail["invocationLogs"]=event_detail_redis.get('invocationLogs', None) elif (not filter_api_ids and not filter_invoker_ids and filter_aef_ids) and aef_id in filter_aef_ids: event_detail["invocationLogs"]=event_detail_redis.get('invocationLogs', None) elif (filter_api_ids and filter_invoker_ids and not filter_aef_ids) and (api_id in filter_api_ids) and invoker_id in filter_invoker_ids: event_detail["invocationLogs"]=event_detail_redis.get('invocationLogs', None) elif (filter_api_ids and not filter_invoker_ids and filter_aef_ids) and (api_id in filter_api_ids) and aef_id in filter_aef_ids: event_detail["invocationLogs"]=event_detail_redis.get('invocationLogs', None) elif (not filter_api_ids and filter_invoker_ids and filter_aef_ids) and invoker_id in filter_invoker_ids and aef_id in filter_aef_ids: event_detail["invocationLogs"]=event_detail_redis.get('invocationLogs', None) elif (filter_api_ids and filter_invoker_ids and filter_aef_ids) and (api_id in filter_api_ids) and invoker_id in filter_invoker_ids and aef_id in filter_aef_ids: event_detail["invocationLogs"]=event_detail_redis.get('invocationLogs', None) else: continue else: event_detail["invocationLogs"]=event_detail_redis.get('invocationLogs', None) elif event in ["API_TOPOLOGY_HIDING_CREATED", "API_TOPOLOGY_HIDING_REVOKED"]: Loading