• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1"""Util functions to help manage dut configurations.
2
3See proto definitions for descriptions of arguments.
4"""
5
6# Needed to load from @proto. Add @unused to silence lint.
7load("//config/util/bindings/proto.star", "protos")
8load(
9    "@proto//chromiumos/test/lab/api/dut.proto",
10    lab_pb = "chromiumos.test.lab.api",
11)
12load(
13    "@proto//chromiumos/test/lab/api/ip_endpoint.proto",
14    ip_pb = "chromiumos.test.lab.api",
15)
16
17def _create_dut(address, port = 22):
18    return lab_pb.Dut(
19        id = lab_pb.Dut.Id(value = address),
20        chromeos = lab_pb.Dut.ChromeOS(
21            ssh = ip_pb.IpEndpoint(
22                address = address,
23                port = port,
24            ),
25        ),
26    )
27
28def _create_dut_topology(duts):
29    return lab_pb.DutTopology(
30        # Make the overall id the first dut id since this is mostly
31        # used for fakes setup/testing
32        id = lab_pb.DutTopology.Id(value = duts[0].id.value),
33        duts = duts,
34    )
35
36dut = struct(
37    create_dut = _create_dut,
38    create_dut_topology = _create_dut_topology,
39)
40