From fa118071c6d10923b2a84871acb11eb505ff2679 Mon Sep 17 00:00:00 2001 From: Stavros-Anastasios Charismiadis Date: Thu, 12 Mar 2026 15:12:54 +0200 Subject: [PATCH 1/3] Fix Docker version check in run.sh --- services/run.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/services/run.sh b/services/run.sh index 5acc9afe..89156868 100755 --- a/services/run.sh +++ b/services/run.sh @@ -21,7 +21,7 @@ help() { docker_version=$(docker compose version --short | cut -d',' -f1) IFS='.' read -ra version_components <<< "$docker_version" -if [ "${version_components[0]}" -ge 2 ] && [ "${version_components[1]}" -ge 10 ]; then +if [ "${version_components[0]}" -gt 2 ] || { [ "${version_components[0]}" -eq 2 ] && [ "${version_components[1]}" -ge 10 ]; }; then echo "Docker compose version it greater than 2.10" else echo "Docker compose version is not valid. Should be greater than 2.10" @@ -45,7 +45,7 @@ while getopts ":c:l:ms:hrv:f:g:b:" opt; do CAPIF_REGISTER="$OPTARG" ;; m) - MONITORING_STATE=true + MONITORING_STATE="$OPTARG" ;; s) ROBOT_MOCK_SERVER="$OPTARG" -- GitLab From abfe4d45cb5cc9bd028cf8984e1aac6adbe466ff Mon Sep 17 00:00:00 2001 From: Stavros Charismiadis Date: Tue, 17 Mar 2026 12:36:27 +0200 Subject: [PATCH 2/3] impove check for vendor extensibility feature --- .../service_apis/core/discoveredapis.py | 9 +++-- .../service_apis/vendor_specific.py | 40 ++++++++++--------- 2 files changed, 27 insertions(+), 22 deletions(-) diff --git a/services/TS29222_CAPIF_Discover_Service_API/service_apis/core/discoveredapis.py b/services/TS29222_CAPIF_Discover_Service_API/service_apis/core/discoveredapis.py index 6f9b0651..119cf4a2 100644 --- a/services/TS29222_CAPIF_Discover_Service_API/service_apis/core/discoveredapis.py +++ b/services/TS29222_CAPIF_Discover_Service_API/service_apis/core/discoveredapis.py @@ -80,7 +80,7 @@ class DiscoverApisOperations(Resource): if "vend-spec" in param: vend_param = param.split("vend-spec-")[1] attribute_path = query_params[param]["target"].split('/') - vend_spec_query_params_n_values[attribute_path[1] + "." + vend_param] = query_params[param]["value"] + vend_spec_query_params_n_values[".".join(attribute_path[1:]) + "." + vend_param] = query_params[param]["value"] elif param in ["api_version", "comm_type", "protocol", "aef_id", "data_format"]: my_params.append(json.loads(query_params_name[param].replace("QPV", query_params[param]))) else: @@ -102,9 +102,10 @@ class DiscoverApisOperations(Resource): vendor_specific_fields_path = find_attribute_in_body(discoved_api, '') if vendor_specific_fields_path: if vend_spec_query_params_n_values: - vs_filtered_apis = filter_apis_with_vendor_specific_params(discoved_api, vend_spec_query_params_n_values, vendor_specific_fields_path) - if vs_filtered_apis: - json_docs.append(filter_fields(vs_filtered_apis)) + pass_filter = filter_apis_with_vendor_specific_params(discoved_api, + vend_spec_query_params_n_values) + if pass_filter: + json_docs.append(filter_fields(discoved_api)) else: json_docs.append(filter_fields(discoved_api)) else: diff --git a/services/TS29222_CAPIF_Discover_Service_API/service_apis/vendor_specific.py b/services/TS29222_CAPIF_Discover_Service_API/service_apis/vendor_specific.py index f7a71ebb..23141393 100644 --- a/services/TS29222_CAPIF_Discover_Service_API/service_apis/vendor_specific.py +++ b/services/TS29222_CAPIF_Discover_Service_API/service_apis/vendor_specific.py @@ -1,5 +1,5 @@ import re - +from flask import current_app def find_attribute_in_body(test, path): f_key = [] @@ -70,22 +70,26 @@ def remove_vendor_specific_fields(discoved_api, vendor_specific_fields_path): return discoved_api -def filter_apis_with_vendor_specific_params(discoved_api, vend_spec_query_params_n_values, vendor_specific_fields_path): +def nested_key_exists(dictionary, keys): + """ + Checks if a nested path of keys exists in a dictionary. + """ + _dict = dictionary + for key in keys: + if isinstance(_dict, dict) and key in _dict: + _dict = _dict[key] + else: + return False, -1 + return True, _dict + + +def filter_apis_with_vendor_specific_params(discoved_api, vend_spec_query_params_n_values): + pass_filter = True for k, v in vend_spec_query_params_n_values.items(): parts = k.split('.') - for path in vendor_specific_fields_path: - if parts[0] in path: - path_pieces = path.split('.') - tmp_body = discoved_api - vs_field = path_pieces[-1] - for path_piece in path_pieces[:-1]: - if path_piece.isnumeric(): - path_piece = int(path_piece) - v_2 = tmp_body[path_piece] - tmp_body = v_2 - if parts[1] in tmp_body[vs_field].keys(): - if tmp_body[vs_field][parts[1]] != v: - return {} - else: - return {} - return discoved_api \ No newline at end of file + exists, value = nested_key_exists(discoved_api, parts) + if exists: + if v != value: + pass_filter = False + break + return pass_filter \ No newline at end of file -- GitLab From 7182f82a9ea760017c204b79bbacfca557a70fa1 Mon Sep 17 00:00:00 2001 From: Stavros Charismiadis Date: Tue, 24 Mar 2026 09:24:36 +0200 Subject: [PATCH 3/3] Restore MONITORING_STATE definition in run.sh --- services/run.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/services/run.sh b/services/run.sh index 89156868..e2510aaa 100755 --- a/services/run.sh +++ b/services/run.sh @@ -45,7 +45,7 @@ while getopts ":c:l:ms:hrv:f:g:b:" opt; do CAPIF_REGISTER="$OPTARG" ;; m) - MONITORING_STATE="$OPTARG" + MONITORING_STATE=true ;; s) ROBOT_MOCK_SERVER="$OPTARG" -- GitLab