diff options
-rw-r--r-- | README.md | 1 | ||||
-rw-r--r-- | docker-compose.template | 6 | ||||
-rwxr-xr-x | lavalab-gen.py | 21 |
3 files changed, 18 insertions, 10 deletions
@@ -216,6 +216,7 @@ This file describe how the DUTs are connected and powered. ``` lab-slave-XX: The name of the slave (where XX is a number) dispatcher_ip: the IP where the slave could be contacted. In lava-docker it is the host IP since docker proxify TFTP from host to the slave. + host_has_cpuflag_kvm: Does the host running lab-slave-XX have KVM boardlist: devicename: Each board must be named by their device-type as "device-type-XX" (where XX is a number) type: the LAVA device-type of this device diff --git a/docker-compose.template b/docker-compose.template index d125af8..87d59d3 100644 --- a/docker-compose.template +++ b/docker-compose.template @@ -7,9 +7,6 @@ services: tty: true build: context: lava-master -# TODO handle kvm option -# devices: -# - "/dev/kvm:/dev/kvm" ports: - "10080:80" - "5555:5555" @@ -18,14 +15,13 @@ services: # boot and /lib/modules are for libguestfs (TODO set them read_only with docker-compose 3.0) - "/boot:/boot" - "/lib/modules:/lib/modules" - lava-slave: + lab-slave-0: hostname: lab-slave-0 #conmux does not support dns_search dns_search: "" restart: always build: context: lava-slave - devices: environment: LAVA_MASTER: "lava-master" ports: diff --git a/lavalab-gen.py b/lavalab-gen.py index f8a5d95..6264179 100755 --- a/lavalab-gen.py +++ b/lavalab-gen.py @@ -51,10 +51,6 @@ def main(args): tdc = open("docker-compose.template", "r") dockcomp = yaml.load(tdc) tdc.close() - dc_devices = dockcomp["services"]["lava-slave"]["devices"] - if dc_devices is None: - dockcomp["services"]["lava-slave"]["devices"] = [] - dc_devices = dockcomp["services"]["lava-slave"]["devices"] # The slaves directory must exists if not os.path.isdir("lava-master/slaves/"): @@ -69,6 +65,16 @@ def main(args): for lab_name in labs: udev_line ="" lab = labs[lab_name] + use_kvm = False + if lab.has_key("host_has_cpuflag_kvm"): + use_kvm = lab["host_has_cpuflag_kvm"] + if use_kvm: + if dockcomp["services"][lab_name].has_key("devices"): + dc_devices = dockcomp["services"][lab_name]["devices"] + else: + dockcomp["services"][lab_name]["devices"] = [] + dc_devices = dockcomp["services"][lab_name]["devices"] + dc_devices.append("/dev/kvm:/dev/kvm") for board_name in lab["boardlist"]: b = lab["boardlist"][board_name] if b.get("disabled", None): @@ -93,6 +99,11 @@ def main(args): else: devpath = b["uart"]["devpath"] udev_line += template_udev_devpath.substitute(board=board_name, devpath=devpath, idvendor=idvendor, idproduct=idproduct) + if dockcomp["services"][lab_name].has_key("devices"): + dc_devices = dockcomp["services"][lab_name]["devices"] + else: + dockcomp["services"][lab_name]["devices"] = [] + dc_devices = dockcomp["services"][lab_name]["devices"] dc_devices.append("/dev/%s:/dev/%s" % (board_name, board_name)) fp = open("lava-slave/conmux/%s.cf" % board_name, "w") fp.write(line) @@ -109,7 +120,7 @@ def main(args): device_line += "{%% set fastboot_serial_number = '%s' %%}" % fserial # board specific hacks - if devicetype == "qemu": + if devicetype == "qemu" and not use_kvm: device_line += "{% set no_kvm = True %}\n" if not os.path.isdir("lava-master/devices/"): os.mkdir("lava-master/devices/") |