mirror of
https://github.com/rancher/os.git
synced 2025-08-02 07:24:28 +00:00
Merge pull request #1576 from SvenDowideit/backwards-compatibility-for-old-consoles
WIP: fix for os upgrade to 0.8.0 when running a persistent cosole
This commit is contained in:
commit
6444fdc414
@ -30,7 +30,18 @@ type symlink struct {
|
||||
oldname, newname string
|
||||
}
|
||||
|
||||
func ConsoleInitMain() {
|
||||
err := consoleInitFunc()
|
||||
if err != nil {
|
||||
log.Fatal(err)
|
||||
}
|
||||
}
|
||||
|
||||
func consoleInitAction(c *cli.Context) error {
|
||||
return consoleInitFunc()
|
||||
}
|
||||
|
||||
func consoleInitFunc() error {
|
||||
cfg := config.LoadConfig()
|
||||
|
||||
// Now that we're booted, stop writing debug messages to the console
|
||||
|
2
main.go
2
main.go
@ -22,6 +22,8 @@ import (
|
||||
var entrypoints = map[string]func(){
|
||||
"cloud-init-execute": cloudinitexecute.Main,
|
||||
"cloud-init-save": cloudinitsave.Main,
|
||||
"console": control.ConsoleInitMain,
|
||||
"console.sh": control.ConsoleInitMain,
|
||||
"docker": docker.Main,
|
||||
"dockerlaunch": dfs.Main,
|
||||
"halt": power.Halt,
|
||||
|
@ -10,22 +10,33 @@ import (
|
||||
)
|
||||
|
||||
func (s *QemuSuite) TestUpgrade050(c *C) {
|
||||
s.commonTestCode(c, "v0.5.0", "debian")
|
||||
s.commonTestCode(c, "v0.5.0", "default")
|
||||
}
|
||||
func (s *QemuSuite) TestUpgrade061(c *C) {
|
||||
s.commonTestCode(c, "v0.6.1", "debian")
|
||||
}
|
||||
func (s *QemuSuite) TestUpgrade070(c *C) {
|
||||
s.commonTestCode(c, "v0.7.0", "default")
|
||||
s.commonTestCode(c, "v0.7.0", "debian")
|
||||
}
|
||||
func (s *QemuSuite) TestUpgrade071(c *C) {
|
||||
s.commonTestCode(c, "v0.7.1", "default")
|
||||
}
|
||||
func (s *QemuSuite) TestUpgrade071Persistent(c *C) {
|
||||
s.commonTestCode(c, "v0.7.1", "ubuntu")
|
||||
}
|
||||
func (s *QemuSuite) TestUpgrade080rc1(c *C) {
|
||||
s.commonTestCode(c, "v0.8.0-rc1", "alpine")
|
||||
s.commonTestCode(c, "v0.8.0-rc1", "debian")
|
||||
}
|
||||
func (s *QemuSuite) TestUpgrade080rc7(c *C) {
|
||||
s.commonTestCode(c, "v0.8.0-rc7", "centos")
|
||||
// alpine console is unlikely to work before 0.8.0-rc5
|
||||
s.commonTestCode(c, "v0.8.0-rc7", "alpine")
|
||||
}
|
||||
|
||||
func (s *QemuSuite) commonTestCode(c *C, startWithVersion, console string) {
|
||||
// DisabledTestUpgradeInner is used to debug the above tests if they fail - the current imple of the check code limits itself to depths _one_ stacktrace
|
||||
func (s *QemuSuite) DisableTestUpgradeInner(c *C) {
|
||||
startWithVersion := "v0.5.0"
|
||||
// CENTOS fails due to "sudo: sorry, you must have a tty to run sudo" :) so we won't test with it atm
|
||||
console := "debian"
|
||||
runArgs := []string{
|
||||
"--iso",
|
||||
"--fresh",
|
||||
@ -70,14 +81,86 @@ sync
|
||||
// TODO: ouch. probably need to tag the dev / master version as latest cos this won't work
|
||||
// Need to pull the image here - if we do it at boot, then the test will fail.
|
||||
s.PullAndLoadInstallerImage(c, fmt.Sprintf("rancher/os-%sconsole:%s", console, "v0.8.0-rc3"))
|
||||
s.CheckCall(c, fmt.Sprintf("sudo ros console enable %s", console))
|
||||
s.MakeCall(fmt.Sprintf("sudo ros console switch -f %s", console))
|
||||
c.Assert(s.WaitForSSH(), IsNil)
|
||||
}
|
||||
|
||||
consoleVer := s.CheckOutput(c, "", Not(Equals), "sudo system-docker ps --filter name=^/console$ --format {{.Image}}")
|
||||
|
||||
s.LoadInstallerImage(c)
|
||||
s.CheckCall(c, fmt.Sprintf("sudo ros os upgrade --no-reboot -i rancher/os:%s%s --force", Version, Suffix))
|
||||
|
||||
s.Reboot(c)
|
||||
s.CheckOutput(c, "ros version "+Version+"\n", Equals, "sudo ros -v")
|
||||
s.CheckOutput(c, consoleVer, Equals, "sudo system-docker ps --filter name=^/console$ --format {{.Image}}")
|
||||
|
||||
s.Stop(c)
|
||||
}
|
||||
func (s *QemuSuite) commonTestCode(c *C, startWithVersion, console string) {
|
||||
runArgs := []string{
|
||||
"--iso",
|
||||
"--fresh",
|
||||
"--cloud-config",
|
||||
"./tests/assets/test_12/cloud-config.yml",
|
||||
}
|
||||
version := ""
|
||||
{
|
||||
s.RunQemuWith(c, runArgs...)
|
||||
version = s.CheckOutput(c, version, Not(Equals), "sudo ros -v")
|
||||
version = strings.TrimSpace(strings.TrimPrefix(version, "ros version"))
|
||||
c.Assert(Version, Equals, version)
|
||||
|
||||
fmt.Printf("installing %s", startWithVersion)
|
||||
s.PullAndLoadInstallerImage(c, fmt.Sprintf("rancher/os:%s", startWithVersion))
|
||||
|
||||
//ADD a custom append line and make sure its kept in the upgraded version too
|
||||
|
||||
s.CheckCall(c, fmt.Sprintf(`
|
||||
echo "---------------------------------- generic"
|
||||
set -ex
|
||||
echo "ssh_authorized_keys:" > config.yml
|
||||
echo " - $(cat /home/rancher/.ssh/authorized_keys)" >> config.yml
|
||||
sudo ros install --force --no-reboot --device /dev/vda -c config.yml --append rancher.password=rancher -i rancher/os:%s
|
||||
sync
|
||||
`, startWithVersion))
|
||||
time.Sleep(500 * time.Millisecond)
|
||||
s.Stop(c)
|
||||
}
|
||||
|
||||
// ./scripts/run --no-format --append "rancher.debug=true"
|
||||
runArgs = []string{
|
||||
"--boothd",
|
||||
}
|
||||
s.RunQemuWith(c, runArgs...)
|
||||
|
||||
s.CheckOutput(c, "ros version "+startWithVersion+"\n", Equals, "sudo ros -v")
|
||||
|
||||
if console != "default" {
|
||||
// Can't preload the startWithVersion console image, as some don't exist by that name - not sure how to approach that
|
||||
//s.PullAndLoadInstallerImage(c, fmt.Sprintf("rancher/os-%sconsole:%s", console, startWithVersion))
|
||||
// TODO: ouch. probably need to tag the dev / master version as latest cos this won't work
|
||||
// Need to pull the image here - if we do it at boot, then the test will fail.
|
||||
if console == "alpine" {
|
||||
s.PullAndLoadInstallerImage(c, fmt.Sprintf("rancher/os-%sconsole:%s", console, "v0.8.0-rc5"))
|
||||
} else {
|
||||
s.PullAndLoadInstallerImage(c, fmt.Sprintf("rancher/os-%sconsole:%s", console, "v0.8.0-rc3"))
|
||||
}
|
||||
s.MakeCall(fmt.Sprintf("sudo ros console switch -f %s", console))
|
||||
c.Assert(s.WaitForSSH(), IsNil)
|
||||
}
|
||||
|
||||
consoleVer := s.CheckOutput(c, "", Not(Equals), "sudo system-docker ps --filter name=^/console$ --format {{.Image}}")
|
||||
|
||||
s.LoadInstallerImage(c)
|
||||
s.CheckCall(c, fmt.Sprintf("sudo ros os upgrade --no-reboot -i rancher/os:%s%s --force", Version, Suffix))
|
||||
|
||||
s.Reboot(c)
|
||||
s.CheckOutput(c, "ros version "+Version+"\n", Equals, "sudo ros -v")
|
||||
if console != "default" {
|
||||
s.CheckOutput(c, consoleVer, Equals, "sudo system-docker ps --filter name=^/console$ --format {{.Image}}")
|
||||
} else {
|
||||
s.CheckOutput(c, consoleVer, Not(Equals), "sudo system-docker ps --filter name=^/console$ --format {{.Image}}")
|
||||
}
|
||||
|
||||
s.Stop(c)
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user