mirror of
https://github.com/status-im/consul.git
synced 2025-01-09 21:35:52 +00:00
92aab7ea31
[OG Author: michael.zalimeni@hashicorp.com, rebase needed a separate PR] * v2: support virtual port in Service port references In addition to Service target port references, allow users to specify a port by stringified virtual port value. This is useful in environments such as Kubernetes where typical configuration is written in terms of Service virtual ports rather than workload (pod) target port names. Retaining the option of referencing target ports by name supports VMs, Nomad, and other use cases where virtual ports are not used by default. To support both uses cases at once, we will strictly interpret port references based on whether the value is numeric. See updated `ServicePort` docs for more details. * v2: update service ref docs for virtual port support Update proto and generated .go files with docs reflecting virtual port reference support. * v2: add virtual port references to L7 topo test Add coverage for mixed virtual and target port references to existing test. * update failover policy controller tests to work with computed failover policy and assert error conditions against FailoverPolicy and ComputedFailoverPolicy resources * accumulate services; don't overwrite them in enterprise --------- Co-authored-by: Michael Zalimeni <michael.zalimeni@hashicorp.com> Co-authored-by: R.B. Boyer <rb@hashicorp.com>
61 lines
1.9 KiB
Protocol Buffer
61 lines
1.9 KiB
Protocol Buffer
// Copyright (c) HashiCorp, Inc.
|
|
// SPDX-License-Identifier: MPL-2.0
|
|
|
|
syntax = "proto3";
|
|
|
|
package hashicorp.consul.catalog.v2beta1;
|
|
|
|
import "pbresource/annotations.proto";
|
|
import "pbresource/resource.proto";
|
|
|
|
// This is a Resource type.
|
|
message FailoverPolicy {
|
|
option (hashicorp.consul.resource.spec) = {scope: SCOPE_NAMESPACE};
|
|
|
|
// Config defines failover for any named port not present in PortConfigs.
|
|
FailoverConfig config = 1;
|
|
|
|
// PortConfigs defines failover for a specific port on a service and takes
|
|
// precedence over Config.
|
|
//
|
|
// For more details on potential values of the service port identifier key,
|
|
// see documentation for Service.ServicePort.
|
|
map<string, FailoverConfig> port_configs = 2;
|
|
}
|
|
|
|
message FailoverConfig {
|
|
// Destinations specifies a fixed list of failover destinations to try. We
|
|
// never try a destination multiple times, so those are subtracted from this
|
|
// list before proceeding.
|
|
repeated FailoverDestination destinations = 1;
|
|
|
|
// Mode specifies the type of failover that will be performed. Valid values are
|
|
// "sequential", "" (equivalent to "sequential") and "order-by-locality".
|
|
FailoverMode mode = 2;
|
|
repeated string regions = 3;
|
|
|
|
// SamenessGroup specifies the sameness group to failover to.
|
|
string sameness_group = 4;
|
|
}
|
|
|
|
message FailoverDestination {
|
|
// This must be a Service.
|
|
hashicorp.consul.resource.Reference ref = 1;
|
|
|
|
// Port is the port of the destination service.
|
|
//
|
|
// For more details on potential values of the service port identifier key,
|
|
// see documentation for Service.ServicePort.
|
|
// TODO: what should an empty port mean?
|
|
string port = 2;
|
|
string datacenter = 3;
|
|
}
|
|
|
|
// +kubebuilder:validation:Enum=FAILOVER_MODE_UNSPECIFIED;FAILOVER_MODE_SEQUENTIAL;FAILOVER_MODE_ORDER_BY_LOCALITY
|
|
// +kubebuilder:validation:Type=string
|
|
enum FailoverMode {
|
|
FAILOVER_MODE_UNSPECIFIED = 0;
|
|
FAILOVER_MODE_SEQUENTIAL = 1;
|
|
FAILOVER_MODE_ORDER_BY_LOCALITY = 2;
|
|
}
|