request_parameters = request_json.get('serviceProfile',{})
service_info = {}
req_info['numSolutions'] = 'all'
- resp = conductor.request(req_info, demands, request_parameters, service_info, False,
- osdf_config, policies)
- if resp["plans"][0].get("status") == "not found":
- resp["recommendations"] = list()
+ try:
+ resp = conductor.request(req_info, demands, request_parameters, service_info, False,
+ osdf_config, policies)
+ except RequestException as e:
+ resp = e.response.json()
+ error = resp['plans'][0]['message']
+ error_log.error('Error from conductor {}'.format(error))
debug_log.debug("Response from conductor {}".format(str(resp)))
overall_recommendations[nst_name] = resp["plans"][0].get("recommendations")
solutions['newNSISolutions'] = new_nsi_solutions
solutions['sharedNSISolutions'] = []
return get_nsi_selection_response(req_info, solutions)
- else:
+ else:
return conductor_response_processor(overall_recommendations, nst_info_map, req_info, request_json["serviceProfile"])
except Exception as ex:
error_log.error("Error for {} {}".format(req_info.get('requestId'),
traceback.format_exc()))
- if isinstance(ex, RequestException):
- try:
- error_message = json.loads(ex.response)['plans'][0]['message']
- except Exception:
- error_message = "Problem connecting to conductor"
- else:
- error_message = str(ex)
+ error_message = str(ex)
return conductor_error_response_processor(req_info, error_message)
{
"requestId":"d290f1ee-6c54-4b01-90e6-d701748f0851",
"transactionId":"d290f1ee-6c54-4b01-90e6-d701748f0851",
- "requestStatus":"error",
- "statusMessage":"Some error message"
-}
\ No newline at end of file
+ "requestStatus":"completed",
+ "statusMessage":"",
+ "solutions":{
+ "sharedNSISolutions":[
+
+ ],
+ "newNSISolutions":[
+ {
+ "matchLevel":"",
+ "NSTInfo":{"invariantUUID": "fda3c1e8-7653-4acd-80ef-f5755c1d3859",
+ "UUID": "a6906768-1cae-4e78-acd1-d753ac61f3e8",
+ "NSTName": "URLLC_1"
+ },
+
+ "NSSISolutions":[
+ {
+ "sliceProfile": {
+ "latency": 2,
+ "security": "High",
+ "reliability": 99.9999,
+ "trafficDensity": 1,
+ "connDensity": 100000,
+ "expDataRate": 50,
+ "jitter": 1,
+ "survivalTime": 0,
+ "domainType":"cn",
+ "resourceSharingLevel":"shared"
+ }
+ }
+ ]
+ }
+ ]
+ }
+}
\r
import json\r
import unittest\r
-from requests import RequestException\r
+from requests import RequestException, Response\r
\r
from apps.slice_selection.optimizers.conductor.remote_opt_processor import process_nsi_selection_opt\r
from osdf.adapters.local_data import local_policies\r
conductor_error_response_file = 'test/apps/slice_selection/conductor_error_response.json'\r
conductor_error_response = json_from_file(conductor_error_response_file)\r
\r
+ response = Response()\r
+ response._content = json.dumps(conductor_error_response).encode()\r
self.patcher_req = patch('osdf.adapters.conductor.conductor.request',\r
- side_effect=RequestException(response=json.dumps(conductor_error_response)))\r
+ side_effect=RequestException(response=response))\r
self.Mock_req = self.patcher_req.start()\r
self.assertEquals(error_response_json, process_nsi_selection_opt(request_json, self.osdf_config))\r
self.patcher_req.stop()\r