| // Copyright 2021 The gRPC Authors |
| // |
| // Licensed under the Apache License, Version 2.0 (the "License"); |
| // you may not use this file except in compliance with the License. |
| // You may obtain a copy of the License at |
| // |
| // http://www.apache.org/licenses/LICENSE-2.0 |
| // |
| // Unless required by applicable law or agreed to in writing, software |
| // distributed under the License is distributed on an "AS IS" BASIS, |
| // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| // See the License for the specific language governing permissions and |
| // limitations under the License. |
| |
| // Local copy of Envoy xDS proto file, used for testing only. |
| |
| syntax = "proto3"; |
| |
| package envoy.service.status.v3; |
| |
| import "src/proto/grpc/testing/xds/v3/config_dump.proto"; |
| import "src/proto/grpc/testing/xds/v3/base.proto"; |
| |
| import "google/protobuf/any.proto"; |
| import "google/protobuf/timestamp.proto"; |
| |
| |
| // CSDS is Client Status Discovery Service. It can be used to get the status of |
| // an xDS-compliant client from the management server's point of view. It can |
| // also be used to get the current xDS states directly from the client. |
| service ClientStatusDiscoveryService { |
| rpc StreamClientStatus(stream ClientStatusRequest) returns (stream ClientStatusResponse) {} |
| rpc FetchClientStatus(ClientStatusRequest) returns (ClientStatusResponse) {} |
| } |
| |
| // Status of a config from a management server view. |
| enum ConfigStatus { |
| // Status info is not available/unknown. |
| UNKNOWN = 0; |
| |
| // Management server has sent the config to client and received ACK. |
| SYNCED = 1; |
| |
| // Config is not sent. |
| NOT_SENT = 2; |
| |
| // Management server has sent the config to client but hasn’t received |
| // ACK/NACK. |
| STALE = 3; |
| |
| // Management server has sent the config to client but received NACK. The |
| // attached config dump will be the latest config (the rejected one), since |
| // it is the persisted version in the management server. |
| ERROR = 4; |
| } |
| |
| // Request for client status of clients identified by a list of NodeMatchers. |
| message ClientStatusRequest { |
| // The node making the csds request. |
| config.core.v3.Node node = 2; |
| } |
| |
| // Detailed config (per xDS) with status. |
| // [#next-free-field: 8] |
| message PerXdsConfig { |
| // Config status generated by management servers. Will not be present if the |
| // CSDS server is an xDS client. |
| ConfigStatus status = 1; |
| |
| oneof per_xds_config { |
| admin.v3.ListenersConfigDump listener_config = 2; |
| |
| admin.v3.ClustersConfigDump cluster_config = 3; |
| |
| admin.v3.RoutesConfigDump route_config = 4; |
| |
| admin.v3.EndpointsConfigDump endpoint_config = 6; |
| } |
| } |
| |
| // All xds configs for a particular client. |
| message ClientConfig { |
| // GenericXdsConfig is used to specify the config status and the dump |
| // of any xDS resource identified by their type URL. It is the generalized |
| // version of the now deprecated ListenersConfigDump, ClustersConfigDump etc |
| // [#next-free-field: 10] |
| message GenericXdsConfig { |
| // Type_url represents the fully qualified name of xDS resource type |
| // like envoy.v3.Cluster, envoy.v3.ClusterLoadAssignment etc. |
| string type_url = 1; |
| |
| // Name of the xDS resource |
| string name = 2; |
| |
| // This is the :ref:`version_info <envoy_v3_api_field_service.discovery.v3.DiscoveryResponse.version_info>` |
| // in the last processed xDS discovery response. If there are only |
| // static bootstrap listeners, this field will be "" |
| string version_info = 3; |
| |
| // The xDS resource config. Actual content depends on the type |
| google.protobuf.Any xds_config = 4; |
| |
| // Timestamp when the xDS resource was last updated |
| google.protobuf.Timestamp last_updated = 5; |
| |
| // Per xDS resource config status. It is generated by management servers. |
| // It will not be present if the CSDS server is an xDS client. |
| ConfigStatus config_status = 6; |
| |
| // Per xDS resource status from the view of a xDS client |
| admin.v3.ClientResourceStatus client_status = 7; |
| |
| // Set if the last update failed, cleared after the next successful |
| // update. The *error_state* field contains the rejected version of |
| // this particular resource along with the reason and timestamp. For |
| // successfully updated or acknowledged resource, this field should |
| // be empty. |
| admin.v3.UpdateFailureState error_state = 8; |
| |
| // Is static resource is true if it is specified in the config supplied |
| // through the file at the startup. |
| bool is_static_resource = 9; |
| } |
| |
| // Node for a particular client. |
| config.core.v3.Node node = 1; |
| |
| // This field is deprecated in favor of generic_xds_configs which is |
| // much simpler and uniform in structure. |
| repeated PerXdsConfig xds_config = 2 [deprecated = true]; |
| |
| // Represents generic xDS config and the exact config structure depends on |
| // the type URL (like Cluster if it is CDS) |
| repeated GenericXdsConfig generic_xds_configs = 3; |
| |
| // For xDS clients, the scope in which the data is used. |
| // For example, gRPC indicates the data plane target or that the data is |
| // associated with gRPC server(s). |
| string client_scope = 4; |
| } |
| |
| message ClientStatusResponse { |
| // Client configs for the clients specified in the ClientStatusRequest. |
| repeated ClientConfig config = 1; |
| } |