// Copyright (c) HashiCorp, Inc. // SPDX-License-Identifier: MPL-2.0 // Package dataplane provides a service on Consul servers for the Consul Dataplane syntax = "proto3"; package hashicorp.consul.dataplane; import "annotations/ratelimit/ratelimit.proto"; import "google/protobuf/struct.proto"; message GetSupportedDataplaneFeaturesRequest {} enum DataplaneFeatures { DATAPLANE_FEATURES_UNSPECIFIED = 0; DATAPLANE_FEATURES_WATCH_SERVERS = 1; DATAPLANE_FEATURES_EDGE_CERTIFICATE_MANAGEMENT = 2; DATAPLANE_FEATURES_ENVOY_BOOTSTRAP_CONFIGURATION = 3; DATAPLANE_FEATURES_FIPS = 4; } message DataplaneFeatureSupport { DataplaneFeatures feature_name = 1; bool supported = 2; } message GetSupportedDataplaneFeaturesResponse { repeated DataplaneFeatureSupport supported_dataplane_features = 1; } message GetEnvoyBootstrapParamsRequest { oneof node_spec { string node_id = 1; string node_name = 2; } // The proxy service ID string service_id = 3; string partition = 4; string namespace = 5; } enum ServiceKind { // ServiceKind UNSPECIFIED is a sentinel value for when a request // did not specify a service kind. This will be treated the same // as if TYPICAL was explicitly used. SERVICE_KIND_UNSPECIFIED = 0; // ServiceKind Typical is a typical, classic Consul service. This is // represented by the absence of a value. This was chosen for ease of // backwards compatibility: existing services in the catalog would // default to the typical service. SERVICE_KIND_TYPICAL = 1; // ServiceKind Connect Proxy is a proxy for the Connect feature. This // service proxies another service within Consul and speaks the connect // protocol. SERVICE_KIND_CONNECT_PROXY = 2; // ServiceKind Mesh Gateway is a Mesh Gateway for the Connect feature. This // service will proxy connections based off the SNI header set by other // connect proxies. SERVICE_KIND_MESH_GATEWAY = 3; // ServiceKind Terminating Gateway is a Terminating Gateway for the Connect // feature. This service will proxy connections to services outside the mesh. SERVICE_KIND_TERMINATING_GATEWAY = 4; // ServiceKind Ingress Gateway is an Ingress Gateway for the Connect feature. // This service will ingress connections into the service mesh. SERVICE_KIND_INGRESS_GATEWAY = 5; // ServiceKind API Gateway is an API Gateway for the Connect feature. // This service will ingress connections in to the service mesh. SERVICE_KIND_API_GATEWAY = 6; } message GetEnvoyBootstrapParamsResponse { ServiceKind service_kind = 1; // service is be used to identify the service (as the local cluster name and // in metric tags). If the service is a connect proxy it will be the name of // the proxy's destination service, for gateways it will be the gateway // service's name. string service = 2; string namespace = 3; string partition = 4; string datacenter = 5; google.protobuf.Struct config = 6; string node_id = 7; string node_name = 8; repeated string access_logs = 9; } service DataplaneService { rpc GetSupportedDataplaneFeatures(GetSupportedDataplaneFeaturesRequest) returns (GetSupportedDataplaneFeaturesResponse) { option (hashicorp.consul.internal.ratelimit.spec) = { operation_type: OPERATION_TYPE_READ, operation_category: OPERATION_CATEGORY_DATAPLANE }; } rpc GetEnvoyBootstrapParams(GetEnvoyBootstrapParamsRequest) returns (GetEnvoyBootstrapParamsResponse) { option (hashicorp.consul.internal.ratelimit.spec) = { operation_type: OPERATION_TYPE_READ, operation_category: OPERATION_CATEGORY_DATAPLANE }; } }