diff options
author | 2018-01-11 14:53:14 -0500 | |
---|---|---|
committer | 2018-01-11 14:54:33 -0500 | |
commit | e91ad0d899121fb190391865422ea6424ffc29ca (patch) | |
tree | 33dc30947fff1dcec8b24a5506b36701ee0d4b08 /adapters/request_parsing/placement.py | |
parent | d51c20ced007294d86e560f3bc9f5812cc17f193 (diff) |
Seed code for other adapters
Issue-ID: OPTFRA-47
Change-Id: I33595df23f077b2a9366c45b69afecdf80beaaf8
Signed-off-by: Sastry Isukapalli <sastry@research.att.com>
Diffstat (limited to 'adapters/request_parsing/placement.py')
-rw-r--r-- | adapters/request_parsing/placement.py | 33 |
1 files changed, 33 insertions, 0 deletions
diff --git a/adapters/request_parsing/placement.py b/adapters/request_parsing/placement.py new file mode 100644 index 0000000..d7a6575 --- /dev/null +++ b/adapters/request_parsing/placement.py @@ -0,0 +1,33 @@ +# ------------------------------------------------------------------------- +# Copyright (c) 2015-2017 AT&T Intellectual Property +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +# ------------------------------------------------------------------------- +# + +import copy +import json +from osdf.utils.programming_utils import list_flatten, dot_notation + + +def json_path_after_expansion(req_json, reference): + """ + Get the child node(s) from the dot-notation [reference] and parent [req_json]. + 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 + req_json_copy['placementInfo']['orderInfo'] = json.loads(req_json_copy['placementInfo']['orderInfo']) + info = dot_notation(req_json_copy, reference) + return list_flatten(info) if isinstance(info, list) else info |