-
Notifications
You must be signed in to change notification settings - Fork 74
/
default_k0s_version.go
43 lines (33 loc) · 990 Bytes
/
default_k0s_version.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
package phase
import (
"fmt"
"github.com/k0sproject/version"
log "github.com/sirupsen/logrus"
)
type DefaultK0sVersion struct {
GenericPhase
}
func (p *DefaultK0sVersion) ShouldRun() bool {
return p.Config.Spec.K0s.Version == nil || p.Config.Spec.K0s.Version.IsZero()
}
func (p *DefaultK0sVersion) Title() string {
return "Set k0s version"
}
func (p *DefaultK0sVersion) Run() error {
isStable := p.Config.Spec.K0s.VersionChannel == "" || p.Config.Spec.K0s.VersionChannel == "stable"
var msg string
if isStable {
msg = "latest stable k0s version"
} else {
msg = "latest k0s version including pre-releases"
}
log.Info("Looking up ", msg)
latest, err := version.LatestByPrerelease(!isStable)
if err != nil {
return fmt.Errorf("failed to look up k0s version online - try setting spec.k0s.version manually: %w", err)
}
log.Infof("Using k0s version %s", latest)
p.Config.Spec.K0s.Version = latest
p.Config.Spec.K0s.Metadata.VersionDefaulted = true
return nil
}