2023-08-03 18:42:04 +00:00
|
|
|
// Copyright (c) HashiCorp, Inc.
|
2023-08-21 17:31:54 +00:00
|
|
|
// SPDX-License-Identifier: MPL-2.0
|
2023-08-03 18:42:04 +00:00
|
|
|
|
|
|
|
syntax = "proto3";
|
|
|
|
|
|
|
|
package hashicorp.consul.mesh.v1alpha1;
|
|
|
|
|
|
|
|
import "pbcatalog/v1alpha1/failover_policy.proto";
|
|
|
|
import "pbcatalog/v1alpha1/service.proto";
|
|
|
|
import "pbmesh/v1alpha1/common.proto";
|
|
|
|
import "pbmesh/v1alpha1/destination_policy.proto";
|
|
|
|
import "pbmesh/v1alpha1/grpc_route.proto";
|
|
|
|
import "pbmesh/v1alpha1/http_route.proto";
|
|
|
|
import "pbmesh/v1alpha1/http_route_retries.proto";
|
|
|
|
import "pbmesh/v1alpha1/http_route_timeouts.proto";
|
|
|
|
|
|
|
|
// This is a Resource type.
|
|
|
|
message ComputedRoutes {
|
|
|
|
map<string, ComputedPortRoutes> ported_configs = 1;
|
|
|
|
}
|
|
|
|
|
|
|
|
message ComputedPortRoutes {
|
|
|
|
oneof config {
|
|
|
|
InterpretedHTTPRoute http = 1;
|
|
|
|
InterpretedGRPCRoute grpc = 2;
|
|
|
|
InterpretedTCPRoute tcp = 3;
|
|
|
|
}
|
|
|
|
bool using_default_config = 4; // TODO
|
|
|
|
|
|
|
|
// map key is an opaque string; like disco chain target name
|
|
|
|
map<string, BackendTargetDetails> targets = 5;
|
|
|
|
}
|
|
|
|
|
|
|
|
message InterpretedHTTPRoute {
|
|
|
|
ParentReference parent_ref = 1;
|
|
|
|
reserved 2; // hostnames
|
|
|
|
repeated InterpretedHTTPRouteRule rules = 3;
|
|
|
|
}
|
|
|
|
|
|
|
|
message InterpretedHTTPRouteRule {
|
|
|
|
repeated HTTPRouteMatch matches = 1;
|
|
|
|
repeated HTTPRouteFilter filters = 2;
|
|
|
|
repeated InterpretedHTTPBackendRef backend_refs = 3;
|
|
|
|
HTTPRouteTimeouts timeouts = 4;
|
|
|
|
HTTPRouteRetries retries = 5;
|
|
|
|
}
|
|
|
|
|
|
|
|
message InterpretedHTTPBackendRef {
|
|
|
|
string backend_target = 1;
|
|
|
|
uint32 weight = 2;
|
|
|
|
repeated HTTPRouteFilter filters = 3;
|
|
|
|
}
|
|
|
|
|
|
|
|
message InterpretedGRPCRoute {
|
|
|
|
ParentReference parent_ref = 1;
|
|
|
|
reserved 2; // hostnames
|
|
|
|
repeated InterpretedGRPCRouteRule rules = 3;
|
|
|
|
}
|
|
|
|
|
|
|
|
message InterpretedGRPCRouteRule {
|
|
|
|
repeated GRPCRouteMatch matches = 1;
|
|
|
|
repeated GRPCRouteFilter filters = 2;
|
|
|
|
repeated InterpretedGRPCBackendRef backend_refs = 3;
|
|
|
|
HTTPRouteTimeouts timeouts = 4;
|
|
|
|
HTTPRouteRetries retries = 5;
|
|
|
|
}
|
|
|
|
|
|
|
|
message InterpretedGRPCBackendRef {
|
|
|
|
string backend_target = 1;
|
|
|
|
uint32 weight = 2;
|
|
|
|
repeated GRPCRouteFilter filters = 3;
|
|
|
|
}
|
|
|
|
|
|
|
|
message InterpretedTCPRoute {
|
|
|
|
ParentReference parent_ref = 1;
|
|
|
|
repeated InterpretedTCPRouteRule rules = 2;
|
|
|
|
}
|
|
|
|
|
|
|
|
message InterpretedTCPRouteRule {
|
|
|
|
repeated InterpretedTCPBackendRef backend_refs = 1;
|
|
|
|
}
|
|
|
|
|
|
|
|
// TODO: look into smuggling the target through a different typeURL, or just
|
|
|
|
// skip in favor of letting the caller do their own lookups?
|
|
|
|
message InterpretedTCPBackendRef {
|
|
|
|
string backend_target = 1;
|
|
|
|
uint32 weight = 2;
|
|
|
|
}
|
|
|
|
|
|
|
|
message BackendTargetDetails {
|
|
|
|
// identity info
|
|
|
|
BackendReference backend_ref = 1;
|
|
|
|
|
|
|
|
bool null_route_traffic = 2;
|
|
|
|
|
|
|
|
hashicorp.consul.catalog.v1alpha1.Service service = 3;
|
|
|
|
hashicorp.consul.catalog.v1alpha1.FailoverPolicy failover_policy = 4;
|
|
|
|
DestinationPolicy destination_policy = 5;
|
|
|
|
}
|