Documentation ¶
Index ¶
- Variables
- type ImageStreamController
- type Notifier
- type ScheduledImageStreamController
- type ScheduledImageStreamControllerOptions
- type Scheduler
- func (s *Scheduler) Add(key, value interface{})
- func (s *Scheduler) Delay(key interface{})
- func (s *Scheduler) Len() int
- func (s *Scheduler) Map() map[interface{}]interface{}
- func (s *Scheduler) Remove(key, value interface{}) bool
- func (s *Scheduler) RunOnce()
- func (s *Scheduler) RunUntil(ch <-chan struct{})
Constants ¶
This section is empty.
Variables ¶
var ErrNotImportable = errors.New("requested image cannot be imported")
Functions ¶
This section is empty.
Types ¶
type ImageStreamController ¶
type ImageStreamController struct {
// contains filtered or unexported fields
}
func NewImageStreamController ¶
func NewImageStreamController(namespacer client.ImageStreamsNamespacer, informer imageinternalversion.ImageStreamInformer) *ImageStreamController
NewImageStreamController returns a new image stream import controller.
func (*ImageStreamController) Run ¶
func (c *ImageStreamController) Run(workers int, stopCh <-chan struct{})
Run begins watching and syncing.
func (*ImageStreamController) SetNotifier ¶
func (c *ImageStreamController) SetNotifier(n Notifier)
type Notifier ¶ added in v1.1.2
type Notifier interface { // Importing is invoked when the controller is going to import an image stream Importing(stream *imageapi.ImageStream) }
Notifier provides information about when the controller makes a decision
type ScheduledImageStreamController ¶
type ScheduledImageStreamController struct {
// contains filtered or unexported fields
}
func NewScheduledImageStreamController ¶
func NewScheduledImageStreamController(namespacer client.ImageStreamsNamespacer, informer imageinternalversion.ImageStreamInformer, opts ScheduledImageStreamControllerOptions) *ScheduledImageStreamController
NewScheduledImageStreamController returns a new scheduled image stream import controller.
func (*ScheduledImageStreamController) Importing ¶
func (s *ScheduledImageStreamController) Importing(stream *imageapi.ImageStream)
Importing is invoked when the controller decides to import a stream in order to push back the next schedule time.
func (*ScheduledImageStreamController) Run ¶
func (s *ScheduledImageStreamController) Run(stopCh <-chan struct{})
Run begins watching and syncing.
type ScheduledImageStreamControllerOptions ¶
type ScheduledImageStreamControllerOptions struct { Resync time.Duration // Enabled indicates that the scheduled imports for images are allowed. Enabled bool // DefaultBucketSize is the default bucket size used by QPS. DefaultBucketSize int // MaxImageImportsPerMinute sets the maximum number of simultaneous image imports per // minute. MaxImageImportsPerMinute int }
ImageStreamControllerOptions represents a configuration for the scheduled image stream import controller.
func (ScheduledImageStreamControllerOptions) Buckets ¶
func (opts ScheduledImageStreamControllerOptions) Buckets() int
Buckets returns the bucket size calculated based on the resync interval of the scheduled image import controller. For resync interval bigger than our the bucket size is doubled, for resync lower then 10 minutes bucket size is set to a half of the default size.
func (ScheduledImageStreamControllerOptions) BucketsToQPS ¶
func (opts ScheduledImageStreamControllerOptions) BucketsToQPS() float32
BucketsToQPS converts the bucket size to QPS
func (ScheduledImageStreamControllerOptions) GetRateLimiter ¶
func (opts ScheduledImageStreamControllerOptions) GetRateLimiter() flowcontrol.RateLimiter
GetRateLimiter returns a flowcontrol rate limiter based on the maximum number of imports (MaxImageImportsPerMinute) setting.
type Scheduler ¶
type Scheduler struct {
// contains filtered or unexported fields
}
Scheduler is a self-balancing, rate-limited, bucketed queue that can periodically invoke an action on all items in a bucket before moving to the next bucket. A ratelimiter sets an upper bound on the number of buckets processed per unit time. The queue has a key and a value, so both uniqueness and equality can be tested (key must be unique, value can carry info for the next processing). Items remain in the queue until removed by a call to Remove().
func NewScheduler ¶
func NewScheduler(bucketCount int, bucketLimiter flowcontrol.RateLimiter, fn func(key, value interface{})) *Scheduler
NewScheduler creates a scheduler with bucketCount buckets, a rate limiter for restricting the rate at which buckets are processed, and a function to invoke when items are scanned in a bucket. TODO: remove DEBUG statements from this file once this logic has been adequately validated.
func (*Scheduler) Add ¶
func (s *Scheduler) Add(key, value interface{})
Add places the key in the bucket with the least entries (except the current bucket). The key is used to determine uniqueness, while value can be used to associate additional data for later retrieval. An Add removes the previous key and value and will place the item in a new bucket. This allows callers to ensure that Add'ing a new item to the queue purges old versions of the item, while Remove can be conditional on removing only the known old version.
func (*Scheduler) Delay ¶
func (s *Scheduler) Delay(key interface{})
Delay moves the key to the end of the chain if it exists.
func (*Scheduler) Map ¶
func (s *Scheduler) Map() map[interface{}]interface{}
Map returns a copy of the scheduler contents, but does not copy the keys or values themselves. If values and keys are not immutable, changing the value will affect the value in the queue.
func (*Scheduler) Remove ¶
Remove takes the key out of all buckets. If value is non-nil, the key will only be removed if it has the same value. Returns true if the key was removed.