+"""Ease testing any Clearwater deployment"""
+
+import logging
+import os
+import re
+import time
+
+import pkg_resources
+import requests
+
+from functest.utils import config
+import functest.utils.functest_utils as ft_utils
+
+__author__ = ("Valentin Boucher <valentin.boucher@orange.com>, "
+ "Helen Yao <helanyao@gmail.com>")
+
+
+class ClearwaterTesting(object):
+ """vIMS clearwater base usable by several orchestrators"""
+
+ def __init__(self, case_name, bono_ip, ellis_ip):
+ self.logger = logging.getLogger(__name__)
+ self.case_dir = pkg_resources.resource_filename(
+ 'functest', 'opnfv_tests/vnf/ims')
+ self.data_dir = getattr(config.CONF, 'dir_ims_data')
+ self.result_dir = os.path.join(
+ getattr(config.CONF, 'dir_results'), case_name)
+ self.test_dir = getattr(config.CONF, 'dir_repo_vims_test')
+
+ if not os.path.exists(self.data_dir):
+ os.makedirs(self.data_dir)
+ if not os.path.exists(self.result_dir):
+ os.makedirs(self.result_dir)
+
+ self.ellis_ip = ellis_ip
+ self.bono_ip = bono_ip
+
+ def availability_check(self, signup_code='secret', two_numbers=False):
+ """Create one or two numbers"""
+ assert self.ellis_ip
+ output_dict = {}
+ self.logger.debug('Ellis IP: %s', self.ellis_ip)
+ output_dict['ellis_ip'] = self.ellis_ip
+ account_url = 'http://{0}/accounts'.format(self.ellis_ip)
+ params = {"password": "functest",
+ "full_name": "opnfv functest user",
+ "email": "functest@opnfv.org",
+ "signup_code": signup_code}
+ output_dict['login'] = params
+
+ number_res = self._create_ellis_account(account_url, params)
+ output_dict['number'] = number_res
+
+ session_url = 'http://{0}/session'.format(self.ellis_ip)
+ session_data = {
+ 'username': params['email'],
+ 'password': params['password'],
+ 'email': params['email']
+ }
+ cookies = self._get_ellis_session_cookies(session_url, session_data)