Documentation ¶
Index ¶
- func ComponentKey(component Component) string
- type ClassificationEngine
- type Classifier
- type ClassifierID
- type Component
- type Engine
- type FluxMeter
- type FluxMeterID
- type HTTPRequestPreview
- type LabelPreview
- type Limiter
- type LimiterID
- type Policy
- type PreviewBase
- type PreviewID
- type RateLimiter
- type RequestContext
- type Scheduler
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func ComponentKey ¶
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 ¶
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 ¶
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) *flowcontrolv1.LimiterDecision Revert(context.Context, labels.Labels, *flowcontrolv1.LimiterDecision) GetLimiterID() LimiterID GetRequestCounter(labels map[string]string) prometheus.Counter GetRampMode() bool }
Limiter interface. Lifetime of this interface is per policy/component.
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 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.