Documentation
¶
Index ¶
- func CacheTypeStrings() []string
- func ComponentKey(component Component) string
- type Cache
- type CacheType
- 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 CacheTypeStrings ¶ added in v2.25.0
func CacheTypeStrings() []string
CacheTypeStrings returns a slice of all String values of the enum
func ComponentKey ¶
func ComponentKey(component Component) string
ComponentKey returns a unique Key for a component.
Types ¶
type Cache ¶ added in v2.24.0
type Cache interface {
// Lookup looks up specified keys in cache. It takes flowcontrolv1.LookupRequest and returns flowcontrolv1.LookupResponse.
Lookup(ctx context.Context, request *flowcontrolv1.CacheLookupRequest) *flowcontrolv1.CacheLookupResponse
// LookupWait starts lookup for specified keys in cache. It does not wait for response. It takes flowcontrolv1.LookupRequest and returns flowcontrolv1.LookupResponse and result and global wait groups.
LookupWait(ctx context.Context, request *flowcontrolv1.CacheLookupRequest) (*flowcontrolv1.CacheLookupResponse, *sync.WaitGroup, *sync.WaitGroup)
// Upsert inserts or updates specified cache entries. It takes flowcontrolv1.UpsertRequest and returns flowcontrolv1.UpsertResponse.
Upsert(ctx context.Context, req *flowcontrolv1.CacheUpsertRequest) *flowcontrolv1.CacheUpsertResponse
// Delete deletes specified keys from cache. It takes flowcontrolv1.DeleteRequest and returns flowcontrolv1.DeleteResponse.
Delete(ctx context.Context, req *flowcontrolv1.CacheDeleteRequest) *flowcontrolv1.CacheDeleteResponse
}
Cache is an interface for the cache.
type CacheType ¶ added in v2.25.0
type CacheType int
CacheType is the type of cache.
const (
// Result is the type of cache for saving results.
Result CacheType = iota
// CacheTypeState is the type of cache for saving state.
Global
)
func CacheTypeString ¶ added in v2.25.0
func CacheTypeString(s string) (CacheType, error)
CacheTypeString retrieves an enum value from the enum constants string name. Throws an error if the param is not part of the enum.
func CacheTypeValues ¶ added in v2.25.0
func CacheTypeValues() []CacheType
CacheTypeValues returns all values of the enum
func (CacheType) IsACacheType ¶ added in v2.25.0
func (i CacheType) IsACacheType() bool
IsACacheType returns "true" if the value is listed in the enum definition. "false" otherwise
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.
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
RegisterCache(c Cache)
}
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.
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 LimiterID ¶
type LimiterID struct {
PolicyName string
PolicyHash string
ComponentID string
}
LimiterID is the ID of the Limiter.
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 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
CacheLookupRequest *flowcontrolv1.CacheLookupRequest
Services []string
RampMode bool
}
RequestContext provides the request parameters for the Check method.