diff options
author | Moshe <moshehoa@amdocs.com> | 2018-03-14 14:22:13 +0200 |
---|---|---|
committer | Moshe <moshehoa@amdocs.com> | 2018-03-14 14:23:25 +0200 |
commit | 30497ac60f062adba7dae751110dd9fc87ef04db (patch) | |
tree | d9814a8e8ee12e57e241d07a2719c091c1b92a46 /vnftest/onap/steps/onap_api_call.py | |
parent | e01f70617a2f22b71cfce912b72a1dbb77f3f969 (diff) |
Onboard package test case
Issue-ID: VNFSDK-196
Change-Id: I7ba6de4fe6c55b370f9787c23ad16f1afc26f678
Signed-off-by: Moshe <moshehoa@amdocs.com>
Diffstat (limited to 'vnftest/onap/steps/onap_api_call.py')
-rw-r--r-- | vnftest/onap/steps/onap_api_call.py | 168 |
1 files changed, 0 insertions, 168 deletions
diff --git a/vnftest/onap/steps/onap_api_call.py b/vnftest/onap/steps/onap_api_call.py deleted file mode 100644 index e03e00a..0000000 --- a/vnftest/onap/steps/onap_api_call.py +++ /dev/null @@ -1,168 +0,0 @@ -############################################################################## -# Copyright 2018 EuropeanSoftwareMarketingLtd. -# =================================================================== -# Licensed under the ApacheLicense, Version2.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 -# -# 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 -############################################################################## -from __future__ import absolute_import - -import logging -import time -import os -import yaml -import copy - -from vnftest.common.exceptions import MandatoryKeyException, InputParameterMissing -from vnftest.onap.steps import base -from vnftest.common import rest_client -from vnftest.common import constants as consts -from vnftest.onap.contexts.csar import CSARContext - -LOG = logging.getLogger(__name__) - - -class OnapApiCall(base.Step): - - __step_type__ = "OnapApiCall" - - def __init__(self, step_cfg, context_cfg, input_params): - self.step_cfg = step_cfg - self.context_cfg = context_cfg - self.input_params = input_params - self.input_cfg = None - self.output_cfg = None - self.rest_def_file = None - self.setup_done = False - self.curr_path = os.path.dirname(os.path.abspath(__file__)) - - def setup(self): - options = self.step_cfg['options'] - self.rest_def_file = options.get("file") - self.input_cfg = options.get("input", {}) - self.output_cfg = options.get("output", {}) - self.setup_done = True - - def eval_input(self, params): - for input_parameter in self.input_cfg: - param_name = input_parameter['parameter_name'] - value = None - if 'value' in input_parameter: - value = input_parameter['value'] - elif 'source' in input_parameter: - source = input_parameter['source'] - if source == 'prev_step': - if param_name in self.input_params: - value = self.input_params[param_name] - else: - raise InputParameterMissing(param_name=param_name, source='input parameters') - if value is None: - raise InputParameterMissing(param_name=param_name, source="task configuration") - params[param_name] = value - - def run(self, result): - if not self.setup_done: - self.setup() - output = {} - params = copy.deepcopy(consts.component_constants) - self.eval_input(params) - execution_result = self.execute_operation(params) - result_body = execution_result['body'] - for output_parameter in self.output_cfg: - param_name = output_parameter['parameter_name'] - param_path = output_parameter['path'] - path_list = param_path.split("|") - param_value = result_body - for path_element in path_list: - param_value = param_value[path_element] - if param_value is None: - raise MandatoryKeyException(key_name='param_path', class_name=str(result_body)) - result[param_name] = param_value - output[param_name] = param_value - return output - - def execute_operation(self, params, attempt=0): - try: - return self.execute_operation_impl(params) - except Exception as e: - LOG.info(str(e)) - if attempt < 2: - time.sleep(15) - LOG.info("############# retry operation ##########") - attempt = attempt + 1 - return self.execute_operation(params, attempt) - else: - raise e - - def execute_operation_impl(self, params): - input_yaml = self.rest_def_file - LOG.info("########## processing " + input_yaml + "##########") - yaml_path = os.path.join(self.curr_path, input_yaml) - with open(yaml_path) as info: - operation = yaml.load(info) - operation = self.format(operation, params) - url = operation['url'] - headers = operation['headers'] - body = {} - if 'body' in operation: - body = operation['body'] - LOG.info(url) - LOG.info(headers) - LOG.info(body) - if 'file' in operation: - file_path = operation['file'] - LOG.info(file_path) - files = {'upload': open(file_path)} - result = rest_client.upload_file(url, headers, files, LOG) - else: - result = rest_client.call(url, - operation['method'], - headers, - body, - LOG) - if result['return_code'] >= 300: - raise RuntimeError( - "Operation failed. return_code:{}, message:{}".format(result['return_code'], result['body'])) - LOG.info("Results: " + str(result)) - return result - - def format(self, d, params): - ret = None - if isinstance(d, dict): - ret = {} - for k, v in d.iteritems(): - if isinstance(v, basestring): - v = self.format_string(v, params) - else: - v = self.format(v, params) - ret[k] = v - if isinstance(d, list): - ret = [] - for v in d: - if isinstance(v, basestring): - v = self.format_string(v, params) - else: - v = self.format(v, params) - ret.append(v) - if isinstance(d, basestring): - ret = self.format_string(d, params) - return ret - - def format_string(self, st, params): - try: - return st.format(**params) - except Exception as e: - s = str(e) - s = s.replace("'", "") - LOG.info(s) - params[s] = "" - LOG.info("param" + params[s]) - return st.format(**params) - - |