Files
flagger/pkg/controller/job.go

40 lines
822 B
Go

package controller
import "time"
// CanaryJob holds the reference to a canary deployment schedule
type CanaryJob struct {
Name string
Namespace string
function func(name string, namespace string)
done chan bool
ticker *time.Ticker
analysisInterval time.Duration
}
// Start runs the canary analysis on a schedule
func (j CanaryJob) Start() {
go func() {
// run the infra bootstrap on job creation
j.function(j.Name, j.Namespace)
for {
select {
case <-j.ticker.C:
j.function(j.Name, j.Namespace)
case <-j.done:
return
}
}
}()
}
// Stop closes the job channel and stops the ticker
func (j CanaryJob) Stop() {
close(j.done)
j.ticker.Stop()
}
func (j CanaryJob) GetCanaryAnalysisInterval() time.Duration {
return j.analysisInterval
}