iface

package
v2.12.1-rc.1 Latest Latest
Warning

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

Go to latest
Published: Aug 18, 2023 License: Apache-2.0 Imports: 8 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func ComponentKey

func ComponentKey(component Component) string

ComponentKey returns a unique Key for a component.

Types

type ClassificationEngine

type ClassificationEngine interface {
	RegisterClassifier(classifier Classifier) error
	UnregisterClassifier(classifier Classifier) error
	GetClassifier(classifierID ClassifierID) Classifier
}

ClassificationEngine is the interface for registering classifiers.

type Classifier

type Classifier interface {
	// GetSelectors returns the selectors.
	GetSelectors() []*policylangv1.Selector

	// GetClassifierID returns ClassifierID object that should uniquely identify classifier.
	GetClassifierID() ClassifierID

	// GetRequestCounter returns the counter for the classifier.
	GetRequestCounter() prometheus.Counter
}

Classifier interface.

type ClassifierID

type ClassifierID struct {
	PolicyName      string
	PolicyHash      string
	ClassifierIndex int64
}

ClassifierID is the ID of the Classifier.

func (ClassifierID) String

func (cID ClassifierID) String() string

String function returns the ClassifierID as a string.

type Component

type Component interface {
	Policy
	GetComponentId() string
}

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

type Engine

type Engine interface {
	ProcessRequest(
		ctx context.Context,
		requestContext RequestContext,
	) *flowcontrolv1.CheckResponse

	GetAgentInfo() *agentinfo.AgentInfo

	RegisterScheduler(ls Scheduler) error
	UnregisterScheduler(ls Scheduler) error
	GetScheduler(limiterID LimiterID) Scheduler

	RegisterFluxMeter(fm FluxMeter) error
	UnregisterFluxMeter(fm FluxMeter) error
	GetFluxMeter(fluxMeterName string) FluxMeter

	RegisterRateLimiter(l RateLimiter) error
	UnregisterRateLimiter(l RateLimiter) error
	GetRateLimiter(limiterID LimiterID) RateLimiter

	RegisterSampler(l Limiter) error
	UnregisterSampler(l Limiter) error
	GetSampler(limiterID LimiterID) Limiter

	RegisterLabelPreview(l LabelPreview) error
	UnregisterLabelPreview(l LabelPreview) error
}

Engine is an interface for registering fluxmeters and schedulers.

type FluxMeter

type FluxMeter interface {
	// GetSelectors returns the selectors
	GetSelectors() []*policylangv1.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 given labels.
	// It expects the following labels to be set:
	//  * metrics.DecisionTypeLabel,
	//  * metrics.ResponseStatusLabel,
	//  * metrics.StatusCodeLabel,
	//  * metrics.FeatureStatusLabel.
	GetHistogram(labels map[string]string) prometheus.Observer

	// GetInvalidFluxMeterTotal returns a counter metric for the total number of invalid flux meters with the specified labels.
	GetInvalidFluxMeterTotal(labels map[string]string) (prometheus.Counter, error)
}

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 HTTPRequestPreview

type HTTPRequestPreview interface {
	PreviewBase
	// AddHTTPRequestPreview adds labels to preview.
	AddHTTPRequestPreview(request map[string]interface{})
}

HTTPRequestPreview interface.

type LabelPreview

type LabelPreview interface {
	PreviewBase
	// AddLabelPreview adds labels to preview.
	AddLabelPreview(labels map[string]string)
}

LabelPreview interface.

type Limiter

type Limiter interface {
	GetPolicyName() string
	GetSelectors() []*policylangv1.Selector
	Decide(context.Context, labels.Labels) LimiterDecision
	Revert(context.Context, labels.Labels, *flowcontrolv1.LimiterDecision)
	GetLimiterID() LimiterID
	GetRequestCounter(labels map[string]string) prometheus.Counter
}

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

type LimiterDecision added in v2.5.0

type LimiterDecision struct {
	*flowcontrolv1.LimiterDecision
	// If non-zero, it's a recommended minimal time before retrying failed
	// request.
	WaitTime time.Duration
}

LimiterDecision wraps flowcontrolv1.LimiterDecision with some additional metadata that won't end up in the CheckResponse.

type LimiterID

type LimiterID struct {
	PolicyName  string
	PolicyHash  string
	ComponentID string
}

LimiterID is the ID of the Limiter.

func (LimiterID) String

func (limiterID LimiterID) String() string

String function returns the LimiterID as a string.

type Policy

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

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

type PreviewBase

type PreviewBase interface {
	// GetPreviewID returns the ID of the preview.
	GetPreviewID() PreviewID
	// GetSelectors returns the selectors.
	GetSelectors() []*policylangv1.Selector
}

PreviewBase is the base interface for all preview requests.

type PreviewID

type PreviewID struct {
	RequestID string
}

PreviewID is the ID of a preview.

func (PreviewID) String

func (id PreviewID) String() string

String returns the string representation of the ID.

type RateLimiter

type RateLimiter interface {
	Limiter
	TakeIfAvailable(ctx context.Context, labels labels.Labels, count float64) (label string, ok bool, waitTime time.Duration, remaining float64, current float64)
}

RateLimiter interface.

type RequestContext

type RequestContext struct {
	FlowLabels   labels.Labels
	ControlPoint string
	Services     []string
}

RequestContext provides the request parameters for the Check method.

type Scheduler added in v2.2.0

type Scheduler interface {
	Limiter
	GetLatencyObserver(labels map[string]string) prometheus.Observer
}

Scheduler interface.

Jump to

Keyboard shortcuts

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