1
0
mirror of https://github.com/rancher/os.git synced 2025-08-01 23:17:50 +00:00

Add upgrade flag to upgrade persistent console

This commit is contained in:
Josh Curl 2016-04-18 13:29:24 -07:00
parent 8b4e6cc502
commit ee73337f49
3 changed files with 40 additions and 6 deletions

View File

@ -58,6 +58,10 @@ func osSubcommands() []cli.Command {
Name: "append",
Usage: "kernel args to append by kexec",
},
cli.BoolFlag{
Name: "upgrade-console",
Usage: "upgrade console even if persistent",
},
},
},
{
@ -157,7 +161,7 @@ func osUpgrade(c *cli.Context) {
if c.Args().Present() {
log.Fatalf("invalid arguments %v", c.Args())
}
if err := startUpgradeContainer(image, c.Bool("stage"), c.Bool("force"), !c.Bool("no-reboot"), c.Bool("kexec"), c.String("append")); err != nil {
if err := startUpgradeContainer(image, c.Bool("stage"), c.Bool("force"), !c.Bool("no-reboot"), c.Bool("kexec"), c.Bool("upgrade-console"), c.String("append")); err != nil {
log.Fatal(err)
}
}
@ -176,7 +180,7 @@ func yes(in *bufio.Reader, question string) bool {
return strings.ToLower(line[0:1]) == "y"
}
func startUpgradeContainer(image string, stage, force, reboot, kexec bool, kernelArgs string) error {
func startUpgradeContainer(image string, stage, force, reboot, kexec bool, upgradeConsole bool, kernelArgs string) error {
in := bufio.NewReader(os.Stdin)
command := []string{
@ -193,6 +197,18 @@ func startUpgradeContainer(image string, stage, force, reboot, kexec bool, kerne
}
}
if upgradeConsole {
cfg, err := config.LoadConfig()
if err != nil {
log.Fatal(err)
}
cfg.Rancher.ForceConsoleRebuild = true
if err := cfg.Save(); err != nil {
log.Fatal(err)
}
}
container, err := compose.CreateService(nil, "os-upgrade", &project.ServiceConfig{
LogDriver: "json-file",
Privileged: true,

View File

@ -86,6 +86,7 @@ type RancherConfig struct {
Debug bool `yaml:"debug,omitempty"`
RmUsr bool `yaml:"rm_usr,omitempty"`
Log bool `yaml:"log,omitempty"`
ForceConsoleRebuild bool `yaml:"force_console_rebuild,omitempty"`
Disable []string `yaml:"disable,omitempty"`
ServicesInclude map[string]bool `yaml:"services_include,omitempty"`
Modules []string `yaml:"modules,omitempty"`

View File

@ -76,6 +76,10 @@ func (s *Service) shouldRebuild() (bool, error) {
if err != nil {
return false, err
}
cfg, err := config.LoadConfig()
if err != nil {
return false, err
}
for _, c := range containers {
outOfSync, err := c.(*docker.Container).OutOfSync(s.Service.Config().Image)
if err != nil {
@ -97,11 +101,24 @@ func (s *Service) shouldRebuild() (bool, error) {
"rebuildLabelChanged": rebuildLabelChanged,
"outOfSync": outOfSync}).Debug("Rebuild values")
if origRebuildLabel == "always" || rebuildLabelChanged || origRebuildLabel != "false" && outOfSync {
rebuilding := false
if outOfSync {
if cfg.Rancher.ForceConsoleRebuild && s.Name() == "console" {
cfg.Rancher.ForceConsoleRebuild = false
if err := cfg.Save(); err != nil {
return false, err
}
rebuilding = true
} else if origRebuildLabel == "always" || rebuildLabelChanged || origRebuildLabel != "false" {
rebuilding = true
} else {
logrus.Warnf("%s needs rebuilding", name)
}
}
if rebuilding {
logrus.Infof("Rebuilding %s", name)
return true, err
} else if outOfSync {
logrus.Warnf("%s needs rebuilding", name)
return true, nil
}
}
return false, nil