From 5f64f0ea74e6a69b63b177a2fd2adceca33f030a Mon Sep 17 00:00:00 2001
From: hajipour <shajipour@cttc.es>
Date: Thu, 29 Feb 2024 21:38:18 +0000
Subject: [PATCH] service_2_bwInfo function bug resolved: change in config
 rules applied in the function

---
 .../rest_server/nbi_plugins/etsi_bwm/Tools.py | 21 ++++++++++++-------
 1 file changed, 13 insertions(+), 8 deletions(-)

diff --git a/src/nbi/service/rest_server/nbi_plugins/etsi_bwm/Tools.py b/src/nbi/service/rest_server/nbi_plugins/etsi_bwm/Tools.py
index f32fe5699..c39a380dc 100644
--- a/src/nbi/service/rest_server/nbi_plugins/etsi_bwm/Tools.py
+++ b/src/nbi/service/rest_server/nbi_plugins/etsi_bwm/Tools.py
@@ -31,7 +31,7 @@ LOGGER = logging.getLogger(__name__)
 ENDPOINT_SETTINGS_KEY = '/device[{:s}]/endpoint[{:s}]/vlan[{:d}]/settings'
 DEVICE_SETTINGS_KEY = '/device[{:s}]/settings'
 RE_CONFIG_RULE_IF_SUBIF = re.compile(r'^\/interface\[([^\]]+)\]\/subinterface\[([^\]]+)\]$')
-MEC_CONSIDERED_FIELDS = ['requestType', 'sessionFilter', 'fixedAllocation', 'allocationDirection']
+MEC_CONSIDERED_FIELDS = ['requestType', 'sessionFilter', 'fixedAllocation', 'allocationDirection', 'fixedBWPriority']
 ALLOCATION_DIRECTION_DESCRIPTIONS = {
     '00' : 'Downlink (towards the UE)',
     '01' : 'Uplink (towards the application/session)',
@@ -59,12 +59,19 @@ def service_2_bwInfo(service: Service) -> dict:
             break
 
     for config_rule in service.service_config.config_rules:
+        resource_value_json = json.loads(config_rule.custom.resource_value)
+        if config_rule.custom.resource_key != '/request':
+            continue
         for key in ['allocationDirection', 'fixedBWPriority', 'requestType', 'sourceIp', 'sourcePort', 'dstPort', 'protocol', 'sessionFilter']:
-            if config_rule.custom.resource_key == key:
-                if key != 'sessionFilter':
-                    response[key] = config_rule.custom.resource_value
-                else:
-                    response[key] = json.loads(config_rule.custom.resource_value)
+            if key not in resource_value_json: 
+                continue
+
+            if key == 'sessionFilter':
+                response[key] = [resource_value_json[key]]
+            elif key == 'requestType':
+                response[key] = str(resource_value_json[key])
+            else:
+                response[key] = resource_value_json[key]
 
     unixtime = time.time()
     response['timeStamp'] = { # Time stamp to indicate when the corresponding information elements are sent
@@ -76,8 +83,6 @@ def service_2_bwInfo(service: Service) -> dict:
 
 def bwInfo_2_service(client, bw_info: dict) -> Service:
     # add description to allocationDirection code
-    if ad_code := bw_info.get('allocationDirection'):
-        bw_info['allocationDirection'] = {'code': ad_code, 'description': ALLOCATION_DIRECTION_DESCRIPTIONS[ad_code]}
     if 'sessionFilter' in bw_info:
         bw_info['sessionFilter'] = bw_info['sessionFilter'][0] # Discard other items in sessionFilter field
 
-- 
GitLab