skylab: add subcommand sections

Add section names to skylab subcommands. This results in
the following help text:

Universal tool for Chrome OS Infra Skylab

Usage:  skylab [command] [arguments]

  help                 prints help about a command
  update               Update skylab tool

  whoami               prints an email address associated with currently cached token
  login                performs interactive login flow
  logout               removes cached credentials

        Inventory Queries
  diagnose             Diagnose DUT status
  inventory            Print host inventory

        Inventory Operations
  assign-duts          Assign a DUT to a drone
  remove-duts          Remove a DUT from a drone

        Pool Operations
  ensure-pool-healthy  Ensure DUT pool is healthy
  resize-pool          Resize the target pool for model

  repair               Repair hosts


Change-Id: I3f244168cdc251e2ee740b7a1a4daf67727dc273
Commit-Queue: Aviv Keshet <>
Reviewed-by: Allen Li <>
Cr-Commit-Position: refs/heads/master@{#19967}
Cr-Mirrored-Commit: bb2965732444fb3591352890c29a971f502a84e7
1 file changed
tree: 547138d75192476cf4c41192660a69eee61b1942
  1. 3pp/
  2. appengine/
  3. appengine_module/
  4. bootstrap/
  5. build/
  6. cipd/
  7. crdx/
  8. data/
  9. doc/
  10. docker/
  11. glyco/
  12. go/
  13. infra/
  14. node/
  15. packages/
  16. recipes/
  17. test/
  18. utils/
  19. .gitattributes
  20. .gitignore
  21. .gitmodules
  22. codereview.settings
  24. DEPS
  27. OWNERS

infra.git repository

Welcome to the Chrome Infra repository!

Wondering where to start? Check out General Chrome Infrastructure documentation. In particular, to check out this repo and the rest of the infrastructure code, follow the instructions here. The rest of this page is specific to this repo.

Entry points

  • wrapper script to run programs contained in subdirectories without having to deal with sys.path modifications.
  • multi-purpose script to run tests.
  • infra_libs/: generally useful functions and classes
  • infra/services/: standalone programs intended to be run as daemons.
  • infra/tools: command-line tools, intended to be run by developers.
  • appengine/: many Chrome-infra-managed AppEngine applications
  • infra/experimental: for, well, experimental stuff. Once they are stabilized and reviewed, they should be moved in a more permanent place.

Miscellaneous technical stuff

  • bootstrap/: utilities to set up a proper Python virtual environment.
  • infra/path_hacks: submodules of this modules give access to modules in the build/ repository. from infra.path_hacks.common import <stg> is actually getting <stg> from build/scripts/common.
  • utils/: purpose? utils?
  • Need to bump infra/deployed to pick up changes?
    • git push origin <updated hash>:deployed
    • mail chrome-troopers@, include:
      • previously deployed hash (for quick rollback)
      • the hash you just pushed
      • the list of CLs that made this push necessary
      • the output of the git push command

Integrating tests with

If you've added a new module, integrate your tests with

  1. Create a .coveragerc file in the root directory of the module you want to test. Take a look at another .coveragerc to see what to include in that.
  2. Create a “test” directory in the root directory of the module you want to test. More your * files to this directory.

Double-check that your tests are getting picked up when you want them to be: ./ test <path-to-package>.

Tests still not getting picked up by Double-check to make sure you have files in each directory of your module so Python recognizes it as a package.