Prepare env will exit when an error is raised 70/28770/7
authorhelenyao <yaohelan@huawei.com>
Thu, 16 Feb 2017 02:04:34 +0000 (21:04 -0500)
committerhelenyao <yaohelan@huawei.com>
Wed, 22 Feb 2017 11:44:47 +0000 (06:44 -0500)
JIRA: FUNCTEST-727

Change-Id: I4d8e24c0cb6272d92dc777dc82d56490948598db
Signed-off-by: helenyao <yaohelan@huawei.com>
functest/ci/prepare_env.py
functest/utils/functest_utils.py

index 6b24fe0..ba34976 100755 (executable)
@@ -1,18 +1,11 @@
 #!/usr/bin/env python
 #
-# Author: Jose Lausuch (jose.lausuch@ericsson.com)
-#
-# Installs the Functest framework within the Docker container
-# and run the tests automatically
-#
-#
 # All rights reserved. This program and the accompanying materials
 # are made available under the terms of the Apache License, Version 2.0
 # which accompanies this distribution, and is available at
 # http://www.apache.org/licenses/LICENSE-2.0
 #
 
-
 import argparse
 import json
 import os
@@ -222,20 +215,19 @@ def install_rally():
         "Deployment %s does not exist."
         % CONST.rally_deployment_name),
         verbose=False)
+
     rally_conf = os_utils.get_credentials_for_rally()
     with open('rally_conf.json', 'w') as fp:
         json.dump(rally_conf, fp)
     cmd = ("rally deployment create "
-           "--file=rally_conf.json --name={}"
+           "--file=rally_conf.json --name={0}"
            .format(CONST.rally_deployment_name))
-    ft_utils.execute_command(cmd,
-                             error_msg=("Problem while creating "
-                                        "Rally deployment"))
+    error_msg = "Problem while creating Rally deployment"
+    ft_utils.execute_command_raise(cmd, error_msg=error_msg)
 
     cmd = "rally deployment check"
-    ft_utils.execute_command(cmd,
-                             error_msg=("OpenStack not responding or "
-                                        "faulty Rally deployment."))
+    error_msg = "OpenStack not responding or faulty Rally deployment."
+    ft_utils.execute_command_raise(cmd, error_msg=error_msg)
 
     cmd = "rally deployment list"
     ft_utils.execute_command(cmd,
@@ -250,19 +242,30 @@ def install_rally():
 
 def install_tempest():
     logger.info("Installing tempest from existing repo...")
-    cmd = ("rally verify create-verifier --source {0} "
-           "--name {1} --type tempest"
-           .format(CONST.dir_repo_tempest, CONST.tempest_deployment_name))
-    ft_utils.execute_command(cmd,
-                             error_msg="Problem while installing Tempest.")
+    cmd = ("rally verify list-verifiers | "
+           "grep '{0}' | wc -l".format(CONST.tempest_deployment_name))
+    p = subprocess.Popen(cmd, stdout=subprocess.PIPE, shell=True)
+    while p.poll() is None:
+        line = p.stdout.readline().rstrip()
+        if str(line) == '0':
+            logger.debug("Tempest %s does not exist" %
+                         CONST.tempest_deployment_name)
+            cmd = ("rally verify create-verifier --source {0} "
+                   "--name {1} --type tempest"
+                   .format(CONST.dir_repo_tempest,
+                           CONST.tempest_deployment_name))
+            error_msg = "Problem while installing Tempest."
+            ft_utils.execute_command_raise(cmd, error_msg=error_msg)
 
 
 def create_flavor():
-    os_utils.get_or_create_flavor('m1.tiny',
-                                  '512',
-                                  '1',
-                                  '1',
-                                  public=True)
+    _, flavor_id = os_utils.get_or_create_flavor('m1.tiny',
+                                                 '512',
+                                                 '1',
+                                                 '1',
+                                                 public=True)
+    if flavor_id is None:
+        raise Exception('Failed to create flavor')
 
 
 def check_environment():
index b2c36cf..78831c1 100644 (file)
@@ -291,6 +291,13 @@ def get_ci_envvars():
     return ci_env_var
 
 
+def execute_command_raise(cmd, info=False, error_msg="",
+                          verbose=True, output_file=None):
+    ret = execute_command(cmd, info, error_msg, verbose, output_file)
+    if ret != 0:
+        raise Exception(error_msg)
+
+
 def execute_command(cmd, info=False, error_msg="",
                     verbose=True, output_file=None):
     if not error_msg: