import sys
import yaml
-from opnfv.utils import constants as opnfv_constants
import functest.utils.functest_logger as ft_logger
import functest.utils.functest_utils as ft_utils
import functest.utils.openstack_utils as os_utils
from functest.utils.constants import CONST
+from opnfv.utils import constants as opnfv_constants
+from opnfv.deployment import factory
+
actions = ['start', 'check']
""" logging configuration """
def __init__(self):
self.parser = argparse.ArgumentParser()
self.parser.add_argument("action", help="Possible actions are: "
- "'{d[0]}|{d[1]}' ".format(d=actions))
+ "'{d[0]}|{d[1]}' ".format(d=actions),
+ choices=actions)
self.parser.add_argument("-d", "--debug", help="Debug mode",
action="store_true")
if CONST.INSTALLER_IP is None:
logger.error("The env variable CI_INSTALLER_IP must be provided in"
" order to fetch the credentials from the installer.")
- sys.exit("Missing CI_INSTALLER_IP.")
+ raise Exception("Missing CI_INSTALLER_IP.")
if CONST.INSTALLER_TYPE not in opnfv_constants.INSTALLERS:
logger.error("Cannot fetch credentials. INSTALLER_TYPE=%s is "
"not a valid OPNFV installer. Available "
"installers are : %s." %
(CONST.INSTALLER_TYPE,
opnfv_constants.INSTALLERS))
- sys.exit("Wrong INSTALLER_TYPE.")
+ raise Exception("Wrong INSTALLER_TYPE.")
cmd = ("/home/opnfv/repos/releng/utils/fetch_os_creds.sh "
"-d %s -i %s -a %s"
output = p.communicate()[0]
logger.debug("\n%s" % output)
if p.returncode != 0:
- logger.error("Failed to fetch credentials from installer.")
- sys.exit(1)
+ raise Exception("Failed to fetch credentials from installer.")
else:
logger.info("RC file provided in %s."
% CONST.openstack_creds)
if os.path.getsize(CONST.openstack_creds) == 0:
- logger.error("The file %s is empty."
- % CONST.openstack_creds)
- sys.exit(1)
+ raise Exception("The file %s is empty." % CONST.openstack_creds)
logger.info("Sourcing the OpenStack RC file...")
os_utils.source_credentials(
line = p.stdout.readline().rstrip()
if "ERROR" in line:
logger.error(line)
- sys.exit("Problem while running 'check_os.sh'.")
+ raise Exception("Problem while running 'check_os.sh'.")
logger.info(line)
def check_environment():
msg_not_active = "The Functest environment is not installed."
if not os.path.isfile(CONST.env_active):
- logger.error(msg_not_active)
- sys.exit(1)
+ raise Exception(msg_not_active)
with open(CONST.env_active, "r") as env_file:
s = env_file.read()
if not re.search("1", s):
- logger.error(msg_not_active)
- sys.exit(1)
+ raise Exception(msg_not_active)
logger.info("Functest environment is installed.")
-def main(**kwargs):
- if not (kwargs['action'] in actions):
- logger.error('Argument not valid.')
- sys.exit()
-
- if kwargs['action'] == "start":
- logger.info("######### Preparing Functest environment #########\n")
- check_env_variables()
- create_directories()
- source_rc_file()
- patch_config_file()
- verify_deployment()
- install_rally()
- install_tempest()
- create_flavor()
-
- with open(CONST.env_active, "w") as env_file:
- env_file.write("1")
+def print_deployment_info():
+ installer_params_yaml = os.path.join(CONST.dir_repo_functest,
+ 'functest/ci/installer_params.yaml')
+ if (CONST.INSTALLER_IP and CONST.INSTALLER_TYPE and
+ CONST.INSTALLER_TYPE in opnfv_constants.INSTALLERS):
+ installer_params = ft_utils.get_parameter_from_yaml(
+ CONST.INSTALLER_TYPE, installer_params_yaml)
+
+ user = installer_params.get('user', None)
+ password = installer_params.get('password', None)
+ pkey = installer_params.get('pkey', None)
+
+ try:
+ handler = factory.Factory.get_handler(
+ installer=CONST.INSTALLER_TYPE,
+ installer_ip=CONST.INSTALLER_IP,
+ installer_user=user,
+ installer_pwd=password,
+ pkey_file=pkey)
+ if handler:
+ logger.info('\n\nDeployment information:\n%s' %
+ handler.get_deployment_info())
+ except Exception as e:
+ logger.debug("Cannot get deployment information. %s" % e)
- check_environment()
- if kwargs['action'] == "check":
- check_environment()
-
- exit(0)
+def main(**kwargs):
+ try:
+ if not (kwargs['action'] in actions):
+ logger.error('Argument not valid.')
+ return -1
+ elif kwargs['action'] == "start":
+ logger.info("######### Preparing Functest environment #########\n")
+ check_env_variables()
+ create_directories()
+ source_rc_file()
+ patch_config_file()
+ verify_deployment()
+ install_rally()
+ install_tempest()
+ create_flavor()
+ with open(CONST.env_active, "w") as env_file:
+ env_file.write("1")
+ check_environment()
+ print_deployment_info()
+ elif kwargs['action'] == "check":
+ check_environment()
+ except Exception as e:
+ logger.error(e)
+ return -1
+ return 0
if __name__ == '__main__':
parser = PrepareEnvParser()
args = parser.parse_args(sys.argv[1:])
- main(**args)
+ sys.exit(main(**args))