// Copyright (c) HashiCorp, Inc. // SPDX-License-Identifier: MPL-2.0 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 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 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; }