aboutsummaryrefslogtreecommitdiffstats
path: root/osdf
diff options
context:
space:
mode:
authorAnkitkumar Patel <ankit@research.att.com>2018-03-28 14:27:53 -0400
committerAnkitkumar Patel <ankit@research.att.com>2018-03-28 14:29:57 -0400
commitad29f38cbcb164a7f328b26daf789dbff90deb98 (patch)
tree4074957d65fcbadee2fb2fad0aa71263b15c8a87 /osdf
parentcf5fe0f8b49f6f354a77fb28b56465a2e18e820d (diff)
Update the SO sync and async responses.
Updated the sync and async responses and addes testcases related to policy adaptors. Issue-ID: OPTFRA-208 Change-Id: Ia0f88df1b897b6158674f3c3a7ef239f2328dcfc Signed-off-by: Ankitkumar Patel <ankit@research.att.com>
Diffstat (limited to 'osdf')
-rwxr-xr-xosdf/__init__.py4
-rw-r--r--osdf/adapters/policy/interface.py7
-rw-r--r--osdf/adapters/policy/utils.py6
-rw-r--r--osdf/operation/responses.py12
-rw-r--r--osdf/optimizers/placementopt/conductor/conductor.py4
-rwxr-xr-xosdf/templates/plc_opt_response.jsont12
6 files changed, 21 insertions, 24 deletions
diff --git a/osdf/__init__.py b/osdf/__init__.py
index 6529b0a..5d15a85 100755
--- a/osdf/__init__.py
+++ b/osdf/__init__.py
@@ -40,6 +40,8 @@ ERROR_TEMPLATE = Template("""
ACCEPTED_MESSAGE_TEMPLATE = Template("""
{
"requestId": "{{ request_id }}",
- "text": "{{ description }}"
+ "transactionId": "{{ transaction_id }}",
+ "requestStatus": "{{ request_status }}",
+ "statusMessage": "{{ status_message }}"
}
""")
diff --git a/osdf/adapters/policy/interface.py b/osdf/adapters/policy/interface.py
index a3b5881..016ac44 100644
--- a/osdf/adapters/policy/interface.py
+++ b/osdf/adapters/policy/interface.py
@@ -159,9 +159,7 @@ def local_policies_location(req_json, osdf_config, service_type):
if service_type == "scheduling":
return lp.get('{}_policy_dir'.format(service_type)), lp.get('{}_policy_files'.format(service_type))
else:
- required_node = osdf_config.core['policy_info'][service_type]['policy_scope']['service_name']
- model_name = retrieve_node(req_json, required_node)
- service_name = model_name # TODO: data_mapping.get_service_type(model_name)
+ service_name = req_json['serviceInfo']['serviceName'] # TODO: data_mapping.get_service_type(model_name)
return lp.get('{}_policy_dir_{}'.format(service_type, service_name.lower())), \
lp.get('{}_policy_files_{}'.format(service_type, service_name.lower()))
return None
@@ -173,7 +171,6 @@ def get_policies(request_json, service_type):
:param service_type: the type of service to call: "placement", "scheduling"
:return: policies associated with this request and provStatus retrieved from Subscriber policy
"""
- prov_status = []
req_info = request_json['requestInfo']
req_id = req_info['requestId']
metrics_log.info(MH.requesting("policy", req_id))
@@ -187,4 +184,4 @@ def get_policies(request_json, service_type):
else:
policies = remote_api(request_json, osdf_config, service_type)
- return policies, prov_status
+ return policies
diff --git a/osdf/adapters/policy/utils.py b/osdf/adapters/policy/utils.py
index 95d03af..f165079 100644
--- a/osdf/adapters/policy/utils.py
+++ b/osdf/adapters/policy/utils.py
@@ -103,8 +103,6 @@ def retrieve_node(req_json, reference):
For placement and other requests, there are encoded JSONs inside the request or policy,
so we need to expand it and then do a search over the parent plus expanded JSON.
"""
- req_json_copy = copy.deepcopy(req_json) # since we expand the JSON in place, we work on a copy
- if 'orderInfo' in req_json_copy['placementInfo']:
- req_json_copy['placementInfo']['orderInfo'] = json.loads(req_json_copy['placementInfo']['orderInfo'])
+ req_json_copy = copy.deepcopy(req_json)
info = dot_notation(req_json_copy, reference)
- return list_flatten(info) if isinstance(info, list) else info \ No newline at end of file
+ return list_flatten(info) if isinstance(info, list) else info
diff --git a/osdf/operation/responses.py b/osdf/operation/responses.py
index 22a94f7..84bb2cc 100644
--- a/osdf/operation/responses.py
+++ b/osdf/operation/responses.py
@@ -21,15 +21,19 @@ from flask import Response
from osdf import ACCEPTED_MESSAGE_TEMPLATE
-def osdf_response_for_request_accept(req_id="", text="", response_code=202, as_http=True):
+def osdf_response_for_request_accept(request_id="", transaction_id="", request_status="", status_message="",
+ response_code=202, as_http=True):
"""Helper method to create a response object for request acceptance, so that the object can be sent to a client
- :param req_id: request ID provided by the caller
- :param text: extra text description about accepting the request (e.g. "Request accepted")
+ :param request_id: request ID provided by the caller
+ :param transaction_id: transaction ID provided by the caller
+ :param request_status: the status of a request
+ :param status_message: details on the status of a request
:param response_code: the HTTP status code to send -- default is 202 (accepted)
:param as_http: whether to send response as HTTP response object or as a string
:return: if as_http is True, return a HTTP Response object. Otherwise, return json-encoded-message
"""
- response_message = ACCEPTED_MESSAGE_TEMPLATE.render(description=text, request_id=req_id)
+ response_message = ACCEPTED_MESSAGE_TEMPLATE.render(request_id=request_id, transaction_id=transaction_id,
+ request_status=request_status, status_message=status_message)
if not as_http:
return response_message
diff --git a/osdf/optimizers/placementopt/conductor/conductor.py b/osdf/optimizers/placementopt/conductor/conductor.py
index 8f286ec..41b901c 100644
--- a/osdf/optimizers/placementopt/conductor/conductor.py
+++ b/osdf/optimizers/placementopt/conductor/conductor.py
@@ -186,8 +186,8 @@ def conductor_no_solution_processor(conductor_response, raw_response, request_id
"""
status_message = conductor_response["plans"][0].get("message")
templ = Template(open(template_placement_response).read())
- return json.loads(templ.render(composite_solutions=[], requestId=request_id,
+ return json.loads(templ.render(composite_solutions=[], requestId=request_id, license_solutions=[],
transactionId=raw_response.headers.get('transaction_id', ""),
- statusMessage=status_message, json=json))
+ requestState="completed", statusMessage=status_message, json=json))
diff --git a/osdf/templates/plc_opt_response.jsont b/osdf/templates/plc_opt_response.jsont
index aa678b5..2bd9f71 100755
--- a/osdf/templates/plc_opt_response.jsont
+++ b/osdf/templates/plc_opt_response.jsont
@@ -1,14 +1,10 @@
{
"requestId": "{{requestId}}",
"transactionId": "{{transacationId}}",
- "startTime": "{{startTime}}",
- "responseTime": "{{responseTime}}",
- "requestType": "{{requestType}}",
"requestState": "{{requestState}}",
- "statusMessage": "{{statusMessage}}",
- "percentProgress": "{{percentProgress}}",
- "solutionInfo": {
- "placement": {{ json.dumps(composite_solutions) }},
- "licenseInfo":{ "featureGroupId": "{{featureGroupId}}" }
+ "statusMessage": "{{statusMessage}}"
+ "solutions": {
+ "placementSolutions": {{ json.dumps(composite_solutions) }},
+ "licenseSolutions":{{ json.dumps(license_solutions) }}
}
}