Implement upgrade for Ubuntu provisioner

Signed-off-by: Nathan LeClaire <nathan.leclaire@gmail.com>
This commit is contained in:
Nathan LeClaire 2015-03-27 16:05:12 -07:00
parent f010a7bb80
commit a04b908fd3
3 changed files with 24 additions and 2 deletions

View File

@ -14,6 +14,7 @@ import (
"github.com/docker/machine/libmachine/auth"
"github.com/docker/machine/libmachine/engine"
"github.com/docker/machine/libmachine/provision"
"github.com/docker/machine/libmachine/provision/pkgaction"
"github.com/docker/machine/libmachine/swarm"
"github.com/docker/machine/ssh"
"github.com/docker/machine/state"
@ -221,8 +222,19 @@ func (h *Host) Restart() error {
}
func (h *Host) Upgrade() error {
// TODO: refactor to provisioner
return fmt.Errorf("centralized upgrade coming in the provisioner")
provisioner, err := provision.DetectProvisioner(h.Driver)
if err != nil {
return err
}
if err := provisioner.Package("docker", pkgaction.Upgrade); err != nil {
return err
}
if err := provisioner.Service("docker", pkgaction.Restart); err != nil {
return err
}
return nil
}
func (h *Host) Remove(force bool) error {

View File

@ -27,11 +27,13 @@ type PackageAction int
const (
Install PackageAction = iota
Remove
Upgrade
)
var packageActions = []string{
"install",
"remove",
"upgrade",
}
func (s PackageAction) String() string {

View File

@ -56,6 +56,14 @@ func (provisioner *UbuntuProvisioner) Package(name string, action pkgaction.Pack
packageAction = "install"
case pkgaction.Remove:
packageAction = "remove"
case pkgaction.Upgrade:
packageAction = "upgrade"
}
// TODO: This should probably have a const
switch name {
case "docker":
name = "lxc-docker"
}
command := fmt.Sprintf("DEBIAN_FRONTEND=noninteractive sudo -E apt-get %s -y %s", packageAction, name)