iface

package
v0.1.2 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Sep 8, 2022 License: AGPL-3.0 Imports: 8 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func ComponentID

func ComponentID(component Component) string

ComponentID returns the metric ID for a component.

func ComponentIDExpanded

func ComponentIDExpanded(policyName string, componentIndex int64, policyHash string) string

ComponentIDExpanded returns the metric ID for a component.

Types

type Classifier added in v0.1.2

type Classifier interface {
	// GetSelector returns the selector.
	GetSelector() *selectorv1.Selector
	// GetClassifierID returns ClassifierID object that should uniquely identify classifier.
	GetClassifierID() ClassifierID
}

Classifier interface.

type ClassifierID added in v0.1.2

type ClassifierID struct {
	PolicyName      string
	PolicyHash      string
	ClassifierIndex int64
}

ClassifierID is the ID of the Classifier.

func (ClassifierID) String added in v0.1.2

func (cID ClassifierID) String() string

String function returns the ClassifierID as a string.

type Component

type Component interface {
	Policy
	GetComponentIndex() int64
}

Component is the interface that wraps the GetPolicyName, GetPolicyHash, and GetComponentIndex methods.

type Engine

type Engine interface {
	ProcessRequest(controlPoint selectors.ControlPoint, serviceIDs []services.ServiceID, labels selectors.Labels) *flowcontrolv1.CheckResponse

	RegisterConcurrencyLimiter(sa Limiter) error
	UnregisterConcurrencyLimiter(sa Limiter) error

	RegisterFluxMeter(fm FluxMeter) error
	UnregisterFluxMeter(fm FluxMeter) error
	GetFluxMeterHist(fluxMeterName, statusCode string, featureStatus string, decisionType flowcontrolv1.DecisionType) prometheus.Observer

	RegisterRateLimiter(l RateLimiter) error
	UnregisterRateLimiter(l RateLimiter) error

	RegisterClassifier(c Classifier) error
	UnregisterClassifier(c Classifier) error
}

Engine is an interface for registering fluxmeters and schedulers.

type FluxMeter

type FluxMeter interface {
	// GetSelector returns the selector
	GetSelector() *selectorv1.Selector

	// GetFluxMeterName returns the metric name
	GetFluxMeterName() string

	// GetFluxMeterID returns the flux meter ID
	GetFluxMeterID() FluxMeterID

	// GetBuckets returns the buckets
	GetBuckets() []float64

	// GetHistogram returns the histogram observer for the flowcontrolv1.DecisionType
	GetHistogram(flowcontrolv1.DecisionType, string, string) prometheus.Observer
}

FluxMeter in an interface for interacting with fluxmeters.

type FluxMeterID

type FluxMeterID struct {
	FluxMeterName string
}

FluxMeterID is the ID of the FluxMeter.

func (FluxMeterID) String

func (fmID FluxMeterID) String() string

String function returns the FluxMeterID as a string.

type Limiter

type Limiter interface {
	GetPolicyName() string
	GetSelector() *selectorv1.Selector
	RunLimiter(labels selectors.Labels) *flowcontrolv1.LimiterDecision
	GetLimiterID() LimiterID
}

Limiter interface. Lifetime of this interface is per policy/component.

type LimiterID

type LimiterID struct {
	PolicyName     string
	PolicyHash     string
	ComponentIndex int64
}

LimiterID is the ID of the Limiter.

func (LimiterID) String

func (limiterID LimiterID) String() string

String function returns the LimiterID as a string.

type MultiMatchResult

type MultiMatchResult struct {
	ConcurrencyLimiters []Limiter
	FluxMeters          []FluxMeter
	RateLimiters        []RateLimiter
	Classifiers         []Classifier
}

MultiMatchResult is used as return value of PolicyConfigAPI.GetMatches.

func (*MultiMatchResult) PopulateFromMultiMatcher

func (result *MultiMatchResult) PopulateFromMultiMatcher(mm *multimatcher.MultiMatcher[string, MultiMatchResult], labels selectors.Labels)

PopulateFromMultiMatcher populates result object with results from MultiMatcher.

type Policy

type Policy interface {
	GetPolicyName() string
	GetPolicyHash() string
}

Policy is the interface that wraps the GetPolicyName, GetPolicyHash methods.

type RateLimiter

type RateLimiter interface {
	Limiter
	TakeN(labels selectors.Labels, count int) (label string, ok bool, remaining int, current int)
}

RateLimiter interface.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL