2017-06-10 11:22:27 +00:00
|
|
|
package types
|
|
|
|
|
|
|
|
import (
|
2017-07-01 13:24:39 +00:00
|
|
|
"bytes"
|
2017-06-10 14:07:31 +00:00
|
|
|
"fmt"
|
2017-06-10 11:22:27 +00:00
|
|
|
"time"
|
|
|
|
)
|
|
|
|
|
|
|
|
const KeelDefaultPort = 9300
|
2017-07-01 12:57:38 +00:00
|
|
|
|
|
|
|
// KeelPolicyLabel - keel update policies (version checking)
|
|
|
|
const KeelPolicyLabel = "keel.sh/policy"
|
|
|
|
|
|
|
|
// KeelTriggerLabel - trigger label is used to specify custom trigger types
|
|
|
|
// for example keel.sh/trigger=poll would signal poll trigger to start watching for repository
|
|
|
|
// changes
|
|
|
|
const KeelTriggerLabel = "keel.sh/trigger"
|
|
|
|
|
|
|
|
// KeelPollSchedule - optional variable to setup custom schedule for polling, defaults to @every 10m
|
|
|
|
const KeelPollSchedule = "keel.sh/pollSchedule"
|
|
|
|
|
|
|
|
// KeelPollDefaultSchedule - defaul polling schedule
|
|
|
|
const KeelPollDefaultSchedule = "@every 1m"
|
2017-06-10 11:22:27 +00:00
|
|
|
|
|
|
|
type Repository struct {
|
2017-06-10 14:07:31 +00:00
|
|
|
Host string `json:"host,omitempty"`
|
2017-06-10 11:22:27 +00:00
|
|
|
Name string `json:"name,omitempty"`
|
|
|
|
Tag string `json:"tag,omitempty"`
|
|
|
|
}
|
|
|
|
|
|
|
|
type Event struct {
|
|
|
|
Repository Repository `json:"repository,omitempty"`
|
|
|
|
CreatedAt time.Time `json:"createdAt,omitempty"`
|
2017-06-14 22:04:30 +00:00
|
|
|
// optional field to identify trigger
|
|
|
|
TriggerName string `json:"triggerName,omitempty"`
|
2017-06-10 11:22:27 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
type Version struct {
|
|
|
|
Major int64
|
|
|
|
Minor int64
|
|
|
|
Patch int64
|
|
|
|
PreRelease string
|
|
|
|
Metadata string
|
2017-07-01 13:24:39 +00:00
|
|
|
|
|
|
|
Prefix string // v prefix
|
2017-06-10 11:22:27 +00:00
|
|
|
}
|
|
|
|
|
2017-06-10 14:07:31 +00:00
|
|
|
func (v Version) String() string {
|
2017-07-01 13:24:39 +00:00
|
|
|
var buf bytes.Buffer
|
|
|
|
if v.Prefix != "" {
|
|
|
|
fmt.Fprintf(&buf, v.Prefix)
|
|
|
|
}
|
|
|
|
|
|
|
|
fmt.Fprintf(&buf, "%d.%d.%d", v.Major, v.Minor, v.Patch)
|
|
|
|
if v.PreRelease != "" {
|
|
|
|
fmt.Fprintf(&buf, "-%s", v.PreRelease)
|
|
|
|
}
|
|
|
|
if v.Metadata != "" {
|
|
|
|
fmt.Fprintf(&buf, "+%s", v.Metadata)
|
|
|
|
}
|
|
|
|
|
|
|
|
return buf.String()
|
2017-06-10 14:07:31 +00:00
|
|
|
}
|
|
|
|
|
2017-07-01 12:57:38 +00:00
|
|
|
// TriggerType - trigger types
|
|
|
|
type TriggerType int
|
|
|
|
|
|
|
|
// Available trigger types
|
|
|
|
const (
|
|
|
|
TriggerTypeDefault TriggerType = iota // default policy is to wait for external triggers
|
|
|
|
TriggerTypePoll // poll policy sets up watchers for the affected repositories
|
|
|
|
)
|
|
|
|
|
|
|
|
func (t TriggerType) String() string {
|
|
|
|
switch t {
|
|
|
|
case TriggerTypeDefault:
|
|
|
|
return "default"
|
|
|
|
case TriggerTypePoll:
|
|
|
|
return "poll"
|
|
|
|
default:
|
|
|
|
return "unknown"
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
func ParseTrigger(trigger string) TriggerType {
|
|
|
|
switch trigger {
|
|
|
|
case "poll":
|
|
|
|
return TriggerTypePoll
|
|
|
|
}
|
|
|
|
return TriggerTypeDefault
|
|
|
|
}
|
|
|
|
|
2017-06-10 11:22:27 +00:00
|
|
|
// PolicyType - policy type
|
|
|
|
type PolicyType int
|
|
|
|
|
2017-06-10 14:07:31 +00:00
|
|
|
// ParsePolicy - parse policy type
|
|
|
|
func ParsePolicy(policy string) PolicyType {
|
|
|
|
switch policy {
|
|
|
|
case "all":
|
|
|
|
return PolicyTypeAll
|
|
|
|
case "major":
|
|
|
|
return PolicyTypeMajor
|
|
|
|
case "minor":
|
|
|
|
return PolicyTypeMinor
|
|
|
|
case "patch":
|
|
|
|
return PolicyTypePatch
|
2017-07-01 12:57:38 +00:00
|
|
|
case "force":
|
|
|
|
return PolicyTypeForce
|
2017-06-10 14:07:31 +00:00
|
|
|
default:
|
2017-07-01 12:57:38 +00:00
|
|
|
return PolicyTypeNone
|
2017-06-10 14:07:31 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2017-06-10 11:22:27 +00:00
|
|
|
func (t PolicyType) String() string {
|
|
|
|
switch t {
|
2017-07-01 12:57:38 +00:00
|
|
|
case PolicyTypeNone:
|
|
|
|
return "none"
|
2017-06-10 11:22:27 +00:00
|
|
|
case PolicyTypeAll:
|
|
|
|
return "all"
|
|
|
|
case PolicyTypeMajor:
|
|
|
|
return "major"
|
|
|
|
case PolicyTypeMinor:
|
|
|
|
return "minor"
|
|
|
|
case PolicyTypePatch:
|
|
|
|
return "patch"
|
2017-06-28 16:40:47 +00:00
|
|
|
case PolicyTypeForce:
|
|
|
|
return "force"
|
2017-06-10 11:22:27 +00:00
|
|
|
default:
|
|
|
|
return ""
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
// available policies
|
|
|
|
const (
|
2017-07-01 12:57:38 +00:00
|
|
|
PolicyTypeNone = iota
|
2017-06-10 11:22:27 +00:00
|
|
|
PolicyTypeAll
|
|
|
|
PolicyTypeMajor
|
|
|
|
PolicyTypeMinor
|
|
|
|
PolicyTypePatch
|
2017-06-28 16:40:47 +00:00
|
|
|
PolicyTypeForce // update always when a new image is available
|
2017-06-10 11:22:27 +00:00
|
|
|
)
|