// 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/protocol.proto"; import "pbcatalog/v1alpha1/service_endpoints.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"; import "pbresource/resource.proto"; // This is a Resource type. message ComputedRoutes { map ported_configs = 1; } message ComputedPortRoutes { oneof config { ComputedHTTPRoute http = 1; ComputedGRPCRoute grpc = 2; ComputedTCPRoute tcp = 3; } bool using_default_config = 4; // TODO ParentReference parent_ref = 5; // Protocol is the ParentRef.Port's protocol. It is based on the value in the // Service object, but may differ depending upon which xRoutes are actually // in use. hashicorp.consul.catalog.v1alpha1.Protocol protocol = 6; // map key is an opaque string; like disco chain target name map targets = 7; } message ComputedHTTPRoute { reserved 1; // hostnames repeated ComputedHTTPRouteRule rules = 2; } message ComputedHTTPRouteRule { repeated HTTPRouteMatch matches = 1; repeated HTTPRouteFilter filters = 2; repeated ComputedHTTPBackendRef backend_refs = 3; HTTPRouteTimeouts timeouts = 4; HTTPRouteRetries retries = 5; } message ComputedHTTPBackendRef { // BackendTarget indicates which key in the targets map provides // the rest of the configuration. // // If this field is set to the empty string, or is the sentinel value // "NULL-ROUTE" is an indication that all of the traffic destined for this // backend reference should be null routed in a format appropriate for the // protocol (i.e. for HTTP use 5xx). string backend_target = 1; uint32 weight = 2; repeated HTTPRouteFilter filters = 3; } message ComputedGRPCRoute { reserved 1; // hostnames repeated ComputedGRPCRouteRule rules = 2; } message ComputedGRPCRouteRule { repeated GRPCRouteMatch matches = 1; repeated GRPCRouteFilter filters = 2; repeated ComputedGRPCBackendRef backend_refs = 3; HTTPRouteTimeouts timeouts = 4; HTTPRouteRetries retries = 5; } message ComputedGRPCBackendRef { // BackendTarget indicates which key in the targets map provides // the rest of the configuration. // // If this field is set to the empty string, or is the sentinel value // "NULL-ROUTE" is an indication that all of the traffic destined for this // backend reference should be null routed in a format appropriate for the // protocol (i.e. for HTTP use 5xx). string backend_target = 1; uint32 weight = 2; repeated GRPCRouteFilter filters = 3; } message ComputedTCPRoute { repeated ComputedTCPRouteRule rules = 1; } message ComputedTCPRouteRule { repeated ComputedTCPBackendRef 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 ComputedTCPBackendRef { // BackendTarget indicates which key in the targets map provides // the rest of the configuration. // // If this field is set to the empty string, or is the sentinel value // "NULL-ROUTE" is an indication that all of the traffic destined for this // backend reference should be null routed in a format appropriate for the // protocol (i.e. for HTTP use 5xx). string backend_target = 1; uint32 weight = 2; } message BackendTargetDetails { // identity info BackendReference backend_ref = 1; string mesh_port = 2; hashicorp.consul.catalog.v1alpha1.FailoverConfig failover_config = 3; DestinationConfig destination_config = 4; reserved 5 to 20; // leaving a gap between computed and retroactively added fields. // ServiceEndpointsID is not populated naturally and the field exists only for // downstream consumers. hashicorp.consul.resource.ID service_endpoints_id = 21; // ServiceEndpoints is not populated naturally and the field exists only for // downstream consumers. hashicorp.consul.catalog.v1alpha1.ServiceEndpoints service_endpoints = 22; // IdentityRefs are not populated naturally and the field exists only for // downstream consumers. repeated hashicorp.consul.resource.Reference identity_refs = 23; }