| // Copyright 2023 The ChromiumOS Authors |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| // Protocol buffer definitions for operations in the binhost lookup service. |
| |
| syntax = "proto3"; |
| |
| package chromiumos; |
| |
| option go_package = "go.chromium.org/chromiumos/infra/proto/go/chromiumos"; |
| option java_package = "com.google.chrome.crosinfra.proto"; |
| |
| import "google/protobuf/timestamp.proto"; |
| |
| // This is used by the `update_service` to update the `lookup_service` database |
| // with metadata related to snapshots. The `update_snapshot_data` Pub/Sub topic |
| // is associated with this schema definition, so messages sent to update |
| // snapshot data must follow this format. |
| // All the fields must be sent in each message. |
| message UpdateSnapshotDataRequest { |
| // Unique sha of the snapshot. |
| string snapshot_sha = 1; |
| |
| // Snapshot number. |
| uint32 snapshot_num = 2; |
| |
| // Boolean to denote if the snapshot is external. |
| bool external = 3; |
| |
| // Id of the annealing build that created the snapshot. |
| uint64 buildbucket_id = 4; |
| } |
| |
| // This is used by the `update_service` to update the `lookup_service` database. |
| // While this is primarily used to update binhost metadata, the build target |
| // profiles table is also updated to keep a record of all build targets and |
| // their associated profiles. The `update_binhost_data` Pub/Sub topic is |
| // associated with this schema definition, so messages sent to update binhost |
| // data must follow this format. |
| // All the fields must be sent in each message. |
| message UpdateBinhostDataRequest { |
| // The system Chrome OS is being built for, also known as board. |
| string build_target = 1; |
| |
| // Name of the profile to use with the build_target. |
| string profile = 2; |
| |
| // Sha of the snapshot associated with the binhost. |
| string snapshot_sha = 3; |
| |
| // Location of the binhost object in google storage. |
| string gs_uri = 4; |
| |
| // Name of the google storage bucket which contains the binhost. |
| string gs_bucket_name = 5; |
| |
| // Id of the postsubmit builder that created and uploaded the binhost. |
| uint64 buildbucket_id = 6; |
| |
| // Bool to indicate if this binhost contains all the binpkgs specified in the |
| // packages metadata file. |
| bool complete = 7; |
| |
| // Bool to indicate if the binhost is private. |
| bool private = 8; |
| } |
| |
| // This is used to query binhosts from the binhost lookup service. The cloud |
| // function defined in the `chromeos-prebuilts` project accepts incoming HTTP |
| // GET requests and returns locations of the binhosts, which are filtered based |
| // on the given filter parameters. The data sent using this protobuf message |
| // must be a serialized, base64 encoded and sent as query parameter with the |
| // name `filter`. |
| message LookupBinhostsRequest { |
| |
| // Name of the google storage bucket (without the "gs://" prefix) which |
| // contains the binhosts (e.g. "chromeos-prebuilt"). |
| string gs_bucket_name = 1; |
| |
| // List of snapshot SHAs to query for binhosts. |
| repeated string snapshot_shas = 2; |
| |
| // The build target (also know as board) of the binhosts. |
| string build_target = 3; |
| |
| // build_target profile of the binhosts. |
| string profile = 4; |
| |
| // Bool to indicate if the snapshot SHAs are private (internal). |
| bool private = 5; |
| |
| // Bool to indicate if the corresponding binhosts should also be returned. |
| // For example, if private=True (internal snapshot SHAs), also return the |
| // public binhosts (for the public, external snapshot SHAs). |
| bool get_corresponding_binhosts = 6; |
| |
| // The base architecture board for the build target (e.g. amd64-generic). |
| string generic_build_target = 7; |
| |
| // The profile of the base architecture board. |
| string generic_profile = 8; |
| } |
| |
| // Response sent by the cloud function defined in the `chromeos-prebuilts` |
| // project to lookup binhosts. This contains locations of the binhosts, which |
| // are filtered based on the filter parameters. |
| message LookupBinhostsResponse { |
| |
| // Metadata related to a binhost. |
| message Binhost { |
| |
| // ID of the binhost record in the `lookup_service` DB. |
| uint64 binhost_id = 1; |
| |
| // Full path to the google storage location of the binhost. |
| string gs_uri = 2; |
| |
| // Time when the binhost record was inserted into the database. |
| google.protobuf.Timestamp created_at = 3; |
| } |
| |
| // List of `Binhost` objects. |
| repeated Binhost binhosts = 1; |
| } |
| |
| // Data required to fetch binhosts from the binhost lookup service. |
| message BinhostLookupServiceData { |
| |
| // Snapshot SHAs of the target binhosts. |
| repeated string snapshot_shas = 1; |
| |
| // Bool to indicate if the snapshot SHAs are private (internal). |
| bool private = 2; |
| |
| // Denote whether it is the staging environment. |
| bool is_staging = 3; |
| } |