/
cmd-kola
executable file
·64 lines (51 loc) · 1.92 KB
/
cmd-kola
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
#!/usr/bin/env python3
import argparse
import subprocess
import json
import os
import sys
cosa_dir = os.path.dirname(os.path.abspath(__file__))
sys.path.insert(0, cosa_dir)
from cosalib import cmdlib
from cosalib.builds import Builds
# Parse args and dispatch
parser = argparse.ArgumentParser()
parser.add_argument("--build", help="Build ID")
parser.add_argument("--output-dir", help="Output directory")
parser.add_argument("subargs", help="Remaining arguments for kola", nargs='*',
default=['run'])
args = parser.parse_args()
builds = Builds()
if args.build is None:
args.build = builds.get_latest()
builddir = builds.get_build_dir(args.build)
with open(os.path.join(builddir, "meta.json")) as f:
buildmeta = json.load(f)
qemuimg = buildmeta['images'].get('qemu')
if qemuimg is None:
raise SystemExit(f"No qemu image in build: {args.build}")
qemupath = os.path.join(builddir, qemuimg['path'])
# XXX: teach to kola to auto-detect based on prefix; see discussions in
# https://github.com/coreos/coreos-assembler/pull/85
kolaargs = ['kola']
bn = os.path.basename(qemupath)
if not any([x in args.subargs for x in ["-b", "--distro"]]):
if bn.startswith("rhcos-"):
kolaargs.extend(['-b', 'rhcos'])
else:
kolaargs.extend(['-b', 'fcos'])
print(f"qemu path: {qemupath}")
ignition_version = cmdlib.disk_ignition_version(qemupath)
print(f"Using ignition version {ignition_version}")
if ignition_version == "2.2.0":
kolaargs.extend(["--ignition-version", "v2"])
if os.getuid() != 0 and not ('-p' in args.subargs):
kolaargs.extend(['-p', 'qemu-unpriv'])
# shellcheck disable=SC2086
kolaargs.extend(['--qemu-image', qemupath])
outputdir = args.output_dir or "tmp/kola"
kolaargs.extend(['--output-dir', outputdir])
kolaargs.extend(args.subargs)
# flush before exec; see https://docs.python.org/3.7/library/os.html#os.execvpe
print(subprocess.list2cmdline(kolaargs), flush=True)
os.execvp('kola', kolaargs)