iface

package
v0.1.3 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
	GetFluxMeter(fluxMeterName string) FluxMeter

	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

	// GetAttributeKey returns the attribute key
	GetAttributeKey() string

	// GetFluxMeterName returns the metric name
	GetFluxMeterName() string

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

	// GetHistogram returns the histogram observer for the flowcontrolv1.DecisionType
	GetHistogram(decisionType flowcontrolv1.DecisionType, statusCode string, featureStatus 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