from utils.logger import Logger
from utils.parser import Parser as config
import utils.infra_setup.heat.manager as utils
+import utils.infra_setup.runner.docker_env as docker_env
+import utils.infra_setup.heat.manager as client_manager
LOG = Logger(__name__).getLogger()
-def _prepare_env_daemon():
-
- installer_ip = os.environ.get('INSTALLER_IP', 'undefined')
- installer_type = os.environ.get('INSTALLER_TYPE', 'undefined')
+def _prepare_env_daemon(test_yardstick):
rc_file = config.bottlenecks_config["rc_dir"]
- _get_remote_rc_file(rc_file, installer_ip, installer_type)
+ if not os.path.exists(rc_file):
+ installer_ip = os.environ.get('INSTALLER_IP', 'undefined')
+ installer_type = os.environ.get('INSTALLER_TYPE', 'undefined')
+ _get_remote_rc_file(rc_file, installer_ip, installer_type)
_source_file(rc_file)
- _append_external_network(rc_file)
+ if not os.environ.get("EXTERNAL_NETWORK"):
+ _append_external_network(rc_file)
+ if test_yardstick:
+ yardstick_contain = docker_env.yardstick_info["container"]
+ cmd = "cp %s %s" % (rc_file,
+ config.bottlenecks_config["yardstick_rc_dir"])
+ docker_env.docker_exec_cmd(yardstick_contain,
+ cmd)
# update the external_network
_source_file(rc_file)
+def file_copy(src_file, dest_file):
+ src = file(src_file, "r+")
+ des = file(dest_file, "w+")
+ des.writelines(src.read())
+ src.close()
+ des.close()
+
+
def _get_remote_rc_file(rc_file, installer_ip, installer_type):
RELENG_DIR = config.bottlenecks_config["releng_dir"]
p = subprocess.Popen(". %s; env" % rc_file, stdout=subprocess.PIPE,
shell=True)
output = p.communicate()[0]
- env = dict((line.split('=', 1) for line in output.splitlines()))
+ output_lines = output.splitlines()
+ env = list()
+ for line in output_lines:
+ if '=' in line:
+ env.append(tuple(line.split('=', 1)))
+
+ env = dict(env)
+# env = dict((line.split('=', 1) for line in output_lines))
os.environ.update(env)
return env
except OSError as e:
if e.errno != errno.EEXIST:
raise
+
+
+def prepare_image(image_name, image_dir):
+ glance_client = client_manager._get_glance_client()
+ if not os.path.isfile(image_dir):
+ LOG.error("Error: file %s does not exist.", image_dir)
+ return None
+ try:
+ images = glance_client.images.list()
+ image_id = next((i.id for i in images if i.name == image_name), None)
+ if image_id is not None:
+ LOG.info("Image %s already exists.", image_name)
+ else:
+ LOG.info("Creating image '%s' from '%s'...", image_name, image_dir)
+
+ image = glance_client.images.create(
+ name=image_name, visibility="public", disk_format="qcow2",
+ container_format="bare")
+ image_id = image.id
+ with open(image_dir) as image_data:
+ glance_client.images.upload(image_id, image_data)
+ return image_id
+ except Exception: # pylint: disable=broad-except
+ LOG.error(
+ "Error [create_glance_image(glance_client, '%s', '%s')]",
+ image_name, image_dir)
+ return None