From a79d2cdd881bbafaf672b20ec540ee1c34ddfb3a Mon Sep 17 00:00:00 2001 From: Ankitkumar Patel Date: Tue, 27 Mar 2018 17:19:26 -0400 Subject: SO response build module updated SO response build module is updated based on the HAS API. Issue-ID: OPTFRA-208 Change-Id: I57ed198967d2dc9a58f1221eb57fda56fcb5fd2d Signed-off-by: Ankitkumar Patel --- .../optimizers/placementopt/conductor/conductor.py | 28 +++++++++++++--------- 1 file changed, 17 insertions(+), 11 deletions(-) (limited to 'osdf') diff --git a/osdf/optimizers/placementopt/conductor/conductor.py b/osdf/optimizers/placementopt/conductor/conductor.py index dc67517..8f286ec 100644 --- a/osdf/optimizers/placementopt/conductor/conductor.py +++ b/osdf/optimizers/placementopt/conductor/conductor.py @@ -126,27 +126,32 @@ def conductor_response_processor(conductor_response, raw_response, req_id): """ composite_solutions = [] name_map = {"physical-location-id": "cloudClli", "host_id": "vnfHostName", - "cloud_version": "cloudVersion", "cloud_owner": "cloudOwner"} + "cloud_version": "cloudVersion", "cloud_owner": "cloudOwner", + "cloud": "cloudRegionId", "service": "serviceInstanceId", "is_rehome": "isRehome", + "location_id": "locationId", "location_type": "locationType"} for reco in conductor_response['plans'][0]['recommendations']: for resource in reco.keys(): c = reco[resource]['candidate'] solution = { 'resourceModuleName': resource, - 'serviceResourceId': reco[resource]['service_resource_id'], - 'inventoryType': c['inventory_type'], - 'serviceInstanceId': c['candidate_id'] if c['inventory_type'] == "service" else "", - 'cloudRegionId': c['location_id'], + 'serviceResourceId': reco[resource].get('service_resource_id', ""), + 'solution': {"identifier": c['inventory_type'], + 'identifiers': [c['candidate_id']], + 'cloudOwner': c.get('cloud_owner', "")}, 'assignmentInfo': [] } + for key, value in c.items(): + if key in ["location_id", "location_type", "is_rehome", "host_id"]: + try: + solution['assignmentInfo'].append({"key": name_map.get(key, key), "value": value}) + except KeyError: + debug_log.debug("The key[{}] is not mapped and will not be returned in assignment info".format(key)) for key, value in reco[resource]['attributes'].items(): try: - solution['assignmentInfo'].append({"variableName": name_map[key], "variableValue": value}) + solution['assignmentInfo'].append({"key": name_map.get(key, key), "value": value}) except KeyError: debug_log.debug("The key[{}] is not mapped and will not be returned in assignment info".format(key)) - - if c.get('host_id'): - solution['assignmentInfo'].append({'variableName': name_map['host_id'], 'variableValue': c['host_id']}) composite_solutions.append(solution) request_state = conductor_response['plans'][0]['status'] @@ -155,14 +160,15 @@ def conductor_response_processor(conductor_response, raw_response, req_id): solution_info = {} if composite_solutions: - solution_info['placementInfo'] = composite_solutions + solution_info.setdefault('placementSolutions', []) + solution_info['placementSolutions'].append(composite_solutions) resp = { "transactionId": transaction_id, "requestId": req_id, "requestState": request_state, "statusMessage": status_message, - "solutionInfo": solution_info + "solutions": solution_info } return resp -- cgit 1.2.3-korg