Class Cluster.LbSubsetConfig

java.lang.Object
com.google.protobuf.AbstractMessageLite
com.google.protobuf.AbstractMessage
com.google.protobuf.GeneratedMessage
io.envoyproxy.envoy.config.cluster.v3.Cluster.LbSubsetConfig
All Implemented Interfaces:
com.google.protobuf.Message, com.google.protobuf.MessageLite, com.google.protobuf.MessageLiteOrBuilder, com.google.protobuf.MessageOrBuilder, Cluster.LbSubsetConfigOrBuilder, Serializable
Enclosing class:
Cluster

public static final class Cluster.LbSubsetConfig extends com.google.protobuf.GeneratedMessage implements Cluster.LbSubsetConfigOrBuilder
 Optionally divide the endpoints in this cluster into subsets defined by
 endpoint metadata and selected by route and weighted cluster metadata.
 [#next-free-field: 9]
 
Protobuf type envoy.config.cluster.v3.Cluster.LbSubsetConfig
See Also:
  • Field Details

    • serialVersionUID

      private static final long serialVersionUID
      See Also:
    • bitField0_

      private int bitField0_
    • FALLBACK_POLICY_FIELD_NUMBER

      public static final int FALLBACK_POLICY_FIELD_NUMBER
      See Also:
    • fallbackPolicy_

      private int fallbackPolicy_
    • DEFAULT_SUBSET_FIELD_NUMBER

      public static final int DEFAULT_SUBSET_FIELD_NUMBER
      See Also:
    • defaultSubset_

      private com.google.protobuf.Struct defaultSubset_
    • SUBSET_SELECTORS_FIELD_NUMBER

      public static final int SUBSET_SELECTORS_FIELD_NUMBER
      See Also:
    • subsetSelectors_

      private List<Cluster.LbSubsetConfig.LbSubsetSelector> subsetSelectors_
    • LOCALITY_WEIGHT_AWARE_FIELD_NUMBER

      public static final int LOCALITY_WEIGHT_AWARE_FIELD_NUMBER
      See Also:
    • localityWeightAware_

      private boolean localityWeightAware_
    • SCALE_LOCALITY_WEIGHT_FIELD_NUMBER

      public static final int SCALE_LOCALITY_WEIGHT_FIELD_NUMBER
      See Also:
    • scaleLocalityWeight_

      private boolean scaleLocalityWeight_
    • PANIC_MODE_ANY_FIELD_NUMBER

      public static final int PANIC_MODE_ANY_FIELD_NUMBER
      See Also:
    • panicModeAny_

      private boolean panicModeAny_
    • LIST_AS_ANY_FIELD_NUMBER

      public static final int LIST_AS_ANY_FIELD_NUMBER
      See Also:
    • listAsAny_

      private boolean listAsAny_
    • METADATA_FALLBACK_POLICY_FIELD_NUMBER

      public static final int METADATA_FALLBACK_POLICY_FIELD_NUMBER
      See Also:
    • metadataFallbackPolicy_

      private int metadataFallbackPolicy_
    • memoizedIsInitialized

      private byte memoizedIsInitialized
    • DEFAULT_INSTANCE

      private static final Cluster.LbSubsetConfig DEFAULT_INSTANCE
    • PARSER

      private static final com.google.protobuf.Parser<Cluster.LbSubsetConfig> PARSER
  • Constructor Details

    • LbSubsetConfig

      private LbSubsetConfig(com.google.protobuf.GeneratedMessage.Builder<?> builder)
    • LbSubsetConfig

      private LbSubsetConfig()
  • Method Details

    • getDescriptor

      public static final com.google.protobuf.Descriptors.Descriptor getDescriptor()
    • internalGetFieldAccessorTable

      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable internalGetFieldAccessorTable()
      Specified by:
      internalGetFieldAccessorTable in class com.google.protobuf.GeneratedMessage
    • getFallbackPolicyValue

      public int getFallbackPolicyValue()
       The behavior used when no endpoint subset matches the selected route's
       metadata. The value defaults to
       :ref:`NO_FALLBACK<envoy_v3_api_enum_value_config.cluster.v3.Cluster.LbSubsetConfig.LbSubsetFallbackPolicy.NO_FALLBACK>`.
       
      .envoy.config.cluster.v3.Cluster.LbSubsetConfig.LbSubsetFallbackPolicy fallback_policy = 1 [(.validate.rules) = { ... }
      Specified by:
      getFallbackPolicyValue in interface Cluster.LbSubsetConfigOrBuilder
      Returns:
      The enum numeric value on the wire for fallbackPolicy.
    • getFallbackPolicy

       The behavior used when no endpoint subset matches the selected route's
       metadata. The value defaults to
       :ref:`NO_FALLBACK<envoy_v3_api_enum_value_config.cluster.v3.Cluster.LbSubsetConfig.LbSubsetFallbackPolicy.NO_FALLBACK>`.
       
      .envoy.config.cluster.v3.Cluster.LbSubsetConfig.LbSubsetFallbackPolicy fallback_policy = 1 [(.validate.rules) = { ... }
      Specified by:
      getFallbackPolicy in interface Cluster.LbSubsetConfigOrBuilder
      Returns:
      The fallbackPolicy.
    • hasDefaultSubset

      public boolean hasDefaultSubset()
       Specifies the default subset of endpoints used during fallback if
       fallback_policy is
       :ref:`DEFAULT_SUBSET<envoy_v3_api_enum_value_config.cluster.v3.Cluster.LbSubsetConfig.LbSubsetFallbackPolicy.DEFAULT_SUBSET>`.
       Each field in default_subset is
       compared to the matching LbEndpoint.Metadata under the ``envoy.lb``
       namespace. It is valid for no hosts to match, in which case the behavior
       is the same as a fallback_policy of
       :ref:`NO_FALLBACK<envoy_v3_api_enum_value_config.cluster.v3.Cluster.LbSubsetConfig.LbSubsetFallbackPolicy.NO_FALLBACK>`.
       
      .google.protobuf.Struct default_subset = 2;
      Specified by:
      hasDefaultSubset in interface Cluster.LbSubsetConfigOrBuilder
      Returns:
      Whether the defaultSubset field is set.
    • getDefaultSubset

      public com.google.protobuf.Struct getDefaultSubset()
       Specifies the default subset of endpoints used during fallback if
       fallback_policy is
       :ref:`DEFAULT_SUBSET<envoy_v3_api_enum_value_config.cluster.v3.Cluster.LbSubsetConfig.LbSubsetFallbackPolicy.DEFAULT_SUBSET>`.
       Each field in default_subset is
       compared to the matching LbEndpoint.Metadata under the ``envoy.lb``
       namespace. It is valid for no hosts to match, in which case the behavior
       is the same as a fallback_policy of
       :ref:`NO_FALLBACK<envoy_v3_api_enum_value_config.cluster.v3.Cluster.LbSubsetConfig.LbSubsetFallbackPolicy.NO_FALLBACK>`.
       
      .google.protobuf.Struct default_subset = 2;
      Specified by:
      getDefaultSubset in interface Cluster.LbSubsetConfigOrBuilder
      Returns:
      The defaultSubset.
    • getDefaultSubsetOrBuilder

      public com.google.protobuf.StructOrBuilder getDefaultSubsetOrBuilder()
       Specifies the default subset of endpoints used during fallback if
       fallback_policy is
       :ref:`DEFAULT_SUBSET<envoy_v3_api_enum_value_config.cluster.v3.Cluster.LbSubsetConfig.LbSubsetFallbackPolicy.DEFAULT_SUBSET>`.
       Each field in default_subset is
       compared to the matching LbEndpoint.Metadata under the ``envoy.lb``
       namespace. It is valid for no hosts to match, in which case the behavior
       is the same as a fallback_policy of
       :ref:`NO_FALLBACK<envoy_v3_api_enum_value_config.cluster.v3.Cluster.LbSubsetConfig.LbSubsetFallbackPolicy.NO_FALLBACK>`.
       
      .google.protobuf.Struct default_subset = 2;
      Specified by:
      getDefaultSubsetOrBuilder in interface Cluster.LbSubsetConfigOrBuilder
    • getSubsetSelectorsList

      public List<Cluster.LbSubsetConfig.LbSubsetSelector> getSubsetSelectorsList()
       For each entry, LbEndpoint.Metadata's
       ``envoy.lb`` namespace is traversed and a subset is created for each unique
       combination of key and value. For example:
      
       .. code-block:: json
      
       { "subset_selectors": [
       { "keys": [ "version" ] },
       { "keys": [ "stage", "hardware_type" ] }
       ]}
      
       A subset is matched when the metadata from the selected route and
       weighted cluster contains the same keys and values as the subset's
       metadata. The same host may appear in multiple subsets.
       
      repeated .envoy.config.cluster.v3.Cluster.LbSubsetConfig.LbSubsetSelector subset_selectors = 3;
      Specified by:
      getSubsetSelectorsList in interface Cluster.LbSubsetConfigOrBuilder
    • getSubsetSelectorsOrBuilderList

      public List<? extends Cluster.LbSubsetConfig.LbSubsetSelectorOrBuilder> getSubsetSelectorsOrBuilderList()
       For each entry, LbEndpoint.Metadata's
       ``envoy.lb`` namespace is traversed and a subset is created for each unique
       combination of key and value. For example:
      
       .. code-block:: json
      
       { "subset_selectors": [
       { "keys": [ "version" ] },
       { "keys": [ "stage", "hardware_type" ] }
       ]}
      
       A subset is matched when the metadata from the selected route and
       weighted cluster contains the same keys and values as the subset's
       metadata. The same host may appear in multiple subsets.
       
      repeated .envoy.config.cluster.v3.Cluster.LbSubsetConfig.LbSubsetSelector subset_selectors = 3;
      Specified by:
      getSubsetSelectorsOrBuilderList in interface Cluster.LbSubsetConfigOrBuilder
    • getSubsetSelectorsCount

      public int getSubsetSelectorsCount()
       For each entry, LbEndpoint.Metadata's
       ``envoy.lb`` namespace is traversed and a subset is created for each unique
       combination of key and value. For example:
      
       .. code-block:: json
      
       { "subset_selectors": [
       { "keys": [ "version" ] },
       { "keys": [ "stage", "hardware_type" ] }
       ]}
      
       A subset is matched when the metadata from the selected route and
       weighted cluster contains the same keys and values as the subset's
       metadata. The same host may appear in multiple subsets.
       
      repeated .envoy.config.cluster.v3.Cluster.LbSubsetConfig.LbSubsetSelector subset_selectors = 3;
      Specified by:
      getSubsetSelectorsCount in interface Cluster.LbSubsetConfigOrBuilder
    • getSubsetSelectors

      public Cluster.LbSubsetConfig.LbSubsetSelector getSubsetSelectors(int index)
       For each entry, LbEndpoint.Metadata's
       ``envoy.lb`` namespace is traversed and a subset is created for each unique
       combination of key and value. For example:
      
       .. code-block:: json
      
       { "subset_selectors": [
       { "keys": [ "version" ] },
       { "keys": [ "stage", "hardware_type" ] }
       ]}
      
       A subset is matched when the metadata from the selected route and
       weighted cluster contains the same keys and values as the subset's
       metadata. The same host may appear in multiple subsets.
       
      repeated .envoy.config.cluster.v3.Cluster.LbSubsetConfig.LbSubsetSelector subset_selectors = 3;
      Specified by:
      getSubsetSelectors in interface Cluster.LbSubsetConfigOrBuilder
    • getSubsetSelectorsOrBuilder

      public Cluster.LbSubsetConfig.LbSubsetSelectorOrBuilder getSubsetSelectorsOrBuilder(int index)
       For each entry, LbEndpoint.Metadata's
       ``envoy.lb`` namespace is traversed and a subset is created for each unique
       combination of key and value. For example:
      
       .. code-block:: json
      
       { "subset_selectors": [
       { "keys": [ "version" ] },
       { "keys": [ "stage", "hardware_type" ] }
       ]}
      
       A subset is matched when the metadata from the selected route and
       weighted cluster contains the same keys and values as the subset's
       metadata. The same host may appear in multiple subsets.
       
      repeated .envoy.config.cluster.v3.Cluster.LbSubsetConfig.LbSubsetSelector subset_selectors = 3;
      Specified by:
      getSubsetSelectorsOrBuilder in interface Cluster.LbSubsetConfigOrBuilder
    • getLocalityWeightAware

      public boolean getLocalityWeightAware()
       If true, routing to subsets will take into account the localities and locality weights of the
       endpoints when making the routing decision.
      
       There are some potential pitfalls associated with enabling this feature, as the resulting
       traffic split after applying both a subset match and locality weights might be undesirable.
      
       Consider for example a situation in which you have 50/50 split across two localities X/Y
       which have 100 hosts each without subsetting. If the subset LB results in X having only 1
       host selected but Y having 100, then a lot more load is being dumped on the single host in X
       than originally anticipated in the load balancing assignment delivered via EDS.
       
      bool locality_weight_aware = 4;
      Specified by:
      getLocalityWeightAware in interface Cluster.LbSubsetConfigOrBuilder
      Returns:
      The localityWeightAware.
    • getScaleLocalityWeight

      public boolean getScaleLocalityWeight()
       When used with locality_weight_aware, scales the weight of each locality by the ratio
       of hosts in the subset vs hosts in the original subset. This aims to even out the load
       going to an individual locality if said locality is disproportionately affected by the
       subset predicate.
       
      bool scale_locality_weight = 5;
      Specified by:
      getScaleLocalityWeight in interface Cluster.LbSubsetConfigOrBuilder
      Returns:
      The scaleLocalityWeight.
    • getPanicModeAny

      public boolean getPanicModeAny()
       If true, when a fallback policy is configured and its corresponding subset fails to find
       a host this will cause any host to be selected instead.
      
       This is useful when using the default subset as the fallback policy, given the default
       subset might become empty. With this option enabled, if that happens the LB will attempt
       to select a host from the entire cluster.
       
      bool panic_mode_any = 6;
      Specified by:
      getPanicModeAny in interface Cluster.LbSubsetConfigOrBuilder
      Returns:
      The panicModeAny.
    • getListAsAny

      public boolean getListAsAny()
       If true, metadata specified for a metadata key will be matched against the corresponding
       endpoint metadata if the endpoint metadata matches the value exactly OR it is a list value
       and any of the elements in the list matches the criteria.
       
      bool list_as_any = 7;
      Specified by:
      getListAsAny in interface Cluster.LbSubsetConfigOrBuilder
      Returns:
      The listAsAny.
    • getMetadataFallbackPolicyValue

      public int getMetadataFallbackPolicyValue()
       Fallback mechanism that allows to try different route metadata until a host is found.
       If load balancing process, including all its mechanisms (like
       :ref:`fallback_policy<envoy_v3_api_field_config.cluster.v3.Cluster.LbSubsetConfig.fallback_policy>`)
       fails to select a host, this policy decides if and how the process is repeated using another metadata.
      
       The value defaults to
       :ref:`METADATA_NO_FALLBACK<envoy_v3_api_enum_value_config.cluster.v3.Cluster.LbSubsetConfig.LbSubsetMetadataFallbackPolicy.METADATA_NO_FALLBACK>`.
       
      .envoy.config.cluster.v3.Cluster.LbSubsetConfig.LbSubsetMetadataFallbackPolicy metadata_fallback_policy = 8 [(.validate.rules) = { ... }
      Specified by:
      getMetadataFallbackPolicyValue in interface Cluster.LbSubsetConfigOrBuilder
      Returns:
      The enum numeric value on the wire for metadataFallbackPolicy.
    • getMetadataFallbackPolicy

      public Cluster.LbSubsetConfig.LbSubsetMetadataFallbackPolicy getMetadataFallbackPolicy()
       Fallback mechanism that allows to try different route metadata until a host is found.
       If load balancing process, including all its mechanisms (like
       :ref:`fallback_policy<envoy_v3_api_field_config.cluster.v3.Cluster.LbSubsetConfig.fallback_policy>`)
       fails to select a host, this policy decides if and how the process is repeated using another metadata.
      
       The value defaults to
       :ref:`METADATA_NO_FALLBACK<envoy_v3_api_enum_value_config.cluster.v3.Cluster.LbSubsetConfig.LbSubsetMetadataFallbackPolicy.METADATA_NO_FALLBACK>`.
       
      .envoy.config.cluster.v3.Cluster.LbSubsetConfig.LbSubsetMetadataFallbackPolicy metadata_fallback_policy = 8 [(.validate.rules) = { ... }
      Specified by:
      getMetadataFallbackPolicy in interface Cluster.LbSubsetConfigOrBuilder
      Returns:
      The metadataFallbackPolicy.
    • isInitialized

      public final boolean isInitialized()
      Specified by:
      isInitialized in interface com.google.protobuf.MessageLiteOrBuilder
      Overrides:
      isInitialized in class com.google.protobuf.GeneratedMessage
    • writeTo

      public void writeTo(com.google.protobuf.CodedOutputStream output) throws IOException
      Specified by:
      writeTo in interface com.google.protobuf.MessageLite
      Overrides:
      writeTo in class com.google.protobuf.GeneratedMessage
      Throws:
      IOException
    • getSerializedSize

      public int getSerializedSize()
      Specified by:
      getSerializedSize in interface com.google.protobuf.MessageLite
      Overrides:
      getSerializedSize in class com.google.protobuf.GeneratedMessage
    • equals

      public boolean equals(Object obj)
      Specified by:
      equals in interface com.google.protobuf.Message
      Overrides:
      equals in class com.google.protobuf.AbstractMessage
    • hashCode

      public int hashCode()
      Specified by:
      hashCode in interface com.google.protobuf.Message
      Overrides:
      hashCode in class com.google.protobuf.AbstractMessage
    • parseFrom

      public static Cluster.LbSubsetConfig parseFrom(ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException
      Throws:
      com.google.protobuf.InvalidProtocolBufferException
    • parseFrom

      public static Cluster.LbSubsetConfig parseFrom(ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException
      Throws:
      com.google.protobuf.InvalidProtocolBufferException
    • parseFrom

      public static Cluster.LbSubsetConfig parseFrom(com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException
      Throws:
      com.google.protobuf.InvalidProtocolBufferException
    • parseFrom

      public static Cluster.LbSubsetConfig parseFrom(com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException
      Throws:
      com.google.protobuf.InvalidProtocolBufferException
    • parseFrom

      public static Cluster.LbSubsetConfig parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException
      Throws:
      com.google.protobuf.InvalidProtocolBufferException
    • parseFrom

      public static Cluster.LbSubsetConfig parseFrom(byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException
      Throws:
      com.google.protobuf.InvalidProtocolBufferException
    • parseFrom

      public static Cluster.LbSubsetConfig parseFrom(InputStream input) throws IOException
      Throws:
      IOException
    • parseFrom

      public static Cluster.LbSubsetConfig parseFrom(InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws IOException
      Throws:
      IOException
    • parseDelimitedFrom

      public static Cluster.LbSubsetConfig parseDelimitedFrom(InputStream input) throws IOException
      Throws:
      IOException
    • parseDelimitedFrom

      public static Cluster.LbSubsetConfig parseDelimitedFrom(InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws IOException
      Throws:
      IOException
    • parseFrom

      public static Cluster.LbSubsetConfig parseFrom(com.google.protobuf.CodedInputStream input) throws IOException
      Throws:
      IOException
    • parseFrom

      public static Cluster.LbSubsetConfig parseFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws IOException
      Throws:
      IOException
    • newBuilderForType

      public Cluster.LbSubsetConfig.Builder newBuilderForType()
      Specified by:
      newBuilderForType in interface com.google.protobuf.Message
      Specified by:
      newBuilderForType in interface com.google.protobuf.MessageLite
    • newBuilder

      public static Cluster.LbSubsetConfig.Builder newBuilder()
    • newBuilder

      public static Cluster.LbSubsetConfig.Builder newBuilder(Cluster.LbSubsetConfig prototype)
    • toBuilder

      public Cluster.LbSubsetConfig.Builder toBuilder()
      Specified by:
      toBuilder in interface com.google.protobuf.Message
      Specified by:
      toBuilder in interface com.google.protobuf.MessageLite
    • newBuilderForType

      protected Cluster.LbSubsetConfig.Builder newBuilderForType(com.google.protobuf.AbstractMessage.BuilderParent parent)
      Overrides:
      newBuilderForType in class com.google.protobuf.AbstractMessage
    • getDefaultInstance

      public static Cluster.LbSubsetConfig getDefaultInstance()
    • parser

      public static com.google.protobuf.Parser<Cluster.LbSubsetConfig> parser()
    • getParserForType

      public com.google.protobuf.Parser<Cluster.LbSubsetConfig> getParserForType()
      Specified by:
      getParserForType in interface com.google.protobuf.Message
      Specified by:
      getParserForType in interface com.google.protobuf.MessageLite
      Overrides:
      getParserForType in class com.google.protobuf.GeneratedMessage
    • getDefaultInstanceForType

      public Cluster.LbSubsetConfig getDefaultInstanceForType()
      Specified by:
      getDefaultInstanceForType in interface com.google.protobuf.MessageLiteOrBuilder
      Specified by:
      getDefaultInstanceForType in interface com.google.protobuf.MessageOrBuilder