chromium/infra/config/validators/builders-in-consoles.star

# Copyright 2020 The Chromium Authors
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.

def _validate_builders_in_console(ctx):
    builders = {}

    for console in ctx.output["luci/luci-milo.cfg"].consoles:
        for builder in console.builders:
            _, long_bucket, builder_name = builder.name.split("/")
            _, _, bucket = long_bucket.split(".", 2)
            builders.setdefault(bucket, {})[builder_name] = True

    builders_without_console = []

    for bucket in ctx.output["luci/cr-buildbucket.cfg"].buckets:
        if not proto.has(bucket, "swarming"):
            continue
        bucket_builders = builders.get(bucket.name, {})
        for builder in bucket.swarming.builders:
            if builder.name not in bucket_builders:
                builders_without_console.append(
                    "{}/{}".format(bucket.name, builder.name),
                )

    if builders_without_console:
        fail("The following builders do not appear in any console:\n  " +
             "\n  ".join([repr(b) for b in builders_without_console]))

lucicfg.generator(_validate_builders_in_console)