2023-03-28 22:48:58 +00:00
|
|
|
// Copyright (c) HashiCorp, Inc.
|
|
|
|
// SPDX-License-Identifier: MPL-2.0
|
|
|
|
|
proxycfg: server-local config entry data sources
This is the OSS portion of enterprise PR 2056.
This commit provides server-local implementations of the proxycfg.ConfigEntry
and proxycfg.ConfigEntryList interfaces, that source data from streaming events.
It makes use of the LocalMaterializer type introduced for peering replication,
adding the necessary support for authorization.
It also adds support for "wildcard" subscriptions (within a topic) to the event
publisher, as this is needed to fetch service-resolvers for all services when
configuring mesh gateways.
Currently, events will be emitted for just the ingress-gateway, service-resolver,
and mesh config entry types, as these are the only entries required by proxycfg
— the events will be emitted on topics named IngressGateway, ServiceResolver,
and MeshConfig topics respectively.
Though these events will only be consumed "locally" for now, they can also be
consumed via the gRPC endpoint (confirmed using grpcurl) so using them from
client agents should be a case of swapping the LocalMaterializer for an
RPCMaterializer.
2022-07-01 15:09:47 +00:00
|
|
|
syntax = "proto3";
|
|
|
|
|
2022-07-13 16:03:27 +00:00
|
|
|
package hashicorp.consul.internal.configentry;
|
2022-07-11 18:44:51 +00:00
|
|
|
|
proxycfg: server-local config entry data sources
This is the OSS portion of enterprise PR 2056.
This commit provides server-local implementations of the proxycfg.ConfigEntry
and proxycfg.ConfigEntryList interfaces, that source data from streaming events.
It makes use of the LocalMaterializer type introduced for peering replication,
adding the necessary support for authorization.
It also adds support for "wildcard" subscriptions (within a topic) to the event
publisher, as this is needed to fetch service-resolvers for all services when
configuring mesh gateways.
Currently, events will be emitted for just the ingress-gateway, service-resolver,
and mesh config entry types, as these are the only entries required by proxycfg
— the events will be emitted on topics named IngressGateway, ServiceResolver,
and MeshConfig topics respectively.
Though these events will only be consumed "locally" for now, they can also be
consumed via the gRPC endpoint (confirmed using grpcurl) so using them from
client agents should be a case of swapping the LocalMaterializer for an
RPCMaterializer.
2022-07-01 15:09:47 +00:00
|
|
|
import "google/protobuf/duration.proto";
|
2022-07-01 15:15:49 +00:00
|
|
|
import "google/protobuf/timestamp.proto";
|
2023-02-17 21:14:46 +00:00
|
|
|
import "private/pbcommon/common.proto";
|
proxycfg: server-local config entry data sources
This is the OSS portion of enterprise PR 2056.
This commit provides server-local implementations of the proxycfg.ConfigEntry
and proxycfg.ConfigEntryList interfaces, that source data from streaming events.
It makes use of the LocalMaterializer type introduced for peering replication,
adding the necessary support for authorization.
It also adds support for "wildcard" subscriptions (within a topic) to the event
publisher, as this is needed to fetch service-resolvers for all services when
configuring mesh gateways.
Currently, events will be emitted for just the ingress-gateway, service-resolver,
and mesh config entry types, as these are the only entries required by proxycfg
— the events will be emitted on topics named IngressGateway, ServiceResolver,
and MeshConfig topics respectively.
Though these events will only be consumed "locally" for now, they can also be
consumed via the gRPC endpoint (confirmed using grpcurl) so using them from
client agents should be a case of swapping the LocalMaterializer for an
RPCMaterializer.
2022-07-01 15:09:47 +00:00
|
|
|
|
|
|
|
enum Kind {
|
|
|
|
KindUnknown = 0;
|
|
|
|
KindMeshConfig = 1;
|
|
|
|
KindServiceResolver = 2;
|
|
|
|
KindIngressGateway = 3;
|
2022-07-01 15:15:49 +00:00
|
|
|
KindServiceIntentions = 4;
|
2022-10-24 18:50:28 +00:00
|
|
|
KindServiceDefaults = 5;
|
2023-01-18 22:14:34 +00:00
|
|
|
KindInlineCertificate = 6;
|
|
|
|
KindAPIGateway = 7;
|
|
|
|
KindBoundAPIGateway = 8;
|
|
|
|
KindHTTPRoute = 9;
|
|
|
|
KindTCPRoute = 10;
|
2023-04-14 16:24:46 +00:00
|
|
|
KindSamenessGroup = 11;
|
2023-05-19 22:14:16 +00:00
|
|
|
KindJWTProvider = 12;
|
proxycfg: server-local config entry data sources
This is the OSS portion of enterprise PR 2056.
This commit provides server-local implementations of the proxycfg.ConfigEntry
and proxycfg.ConfigEntryList interfaces, that source data from streaming events.
It makes use of the LocalMaterializer type introduced for peering replication,
adding the necessary support for authorization.
It also adds support for "wildcard" subscriptions (within a topic) to the event
publisher, as this is needed to fetch service-resolvers for all services when
configuring mesh gateways.
Currently, events will be emitted for just the ingress-gateway, service-resolver,
and mesh config entry types, as these are the only entries required by proxycfg
— the events will be emitted on topics named IngressGateway, ServiceResolver,
and MeshConfig topics respectively.
Though these events will only be consumed "locally" for now, they can also be
consumed via the gRPC endpoint (confirmed using grpcurl) so using them from
client agents should be a case of swapping the LocalMaterializer for an
RPCMaterializer.
2022-07-01 15:09:47 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
message ConfigEntry {
|
|
|
|
Kind Kind = 1;
|
|
|
|
string Name = 2;
|
|
|
|
|
|
|
|
common.EnterpriseMeta EnterpriseMeta = 3;
|
|
|
|
common.RaftIndex RaftIndex = 4;
|
|
|
|
|
|
|
|
oneof Entry {
|
|
|
|
MeshConfig MeshConfig = 5;
|
|
|
|
ServiceResolver ServiceResolver = 6;
|
|
|
|
IngressGateway IngressGateway = 7;
|
2022-07-01 15:15:49 +00:00
|
|
|
ServiceIntentions ServiceIntentions = 8;
|
2022-10-24 18:50:28 +00:00
|
|
|
ServiceDefaults ServiceDefaults = 9;
|
2023-02-09 16:32:10 +00:00
|
|
|
APIGateway APIGateway = 10;
|
|
|
|
BoundAPIGateway BoundAPIGateway = 11;
|
|
|
|
TCPRoute TCPRoute = 12;
|
|
|
|
HTTPRoute HTTPRoute = 13;
|
2023-02-15 16:06:44 +00:00
|
|
|
InlineCertificate InlineCertificate = 14;
|
2023-04-14 16:24:46 +00:00
|
|
|
SamenessGroup SamenessGroup = 15;
|
2023-05-19 22:14:16 +00:00
|
|
|
JWTProvider JWTProvider = 16;
|
proxycfg: server-local config entry data sources
This is the OSS portion of enterprise PR 2056.
This commit provides server-local implementations of the proxycfg.ConfigEntry
and proxycfg.ConfigEntryList interfaces, that source data from streaming events.
It makes use of the LocalMaterializer type introduced for peering replication,
adding the necessary support for authorization.
It also adds support for "wildcard" subscriptions (within a topic) to the event
publisher, as this is needed to fetch service-resolvers for all services when
configuring mesh gateways.
Currently, events will be emitted for just the ingress-gateway, service-resolver,
and mesh config entry types, as these are the only entries required by proxycfg
— the events will be emitted on topics named IngressGateway, ServiceResolver,
and MeshConfig topics respectively.
Though these events will only be consumed "locally" for now, they can also be
consumed via the gRPC endpoint (confirmed using grpcurl) so using them from
client agents should be a case of swapping the LocalMaterializer for an
RPCMaterializer.
2022-07-01 15:09:47 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
// mog annotation:
|
|
|
|
//
|
|
|
|
// target=github.com/hashicorp/consul/agent/structs.MeshConfigEntry
|
|
|
|
// output=config_entry.gen.go
|
|
|
|
// name=Structs
|
|
|
|
// ignore-fields=RaftIndex,EnterpriseMeta
|
|
|
|
message MeshConfig {
|
|
|
|
TransparentProxyMeshConfig TransparentProxy = 1;
|
|
|
|
MeshTLSConfig TLS = 2;
|
|
|
|
MeshHTTPConfig HTTP = 3;
|
|
|
|
map<string, string> Meta = 4;
|
2022-09-02 20:52:11 +00:00
|
|
|
PeeringMeshConfig Peering = 5;
|
2023-04-19 19:45:00 +00:00
|
|
|
bool AllowEnablingPermissiveMutualTLS = 6;
|
proxycfg: server-local config entry data sources
This is the OSS portion of enterprise PR 2056.
This commit provides server-local implementations of the proxycfg.ConfigEntry
and proxycfg.ConfigEntryList interfaces, that source data from streaming events.
It makes use of the LocalMaterializer type introduced for peering replication,
adding the necessary support for authorization.
It also adds support for "wildcard" subscriptions (within a topic) to the event
publisher, as this is needed to fetch service-resolvers for all services when
configuring mesh gateways.
Currently, events will be emitted for just the ingress-gateway, service-resolver,
and mesh config entry types, as these are the only entries required by proxycfg
— the events will be emitted on topics named IngressGateway, ServiceResolver,
and MeshConfig topics respectively.
Though these events will only be consumed "locally" for now, they can also be
consumed via the gRPC endpoint (confirmed using grpcurl) so using them from
client agents should be a case of swapping the LocalMaterializer for an
RPCMaterializer.
2022-07-01 15:09:47 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
// mog annotation:
|
|
|
|
//
|
|
|
|
// target=github.com/hashicorp/consul/agent/structs.TransparentProxyMeshConfig
|
|
|
|
// output=config_entry.gen.go
|
|
|
|
// name=Structs
|
|
|
|
message TransparentProxyMeshConfig {
|
|
|
|
bool MeshDestinationsOnly = 1;
|
|
|
|
}
|
|
|
|
|
|
|
|
// mog annotation:
|
|
|
|
//
|
|
|
|
// target=github.com/hashicorp/consul/agent/structs.MeshTLSConfig
|
|
|
|
// output=config_entry.gen.go
|
|
|
|
// name=Structs
|
|
|
|
message MeshTLSConfig {
|
|
|
|
MeshDirectionalTLSConfig Incoming = 1;
|
|
|
|
MeshDirectionalTLSConfig Outgoing = 2;
|
|
|
|
}
|
|
|
|
|
|
|
|
// mog annotation:
|
|
|
|
//
|
|
|
|
// target=github.com/hashicorp/consul/agent/structs.MeshDirectionalTLSConfig
|
|
|
|
// output=config_entry.gen.go
|
|
|
|
// name=Structs
|
|
|
|
message MeshDirectionalTLSConfig {
|
|
|
|
// mog: func-from=tlsVersionFromStructs func-to=tlsVersionToStructs
|
|
|
|
string TLSMinVersion = 1;
|
|
|
|
// mog: func-from=tlsVersionFromStructs func-to=tlsVersionToStructs
|
|
|
|
string TLSMaxVersion = 2;
|
|
|
|
// mog: func-from=cipherSuitesFromStructs func-to=cipherSuitesToStructs
|
|
|
|
repeated string CipherSuites = 3;
|
|
|
|
}
|
|
|
|
|
|
|
|
// mog annotation:
|
|
|
|
//
|
|
|
|
// target=github.com/hashicorp/consul/agent/structs.MeshHTTPConfig
|
|
|
|
// output=config_entry.gen.go
|
|
|
|
// name=Structs
|
|
|
|
message MeshHTTPConfig {
|
|
|
|
bool SanitizeXForwardedClientCert = 1;
|
|
|
|
}
|
|
|
|
|
2022-09-02 20:52:11 +00:00
|
|
|
// mog annotation:
|
|
|
|
//
|
|
|
|
// target=github.com/hashicorp/consul/agent/structs.PeeringMeshConfig
|
|
|
|
// output=config_entry.gen.go
|
|
|
|
// name=Structs
|
|
|
|
message PeeringMeshConfig {
|
|
|
|
bool PeerThroughMeshGateways = 1;
|
|
|
|
}
|
|
|
|
|
proxycfg: server-local config entry data sources
This is the OSS portion of enterprise PR 2056.
This commit provides server-local implementations of the proxycfg.ConfigEntry
and proxycfg.ConfigEntryList interfaces, that source data from streaming events.
It makes use of the LocalMaterializer type introduced for peering replication,
adding the necessary support for authorization.
It also adds support for "wildcard" subscriptions (within a topic) to the event
publisher, as this is needed to fetch service-resolvers for all services when
configuring mesh gateways.
Currently, events will be emitted for just the ingress-gateway, service-resolver,
and mesh config entry types, as these are the only entries required by proxycfg
— the events will be emitted on topics named IngressGateway, ServiceResolver,
and MeshConfig topics respectively.
Though these events will only be consumed "locally" for now, they can also be
consumed via the gRPC endpoint (confirmed using grpcurl) so using them from
client agents should be a case of swapping the LocalMaterializer for an
RPCMaterializer.
2022-07-01 15:09:47 +00:00
|
|
|
// mog annotation:
|
|
|
|
//
|
|
|
|
// target=github.com/hashicorp/consul/agent/structs.ServiceResolverConfigEntry
|
|
|
|
// output=config_entry.gen.go
|
|
|
|
// name=Structs
|
|
|
|
// ignore-fields=Kind,Name,RaftIndex,EnterpriseMeta
|
|
|
|
message ServiceResolver {
|
|
|
|
string DefaultSubset = 1;
|
|
|
|
map<string, ServiceResolverSubset> Subsets = 2;
|
|
|
|
ServiceResolverRedirect Redirect = 3;
|
|
|
|
map<string, ServiceResolverFailover> Failover = 4;
|
|
|
|
// mog: func-to=structs.DurationFromProto func-from=structs.DurationToProto
|
|
|
|
google.protobuf.Duration ConnectTimeout = 5;
|
|
|
|
LoadBalancer LoadBalancer = 6;
|
|
|
|
map<string, string> Meta = 7;
|
2023-03-03 14:37:12 +00:00
|
|
|
// mog: func-to=structs.DurationFromProto func-from=structs.DurationToProto
|
|
|
|
google.protobuf.Duration RequestTimeout = 8;
|
2023-04-14 20:42:54 +00:00
|
|
|
ServiceResolverPrioritizeByLocality PrioritizeByLocality = 9;
|
proxycfg: server-local config entry data sources
This is the OSS portion of enterprise PR 2056.
This commit provides server-local implementations of the proxycfg.ConfigEntry
and proxycfg.ConfigEntryList interfaces, that source data from streaming events.
It makes use of the LocalMaterializer type introduced for peering replication,
adding the necessary support for authorization.
It also adds support for "wildcard" subscriptions (within a topic) to the event
publisher, as this is needed to fetch service-resolvers for all services when
configuring mesh gateways.
Currently, events will be emitted for just the ingress-gateway, service-resolver,
and mesh config entry types, as these are the only entries required by proxycfg
— the events will be emitted on topics named IngressGateway, ServiceResolver,
and MeshConfig topics respectively.
Though these events will only be consumed "locally" for now, they can also be
consumed via the gRPC endpoint (confirmed using grpcurl) so using them from
client agents should be a case of swapping the LocalMaterializer for an
RPCMaterializer.
2022-07-01 15:09:47 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
// mog annotation:
|
|
|
|
//
|
|
|
|
// target=github.com/hashicorp/consul/agent/structs.ServiceResolverSubset
|
|
|
|
// output=config_entry.gen.go
|
|
|
|
// name=Structs
|
|
|
|
message ServiceResolverSubset {
|
|
|
|
string Filter = 1;
|
|
|
|
bool OnlyPassing = 2;
|
|
|
|
}
|
|
|
|
|
|
|
|
// mog annotation:
|
|
|
|
//
|
|
|
|
// target=github.com/hashicorp/consul/agent/structs.ServiceResolverRedirect
|
|
|
|
// output=config_entry.gen.go
|
|
|
|
// name=Structs
|
|
|
|
message ServiceResolverRedirect {
|
|
|
|
string Service = 1;
|
|
|
|
string ServiceSubset = 2;
|
|
|
|
string Namespace = 3;
|
|
|
|
string Partition = 4;
|
|
|
|
string Datacenter = 5;
|
2022-08-29 13:51:32 +00:00
|
|
|
string Peer = 6;
|
2023-03-17 14:48:06 +00:00
|
|
|
string SamenessGroup = 7;
|
proxycfg: server-local config entry data sources
This is the OSS portion of enterprise PR 2056.
This commit provides server-local implementations of the proxycfg.ConfigEntry
and proxycfg.ConfigEntryList interfaces, that source data from streaming events.
It makes use of the LocalMaterializer type introduced for peering replication,
adding the necessary support for authorization.
It also adds support for "wildcard" subscriptions (within a topic) to the event
publisher, as this is needed to fetch service-resolvers for all services when
configuring mesh gateways.
Currently, events will be emitted for just the ingress-gateway, service-resolver,
and mesh config entry types, as these are the only entries required by proxycfg
— the events will be emitted on topics named IngressGateway, ServiceResolver,
and MeshConfig topics respectively.
Though these events will only be consumed "locally" for now, they can also be
consumed via the gRPC endpoint (confirmed using grpcurl) so using them from
client agents should be a case of swapping the LocalMaterializer for an
RPCMaterializer.
2022-07-01 15:09:47 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
// mog annotation:
|
|
|
|
//
|
|
|
|
// target=github.com/hashicorp/consul/agent/structs.ServiceResolverFailover
|
|
|
|
// output=config_entry.gen.go
|
|
|
|
// name=Structs
|
|
|
|
message ServiceResolverFailover {
|
|
|
|
string Service = 1;
|
|
|
|
string ServiceSubset = 2;
|
|
|
|
string Namespace = 3;
|
|
|
|
repeated string Datacenters = 4;
|
2022-08-15 13:20:25 +00:00
|
|
|
repeated ServiceResolverFailoverTarget Targets = 5;
|
2023-03-03 16:12:38 +00:00
|
|
|
ServiceResolverFailoverPolicy Policy = 6;
|
2023-03-17 14:48:06 +00:00
|
|
|
string SamenessGroup = 7;
|
2023-03-03 16:12:38 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
// mog annotation:
|
|
|
|
//
|
|
|
|
// target=github.com/hashicorp/consul/agent/structs.ServiceResolverFailoverPolicy
|
|
|
|
// output=config_entry.gen.go
|
|
|
|
// name=Structs
|
|
|
|
message ServiceResolverFailoverPolicy {
|
|
|
|
string Mode = 1;
|
2023-03-30 14:08:38 +00:00
|
|
|
repeated string Regions = 2;
|
2022-08-15 13:20:25 +00:00
|
|
|
}
|
|
|
|
|
2023-04-14 20:42:54 +00:00
|
|
|
// mog annotation:
|
|
|
|
//
|
|
|
|
// target=github.com/hashicorp/consul/agent/structs.ServiceResolverPrioritizeByLocality
|
|
|
|
// output=config_entry.gen.go
|
|
|
|
// name=Structs
|
|
|
|
message ServiceResolverPrioritizeByLocality {
|
|
|
|
string Mode = 1;
|
|
|
|
}
|
|
|
|
|
2022-08-15 13:20:25 +00:00
|
|
|
// mog annotation:
|
|
|
|
//
|
|
|
|
// target=github.com/hashicorp/consul/agent/structs.ServiceResolverFailoverTarget
|
|
|
|
// output=config_entry.gen.go
|
|
|
|
// name=Structs
|
|
|
|
message ServiceResolverFailoverTarget {
|
|
|
|
string Service = 1;
|
|
|
|
string ServiceSubset = 2;
|
|
|
|
string Partition = 3;
|
|
|
|
string Namespace = 4;
|
|
|
|
string Datacenter = 5;
|
|
|
|
string Peer = 6;
|
proxycfg: server-local config entry data sources
This is the OSS portion of enterprise PR 2056.
This commit provides server-local implementations of the proxycfg.ConfigEntry
and proxycfg.ConfigEntryList interfaces, that source data from streaming events.
It makes use of the LocalMaterializer type introduced for peering replication,
adding the necessary support for authorization.
It also adds support for "wildcard" subscriptions (within a topic) to the event
publisher, as this is needed to fetch service-resolvers for all services when
configuring mesh gateways.
Currently, events will be emitted for just the ingress-gateway, service-resolver,
and mesh config entry types, as these are the only entries required by proxycfg
— the events will be emitted on topics named IngressGateway, ServiceResolver,
and MeshConfig topics respectively.
Though these events will only be consumed "locally" for now, they can also be
consumed via the gRPC endpoint (confirmed using grpcurl) so using them from
client agents should be a case of swapping the LocalMaterializer for an
RPCMaterializer.
2022-07-01 15:09:47 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
// mog annotation:
|
|
|
|
//
|
|
|
|
// target=github.com/hashicorp/consul/agent/structs.LoadBalancer
|
|
|
|
// output=config_entry.gen.go
|
|
|
|
// name=Structs
|
|
|
|
message LoadBalancer {
|
|
|
|
string Policy = 1;
|
|
|
|
RingHashConfig RingHashConfig = 2;
|
|
|
|
LeastRequestConfig LeastRequestConfig = 3;
|
|
|
|
repeated HashPolicy HashPolicies = 4;
|
|
|
|
}
|
|
|
|
|
|
|
|
// mog annotation:
|
|
|
|
//
|
|
|
|
// target=github.com/hashicorp/consul/agent/structs.RingHashConfig
|
|
|
|
// output=config_entry.gen.go
|
|
|
|
// name=Structs
|
|
|
|
message RingHashConfig {
|
|
|
|
uint64 MinimumRingSize = 1;
|
|
|
|
uint64 MaximumRingSize = 2;
|
|
|
|
}
|
|
|
|
|
|
|
|
// mog annotation:
|
|
|
|
//
|
|
|
|
// target=github.com/hashicorp/consul/agent/structs.LeastRequestConfig
|
|
|
|
// output=config_entry.gen.go
|
|
|
|
// name=Structs
|
|
|
|
message LeastRequestConfig {
|
|
|
|
uint32 ChoiceCount = 1;
|
|
|
|
}
|
|
|
|
|
|
|
|
// mog annotation:
|
|
|
|
//
|
|
|
|
// target=github.com/hashicorp/consul/agent/structs.HashPolicy
|
|
|
|
// output=config_entry.gen.go
|
|
|
|
// name=Structs
|
|
|
|
message HashPolicy {
|
|
|
|
string Field = 1;
|
|
|
|
string FieldValue = 2;
|
|
|
|
CookieConfig CookieConfig = 3;
|
|
|
|
bool SourceIP = 4;
|
|
|
|
bool Terminal = 5;
|
|
|
|
}
|
|
|
|
|
|
|
|
// mog annotation:
|
|
|
|
//
|
|
|
|
// target=github.com/hashicorp/consul/agent/structs.CookieConfig
|
|
|
|
// output=config_entry.gen.go
|
|
|
|
// name=Structs
|
|
|
|
message CookieConfig {
|
|
|
|
bool Session = 1;
|
|
|
|
// mog: func-to=structs.DurationFromProto func-from=structs.DurationToProto
|
|
|
|
google.protobuf.Duration TTL = 2;
|
|
|
|
string Path = 3;
|
|
|
|
}
|
|
|
|
|
|
|
|
// mog annotation:
|
|
|
|
//
|
|
|
|
// target=github.com/hashicorp/consul/agent/structs.IngressGatewayConfigEntry
|
|
|
|
// output=config_entry.gen.go
|
|
|
|
// name=Structs
|
|
|
|
// ignore-fields=Kind,Name,RaftIndex,EnterpriseMeta
|
|
|
|
message IngressGateway {
|
|
|
|
GatewayTLSConfig TLS = 1;
|
|
|
|
repeated IngressListener Listeners = 2;
|
|
|
|
map<string, string> Meta = 3;
|
2022-09-28 18:56:46 +00:00
|
|
|
IngressServiceConfig Defaults = 4;
|
|
|
|
}
|
|
|
|
|
|
|
|
// mog annotation:
|
|
|
|
//
|
|
|
|
// target=github.com/hashicorp/consul/agent/structs.IngressServiceConfig
|
|
|
|
// output=config_entry.gen.go
|
|
|
|
// name=Structs
|
|
|
|
message IngressServiceConfig {
|
|
|
|
uint32 MaxConnections = 1;
|
|
|
|
uint32 MaxPendingRequests = 2;
|
|
|
|
uint32 MaxConcurrentRequests = 3;
|
2022-12-13 16:51:37 +00:00
|
|
|
PassiveHealthCheck PassiveHealthCheck = 4;
|
proxycfg: server-local config entry data sources
This is the OSS portion of enterprise PR 2056.
This commit provides server-local implementations of the proxycfg.ConfigEntry
and proxycfg.ConfigEntryList interfaces, that source data from streaming events.
It makes use of the LocalMaterializer type introduced for peering replication,
adding the necessary support for authorization.
It also adds support for "wildcard" subscriptions (within a topic) to the event
publisher, as this is needed to fetch service-resolvers for all services when
configuring mesh gateways.
Currently, events will be emitted for just the ingress-gateway, service-resolver,
and mesh config entry types, as these are the only entries required by proxycfg
— the events will be emitted on topics named IngressGateway, ServiceResolver,
and MeshConfig topics respectively.
Though these events will only be consumed "locally" for now, they can also be
consumed via the gRPC endpoint (confirmed using grpcurl) so using them from
client agents should be a case of swapping the LocalMaterializer for an
RPCMaterializer.
2022-07-01 15:09:47 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
// mog annotation:
|
|
|
|
//
|
|
|
|
// target=github.com/hashicorp/consul/agent/structs.GatewayTLSConfig
|
|
|
|
// output=config_entry.gen.go
|
|
|
|
// name=Structs
|
|
|
|
message GatewayTLSConfig {
|
|
|
|
bool Enabled = 1;
|
|
|
|
GatewayTLSSDSConfig SDS = 2;
|
|
|
|
// mog: func-from=tlsVersionFromStructs func-to=tlsVersionToStructs
|
|
|
|
string TLSMinVersion = 3;
|
|
|
|
// mog: func-from=tlsVersionFromStructs func-to=tlsVersionToStructs
|
|
|
|
string TLSMaxVersion = 4;
|
|
|
|
// mog: func-from=cipherSuitesFromStructs func-to=cipherSuitesToStructs
|
|
|
|
repeated string CipherSuites = 5;
|
|
|
|
}
|
|
|
|
|
|
|
|
// mog annotation:
|
|
|
|
//
|
|
|
|
// target=github.com/hashicorp/consul/agent/structs.GatewayTLSSDSConfig
|
|
|
|
// output=config_entry.gen.go
|
|
|
|
// name=Structs
|
|
|
|
message GatewayTLSSDSConfig {
|
|
|
|
string ClusterName = 1;
|
|
|
|
string CertResource = 2;
|
|
|
|
}
|
|
|
|
|
|
|
|
// mog annotation:
|
|
|
|
//
|
|
|
|
// target=github.com/hashicorp/consul/agent/structs.IngressListener
|
|
|
|
// output=config_entry.gen.go
|
|
|
|
// name=Structs
|
|
|
|
message IngressListener {
|
|
|
|
// mog: func-to=int func-from=int32
|
|
|
|
int32 Port = 1;
|
|
|
|
string Protocol = 2;
|
|
|
|
repeated IngressService Services = 3;
|
2022-07-11 18:44:51 +00:00
|
|
|
GatewayTLSConfig TLS = 4;
|
proxycfg: server-local config entry data sources
This is the OSS portion of enterprise PR 2056.
This commit provides server-local implementations of the proxycfg.ConfigEntry
and proxycfg.ConfigEntryList interfaces, that source data from streaming events.
It makes use of the LocalMaterializer type introduced for peering replication,
adding the necessary support for authorization.
It also adds support for "wildcard" subscriptions (within a topic) to the event
publisher, as this is needed to fetch service-resolvers for all services when
configuring mesh gateways.
Currently, events will be emitted for just the ingress-gateway, service-resolver,
and mesh config entry types, as these are the only entries required by proxycfg
— the events will be emitted on topics named IngressGateway, ServiceResolver,
and MeshConfig topics respectively.
Though these events will only be consumed "locally" for now, they can also be
consumed via the gRPC endpoint (confirmed using grpcurl) so using them from
client agents should be a case of swapping the LocalMaterializer for an
RPCMaterializer.
2022-07-01 15:09:47 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
// mog annotation:
|
|
|
|
//
|
|
|
|
// target=github.com/hashicorp/consul/agent/structs.IngressService
|
|
|
|
// output=config_entry.gen.go
|
|
|
|
// name=Structs
|
|
|
|
message IngressService {
|
|
|
|
string Name = 1;
|
|
|
|
repeated string Hosts = 2;
|
|
|
|
GatewayServiceTLSConfig TLS = 3;
|
|
|
|
HTTPHeaderModifiers RequestHeaders = 4;
|
|
|
|
HTTPHeaderModifiers ResponseHeaders = 5;
|
|
|
|
map<string, string> Meta = 6;
|
|
|
|
// mog: func-to=enterpriseMetaToStructs func-from=enterpriseMetaFromStructs
|
|
|
|
common.EnterpriseMeta EnterpriseMeta = 7;
|
2022-09-28 18:56:46 +00:00
|
|
|
uint32 MaxConnections = 8;
|
|
|
|
uint32 MaxPendingRequests = 9;
|
|
|
|
uint32 MaxConcurrentRequests = 10;
|
2022-12-13 16:51:37 +00:00
|
|
|
PassiveHealthCheck PassiveHealthCheck = 11;
|
proxycfg: server-local config entry data sources
This is the OSS portion of enterprise PR 2056.
This commit provides server-local implementations of the proxycfg.ConfigEntry
and proxycfg.ConfigEntryList interfaces, that source data from streaming events.
It makes use of the LocalMaterializer type introduced for peering replication,
adding the necessary support for authorization.
It also adds support for "wildcard" subscriptions (within a topic) to the event
publisher, as this is needed to fetch service-resolvers for all services when
configuring mesh gateways.
Currently, events will be emitted for just the ingress-gateway, service-resolver,
and mesh config entry types, as these are the only entries required by proxycfg
— the events will be emitted on topics named IngressGateway, ServiceResolver,
and MeshConfig topics respectively.
Though these events will only be consumed "locally" for now, they can also be
consumed via the gRPC endpoint (confirmed using grpcurl) so using them from
client agents should be a case of swapping the LocalMaterializer for an
RPCMaterializer.
2022-07-01 15:09:47 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
// mog annotation:
|
|
|
|
//
|
|
|
|
// target=github.com/hashicorp/consul/agent/structs.GatewayServiceTLSConfig
|
|
|
|
// output=config_entry.gen.go
|
|
|
|
// name=Structs
|
|
|
|
message GatewayServiceTLSConfig {
|
|
|
|
GatewayTLSSDSConfig SDS = 1;
|
|
|
|
}
|
|
|
|
|
|
|
|
// mog annotation:
|
|
|
|
//
|
|
|
|
// target=github.com/hashicorp/consul/agent/structs.HTTPHeaderModifiers
|
|
|
|
// output=config_entry.gen.go
|
|
|
|
// name=Structs
|
|
|
|
message HTTPHeaderModifiers {
|
|
|
|
map<string, string> Add = 1;
|
|
|
|
map<string, string> Set = 2;
|
|
|
|
repeated string Remove = 3;
|
|
|
|
}
|
2022-07-01 15:15:49 +00:00
|
|
|
|
|
|
|
// mog annotation:
|
|
|
|
//
|
|
|
|
// target=github.com/hashicorp/consul/agent/structs.ServiceIntentionsConfigEntry
|
|
|
|
// output=config_entry.gen.go
|
|
|
|
// name=Structs
|
|
|
|
// ignore-fields=Kind,Name,RaftIndex,EnterpriseMeta
|
|
|
|
message ServiceIntentions {
|
|
|
|
repeated SourceIntention Sources = 1;
|
|
|
|
map<string, string> Meta = 2;
|
2023-04-19 22:16:39 +00:00
|
|
|
IntentionJWTRequirement JWT = 3;
|
|
|
|
}
|
|
|
|
|
|
|
|
// mog annotation:
|
|
|
|
//
|
|
|
|
// target=github.com/hashicorp/consul/agent/structs.IntentionJWTRequirement
|
|
|
|
// output=config_entry.gen.go
|
|
|
|
// name=Structs
|
|
|
|
message IntentionJWTRequirement {
|
|
|
|
repeated IntentionJWTProvider Providers = 1;
|
|
|
|
}
|
|
|
|
|
|
|
|
// mog annotation:
|
|
|
|
//
|
|
|
|
// target=github.com/hashicorp/consul/agent/structs.IntentionJWTProvider
|
|
|
|
// output=config_entry.gen.go
|
|
|
|
// name=Structs
|
|
|
|
message IntentionJWTProvider {
|
|
|
|
string Name = 1;
|
|
|
|
repeated IntentionJWTClaimVerification VerifyClaims = 2;
|
|
|
|
}
|
|
|
|
|
|
|
|
// mog annotation:
|
|
|
|
//
|
|
|
|
// target=github.com/hashicorp/consul/agent/structs.IntentionJWTClaimVerification
|
|
|
|
// output=config_entry.gen.go
|
|
|
|
// name=Structs
|
|
|
|
message IntentionJWTClaimVerification {
|
|
|
|
repeated string Path = 1;
|
|
|
|
string Value = 2;
|
2022-07-01 15:15:49 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
// mog annotation:
|
|
|
|
//
|
|
|
|
// target=github.com/hashicorp/consul/agent/structs.SourceIntention
|
|
|
|
// output=config_entry.gen.go
|
|
|
|
// name=Structs
|
|
|
|
message SourceIntention {
|
|
|
|
string Name = 1;
|
|
|
|
// mog: func-to=intentionActionToStructs func-from=intentionActionFromStructs
|
|
|
|
IntentionAction Action = 2;
|
|
|
|
repeated IntentionPermission Permissions = 3;
|
|
|
|
// mog: func-to=int func-from=int32
|
|
|
|
int32 Precedence = 4;
|
|
|
|
string LegacyID = 5;
|
|
|
|
// mog: func-to=intentionSourceTypeToStructs func-from=intentionSourceTypeFromStructs
|
|
|
|
IntentionSourceType Type = 6;
|
|
|
|
string Description = 7;
|
|
|
|
map<string, string> LegacyMeta = 8;
|
|
|
|
// mog: func-to=timeToStructs func-from=timeFromStructs
|
|
|
|
google.protobuf.Timestamp LegacyCreateTime = 9;
|
|
|
|
// mog: func-to=timeToStructs func-from=timeFromStructs
|
|
|
|
google.protobuf.Timestamp LegacyUpdateTime = 10;
|
|
|
|
// mog: func-to=enterpriseMetaToStructs func-from=enterpriseMetaFromStructs
|
|
|
|
common.EnterpriseMeta EnterpriseMeta = 11;
|
|
|
|
string Peer = 12;
|
2023-04-20 16:16:04 +00:00
|
|
|
string SamenessGroup = 13;
|
2022-07-01 15:15:49 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
enum IntentionAction {
|
|
|
|
Deny = 0;
|
|
|
|
Allow = 1;
|
|
|
|
}
|
|
|
|
|
|
|
|
enum IntentionSourceType {
|
|
|
|
Consul = 0;
|
|
|
|
}
|
|
|
|
|
|
|
|
// mog annotation:
|
|
|
|
//
|
|
|
|
// target=github.com/hashicorp/consul/agent/structs.IntentionPermission
|
|
|
|
// output=config_entry.gen.go
|
|
|
|
// name=Structs
|
|
|
|
message IntentionPermission {
|
|
|
|
// mog: func-to=intentionActionToStructs func-from=intentionActionFromStructs
|
|
|
|
IntentionAction Action = 1;
|
|
|
|
IntentionHTTPPermission HTTP = 2;
|
2023-04-19 22:16:39 +00:00
|
|
|
IntentionJWTRequirement JWT = 3;
|
2022-07-01 15:15:49 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
// mog annotation:
|
|
|
|
//
|
|
|
|
// target=github.com/hashicorp/consul/agent/structs.IntentionHTTPPermission
|
|
|
|
// output=config_entry.gen.go
|
|
|
|
// name=Structs
|
|
|
|
message IntentionHTTPPermission {
|
|
|
|
string PathExact = 1;
|
|
|
|
string PathPrefix = 2;
|
|
|
|
string PathRegex = 3;
|
|
|
|
repeated IntentionHTTPHeaderPermission Header = 4;
|
|
|
|
repeated string Methods = 5;
|
|
|
|
}
|
|
|
|
|
|
|
|
// mog annotation:
|
|
|
|
//
|
|
|
|
// target=github.com/hashicorp/consul/agent/structs.IntentionHTTPHeaderPermission
|
|
|
|
// output=config_entry.gen.go
|
|
|
|
// name=Structs
|
|
|
|
message IntentionHTTPHeaderPermission {
|
|
|
|
string Name = 1;
|
|
|
|
bool Present = 2;
|
|
|
|
string Exact = 3;
|
|
|
|
string Prefix = 4;
|
|
|
|
string Suffix = 5;
|
|
|
|
string Regex = 6;
|
|
|
|
bool Invert = 7;
|
|
|
|
}
|
2022-10-24 18:50:28 +00:00
|
|
|
|
|
|
|
// mog annotation:
|
|
|
|
//
|
|
|
|
// target=github.com/hashicorp/consul/agent/structs.ServiceConfigEntry
|
|
|
|
// output=config_entry.gen.go
|
|
|
|
// name=Structs
|
|
|
|
// ignore-fields=Kind,Name,RaftIndex,EnterpriseMeta
|
|
|
|
message ServiceDefaults {
|
|
|
|
string Protocol = 1;
|
|
|
|
// mog: func-to=proxyModeToStructs func-from=proxyModeFromStructs
|
|
|
|
ProxyMode Mode = 2;
|
|
|
|
TransparentProxyConfig TransparentProxy = 3;
|
|
|
|
MeshGatewayConfig MeshGateway = 4;
|
|
|
|
ExposeConfig Expose = 5;
|
|
|
|
string ExternalSNI = 6;
|
|
|
|
UpstreamConfiguration UpstreamConfig = 7;
|
|
|
|
DestinationConfig Destination = 8;
|
|
|
|
// mog: func-to=int func-from=int32
|
|
|
|
int32 MaxInboundConnections = 9;
|
|
|
|
// mog: func-to=int func-from=int32
|
|
|
|
int32 LocalConnectTimeoutMs = 10;
|
|
|
|
// mog: func-to=int func-from=int32
|
|
|
|
int32 LocalRequestTimeoutMs = 11;
|
|
|
|
string BalanceInboundConnections = 12;
|
|
|
|
map<string, string> Meta = 13;
|
2023-02-01 19:42:32 +00:00
|
|
|
// mog: func-to=EnvoyExtensionsToStructs func-from=EnvoyExtensionsFromStructs
|
|
|
|
repeated hashicorp.consul.internal.common.EnvoyExtension EnvoyExtensions = 14;
|
2023-04-19 19:45:00 +00:00
|
|
|
// mog: func-to=mutualTLSModeToStructs func-from=mutualTLSModeFromStructs
|
|
|
|
MutualTLSMode MutualTLSMode = 15;
|
2022-10-24 18:50:28 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
enum ProxyMode {
|
|
|
|
ProxyModeDefault = 0;
|
|
|
|
ProxyModeTransparent = 1;
|
|
|
|
ProxyModeDirect = 2;
|
|
|
|
}
|
|
|
|
|
2023-04-19 19:45:00 +00:00
|
|
|
enum MutualTLSMode {
|
|
|
|
MutualTLSModeDefault = 0;
|
|
|
|
MutualTLSModeStrict = 1;
|
|
|
|
MutualTLSModePermissive = 2;
|
|
|
|
}
|
|
|
|
|
2022-10-24 18:50:28 +00:00
|
|
|
// mog annotation:
|
|
|
|
//
|
|
|
|
// target=github.com/hashicorp/consul/agent/structs.TransparentProxyConfig
|
|
|
|
// output=config_entry.gen.go
|
|
|
|
// name=Structs
|
|
|
|
message TransparentProxyConfig {
|
|
|
|
// mog: func-to=int func-from=int32
|
|
|
|
int32 OutboundListenerPort = 1;
|
|
|
|
bool DialedDirectly = 2;
|
|
|
|
}
|
|
|
|
|
|
|
|
// mog annotation:
|
|
|
|
//
|
|
|
|
// target=github.com/hashicorp/consul/agent/structs.MeshGatewayConfig
|
|
|
|
// output=config_entry.gen.go
|
|
|
|
// name=Structs
|
|
|
|
message MeshGatewayConfig {
|
|
|
|
// mog: func-to=meshGatewayModeToStructs func-from=meshGatewayModeFromStructs
|
|
|
|
MeshGatewayMode Mode = 1;
|
|
|
|
}
|
|
|
|
|
|
|
|
enum MeshGatewayMode {
|
|
|
|
MeshGatewayModeDefault = 0;
|
|
|
|
MeshGatewayModeNone = 1;
|
|
|
|
MeshGatewayModeLocal = 2;
|
|
|
|
MeshGatewayModeRemote = 3;
|
|
|
|
}
|
|
|
|
|
|
|
|
// mog annotation:
|
|
|
|
//
|
|
|
|
// target=github.com/hashicorp/consul/agent/structs.ExposeConfig
|
|
|
|
// output=config_entry.gen.go
|
|
|
|
// name=Structs
|
|
|
|
message ExposeConfig {
|
|
|
|
bool Checks = 1;
|
|
|
|
repeated ExposePath Paths = 2;
|
|
|
|
}
|
|
|
|
|
|
|
|
// mog annotation:
|
|
|
|
//
|
|
|
|
// target=github.com/hashicorp/consul/agent/structs.ExposePath
|
|
|
|
// output=config_entry.gen.go
|
|
|
|
// name=Structs
|
|
|
|
message ExposePath {
|
|
|
|
// mog: func-to=int func-from=int32
|
|
|
|
int32 ListenerPort = 1;
|
|
|
|
string Path = 2;
|
|
|
|
// mog: func-to=int func-from=int32
|
|
|
|
int32 LocalPathPort = 3;
|
|
|
|
string Protocol = 4;
|
|
|
|
bool ParsedFromCheck = 5;
|
|
|
|
}
|
|
|
|
|
|
|
|
// mog annotation:
|
|
|
|
//
|
|
|
|
// target=github.com/hashicorp/consul/agent/structs.UpstreamConfiguration
|
|
|
|
// output=config_entry.gen.go
|
|
|
|
// name=Structs
|
|
|
|
message UpstreamConfiguration {
|
|
|
|
repeated UpstreamConfig Overrides = 1;
|
|
|
|
UpstreamConfig Defaults = 2;
|
|
|
|
}
|
|
|
|
|
|
|
|
// mog annotation:
|
|
|
|
//
|
|
|
|
// target=github.com/hashicorp/consul/agent/structs.UpstreamConfig
|
|
|
|
// output=config_entry.gen.go
|
|
|
|
// name=Structs
|
|
|
|
message UpstreamConfig {
|
|
|
|
string Name = 1;
|
|
|
|
// mog: func-to=enterpriseMetaToStructs func-from=enterpriseMetaFromStructs
|
|
|
|
common.EnterpriseMeta EnterpriseMeta = 2;
|
|
|
|
string EnvoyListenerJSON = 3;
|
|
|
|
string EnvoyClusterJSON = 4;
|
|
|
|
string Protocol = 5;
|
|
|
|
// mog: func-to=int func-from=int32
|
|
|
|
int32 ConnectTimeoutMs = 6;
|
|
|
|
UpstreamLimits Limits = 7;
|
|
|
|
PassiveHealthCheck PassiveHealthCheck = 8;
|
|
|
|
MeshGatewayConfig MeshGateway = 9;
|
|
|
|
string BalanceOutboundConnections = 10;
|
2023-02-03 15:51:53 +00:00
|
|
|
string Peer = 11;
|
2022-10-24 18:50:28 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
// mog annotation:
|
|
|
|
//
|
|
|
|
// target=github.com/hashicorp/consul/agent/structs.UpstreamLimits
|
|
|
|
// output=config_entry.gen.go
|
|
|
|
// name=Structs
|
|
|
|
message UpstreamLimits {
|
|
|
|
// mog: func-to=pointerToIntFromInt32 func-from=int32FromPointerToInt
|
|
|
|
int32 MaxConnections = 1;
|
|
|
|
// mog: func-to=pointerToIntFromInt32 func-from=int32FromPointerToInt
|
|
|
|
int32 MaxPendingRequests = 2;
|
|
|
|
// mog: func-to=pointerToIntFromInt32 func-from=int32FromPointerToInt
|
|
|
|
int32 MaxConcurrentRequests = 3;
|
|
|
|
}
|
|
|
|
|
|
|
|
// mog annotation:
|
|
|
|
//
|
|
|
|
// target=github.com/hashicorp/consul/agent/structs.PassiveHealthCheck
|
|
|
|
// output=config_entry.gen.go
|
|
|
|
// name=Structs
|
|
|
|
message PassiveHealthCheck {
|
|
|
|
// mog: func-to=structs.DurationFromProto func-from=structs.DurationToProto
|
|
|
|
google.protobuf.Duration Interval = 1;
|
|
|
|
uint32 MaxFailures = 2;
|
|
|
|
// mog: target=EnforcingConsecutive5xx func-to=pointerToUint32FromUint32 func-from=uint32FromPointerToUint32
|
|
|
|
uint32 EnforcingConsecutive5xx = 3;
|
2023-04-26 22:59:48 +00:00
|
|
|
// mog: func-to=pointerToUint32FromUint32 func-from=uint32FromPointerToUint32
|
|
|
|
uint32 MaxEjectionPercent = 4;
|
|
|
|
// mog: func-to=structs.DurationPointerFromProto func-from=structs.DurationPointerToProto
|
|
|
|
google.protobuf.Duration BaseEjectionTime = 5;
|
2022-10-24 18:50:28 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
// mog annotation:
|
|
|
|
//
|
|
|
|
// target=github.com/hashicorp/consul/agent/structs.DestinationConfig
|
|
|
|
// output=config_entry.gen.go
|
|
|
|
// name=Structs
|
|
|
|
message DestinationConfig {
|
|
|
|
repeated string Addresses = 1;
|
|
|
|
// mog: func-to=int func-from=int32
|
|
|
|
int32 Port = 2;
|
|
|
|
}
|
2023-01-18 22:14:34 +00:00
|
|
|
|
|
|
|
// mog annotation:
|
|
|
|
//
|
|
|
|
// target=github.com/hashicorp/consul/agent/structs.APIGatewayConfigEntry
|
|
|
|
// output=config_entry.gen.go
|
|
|
|
// name=Structs
|
|
|
|
// ignore-fields=Kind,Name,RaftIndex,EnterpriseMeta
|
|
|
|
message APIGateway {
|
|
|
|
map<string, string> Meta = 1;
|
|
|
|
repeated APIGatewayListener Listeners = 2;
|
|
|
|
Status Status = 3;
|
|
|
|
}
|
|
|
|
|
|
|
|
// mog annotation:
|
|
|
|
//
|
|
|
|
// target=github.com/hashicorp/consul/agent/structs.Status
|
|
|
|
// output=config_entry.gen.go
|
|
|
|
// name=Structs
|
|
|
|
message Status {
|
|
|
|
repeated Condition Conditions = 1;
|
|
|
|
}
|
|
|
|
|
|
|
|
// mog annotation:
|
|
|
|
//
|
|
|
|
// target=github.com/hashicorp/consul/agent/structs.Condition
|
|
|
|
// output=config_entry.gen.go
|
|
|
|
// name=Structs
|
|
|
|
message Condition {
|
2023-02-08 19:50:17 +00:00
|
|
|
string Type = 1;
|
|
|
|
string Status = 2;
|
|
|
|
string Reason = 3;
|
|
|
|
string Message = 4;
|
|
|
|
ResourceReference Resource = 5;
|
2023-01-18 22:14:34 +00:00
|
|
|
// mog: func-to=timeToStructs func-from=timeFromStructs
|
2023-02-08 19:50:17 +00:00
|
|
|
google.protobuf.Timestamp LastTransitionTime = 6;
|
2023-01-18 22:14:34 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
enum APIGatewayListenerProtocol {
|
|
|
|
ListenerProtocolHTTP = 0;
|
|
|
|
ListenerProtocolTCP = 1;
|
|
|
|
}
|
|
|
|
|
|
|
|
// mog annotation:
|
|
|
|
//
|
|
|
|
// target=github.com/hashicorp/consul/agent/structs.APIGatewayListener
|
|
|
|
// output=config_entry.gen.go
|
|
|
|
// name=Structs
|
|
|
|
message APIGatewayListener {
|
|
|
|
string Name = 1;
|
|
|
|
string Hostname = 2;
|
|
|
|
// mog: func-to=int func-from=int32
|
|
|
|
int32 Port = 3;
|
|
|
|
// mog: func-to=apiGatewayProtocolToStructs func-from=apiGatewayProtocolFromStructs
|
|
|
|
APIGatewayListenerProtocol Protocol = 4;
|
|
|
|
APIGatewayTLSConfiguration TLS = 5;
|
|
|
|
}
|
|
|
|
|
|
|
|
// mog annotation:
|
|
|
|
//
|
|
|
|
// target=github.com/hashicorp/consul/agent/structs.APIGatewayTLSConfiguration
|
|
|
|
// output=config_entry.gen.go
|
|
|
|
// name=Structs
|
|
|
|
message APIGatewayTLSConfiguration {
|
|
|
|
repeated ResourceReference Certificates = 1;
|
|
|
|
// mog: func-from=tlsVersionFromStructs func-to=tlsVersionToStructs
|
|
|
|
string MinVersion = 2;
|
|
|
|
// mog: func-from=tlsVersionFromStructs func-to=tlsVersionToStructs
|
|
|
|
string MaxVersion = 3;
|
|
|
|
// mog: func-from=cipherSuitesFromStructs func-to=cipherSuitesToStructs
|
|
|
|
repeated string CipherSuites = 4;
|
|
|
|
}
|
|
|
|
|
|
|
|
// mog annotation:
|
|
|
|
//
|
|
|
|
// target=github.com/hashicorp/consul/agent/structs.ResourceReference
|
|
|
|
// output=config_entry.gen.go
|
|
|
|
// name=Structs
|
|
|
|
message ResourceReference {
|
|
|
|
string Kind = 1;
|
|
|
|
string Name = 2;
|
|
|
|
string SectionName = 3;
|
|
|
|
// mog: func-to=enterpriseMetaToStructs func-from=enterpriseMetaFromStructs
|
|
|
|
common.EnterpriseMeta EnterpriseMeta = 4;
|
|
|
|
}
|
|
|
|
|
|
|
|
// mog annotation:
|
|
|
|
//
|
|
|
|
// target=github.com/hashicorp/consul/agent/structs.BoundAPIGatewayConfigEntry
|
|
|
|
// output=config_entry.gen.go
|
|
|
|
// name=Structs
|
|
|
|
// ignore-fields=Kind,Name,RaftIndex,EnterpriseMeta
|
|
|
|
message BoundAPIGateway {
|
|
|
|
map<string, string> Meta = 1;
|
|
|
|
repeated BoundAPIGatewayListener Listeners = 2;
|
|
|
|
}
|
|
|
|
|
|
|
|
// mog annotation:
|
|
|
|
//
|
|
|
|
// target=github.com/hashicorp/consul/agent/structs.BoundAPIGatewayListener
|
|
|
|
// output=config_entry.gen.go
|
|
|
|
// name=Structs
|
|
|
|
message BoundAPIGatewayListener {
|
|
|
|
string Name = 1;
|
|
|
|
repeated ResourceReference Certificates = 2;
|
|
|
|
repeated ResourceReference Routes = 3;
|
|
|
|
}
|
|
|
|
|
|
|
|
// mog annotation:
|
|
|
|
//
|
|
|
|
// target=github.com/hashicorp/consul/agent/structs.InlineCertificateConfigEntry
|
|
|
|
// output=config_entry.gen.go
|
|
|
|
// name=Structs
|
|
|
|
// ignore-fields=Kind,Name,RaftIndex,EnterpriseMeta
|
|
|
|
message InlineCertificate {
|
|
|
|
map<string, string> Meta = 1;
|
|
|
|
string Certificate = 2;
|
|
|
|
string PrivateKey = 3;
|
|
|
|
}
|
|
|
|
|
|
|
|
// mog annotation:
|
|
|
|
//
|
|
|
|
// target=github.com/hashicorp/consul/agent/structs.HTTPRouteConfigEntry
|
|
|
|
// output=config_entry.gen.go
|
|
|
|
// name=Structs
|
|
|
|
// ignore-fields=Kind,Name,RaftIndex,EnterpriseMeta
|
|
|
|
message HTTPRoute {
|
|
|
|
map<string, string> Meta = 1;
|
2023-02-01 12:59:49 +00:00
|
|
|
repeated ResourceReference Parents = 2;
|
|
|
|
repeated HTTPRouteRule Rules = 3;
|
|
|
|
repeated string Hostnames = 4;
|
|
|
|
Status Status = 5;
|
|
|
|
}
|
|
|
|
|
|
|
|
// mog annotation:
|
|
|
|
//
|
|
|
|
// target=github.com/hashicorp/consul/agent/structs.HTTPRouteRule
|
|
|
|
// output=config_entry.gen.go
|
|
|
|
// name=Structs
|
|
|
|
message HTTPRouteRule {
|
|
|
|
HTTPFilters Filters = 1;
|
|
|
|
repeated HTTPMatch Matches = 2;
|
|
|
|
repeated HTTPService Services = 3;
|
|
|
|
}
|
|
|
|
|
|
|
|
// mog annotation:
|
|
|
|
//
|
|
|
|
// target=github.com/hashicorp/consul/agent/structs.HTTPMatch
|
|
|
|
// output=config_entry.gen.go
|
|
|
|
// name=Structs
|
|
|
|
message HTTPMatch {
|
|
|
|
repeated HTTPHeaderMatch Headers = 1;
|
|
|
|
// mog: func-to=httpMatchMethodToStructs func-from=httpMatchMethodFromStructs
|
|
|
|
HTTPMatchMethod Method = 2;
|
|
|
|
HTTPPathMatch Path = 3;
|
|
|
|
repeated HTTPQueryMatch Query = 4;
|
|
|
|
}
|
|
|
|
|
|
|
|
enum HTTPMatchMethod {
|
|
|
|
HTTPMatchMethodAll = 0;
|
|
|
|
HTTPMatchMethodConnect = 1;
|
|
|
|
HTTPMatchMethodDelete = 2;
|
|
|
|
HTTPMatchMethodGet = 3;
|
|
|
|
HTTPMatchMethodHead = 4;
|
|
|
|
HTTPMatchMethodOptions = 5;
|
|
|
|
HTTPMatchMethodPatch = 6;
|
|
|
|
HTTPMatchMethodPost = 7;
|
|
|
|
HTTPMatchMethodPut = 8;
|
|
|
|
HTTPMatchMethodTrace = 9;
|
|
|
|
}
|
|
|
|
|
|
|
|
enum HTTPHeaderMatchType {
|
|
|
|
HTTPHeaderMatchExact = 0;
|
|
|
|
HTTPHeaderMatchPrefix = 1;
|
|
|
|
HTTPHeaderMatchPresent = 2;
|
|
|
|
HTTPHeaderMatchRegularExpression = 3;
|
|
|
|
HTTPHeaderMatchSuffix = 4;
|
|
|
|
}
|
|
|
|
|
|
|
|
// mog annotation:
|
|
|
|
//
|
|
|
|
// target=github.com/hashicorp/consul/agent/structs.HTTPHeaderMatch
|
|
|
|
// output=config_entry.gen.go
|
|
|
|
// name=Structs
|
|
|
|
message HTTPHeaderMatch {
|
|
|
|
// mog: func-to=httpHeaderMatchToStructs func-from=httpHeaderMatchFromStructs
|
|
|
|
HTTPHeaderMatchType Match = 1;
|
|
|
|
string Name = 2;
|
|
|
|
string Value = 3;
|
|
|
|
}
|
|
|
|
|
|
|
|
enum HTTPPathMatchType {
|
|
|
|
HTTPPathMatchExact = 0;
|
|
|
|
HTTPPathMatchPrefix = 1;
|
|
|
|
HTTPPathMatchRegularExpression = 3;
|
|
|
|
}
|
|
|
|
|
|
|
|
// mog annotation:
|
|
|
|
//
|
|
|
|
// target=github.com/hashicorp/consul/agent/structs.HTTPPathMatch
|
|
|
|
// output=config_entry.gen.go
|
|
|
|
// name=Structs
|
|
|
|
message HTTPPathMatch {
|
|
|
|
// mog: func-to=httpPathMatchToStructs func-from=httpPathMatchFromStructs
|
|
|
|
HTTPPathMatchType Match = 1;
|
|
|
|
string Value = 2;
|
|
|
|
}
|
|
|
|
|
|
|
|
enum HTTPQueryMatchType {
|
|
|
|
HTTPQueryMatchExact = 0;
|
|
|
|
HTTPQueryMatchPresent = 1;
|
|
|
|
HTTPQueryMatchRegularExpression = 3;
|
|
|
|
}
|
|
|
|
|
|
|
|
// mog annotation:
|
|
|
|
//
|
|
|
|
// target=github.com/hashicorp/consul/agent/structs.HTTPQueryMatch
|
|
|
|
// output=config_entry.gen.go
|
|
|
|
// name=Structs
|
|
|
|
message HTTPQueryMatch {
|
|
|
|
// mog: func-to=httpQueryMatchToStructs func-from=httpQueryMatchFromStructs
|
|
|
|
HTTPQueryMatchType Match = 1;
|
|
|
|
string Name = 2;
|
|
|
|
string Value = 3;
|
|
|
|
}
|
|
|
|
|
|
|
|
// mog annotation:
|
|
|
|
//
|
|
|
|
// target=github.com/hashicorp/consul/agent/structs.HTTPFilters
|
|
|
|
// output=config_entry.gen.go
|
|
|
|
// name=Structs
|
|
|
|
message HTTPFilters {
|
|
|
|
repeated HTTPHeaderFilter Headers = 1;
|
2023-02-22 04:02:04 +00:00
|
|
|
URLRewrite URLRewrite = 2;
|
2023-02-09 17:58:55 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
// mog annotation:
|
|
|
|
//
|
|
|
|
// target=github.com/hashicorp/consul/agent/structs.URLRewrite
|
|
|
|
// output=config_entry.gen.go
|
|
|
|
// name=Structs
|
|
|
|
message URLRewrite {
|
|
|
|
string Path = 1;
|
2023-02-01 12:59:49 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
// mog annotation:
|
|
|
|
//
|
|
|
|
// target=github.com/hashicorp/consul/agent/structs.HTTPHeaderFilter
|
|
|
|
// output=config_entry.gen.go
|
|
|
|
// name=Structs
|
|
|
|
message HTTPHeaderFilter {
|
|
|
|
map<string, string> Add = 1;
|
|
|
|
repeated string Remove = 2;
|
|
|
|
map<string, string> Set = 3;
|
|
|
|
}
|
|
|
|
|
|
|
|
// mog annotation:
|
|
|
|
//
|
|
|
|
// target=github.com/hashicorp/consul/agent/structs.HTTPService
|
|
|
|
// output=config_entry.gen.go
|
|
|
|
// name=Structs
|
|
|
|
message HTTPService {
|
|
|
|
string Name = 1;
|
|
|
|
// mog: func-to=int func-from=int32
|
|
|
|
int32 Weight = 2;
|
|
|
|
HTTPFilters Filters = 3;
|
|
|
|
// mog: func-to=enterpriseMetaToStructs func-from=enterpriseMetaFromStructs
|
|
|
|
common.EnterpriseMeta EnterpriseMeta = 4;
|
2023-01-18 22:14:34 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
// mog annotation:
|
|
|
|
//
|
|
|
|
// target=github.com/hashicorp/consul/agent/structs.TCPRouteConfigEntry
|
|
|
|
// output=config_entry.gen.go
|
|
|
|
// name=Structs
|
|
|
|
// ignore-fields=Kind,Name,RaftIndex,EnterpriseMeta
|
|
|
|
message TCPRoute {
|
|
|
|
map<string, string> Meta = 1;
|
|
|
|
repeated ResourceReference Parents = 2;
|
|
|
|
repeated TCPService Services = 3;
|
|
|
|
Status Status = 4;
|
|
|
|
}
|
|
|
|
|
|
|
|
// mog annotation:
|
|
|
|
//
|
|
|
|
// target=github.com/hashicorp/consul/agent/structs.TCPService
|
|
|
|
// output=config_entry.gen.go
|
|
|
|
// name=Structs
|
|
|
|
message TCPService {
|
|
|
|
string Name = 1;
|
|
|
|
// mog: func-to=enterpriseMetaToStructs func-from=enterpriseMetaFromStructs
|
2023-02-22 04:02:04 +00:00
|
|
|
common.EnterpriseMeta EnterpriseMeta = 2;
|
2023-01-18 22:14:34 +00:00
|
|
|
}
|
2023-04-14 16:24:46 +00:00
|
|
|
|
|
|
|
// mog annotation:
|
|
|
|
//
|
|
|
|
// target=github.com/hashicorp/consul/agent/structs.SamenessGroupConfigEntry
|
|
|
|
// output=config_entry.gen.go
|
|
|
|
// name=Structs
|
|
|
|
// ignore-fields=RaftIndex
|
|
|
|
message SamenessGroup {
|
|
|
|
string Name = 1;
|
|
|
|
bool DefaultForFailover = 2;
|
|
|
|
bool IncludeLocal = 3;
|
|
|
|
repeated SamenessGroupMember Members = 4;
|
|
|
|
map<string, string> Meta = 5;
|
|
|
|
// mog: func-to=enterpriseMetaToStructs func-from=enterpriseMetaFromStructs
|
|
|
|
common.EnterpriseMeta EnterpriseMeta = 6;
|
|
|
|
}
|
|
|
|
|
|
|
|
// mog annotation:
|
|
|
|
//
|
|
|
|
// target=github.com/hashicorp/consul/agent/structs.SamenessGroupMember
|
|
|
|
// output=config_entry.gen.go
|
|
|
|
// name=Structs
|
|
|
|
message SamenessGroupMember {
|
|
|
|
string Partition = 1;
|
|
|
|
string Peer = 2;
|
|
|
|
}
|
2023-05-19 22:14:16 +00:00
|
|
|
|
|
|
|
// mog annotation:
|
|
|
|
//
|
|
|
|
// target=github.com/hashicorp/consul/agent/structs.JWTProviderConfigEntry
|
|
|
|
// output=config_entry.gen.go
|
|
|
|
// name=Structs
|
|
|
|
// ignore-fields=Name,Kind,RaftIndex,EnterpriseMeta
|
|
|
|
message JWTProvider {
|
|
|
|
JSONWebKeySet JSONWebKeySet = 1;
|
|
|
|
string Issuer = 2;
|
|
|
|
repeated string Audiences = 3;
|
|
|
|
repeated JWTLocation Locations = 4;
|
|
|
|
JWTForwardingConfig Forwarding = 5;
|
|
|
|
JWTCacheConfig CacheConfig = 6;
|
|
|
|
map<string, string> Meta = 7;
|
|
|
|
// mog: func-to=int func-from=int32
|
|
|
|
int32 ClockSkewSeconds = 8;
|
|
|
|
}
|
|
|
|
|
|
|
|
// mog annotation:
|
|
|
|
//
|
|
|
|
// target=github.com/hashicorp/consul/agent/structs.JSONWebKeySet
|
|
|
|
// output=config_entry.gen.go
|
|
|
|
// name=Structs
|
|
|
|
message JSONWebKeySet {
|
|
|
|
LocalJWKS Local = 1;
|
|
|
|
RemoteJWKS Remote = 2;
|
|
|
|
}
|
|
|
|
|
|
|
|
// mog annotation:
|
|
|
|
//
|
|
|
|
// target=github.com/hashicorp/consul/agent/structs.LocalJWKS
|
|
|
|
// output=config_entry.gen.go
|
|
|
|
// name=Structs
|
|
|
|
message LocalJWKS {
|
|
|
|
string JWKS = 1;
|
|
|
|
string Filename = 2;
|
|
|
|
}
|
|
|
|
|
|
|
|
// mog annotation:
|
|
|
|
//
|
|
|
|
// target=github.com/hashicorp/consul/agent/structs.RemoteJWKS
|
|
|
|
// output=config_entry.gen.go
|
|
|
|
// name=Structs
|
|
|
|
message RemoteJWKS {
|
|
|
|
string URI = 1;
|
|
|
|
// mog: func-to=int func-from=int32
|
|
|
|
int32 RequestTimeoutMs = 2;
|
|
|
|
// mog: func-to=structs.DurationFromProto func-from=structs.DurationToProto
|
|
|
|
google.protobuf.Duration CacheDuration = 3;
|
|
|
|
bool FetchAsynchronously = 4;
|
|
|
|
JWKSRetryPolicy RetryPolicy = 5;
|
2023-07-04 13:12:06 +00:00
|
|
|
JWKSCluster JWKSCluster = 6;
|
|
|
|
}
|
|
|
|
|
|
|
|
// mog annotation:
|
|
|
|
//
|
|
|
|
// target=github.com/hashicorp/consul/agent/structs.JWKSCluster
|
|
|
|
// output=config_entry.gen.go
|
|
|
|
// name=Structs
|
|
|
|
message JWKSCluster {
|
|
|
|
string DiscoveryType = 1;
|
|
|
|
JWKSTLSCertificate TLSCertificates = 2;
|
|
|
|
// mog: func-to=structs.DurationFromProto func-from=structs.DurationToProto
|
|
|
|
google.protobuf.Duration ConnectTimeout = 3;
|
|
|
|
}
|
|
|
|
|
|
|
|
// mog annotation:
|
|
|
|
//
|
|
|
|
// target=github.com/hashicorp/consul/agent/structs.JWKSTLSCertificate
|
|
|
|
// output=config_entry.gen.go
|
|
|
|
// name=Structs
|
|
|
|
message JWKSTLSCertificate {
|
|
|
|
JWKSTLSCertProviderInstance CaCertificateProviderInstance = 1;
|
|
|
|
JWKSTLSCertTrustedCA TrustedCA = 2;
|
|
|
|
}
|
|
|
|
|
|
|
|
// mog annotation:
|
|
|
|
//
|
|
|
|
// target=github.com/hashicorp/consul/agent/structs.JWKSTLSCertProviderInstance
|
|
|
|
// output=config_entry.gen.go
|
|
|
|
// name=Structs
|
|
|
|
message JWKSTLSCertProviderInstance {
|
|
|
|
string InstanceName = 1;
|
|
|
|
string CertificateName = 2;
|
|
|
|
}
|
|
|
|
|
|
|
|
// mog annotation:
|
|
|
|
//
|
|
|
|
// target=github.com/hashicorp/consul/agent/structs.JWKSTLSCertTrustedCA
|
|
|
|
// output=config_entry.gen.go
|
|
|
|
// name=Structs
|
|
|
|
message JWKSTLSCertTrustedCA {
|
|
|
|
string Filename = 1;
|
|
|
|
string EnvironmentVariable = 2;
|
|
|
|
string InlineString = 3;
|
|
|
|
bytes InlineBytes = 4;
|
2023-05-19 22:14:16 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
// mog annotation:
|
|
|
|
//
|
|
|
|
// target=github.com/hashicorp/consul/agent/structs.JWKSRetryPolicy
|
|
|
|
// output=config_entry.gen.go
|
|
|
|
// name=Structs
|
|
|
|
message JWKSRetryPolicy {
|
|
|
|
// mog: func-to=int func-from=int32
|
|
|
|
int32 NumRetries = 1;
|
|
|
|
RetryPolicyBackOff RetryPolicyBackOff = 2;
|
|
|
|
}
|
|
|
|
|
|
|
|
// mog annotation:
|
|
|
|
//
|
|
|
|
// target=github.com/hashicorp/consul/agent/structs.RetryPolicyBackOff
|
|
|
|
// output=config_entry.gen.go
|
|
|
|
// name=Structs
|
|
|
|
message RetryPolicyBackOff {
|
|
|
|
// mog: func-to=structs.DurationFromProto func-from=structs.DurationToProto
|
|
|
|
google.protobuf.Duration BaseInterval = 1;
|
|
|
|
// mog: func-to=structs.DurationFromProto func-from=structs.DurationToProto
|
|
|
|
google.protobuf.Duration MaxInterval = 2;
|
|
|
|
}
|
|
|
|
|
|
|
|
// mog annotation:
|
|
|
|
//
|
|
|
|
// target=github.com/hashicorp/consul/agent/structs.JWTLocation
|
|
|
|
// output=config_entry.gen.go
|
|
|
|
// name=Structs
|
|
|
|
message JWTLocation {
|
|
|
|
JWTLocationHeader Header = 1;
|
|
|
|
JWTLocationQueryParam QueryParam = 2;
|
|
|
|
JWTLocationCookie Cookie = 3;
|
|
|
|
}
|
|
|
|
|
|
|
|
// mog annotation:
|
|
|
|
//
|
|
|
|
// target=github.com/hashicorp/consul/agent/structs.JWTLocationHeader
|
|
|
|
// output=config_entry.gen.go
|
|
|
|
// name=Structs
|
|
|
|
message JWTLocationHeader {
|
|
|
|
string Name = 1;
|
|
|
|
string ValuePrefix = 2;
|
|
|
|
bool Forward = 3;
|
|
|
|
}
|
|
|
|
|
|
|
|
// mog annotation:
|
|
|
|
//
|
|
|
|
// target=github.com/hashicorp/consul/agent/structs.JWTLocationQueryParam
|
|
|
|
// output=config_entry.gen.go
|
|
|
|
// name=Structs
|
|
|
|
message JWTLocationQueryParam {
|
|
|
|
string Name = 1;
|
|
|
|
}
|
|
|
|
|
|
|
|
// mog annotation:
|
|
|
|
//
|
|
|
|
// target=github.com/hashicorp/consul/agent/structs.JWTLocationCookie
|
|
|
|
// output=config_entry.gen.go
|
|
|
|
// name=Structs
|
|
|
|
message JWTLocationCookie {
|
|
|
|
string Name = 1;
|
|
|
|
}
|
|
|
|
|
|
|
|
// mog annotation:
|
|
|
|
//
|
|
|
|
// target=github.com/hashicorp/consul/agent/structs.JWTForwardingConfig
|
|
|
|
// output=config_entry.gen.go
|
|
|
|
// name=Structs
|
|
|
|
message JWTForwardingConfig {
|
|
|
|
string HeaderName = 1;
|
|
|
|
bool PadForwardPayloadHeader = 2;
|
|
|
|
}
|
|
|
|
|
|
|
|
// mog annotation:
|
|
|
|
//
|
|
|
|
// target=github.com/hashicorp/consul/agent/structs.JWTCacheConfig
|
|
|
|
// output=config_entry.gen.go
|
|
|
|
// name=Structs
|
|
|
|
message JWTCacheConfig {
|
|
|
|
// mog: func-to=int func-from=int32
|
|
|
|
int32 Size = 1;
|
|
|
|
}
|