consul/proto-public/pbcatalog/v2beta1/failover_policy.proto

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;
}