Łukasz Oleś 3595aa7ef1 Use overlay images, it speedups tests
Related-bug: #1533609

Change-Id: Ia97b8a6da58352b0c7654a023a0c65ed1f8746d4
2016-02-02 14:56:24 +01:00

82 lines
2.2 KiB
Python

# -*- coding: utf-8 -*-
from copy import copy
import os
import subprocess as sub
import sys
import yaml
from devops.models import Environment
def create_overlay_image(env_name, node_name, base_image):
overlay_image_path = 'tmp/{}_{}.qcow2'.format(env_name, node_name)
base_image = os.path.abspath(base_image)
if os.path.exists(overlay_image_path):
os.unlink(overlay_image_path)
try:
sub.call(['qemu-img', 'create', '-b', base_image, '-f', 'qcow2',
overlay_image_path])
except sub.CalledProcessError as e:
print e.output
raise
return overlay_image_path
def create_config():
env = os.environ
conf_path = env['CONF_PATH']
with open(conf_path) as c:
conf = yaml.load(c.read())
env_name = env['ENV_NAME']
image_path = env['IMAGE_PATH']
slaves_count = int(env['SLAVES_COUNT'])
conf['env_name'] = env_name
node_params = conf['rack-01-node-params']
group = conf['groups'][0]
for i in range(slaves_count):
group['nodes'].append({'name': 'slave-{}'.format(i),
'role': 'slave'})
for node in group['nodes']:
node['params'] = copy(node_params)
vol_path = create_overlay_image(env_name, node['name'], image_path)
node['params']['volumes'][0]['source_image'] = vol_path
return {'template': {'devops_settings': conf}}
def get_env():
env = os.environ
env_name = env['ENV_NAME']
return Environment.get(name=env_name)
def get_master_ip(env):
admin=env.get_node(role='master')
return admin.get_ip_address_by_network_name('public')
def get_slave_ips(env):
slaves = env.get_nodes(role='slave')
ips = []
for slave in slaves:
ips.append(slave.get_ip_address_by_network_name('public'))
return ips
def define_from_config(conf):
env = Environment.create_environment(conf)
env.define()
env.start()
if __name__ == '__main__':
if len(sys.argv) != 2:
sys.exit(2)
cmd = sys.argv[1]
if cmd == 'create_env':
config = create_config()
define_from_config(config)
elif cmd == 'get_admin_ip':
print get_master_ip(get_env())
elif cmd == 'get_slaves_ips':
print get_slave_ips(get_env())