README

Chromium Infra Go Area

[TOC]

Get the code

The steps for getting the code are:

  1. Install depot_tools

  2. Run fetch infra

  3. Run

    eval `infra/go/env.py`
    

    On Windows

    call infra\go\env.cmd
    
Quick Setup

If you are on Linux you can run the quicksetup script (instead of the above) like so:

cd /where/you/want/source/code
wget -O- "https://chromium.googlesource.com/infra/infra/+/master/go/quicksetup.sh?format=TEXT" | base64 -d | bash

This will create a self-contained cr-infra-go-area directory and populate it will all necessary tools and source for using or contributing to Chromium's Go Infrastructure. Once run, look in cr-infra-go-area/infra/go/src for the editable source code.

Structure

This directory contains a set of scripts to setup and manage a hermetic Go building environment. We pin versions of the Go toolset and all third party dependencies that the infra code is using. It is important for getting non-flaky, reproducible builds of Go code on a CI and on developers' machines.

Structurally infra/go represents two workspaces (two directories in $GOPATH):

  • infra/go itself is a GOPATH with Chrome Infra go code and a bunch of Chrome Infra owned projects (e.g. luci-go), that are DEPSed in into infra/go/src/. Such structure allows us to run CI for these projects in a hermetic environment on Chrome Infra waterfalls.
  • infra/go/.vendor is a GOPATH with locked versions of all third party code that infra/go/src/* depends on (including code needed by luci-go repo and other such DEPSed in dependencies). This directory is managed by deps.py script, based on configuration specified in deps.yaml and deps.lock. See "Dependency management" section below.

Note that infra/go is not "go get"-able, since it's not a go package. It's GOPATH workspace.

The majority of active development is happening in luci-go project that is a proper Go package and can be fetched with go get.

luci-go doesn't pin any dependencies, assuming the end users (whoever links to it) will do it themselves. infra/go workspace is one such end user. This approach allows projects that use multiple big libraries (like luci-go) to manage all dependencies centrally in a single place, thus avoiding issues of version conflicts and binary bloat due to inclusion of a same third party code via multiple import paths.

Bootstrap

infra/go knows how to bootstrap itself from scratch (i.e. from a fresh checkout) by downloading pinned version of Go toolset, and installing pinned versions of third party packages it needs into infra/go/.vendor directory, and adding a bunch of third party tools (like goconvey and protoc-gen-go) to $PATH.

The bootstrap (and self-update) procedure is invoked whenever go/bootstrap.py or go/env.py run. There's no DEPS hook for this. We only want the Go toolset to be present on systems that need it, since it's somewhat big and platform-specific.

go/env.py can be used in two ways. If invoked without arguments, it verifies that everything is up-to-date and then just emits a small shell script that tweaks the environment. This script can be executed in the current shell process to modify its environment. Once it's done, Go tools can be invoked directly. This is the recommended way of "entering" infra/go build environment.

For example:

cd infra/go
eval `./env.py`
go install go.chromium.org/luci/tools/cmd/...
./bin/cproto --help  # infra/go/bin is where executables are installed
cproto --help        # infra/go/bin is also in $PATH

Alternatively go/env.py can be used as a wrapping command that sets up an environment and invokes some other process. It is particularly useful on Windows.

If the INFRA_PROMPT_TAG environment variable is exported while running go/env.py, the new environment will include a modified PS1 prompt containing the INFRA_PROMPT_TAG value to indicate that the modified environment is being used. By default, this value is "[cr go] ", but it can be changed by exporting a different value or disabled by exporting an empty value.

Dependency management

All third party code needed to build infra/go is installed into infra/go/.vendor via deps.py script that is invoked as part of the bootstrap process.

There are two files that control what code to fetch:

  • deps.yaml specifies what packages infra/go code depends on directly and where to get them (i.e. what git mirror repos to use). It does not specify package revisions in general, though some packages may optionally be pinned here too (too avoid being updated during deps.py update run, see below).
  • deps.lock is produced by deps.py update command and it specifies the exact revisions of all the packages in deps.yaml and all their transitive dependencies. This is a list of what is getting installed into infra/go/.vendor.

It is totally OK to modify deps.yaml or deps.lock by hand if you know what you are doing. These files are actually consumed by glide. See glide.yaml file format for some details.

Updating dependencies

deps.lock file should be periodically updated by running deps.py update. Running this command bumps all revisions specified in deps.lock to the most recent ones.

Here's the suggested workflow for updating all deps at once:

cd infra/go
eval `./env.py`
./deps.py update                    # bump revisions
./deps.py install                   # install new versions into .vendor/*
go test go.chromium.org/luci/...    # make sure everything works
git add deps.lock                   # commit new versions into the repo
git commit ...

Adding a dependency

When infra/go code grows a dependency on some new third party library, this library has to be added to deps.yaml and deps.lock files, or the code won't build on a CI.

Here's the suggested workflow for doing this:

cd infra/go
eval `./env.py`
./deps.py add github.com/steveyen/go-slab

# deps.py will ask you to modify deps.yaml to specify location of a git
# mirror. Do that.
vi deps.yaml

./deps.py update
./deps.py install

git add deps.yaml
git add deps.lock
git commit ...

Git mirrors for dependencies

All dependencies should be fetched from a *.googlesource.com host.

Some Golang related packages are already on *.googlesource.com (though it may be non obvious at the first glance). For example all golang.org/x/* ones are actually served from https://go.googlesource.com/.

deps.py will warn you if it sees a package being referenced from a source-of-truth repo, and not a mirror.

If you are positive that a mirror is needed, file Infra-Git ticket specifying what repository you need to be mirrored.

Directories

Path Synopsis
src
infra/appengine/arquebus/app/appengine
Package arquebus is the entry point of this app.
Package arquebus is the entry point of this app.
infra/appengine/arquebus/app/backend
Package backend implements the core logic of Arquebus service.
Package backend implements the core logic of Arquebus service.
infra/appengine/arquebus/app/config
Package config implements interface for app-level configs for Arquebus.
Package config implements interface for app-level configs for Arquebus.
infra/appengine/arquebus/app/frontend
Package frontend implements Web interface for Arquebus.
Package frontend implements Web interface for Arquebus.
infra/appengine/arquebus/app/util
Package util implements helper functions that are used in other packages.
Package util implements helper functions that are used in other packages.
infra/appengine/chromium_build_stats/app
Package app implements chromium-build-stats.appspot.com services.
Package app implements chromium-build-stats.appspot.com services.
infra/appengine/chromium_build_stats/compilerproxylog
Package compilerproxylog provides compiler_proxy INFO log parser.
Package compilerproxylog provides compiler_proxy INFO log parser.
infra/appengine/chromium_build_stats/logstore
Package logstore provides an access to storage of ninja_log and compiler_proxy.INFO log.
Package logstore provides an access to storage of ninja_log and compiler_proxy.INFO log.
infra/appengine/chromium_build_stats/ninjalog
Package ninjalog provides ninja_log parser It support ninja log v5.
Package ninjalog provides ninja_log parser It support ninja log v5.
infra/appengine/cr-audit-commits/app
Package crauditcommits implements cr-audit-commits.appspot.com services.
Package crauditcommits implements cr-audit-commits.appspot.com services.
infra/appengine/cr-rev/backend
Frontend service handles home page, API and redirects.
Frontend service handles home page, API and redirects.
infra/appengine/cr-rev/backend/repoimport
Package repoimport is a generated GoMock package.
Package repoimport is a generated GoMock package.
infra/appengine/cr-rev/config
Package config implements interface for app-level configs for cr-rev.
Package config implements interface for app-level configs for cr-rev.
infra/appengine/cr-rev/frontend
Frontend service handles home page, API and redirects.
Frontend service handles home page, API and redirects.
infra/appengine/cr-rev/frontend/redirect
Package redirect contains logic for resovling ambiquios redirects and generic Git Web UI URLs.
Package redirect contains logic for resovling ambiquios redirects and generic Git Web UI URLs.
infra/appengine/cros/lab_inventory/api/bigquery
Package apibq contains the bigquery service API.
Package apibq contains the bigquery service API.
infra/appengine/cros/lab_inventory/api/v1
Package api contains the lab_inventory service API.
Package api contains the lab_inventory service API.
infra/appengine/cros/lab_inventory/app/config
Package config contains service configuration endpoints and data definition for lab_inventory.
Package config contains service configuration endpoints and data definition for lab_inventory.
infra/appengine/cros/lab_inventory/app/cron
Package cron implements handlers for appengine cron targets in this app.
Package cron implements handlers for appengine cron targets in this app.
infra/appengine/crosskylabadmin/api/fleet/v1
Package fleet contains service definitions for fleet management in crosskylabadmin.
Package fleet contains service definitions for fleet management in crosskylabadmin.
infra/appengine/crosskylabadmin/app/clients/mock
Package mock is a generated GoMock package.
Package mock is a generated GoMock package.
infra/appengine/crosskylabadmin/app/config
Package config contains service configuration endpoints and data definition for crosskylabadmin.
Package config contains service configuration endpoints and data definition for crosskylabadmin.
infra/appengine/crosskylabadmin/app/cron
Package cron implements handlers for appengine cron targets in this app.
Package cron implements handlers for appengine cron targets in this app.
infra/appengine/crosskylabadmin/app/frontend/inventory
Package inventory implements the fleet.Inventory service end-points of corsskylabadmin.
Package inventory implements the fleet.Inventory service end-points of corsskylabadmin.
infra/appengine/crosskylabadmin/app/queue
Package queue implements handlers for taskqueue jobs in this app.
Package queue implements handlers for taskqueue jobs in this app.
infra/appengine/depot_tools_metrics/metrics
Package main stores the reported JSON metrics from depot_tools into a BigQuery table.
Package main stores the reported JSON metrics from depot_tools into a BigQuery table.
infra/appengine/drone-queen/api
Package api contains the drone queen service API.
Package api contains the drone queen service API.
infra/appengine/rotation-proxy
package main implements the App Engine based HTTP server to handle request to Rotation Proxy
package main implements the App Engine based HTTP server to handle request to Rotation Proxy
infra/appengine/sheriff-o-matic/backend
Package main implements HTTP server that handles requests to the backend analyzer module.
Package main implements HTTP server that handles requests to the backend analyzer module.
infra/appengine/sheriff-o-matic/config
Package config is used temporarily as a kill switch when we disable automatic grouping.
Package config is used temporarily as a kill switch when we disable automatic grouping.
infra/appengine/sheriff-o-matic/frontend
Package main implements HTTP server that handles requests to default module.
Package main implements HTTP server that handles requests to default module.
infra/appengine/sheriff-o-matic/som/handler
Package handler implements HTTP server that handles requests to default module.
Package handler implements HTTP server that handles requests to default module.
infra/appengine/statsui/sql
The deploy command deploys Scheduled Queries into BigQuery
The deploy command deploys Scheduled Queries into BigQuery
infra/appengine/test-results/frontend
Program frontend implements the App Engine based HTTP server behind test-results.appspot.com.
Program frontend implements the App Engine based HTTP server behind test-results.appspot.com.
infra/appengine/test-results/masters
Package masters provides a list of known masters.
Package masters provides a list of known masters.
infra/appengine/test-results/model
Package model provides types that represent Chromium test result files such as "results.json", "full_results.json", etc.
Package model provides types that represent Chromium test result files such as "results.json", "full_results.json", etc.
infra/chromeperf/alert_groups
Package alert_groups includes all proto/service definitions for the AlertGroup service.
Package alert_groups includes all proto/service definitions for the AlertGroup service.
infra/chromeperf/pinpoint
Package pinpoint includes all proto/service definitions for the Pinpoint service.
Package pinpoint includes all proto/service definitions for the Pinpoint service.
infra/chromeperf/pinpoint/assertions
Package assertions contains GoConvey assertions used by pinpoint.
Package assertions contains GoConvey assertions used by pinpoint.
infra/chromeperf/pinpoint/server/convert
Package convert contains code to convert from the Legacy JSON API to the new Proto API, and vice-versa.
Package convert contains code to convert from the Legacy JSON API to the new Proto API, and vice-versa.
infra/chromeperf/workflows
Package workflows includes all proto/service definitions for the Workflows service.
Package workflows includes all proto/service definitions for the Workflows service.
infra/chromeperf/workflows_server
Package workflows includes all proto/service definitions for the Workflows service.
Package workflows includes all proto/service definitions for the Workflows service.
infra/cmd/bqexport
bqexport loads a BigQuery struct definition from Go source and exports a table definition protobuf suitable for "bqschemaupdater" to instantiate and process.
bqexport loads a BigQuery struct definition from Go source and exports a table definition protobuf suitable for "bqschemaupdater" to instantiate and process.
infra/cmd/bqupload
Command bqupload inserts rows in a BigQuery table.
Command bqupload inserts rows in a BigQuery table.
infra/cmd/cloudbuildhelper
Binary cloudbuildhelper is used internally by Infra CI pipeline to build docker images.
Binary cloudbuildhelper is used internally by Infra CI pipeline to build docker images.
infra/cmd/cloudbuildhelper/builder
Package builder implement local build process.
Package builder implement local build process.
infra/cmd/cloudbuildhelper/cloudbuild
Package cloudbuild wraps interaction with Google Cloud Build.
Package cloudbuild wraps interaction with Google Cloud Build.
infra/cmd/cloudbuildhelper/docker
Package docker is a primitive wrapper over shelling out to 'docker' tool.
Package docker is a primitive wrapper over shelling out to 'docker' tool.
infra/cmd/cloudbuildhelper/dockerfile
Package dockerfile implements utilities related to Dockerfile processing.
Package dockerfile implements utilities related to Dockerfile processing.
infra/cmd/cloudbuildhelper/fileset
Package fileset contains an abstraction for a set of files.
Package fileset contains an abstraction for a set of files.
infra/cmd/cloudbuildhelper/gitignore
Package gitignore implements .gitignore check predicate.
Package gitignore implements .gitignore check predicate.
infra/cmd/cloudbuildhelper/manifest
Package manifest defines structure of YAML files with target definitions.
Package manifest defines structure of YAML files with target definitions.
infra/cmd/cloudbuildhelper/registry
Package registry implements very limited Container Registry v2 API client.
Package registry implements very limited Container Registry v2 API client.
infra/cmd/cloudbuildhelper/storage
Package storage wraps Google Storage routines into a simpler interface.
Package storage wraps Google Storage routines into a simpler interface.
infra/cmd/cloudsqlhelper
Binary cloudsqlhelper is a tool to simplify working with Cloud SQL databases.
Binary cloudsqlhelper is a tool to simplify working with Cloud SQL databases.
infra/cmd/cros_test_platform
Command cros_test_platform implements the cros_test_platform recipe's steps.
Command cros_test_platform implements the cros_test_platform recipe's steps.
infra/cmd/cros_test_platform/luciexe
Command luciexe implements the cros_test_platform build logic.
Command luciexe implements the cros_test_platform build logic.
infra/cmd/cros_test_platform/luciexe/common
Package common houses common logic for all "steps" in this luciexe.
Package common houses common logic for all "steps" in this luciexe.
infra/cmd/cros_test_platform/luciexe/execute
Package execute houses the top-level logic for the execute step.
Package execute houses the top-level logic for the execute step.
infra/cmd/crosfleet
Command crosfleet is a Chrome OS hardware test lab tool.
Command crosfleet is a Chrome OS hardware test lab tool.
infra/cmd/diagnose_goma_log
diagnose_goma_log diagnoses goma's compiler_proxy.INFO log file.
diagnose_goma_log diagnoses goma's compiler_proxy.INFO log file.
infra/cmd/drone-agent
Command drone-agent is the client that talks to the drone queen service to provide Swarming bots for running tasks against test devices.
Command drone-agent is the client that talks to the drone queen service to provide Swarming bots for running tasks against test devices.
infra/cmd/gaedeploy
Binary gaedeploy is a helper to deploy GAE apps from tarballs.
Binary gaedeploy is a helper to deploy GAE apps from tarballs.
infra/cmd/gaedeploy/gcloud
Package gcloud contains helpers for calling `gcloud` tool in PATH.
Package gcloud contains helpers for calling `gcloud` tool in PATH.
infra/cmd/gaedeploy/module
Package module implements reading and processing of GAE module YAMLs.
Package module implements reading and processing of GAE module YAMLs.
infra/cmd/gaedeploy/source
Package source abstracts source of deployable tarballs.
Package source abstracts source of deployable tarballs.
infra/cmd/mallet
Command cros-admin is the Chrome OS infrastructure admin tool.
Command cros-admin is the Chrome OS infrastructure admin tool.
infra/cmd/ninja_log_trace_viewer
ninja_log_trace_viewer converts .ninja_log into trace-viewer formats.
ninja_log_trace_viewer converts .ninja_log into trace-viewer formats.
infra/cmd/shivas/site
Package site contains site local constants for the shivas
Package site contains site local constants for the shivas
infra/cmd/skylab
Command cros-admin is the Chrome OS infrastructure admin tool.
Command cros-admin is the Chrome OS infrastructure admin tool.
infra/config/tree
Package tree is a generated protocol buffer package.
Package tree is a generated protocol buffer package.
infra/cros/cmd/branch_util/test
Package test defines a branch_util-specific test harness.
Package test defines a branch_util-specific test harness.
infra/cros/cmd/caching-backend/conf-creator
This package creates the configuration files for nginx and keepalived used in the caching backend in Chrome OS fleet labs.
This package creates the configuration files for nginx and keepalived used in the caching backend in Chrome OS fleet labs.
infra/cros/cmd/common-tls
Command common-tls implements the shared high level test lab services (TLS) API.
Command common-tls implements the shared high level test lab services (TLS) API.
infra/cros/cmd/fleet-tlw
Command fleet-tlw implements the TLS wiring API for Chrome OS fleet labs.
Command fleet-tlw implements the TLS wiring API for Chrome OS fleet labs.
infra/cros/cmd/labpack
The labpack program allows to run repair tasks for ChromeOS devices in the lab.
The labpack program allows to run repair tasks for ChromeOS devices in the lab.
infra/cros/cmd/lucifer
Command lucifer runs tests and admin tasks.
Command lucifer runs tests and admin tasks.
infra/cros/cmd/phosphorus
Command autotest_status_parser extracts individual test case results from status.log.
Command autotest_status_parser extracts individual test case results from status.log.
infra/cros/cmd/prototype-rts
Application prototype-rts is a local demo Remote Test Server.
Application prototype-rts is a local demo Remote Test Server.
infra/cros/cmd/prototype-tlw
Command dev-tlw implements the TLS wiring API for development convenience.
Command dev-tlw implements the TLS wiring API for development convenience.
infra/cros/cmd/result_flow
Command result_flow implements the result flow recipe's steps.
Command result_flow implements the result flow recipe's steps.
infra/cros/cmd/tclint
Command lint is generic linter for Chrome OS test configs.
Command lint is generic linter for Chrome OS test configs.
infra/cros/dutstate
Package dutstate provides representation of states of DUT in Swarming and reading and updating a state in UFS service.
Package dutstate provides representation of states of DUT in Swarming and reading and updating a state in UFS service.
infra/cros/fleet/access
Package access provides the Fleet Access API bindings.
Package access provides the Fleet Access API bindings.
infra/cros/lab_inventory/bq
Package bq implements bigquery-related logic.
Package bq implements bigquery-related logic.
infra/cros/lab_inventory/datastore
Package datastore contains datastore-related logic.
Package datastore contains datastore-related logic.
infra/cros/lab_inventory/dronecfg
Package dronecfg implements datastore access for storing drone configs.
Package dronecfg implements datastore access for storing drone configs.
infra/cros/lab_inventory/utilization
Package utilization provides functions to report DUT utilization metrics.
Package utilization provides functions to report DUT utilization metrics.
infra/cros/tlslib
Package tlslib provides the canonical implementation of a common TLS server.
Package tlslib provides the canonical implementation of a common TLS server.
infra/cros/tlsutil
Package tlsutil provides utility for working with test lab services.
Package tlsutil provides utility for working with test lab services.
infra/experimental/importcounter
Command importcounter will calculate and print per-package and aggregate metrics about Go dependencies.
Command importcounter will calculate and print per-package and aggregate metrics about Go dependencies.
infra/libs/bqschema/buildevent
Package buildevent defines BigQuery schemas and table definitions to use for build events.
Package buildevent defines BigQuery schemas and table definitions to use for build events.
infra/libs/cipd
Package cipd is an internal CIPD tool wrapper.
Package cipd is an internal CIPD tool wrapper.
infra/libs/cookiefile
Package cookiefile implements a CookieJar over a standard Netscape/curl format cookie file.
Package cookiefile implements a CookieJar over a standard Netscape/curl format cookie file.
infra/libs/grpcclient
Package grpcclient provides a common configuration for specifying clients of grpc services.
Package grpcclient provides a common configuration for specifying clients of grpc services.
infra/libs/infraenv
Package infraenv enables applications to access Chrome Infrastructure-specific bot parameters.
Package infraenv enables applications to access Chrome Infrastructure-specific bot parameters.
infra/libs/lro
Package lro provides a universal implementation of longrunning.OperationsServer, and helper functions for dealing with long-running operations.
Package lro provides a universal implementation of longrunning.OperationsServer, and helper functions for dealing with long-running operations.
infra/libs/skylab/autotest/dynamicsuite
Package dynamicsuite provides a library to create control.cros_test_platform suite requests that inject arbitrary arguments into autotest.dynamic_suite.reimage_and_run(...).
Package dynamicsuite provides a library to create control.cros_test_platform suite requests that inject arbitrary arguments into autotest.dynamic_suite.reimage_and_run(...).
infra/libs/skylab/autotest/hostinfo
Package hostinfo provides support for Autotest's serialized hostinfo data.
Package hostinfo provides support for Autotest's serialized hostinfo data.
infra/libs/skylab/autotest/proxy
Package proxy provides a library to create swarming requests for an autotest-swarming-proxy task.
Package proxy provides a library to create swarming requests for an autotest-swarming-proxy task.
infra/libs/skylab/cloudkms
Package cloudkms implements decryption of Cloud KMS encrypted ciphertext.
Package cloudkms implements decryption of Cloud KMS encrypted ciphertext.
infra/libs/skylab/common/errctx
Package errctx provides implementations of context.Context that allow for cancellation or deadline expiration with custom error messages.
Package errctx provides implementations of context.Context that allow for cancellation or deadline expiration with custom error messages.
infra/libs/skylab/dutstate
Package dutstate provides utils related to the DUT state cache file and the autotest host info file.
Package dutstate provides utils related to the DUT state cache file and the autotest host info file.
infra/libs/skylab/inventory
Package inventory implements Skylab inventory stuff.
Package inventory implements Skylab inventory stuff.
infra/libs/skylab/inventory/autotest/labels
Package labels implements conversion of Skylab inventory schema to Autotest labels.
Package labels implements conversion of Skylab inventory schema to Autotest labels.
infra/libs/skylab/inventory/swarming
Package swarming implements conversion of Skylab inventory schema to Swarming dimensions.
Package swarming implements conversion of Skylab inventory schema to Swarming dimensions.
infra/libs/skylab/request
Package request provides a library to create swarming requests based on skylab test or task parameters.
Package request provides a library to create swarming requests based on skylab test or task parameters.
infra/libs/skylab/sideeffects
Package sideeffects implements the validation of side effects configuration.
Package sideeffects implements the validation of side effects configuration.
infra/libs/skylab/swarming
Package swarming implements a client for creating skylab-swarming tasks and getting their results.
Package swarming implements a client for creating skylab-swarming tasks and getting their results.
infra/libs/skylab/worker
Package worker implements a constructor for skylab_swarming_worker commands.
Package worker implements a constructor for skylab_swarming_worker commands.
infra/libs/sshpool
Package sshpool helps manage a pool of SSH clients.
Package sshpool helps manage a pool of SSH clients.
infra/libs/sshtunnel
Package sshtunnel helps create a SSH tunnels between clients.
Package sshtunnel helps create a SSH tunnels between clients.
infra/monorail
Package monorail implements Monorail client.
Package monorail implements Monorail client.
infra/qscheduler/cmd/qscheduler
Command qscheduler is the tool to interact with quotascheduler.
Command qscheduler is the tool to interact with quotascheduler.
infra/qscheduler/qslib/profiler
Package profiler provides entity size and CPU usage profiling for quotascheduler entities.
Package profiler provides entity size and CPU usage profiling for quotascheduler entities.
infra/qscheduler/qslib/protos/metrics
Package metrics defines types used for structured logs and metrics of the quotascheduler behavior.
Package metrics defines types used for structured logs and metrics of the quotascheduler behavior.
infra/qscheduler/qslib/reconciler
Package reconciler provides a wrapper around a global state scheduler to be used by a per-worker pulling dispatcher.
Package reconciler provides a wrapper around a global state scheduler to be used by a per-worker pulling dispatcher.
infra/qscheduler/qslib/scheduler
Package scheduler provides Scheduler, which is an implementation of the quotascheduler algorithm.
Package scheduler provides Scheduler, which is an implementation of the quotascheduler algorithm.
infra/qscheduler/qslib/tutils
Package tutils provides convenience functions to convert between proto representations and time.Time / time.Duration representations of times or durations.
Package tutils provides convenience functions to convert between proto representations and time.Time / time.Duration representations of times or durations.
infra/qscheduler/service/api/qscheduler/v1
Package qscheduler contains service definitions for the qscheduler app.
Package qscheduler contains service definitions for the qscheduler app.
infra/qscheduler/service/app/config
Package config contains service configuration endpoints and data definition for qscheduler-swarming.
Package config contains service configuration endpoints and data definition for qscheduler-swarming.
infra/qscheduler/service/app/frontend
Package frontend exposes the primary pRPC API of qscheduler app.
Package frontend exposes the primary pRPC API of qscheduler app.
infra/qscheduler/service/app/state
Package state provides representations of the state of a quotascheduler app, as well as transformations that run on a state and ways to persist the state, and emits metrics about the state or its transitions.
Package state provides representations of the state of a quotascheduler app, as well as transformations that run on a state and ways to persist the state, and emits metrics about the state or its transitions.
infra/qscheduler/service/app/state/metrics
Package metrics provides functions to emit ts_mon and bq metrics.
Package metrics provides functions to emit ts_mon and bq metrics.
infra/qscheduler/service/app/state/nodestore
Package nodestore implements a datastore-backed persistent store of qscheduler state, that shards state over as many entities as necessary to stay under datastore's single-entity size limit, and uses an in-memory cache to avoid unnecessary datastore reads.
Package nodestore implements a datastore-backed persistent store of qscheduler state, that shards state over as many entities as necessary to stay under datastore's single-entity size limit, and uses an in-memory cache to avoid unnecessary datastore reads.
infra/qscheduler/service/cmd/qscheduler-swarming
Command qscheduler-swarming implements a qscheduler server process for GKE environment.
Command qscheduler-swarming implements a qscheduler server process for GKE environment.
infra/rts/cmd/rts-chromium
Command rts-chromium is Chromium-specific part of the generic RTS framework.
Command rts-chromium is Chromium-specific part of the generic RTS framework.
infra/rts/filegraph
Package filegraph implements a directed weighted graph of files, where the weight of edge (x, y), called distance, represents how much y is affected by changes in x.
Package filegraph implements a directed weighted graph of files, where the weight of edge (x, y), called distance, represents how much y is affected by changes in x.
infra/rts/filegraph/cli
Package cli implements filegraph command.
Package cli implements filegraph command.
infra/rts/filegraph/git
Package git implements derivation of a file graph from git log and optionally from the file structure.
Package git implements derivation of a file graph from git log and optionally from the file structure.
infra/rts/presubmit/eval
Package eval implements a framework for selection strategy evaluation.
Package eval implements a framework for selection strategy evaluation.
infra/third_party/govanityurls
govanityurls serves Go vanity URLs.
govanityurls serves Go vanity URLs.
infra/tools/cfggrab
Command cfggrab fetches some <name>.cfg from all LUCI project configs.
Command cfggrab fetches some <name>.cfg from all LUCI project configs.
infra/tools/device_watchdog
device_watchdog is a watchdog daemon for android devices.
device_watchdog is a watchdog daemon for android devices.
infra/tools/dirmd
Package dirmd implements parsing and transformations of directory metadata.
Package dirmd implements parsing and transformations of directory metadata.
infra/tools/dirmd/cli/updater
Package updater computes inherited metadata and uploads it to GCS.
Package updater computes inherited metadata and uploads it to GCS.
infra/tools/led
Command 'led' is the new generation of 'infra/tools/led'.
Command 'led' is the new generation of 'infra/tools/led'.
infra/tools/migrator
Package migrator provides interfaces and tooling for migrating LUCI configuration files across all known LUCI projects.
Package migrator provides interfaces and tooling for migrating LUCI configuration files across all known LUCI projects.
infra/tools/relnotes
CLI tool to generate release notes based on git logs in the current directory.
CLI tool to generate release notes based on git logs in the current directory.
infra/tricium/appengine/common
Package common implements common functionality for the Tricium service modules.
Package common implements common functionality for the Tricium service modules.
infra/tricium/appengine/common/track
Package track implements shared tracking functionality for the Tricium service modules.
Package track implements shared tracking functionality for the Tricium service modules.
infra/tricium/appengine/common/triciumtest
Package triciumtest implements common testing functionality for the Tricium service modules.
Package triciumtest implements common testing functionality for the Tricium service modules.
infra/tricium/functions/commitcheck
Package main implements the commitcheck analyzer.
Package main implements the commitcheck analyzer.
infra/tricium/functions/git-file-isolator
Package main implements the Git File Isolator analyzer.
Package main implements the Git File Isolator analyzer.
infra/tricium/functions/hello
Package main implements the Hello analyzer.
Package main implements the Hello analyzer.
infra/unifiedfleet/api/v1/models
Package ufspb contains the fleet service API.
Package ufspb contains the fleet service API.
infra/unifiedfleet/api/v1/models/bigquery
Package apibq contains the bigquery service API.
Package apibq contains the bigquery service API.
infra/unifiedfleet/api/v1/models/chromeos/device
Package ufspb contains the fleet service API.
Package ufspb contains the fleet service API.
infra/unifiedfleet/api/v1/models/chromeos/lab
Package ufspb contains the fleet service API.
Package ufspb contains the fleet service API.
infra/unifiedfleet/api/v1/models/chromeos/manufacturing
Package ufspb contains the fleet service API.
Package ufspb contains the fleet service API.
infra/unifiedfleet/api/v1/rpc
Package ufspb contains the fleet service API.
Package ufspb contains the fleet service API.
infra/unifiedfleet/app/config
Package config contains the configurations for UFS service.
Package config contains the configurations for UFS service.