Merge "launch: Use popen rather than check_output"

This commit is contained in:
Jenkins 2016-09-15 22:41:30 +00:00 committed by Gerrit Code Review
commit 2d0f60a3dd

View File

@ -68,6 +68,23 @@ class JobDir(object):
shutil.rmtree(self.root)
def run(cmd, **args):
args['stdout'] = subprocess.PIPE
args['stderr'] = subprocess.STDOUT
print "Running: %s" % (cmd,)
proc = subprocess.Popen(cmd, **args)
out = ''
for line in iter(proc.stdout.readline, ''):
sys.stdout.write(line)
sys.stdout.flush()
out += line
ret = proc.wait()
print "Return code: %s" % (ret,)
if ret != 0:
raise subprocess.CalledProcessError(ret, cmd, out)
return ret
def bootstrap_server(server, key, name, volume_device, keep,
mount_path, fs_label):
@ -137,20 +154,16 @@ def bootstrap_server(server, key, name, volume_device, keep,
# Regenerate inventory cache, throwing an error if there is an issue
# so that we don't generate a bogus groups file
try:
subprocess.check_output(
['/etc/ansible/hosts/openstack', '--list'],
run(['/etc/ansible/hosts/openstack', '--list'],
env=expand_env)
except subprocess.CalledProcessError as e:
print "Inventory regeneration failed"
print e.output
raise
print "--- Running /usr/local/bin/expand-groups.sh ---"
print subprocess.check_output(
'/usr/local/bin/expand-groups.sh',
run('/usr/local/bin/expand-groups.sh',
env=expand_env,
stderr=subprocess.STDOUT)
print "--- done ---\n"
# Write out the private SSH key we generated
with open(jobdir.key, 'w') as key_file:
@ -176,22 +189,12 @@ def bootstrap_server(server, key, name, volume_device, keep,
# Run the remote puppet apply playbook limited to just this server
# we just created
try:
for playbook in [
'set_hostnames.yml',
'remote_puppet_adhoc.yaml']:
print "--- Running : %s ---" % (ansible_cmd)
print subprocess.check_output(
ansible_cmd + [
os.path.join(
SCRIPT_DIR, '..', 'playbooks', playbook)],
stderr=subprocess.STDOUT,
env=jobdir.env)
print "--- done ---\n"
except subprocess.CalledProcessError as e:
print "Subprocess failed"
print e.output
raise
for playbook in [
'set_hostnames.yml',
'remote_puppet_adhoc.yaml']:
run(ansible_cmd + [
os.path.join(SCRIPT_DIR, '..', 'playbooks', playbook)],
env=jobdir.env)
try:
ssh_client.ssh("reboot")