| // Copyright 2016 The LUCI Authors. All rights reserved. |
| // Use of this source code is governed under the Apache License, Version 2.0 |
| // that can be found in the LICENSE file. |
| |
| syntax = "proto3"; |
| |
| package logdog; |
| |
| import "go.chromium.org/luci/logdog/api/endpoints/coordinator/services/v1/state.proto"; |
| import "go.chromium.org/luci/logdog/api/endpoints/coordinator/services/v1/tasks.proto"; |
| import "google/protobuf/duration.proto"; |
| import "google/protobuf/empty.proto"; |
| |
| // Error is a projection of a gRPC error. |
| // |
| // NOTE: This and its helper functions may be useful more generally. Maybe |
| // transplant this to a more general place such as "//grpc" if it ends up being |
| // useful. |
| message Error { |
| // The gRPC code for this error. |
| int32 grpc_code = 1; |
| // Transient is true if this is a transient error. |
| bool transient = 2; |
| // An optional associated message. |
| string msg = 3; |
| } |
| |
| // GetConfigResponse is the response structure for the user |
| // "GetConfig" endpoint. |
| message GetConfigResponse { |
| // The API URL of the base "luci-config" service. If empty, the default |
| // service URL will be used. |
| string config_service_url = 1; |
| |
| // The name of the configuration set to load from. |
| string config_set = 2; |
| // The path of the text-serialized service configuration protobuf. |
| string service_config_path = 3; |
| |
| // The host name of the configuration service. This is preferred to |
| // "config_service_url". |
| string config_service_host = 4; |
| } |
| |
| // RegisterStreamRequest is the set of caller-supplied data for the |
| // RegisterStream Coordinator service endpoint. |
| message RegisterStreamRequest { |
| // The log stream's project. |
| string project = 1; |
| // The log stream's secret. |
| bytes secret = 2; |
| |
| // The protobuf version string for this stream. |
| string proto_version = 3; |
| // The serialized LogStreamDescriptor protobuf for this stream. |
| bytes desc = 4; |
| |
| // The stream's terminal index. If >= 0, the terminal index will be set |
| // in the registration request, avoiding the need for an additional |
| // termination RPC. |
| int64 terminal_index = 5; |
| } |
| |
| // The response message for the RegisterStream RPC. |
| message RegisterStreamResponse { |
| // The Coordinator ID of the log stream. |
| string id = 1; |
| // The state of the requested log stream. |
| LogStreamState state = 2; |
| |
| // Error is the error response. |
| Error error = 3; |
| } |
| |
| // LoadStreamRequest loads the current state of a log stream. |
| message LoadStreamRequest { |
| // The log stream's project. |
| string project = 1; |
| // The log stream's path Coordinator ID. |
| string id = 2; |
| |
| // If true, include the log stream descriptor. |
| bool desc = 3; |
| } |
| |
| // The response message for the LoadStream RPC. |
| message LoadStreamResponse { |
| // The state of the requested log stream. |
| LogStreamState state = 1; |
| |
| // If requested, the serialized log stream descriptor. The protobuf version |
| // of this descriptor will match the "proto_version" field in "state". |
| bytes desc = 2; |
| |
| // The age of the log stream. |
| google.protobuf.Duration age = 3; |
| |
| // The archival key of the log stream. If this key doesn't match the key in |
| // the archival request, the request is superfluous and should be deleted. |
| bytes archival_key = 4; |
| } |
| |
| // TerminateStreamRequest is the set of caller-supplied data for the |
| // TerminateStream service endpoint. |
| message TerminateStreamRequest { |
| // The log stream's project. |
| string project = 1; |
| // The log stream's path Coordinator ID. |
| string id = 2; |
| // The log stream's secret. |
| bytes secret = 3; |
| |
| // The terminal index of the stream. |
| int64 terminal_index = 4; |
| } |
| |
| // ArchiveStreamRequest is the set of caller-supplied data for the ArchiveStream |
| // service endpoint. |
| message ArchiveStreamRequest { |
| // The log stream's project. |
| string project = 1; |
| // The Coordinator ID of the log stream that was archived. |
| string id = 2; |
| // The number of log entries that were archived. |
| int64 log_entry_count = 3; |
| // The highest log stream index that was archived. |
| int64 terminal_index = 4; |
| // If not empty, there was an archival error. |
| // |
| // This field serves to indicate that an error occured (being non-empty) and |
| // to supply an value that will show up in the Coordinator ArchiveStream |
| // endpoint logs. |
| string error = 5; |
| |
| // The archive URL of the log stream's stream data. |
| string stream_url = 10; |
| // The size of the log stream's stream data. |
| int64 stream_size = 11; |
| |
| // The archive URL of the log stream's index data. |
| string index_url = 20; |
| // The size of the log stream's index data. |
| int64 index_size = 21; |
| |
| // The archive URL of the log stream's binary data. |
| string data_url = 30; |
| // The size of the log stream's binary data. |
| int64 data_size = 31; |
| } |
| |
| // BatchRequest is a batch of individual requests to make to the Coordinator. |
| message BatchRequest { |
| // The collection of batched requests. |
| message Entry { |
| oneof value { |
| RegisterStreamRequest register_stream = 1; |
| LoadStreamRequest load_stream = 2; |
| TerminateStreamRequest terminate_stream = 3; |
| ArchiveStreamRequest archive_stream = 4; |
| }; |
| } |
| repeated Entry req = 1; |
| } |
| |
| // BatchResponse is a response to a BatchRequest. |
| message BatchResponse { |
| // The collection of batched requests. |
| // |
| // Each entry corresponds to the BatchRequest entry with the specified index. |
| // |
| // Entry objects may appear out of order with their request indexes. Some |
| // responses may also be missing, if the remote end could not provide them |
| // due to constraints (e.g., size, time). |
| message Entry { |
| // The index in the BatchRequest for this entry. |
| int32 index = 1; |
| |
| oneof value { |
| Error err = 2; |
| |
| RegisterStreamResponse register_stream = 3; |
| LoadStreamResponse load_stream = 4; |
| }; |
| } |
| repeated Entry resp = 1; |
| } |
| |
| // Services service is a LogDog Coordinator endpoint that interfaces with |
| // LogDog processing services. |
| service Services { |
| // GetConfig allows a service to retrieve the current service configuration |
| // parameters. |
| rpc GetConfig(google.protobuf.Empty) returns (GetConfigResponse); |
| |
| // RegisterStream is an idempotent stream state register operation. |
| rpc RegisterStream(RegisterStreamRequest) returns (RegisterStreamResponse); |
| |
| // LoadStream loads the current state of a log stream. |
| rpc LoadStream(LoadStreamRequest) returns (LoadStreamResponse); |
| |
| // TerminateStream is an idempotent operation to update the stream's terminal |
| // index. |
| rpc TerminateStream(TerminateStreamRequest) returns (google.protobuf.Empty); |
| |
| // ArchiveStream is an idempotent operation to record a log stream's archival |
| // parameters. It is used by the Archivist service upon successful stream |
| // archival. |
| rpc ArchiveStream(ArchiveStreamRequest) returns (google.protobuf.Empty); |
| |
| // RescheduleArchiveTask is an internal operation used to schedule an archive task |
| // for a later time. |
| rpc RescheduleArchiveTask(ArchiveDispatchTask) returns (google.protobuf.Empty); |
| |
| // Batch is a series of requests submitted in batch. It returns a |
| // BatchResponse containing the same number of entries, with each entry index |
| // corresponding to its request index. |
| rpc Batch(BatchRequest) returns (BatchResponse); |
| } |