Record Class EstateThresholds

java.lang.Object
java.lang.Record
com.eqixiac.equinix.design.estate.EstateThresholds
Record Components:
rightSizeDownBelowPercent - p95 utilisation below this percent of provisioned bandwidth suggests a smaller tier (default 30)
rightSizeUpAbovePercent - p95 utilisation above this percent suggests a larger tier (default 80)
headroomFactor - the target tier must be at least p95 × this factor (default 1.3)
minUtilizationSamples - the fewest samples a utilisation rule acts on (default 24, one day of hourly data)
bandwidthTiersMbps - the bandwidth tiers a connection can be moved to, ascending (default the common Fabric virtual-connection speeds 50 Mbps to 100 Gbps)
minAgeForTermDays - never recommend a term for a resource younger than this (default 90 days)
candidateTerms - the terms to price against on-demand (default 12, 24 and 36 months)
consolidateMinConnections - the fewest port-to-cloud connections in one metro that suggest a Cloud Router (default 3)
portCapacityWarnPercent - allocated bandwidth at or above this percent of port speed is a risk (default 80)
portCapacityCriticalPercent - ... and at or above this percent is critical (default 95)
routerLimitWarnPercent - router connections at or above this percent of the package limit is a risk (default 80)
routerPackageConnectionLimits - package code to its connection limit, used when the API does not report one (default empty: the live /routerPackages response had no vcCountMax on 2026-11-12, so limits are unknown unless supplied)
stuckAfterDays - a pending or failed state older than this is "stuck" (default 7)
referencePriceRangePercent - the ± range applied to reference prices (default 20)
estimatePriceRangePercent - the ± range applied to estimated prices (default 35)

public record EstateThresholds(double rightSizeDownBelowPercent, double rightSizeUpAbovePercent, double headroomFactor, int minUtilizationSamples, List<Integer> bandwidthTiersMbps, int minAgeForTermDays, List<Term> candidateTerms, int consolidateMinConnections, double portCapacityWarnPercent, double portCapacityCriticalPercent, double routerLimitWarnPercent, Map<String,Integer> routerPackageConnectionLimits, int stuckAfterDays, double referencePriceRangePercent, double estimatePriceRangePercent) extends Record
The tunable thresholds the default rules use. Every default is an assumption, stated here and repeated in the findings that rely on it.
  • Constructor Details

    • EstateThresholds

      public EstateThresholds(double rightSizeDownBelowPercent, double rightSizeUpAbovePercent, double headroomFactor, int minUtilizationSamples, List<Integer> bandwidthTiersMbps, int minAgeForTermDays, List<Term> candidateTerms, int consolidateMinConnections, double portCapacityWarnPercent, double portCapacityCriticalPercent, double routerLimitWarnPercent, Map<String,Integer> routerPackageConnectionLimits, int stuckAfterDays, double referencePriceRangePercent, double estimatePriceRangePercent)
      Validates and copies.
  • Method Details

    • defaults

      public static EstateThresholds defaults()
      The defaults.
      Returns:
      the default thresholds
    • builder

      public static EstateThresholds.Builder builder()
      Starts from the defaults.
      Returns:
      a builder
    • tierAtOrAbove

      public Integer tierAtOrAbove(double mbps)
      The smallest tier at or above the given rate.
      Parameters:
      mbps - the rate
      Returns:
      the tier, or null when the rate exceeds every tier
    • toString

      public final String toString()
      Returns a string representation of this record class. The representation contains the name of the class, followed by the name and value of each of the record components.
      Specified by:
      toString in class Record
      Returns:
      a string representation of this object
    • hashCode

      public final int hashCode()
      Returns a hash code value for this object. The value is derived from the hash code of each of the record components.
      Specified by:
      hashCode in class Record
      Returns:
      a hash code value for this object
    • equals

      public final boolean equals(Object o)
      Indicates whether some other object is "equal to" this one. The objects are equal if the other object is of the same class and if all the record components are equal. Reference components are compared with Objects::equals(Object,Object); primitive components are compared with the compare method from their corresponding wrapper classes.
      Specified by:
      equals in class Record
      Parameters:
      o - the object with which to compare
      Returns:
      true if this object is the same as the o argument; false otherwise.
    • rightSizeDownBelowPercent

      public double rightSizeDownBelowPercent()
      Returns the value of the rightSizeDownBelowPercent record component.
      Returns:
      the value of the rightSizeDownBelowPercent record component
    • rightSizeUpAbovePercent

      public double rightSizeUpAbovePercent()
      Returns the value of the rightSizeUpAbovePercent record component.
      Returns:
      the value of the rightSizeUpAbovePercent record component
    • headroomFactor

      public double headroomFactor()
      Returns the value of the headroomFactor record component.
      Returns:
      the value of the headroomFactor record component
    • minUtilizationSamples

      public int minUtilizationSamples()
      Returns the value of the minUtilizationSamples record component.
      Returns:
      the value of the minUtilizationSamples record component
    • bandwidthTiersMbps

      public List<Integer> bandwidthTiersMbps()
      Returns the value of the bandwidthTiersMbps record component.
      Returns:
      the value of the bandwidthTiersMbps record component
    • minAgeForTermDays

      public int minAgeForTermDays()
      Returns the value of the minAgeForTermDays record component.
      Returns:
      the value of the minAgeForTermDays record component
    • candidateTerms

      public List<Term> candidateTerms()
      Returns the value of the candidateTerms record component.
      Returns:
      the value of the candidateTerms record component
    • consolidateMinConnections

      public int consolidateMinConnections()
      Returns the value of the consolidateMinConnections record component.
      Returns:
      the value of the consolidateMinConnections record component
    • portCapacityWarnPercent

      public double portCapacityWarnPercent()
      Returns the value of the portCapacityWarnPercent record component.
      Returns:
      the value of the portCapacityWarnPercent record component
    • portCapacityCriticalPercent

      public double portCapacityCriticalPercent()
      Returns the value of the portCapacityCriticalPercent record component.
      Returns:
      the value of the portCapacityCriticalPercent record component
    • routerLimitWarnPercent

      public double routerLimitWarnPercent()
      Returns the value of the routerLimitWarnPercent record component.
      Returns:
      the value of the routerLimitWarnPercent record component
    • routerPackageConnectionLimits

      public Map<String,Integer> routerPackageConnectionLimits()
      Returns the value of the routerPackageConnectionLimits record component.
      Returns:
      the value of the routerPackageConnectionLimits record component
    • stuckAfterDays

      public int stuckAfterDays()
      Returns the value of the stuckAfterDays record component.
      Returns:
      the value of the stuckAfterDays record component
    • referencePriceRangePercent

      public double referencePriceRangePercent()
      Returns the value of the referencePriceRangePercent record component.
      Returns:
      the value of the referencePriceRangePercent record component
    • estimatePriceRangePercent

      public double estimatePriceRangePercent()
      Returns the value of the estimatePriceRangePercent record component.
      Returns:
      the value of the estimatePriceRangePercent record component