summaryrefslogtreecommitdiffstats
path: root/vnftest/onap/onap_api_call.py
diff options
context:
space:
mode:
Diffstat (limited to 'vnftest/onap/onap_api_call.py')
-rw-r--r--vnftest/onap/onap_api_call.py152
1 files changed, 0 insertions, 152 deletions
diff --git a/vnftest/onap/onap_api_call.py b/vnftest/onap/onap_api_call.py
deleted file mode 100644
index 9ab95e7..0000000
--- a/vnftest/onap/onap_api_call.py
+++ /dev/null
@@ -1,152 +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 copy
-import logging
-import time
-
-import os
-import yaml
-
-from vnftest.common import constants as consts, utils
-from vnftest.common import rest_client
-from vnftest.common.utils import dotdict
-from vnftest.common.exceptions import MandatoryKeyException, InputParameterMissing
-from vnftest.crawlers.base import Crawler
-from vnftest.onap.common.vf_module_crawler import VfModuleCrawler
-from vnftest.steps import base
-import jinja2
-import jinja2.meta
-
-LOG = logging.getLogger(__name__)
-
-
-class OnapApiCall(base.Step):
- """Call ONAP API
- """
- __step_type__ = "OnapApiCall"
-
- def __init__(self, step_cfg, context, input_params):
- self.step_cfg = step_cfg
- self.context = context
- self.input_params = input_params
- self.input_cfg = None
- self.output_cfg = None
-
- self.rest_def_file = None
- self.delay = None
- self.setup_done = False
-
- def setup(self):
- options = self.step_cfg['options']
- self.rest_def_file = options.get("file")
- self.delay = options.get("delay", 0)
- self.input_cfg = options.get("input", {})
- self.output_cfg = options.get("output", {})
- self.sla_cfg = self.step_cfg.get('sla', {'retries': 0})
- context_dict = {}
- context_dict['creds'] = dotdict(self.context.creds)
- context_dict['vnf_descriptor'] = dotdict(self.context.vnf_descriptor)
- self.input_params['context'] = dotdict(context_dict)
- 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_def = input_parameter['value']
- value = utils.format(value_def, self.input_params)
- if value is None or value == "":
- raise InputParameterMissing(param_name=param_name, source="task configuration")
- params[param_name] = value
-
- def run(self, result, attempt=0):
- LOG.info("** Handling: " + str(self.rest_def_file))
- output = self.run_impl(result)
- try:
- self.handle_sla(output)
- except AssertionError as e:
- LOG.info(str(e))
- if attempt < self.sla_cfg['retries']:
- time.sleep(self.sla_cfg['interval'])
- LOG.info("retry operation")
- attempt = attempt + 1
- return self.run(result, attempt)
- else:
- raise e
- return output
-
- def run_impl(self, result):
- if not self.setup_done:
- self.setup()
- params = copy.deepcopy(consts.component_constants)
- self.eval_input(params)
- execution_result = self.execute_operation(params)
- result_body = execution_result['body']
- output = Crawler.crawl(result_body, self.output_cfg)
- result.update(output)
- return output
-
- def execute_operation(self, params, attempt=0):
- if self.delay > 0:
- time.sleep(self.delay)
- try:
- return self.execute_operation_impl(params)
- except Exception as e:
- LOG.info(str(e))
- if attempt < 3:
- 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):
- operation = self.load_file(params)
- url = operation['url']
- headers = operation.get('headers', {}) or {}
- body = operation.get('body', {}) or {}
- 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 handle_sla(self, output):
- if self.sla_cfg.get('action', "") == 'assert' and 'equals' in self.sla_cfg:
- value_def = self.sla_cfg['value']
- value = utils.format(value_def, output)
- expected_value = self.sla_cfg['equals']
- assert value == expected_value
-
- def load_file(self, params):
- operation_template = utils.resource_as_string(self.rest_def_file)
- operation = jinja2.Template(operation_template).render(**params)
- return yaml.load(operation)