#!/usr/bin/python3
"""
Enable osbuild Boot Test service
Creates a Boot Test service that executes the given `script` (sending output to
/dev/vport0p1) then immediately shuts down the system.
Creates `/etc/systemd/system/osbuild-test.service`, and a symlink to it in
`/etc/systemd/system/multi-user.target.wants/`.
"""
import json
import os
import sys
SCHEMA = """
"additionalProperties": false,
"required": ["script"],
"properties": {
"script": {
"type": "string",
"description": "Full path to a script that verifies successful bootup"
}
}
"""
def main(tree, options):
script = options["script"]
unit = f"""
[Unit]
Description=Boot Test
Wants=dev-vport0p1.device
After=dev-vport0p1.device
[Service]
StandardOutput=file:/dev/vport0p1
ExecStart={script}
ExecStopPost=/usr/bin/systemctl poweroff
"""
with open(f"{tree}/etc/systemd/system/osbuild-test.service", "w") as f:
f.write(unit)
os.symlink("../osbuild-test.service",
f"{tree}/etc/systemd/system/multi-user.target.wants/osbuild-test.service")
return 0
if __name__ == '__main__':
args = json.load(sys.stdin)
r = main(args["tree"], args["options"])
sys.exit(r)