// Copyright (c) HashiCorp, Inc. // SPDX-License-Identifier: MPL-2.0 syntax = "proto3"; package hashicorp.consul.mesh.v2beta1; import "pbcatalog/v2beta1/selector.proto"; import "pbmesh/v2beta1/destinations_configuration.proto"; import "pbresource/annotations.proto"; import "pbresource/resource.proto"; message Destinations { option (hashicorp.consul.resource.spec) = {scope: SCOPE_NAMESPACE}; // Selection of workloads these destinations should apply to. // These can be prefixes or specific workload names. hashicorp.consul.catalog.v2beta1.WorkloadSelector workloads = 1; // destinations is the list of explicit destinations to define for the selected workloads. repeated Destination destinations = 2; // pq_destinations is the list of prepared query destinations. This field is not supported directly in v2 // and should only be used for migration reasons. repeated PreparedQueryDestination pq_destinations = 3; } message Destination { // destination_ref is the reference to an destination service. This has to be pbcatalog.Service type. hashicorp.consul.resource.Reference destination_ref = 1; // destination_port is the port name of the destination service. This should be the name // of the service's target port. string destination_port = 2; // datacenter is the datacenter for where this destination service lives. string datacenter = 3; // listen_addr is the address where Envoy will listen for requests to this destination. // It can provided either as an ip:port or as a Unix domain socket. oneof listen_addr { IPPortAddress ip_port = 4; UnixSocketAddress unix = 5; } } message IPPortAddress { // ip is an IPv4 or an IPv6 address. string ip = 1; // port is the port number. uint32 port = 2; } message UnixSocketAddress { // path is the file system path at which to bind a Unix domain socket listener. string path = 1; // mode is the Unix file mode for the socket file. It should be provided // in the numeric notation, for example, "0600". string mode = 2; } message PreparedQueryDestination { // name is the name of the prepared query to use as an destination. string name = 1; // datacenter is the datacenter for where this destination service lives. string datacenter = 2; // listen_addr is the address where Envoy will listen for requests to this destination. // It can provided either as an ip:port or as a Unix domain socket. oneof listen_addr { IPPortAddress tcp = 4; UnixSocketAddress unix = 5; } DestinationConfiguration destination_config = 6; }