iface

package
v1.3.0 Latest Latest
Warning

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

Go to latest
Published: Apr 10, 2023 License: Apache-2.0 Imports: 5 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func ComponentKey added in v0.21.0

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 {
	// GetFlowSelector returns the selector.
	GetFlowSelector() *policylangv1.FlowSelector

	// 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 ConcurrencyLimiter

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

ConcurrencyLimiter interface.

type Engine

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

	RegisterConcurrencyLimiter(sa ConcurrencyLimiter) error
	UnregisterConcurrencyLimiter(sa ConcurrencyLimiter) error
	GetConcurrencyLimiter(limiterID LimiterID) ConcurrencyLimiter

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

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

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

Engine is an interface for registering fluxmeters and schedulers.

type FluxMeter

type FluxMeter interface {
	// GetSelector returns the selector
	GetFlowSelector() *policylangv1.FlowSelector

	// 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
}

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 added in v0.19.0

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

HTTPRequestPreview interface.

type LabelPreview added in v0.17.0

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

LabelPreview interface.

type Limiter

type Limiter interface {
	GetPolicyName() string
	GetFlowSelector() *policylangv1.FlowSelector
	RunLimiter(ctx context.Context, labels map[string]string, tokens uint64) *flowcontrolv1.LimiterDecision
	GetLimiterID() LimiterID
}

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

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 added in v0.19.0

type PreviewBase interface {
	// GetPreviewID returns the ID of the preview.
	GetPreviewID() PreviewID
	// GetFlowSelector returns the flow selector.
	GetFlowSelector() *policylangv1.FlowSelector
}

PreviewBase is the base interface for all preview requests.

type PreviewID added in v0.19.0

type PreviewID struct {
	RequestID string
}

PreviewID is the ID of a preview.

func (PreviewID) String added in v0.19.0

func (id PreviewID) String() string

String returns the string representation of the ID.

type RateLimiter

type RateLimiter interface {
	Limiter
	TakeN(labels map[string]string, count int) (label string, ok bool, remaining int, current int)
	GetRequestCounter(labels map[string]string) prometheus.Counter
}

RateLimiter interface.

type RequestContext added in v1.2.0

type RequestContext struct {
	FlowLabels   map[string]string
	ControlPoint string
	Services     []string
	Tokens       uint64
}

RequestContext provides the request parameters for the Check method.

Jump to

Keyboard shortcuts

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