diff options
-rw-r--r-- | README.md | 22 | ||||
-rw-r--r-- | boards.yaml | 57 | ||||
-rwxr-xr-x | lavalab-gen.py | 49 |
3 files changed, 45 insertions, 83 deletions
@@ -22,16 +22,18 @@ A sample dhcpd config file is available in the dhcpd directory ### boards.yaml This file describe how are setuped your boards, and how they are connected and powered. ``` -lab-slave-name: - devicename: - type: the devicetype of this device - pdu: - daemon: The hostname running the PDU daemon (always localhost) - host: The host name of the PDU as named in lavapdu.conf - port: portnumber (The port number of the PDU where the device is connected) - uart: - type: - serial: The serial number in case of FTDI uart +lab-slave-XX: + 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. + boardlist: + devicename: + type: the devicetype of this device + pdu: + daemon: The hostname running the PDU daemon (always localhost) + host: The host name of the PDU as named in lavapdu.conf + port: portnumber (The port number of the PDU where the device is connected) + uart: + type: + serial: The serial number in case of FTDI uart ``` Notes: uart FTDI only need serial diff --git a/boards.yaml b/boards.yaml index 1f3788f..88f7e6d 100644 --- a/boards.yaml +++ b/boards.yaml @@ -1,55 +1,4 @@ lab-slave-0: - bcm2837-rpi-3-b-01: - type: bcm2837-rpi-3-b - pdu: - daemon: localhost - host: acme-0 - port: 1 - uart: - type: FTDI - serial: FT9QQZTA - am335x-boneblack-01: - type: beaglebone-black - pdu: - daemon: localhost - host: acme-0 - port: 2 - uart: - type: FTDI - serial: FT9QR1A9 - meson-gxl-s905x-libretech-cc-01: - type: meson-gxl-s905x-libretech-cc - pdu: - daemon: localhost - host: acme-0 - port: 3 - uart: - type: FTDI - serial: FT9QQYCN - dragonboard-410c-01: - type: dragonboard-410c - pdu: - daemon: localhost - host: acme-0 - port: 4 - uart: - type: FTDI - serial: FT9R7VDB - r8a7796-m3ulcb-01: - type: r8a7796-m3ulcb - pdu: - daemon: localhost - host: acme-0 - port: 5 - uart: - type: FTDI - serial: AK04WW0Q - imx6q-sabrelite-01: - type: imx6q-sabrelite - pdu: - daemon: localhost - host: acme-0 - port: 6 - uart: - type: FTDI - serial: FTAJMM4V + boardlist: + qemu-01: + type: qemu diff --git a/lavalab-gen.py b/lavalab-gen.py index 379f6b9..6a5ea43 100755 --- a/lavalab-gen.py +++ b/lavalab-gen.py @@ -14,7 +14,7 @@ boards_yaml = "boards.yaml" tokens_yaml = "tokens.yaml" baud_default = 115200 -template = string.Template("""# +template_conmux = string.Template("""# # auto-generated by lavalab-gen.py for ${board} # listener ${board} @@ -27,7 +27,12 @@ command 'on' 'Power on ${board}' 'pduclient --daemon ${daemon} --host ${host} -- #no comment it is volontary template_device = string.Template("""{% extends '${devicetype}.jinja2' %} +""") + +template_device_conmux = string.Template(""" {% set connection_command = 'conmux-console ${board}' %} +""") +template_device_pdu = string.Template(""" {% set hard_reset_command = 'pduclient --daemon localhost --hostname acme-0 --port ${port} --command=reboot' %} {% set power_off_command = 'pduclient --daemon localhost --hostname acme-0 --port ${port} --command=off' %} {% set power_on_command = 'pduclient --daemon localhost --hostname acme-0 --port ${port} --command=on' %} @@ -50,35 +55,45 @@ def main(args): 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/"): + os.mkdir("lava-master/slaves/") + fp = open("lava-master/slaves/.empty", "w") + fp.close() + if not os.path.isdir("lava-slave/conmux/"): + os.mkdir("lava-slave/conmux/") + fp = open("lava-slave/conmux/.empty", "w") + fp.close() + for lab_name in labs: lab = labs[lab_name] - for board_name in lab: - b = lab[board_name] + for board_name in lab["boardlist"]: + b = lab["boardlist"][board_name] if b.get("disabled", None): continue - if not b.has_key("uart"): - print("WARNING: %s missing uart property" % board_name) - continue - - baud = b["uart"].get("baud", baud_default) if b.has_key("pdu"): daemon = b["pdu"]["daemon"] host = b["pdu"]["host"] port = b["pdu"]["port"] devicetype = b["type"] delay_opt = "" - line = template.substitute(board=board_name, baud=baud, daemon=daemon, host=host, port=port, delay=delay_opt) device_line = template_device.substitute(board=board_name, port=port, devicetype=devicetype) + device_line += template_device_pdu.substitute(port=port) + if b.has_key("uart"): + baud = b["uart"].get("baud", baud_default) + line = template_conmux.substitute(board=board_name, baud=baud, daemon=daemon, host=host, port=port, delay=delay_opt) serial = b["uart"]["serial"] udev_line += template_udev.substitute(board=board_name, serial=serial) dc_devices.append("/dev/%s:/dev/%s" % (board_name, board_name)) + fp = open("lava-slave/conmux/%s.cf" % board_name, "w") + fp.write(line) + fp.close() + device_line += template_device_conmux.substitute(board=board_name) if b.has_key("fastboot_serial_number"): fserial = b["fastboot_serial_number"] device_line += "{%% set fastboot_serial_number = '%s' %%}" % fserial - if not os.path.isdir("lava-slave/conmux/"): - os.mkdir("lava-slave/conmux/") # board specific hacks if devicetype == "qemu": device_line += "{% set no_kvm = True %}\n" @@ -87,9 +102,6 @@ def main(args): device_path = "lava-master/devices/%s" % lab_name if not os.path.isdir(device_path): os.mkdir(device_path) - fp = open("lava-slave/conmux/%s.cf" % board_name, "w") - fp.write(line) - fp.close() board_device_file = "%s/%s.jinja2" % (device_path, board_name) fp = open(board_device_file, "w") fp.write(device_line) @@ -97,11 +109,10 @@ def main(args): fp = open("lavalab-udev-%s.rules" % lab_name, "w") fp.write(udev_line) fp.close() - if not os.path.isdir("lava-master/slaves/"): - os.mkdir("lava-master/slaves/") - fp = open("lava-master/slaves/%s.yaml" % lab_name, "w") - fp.write("dispatcher_ip: 192.168.66.1") - fp.close() + if lab.has_key("dispatcher_ip"): + fp = open("lava-master/slaves/%s.yaml" % lab_name, "w") + fp.write("dispatcher_ip: %s" % lab["dispatcher_ip"]) + fp.close() #now proceed with tokens fp = open(tokens_yaml, "r") |