mirror of https://github.com/docker/docs.git
Logs for Restart
Signed-off-by: David Gageot <david@gageot.net>
This commit is contained in:
parent
783d2b124e
commit
e9aa75f021
|
|
@ -625,6 +625,13 @@ func (d *Driver) Stop() error {
|
|||
return err
|
||||
}
|
||||
|
||||
func (d *Driver) Restart() error {
|
||||
_, err := d.getClient().RebootInstances(&ec2.RebootInstancesInput{
|
||||
InstanceIds: []*string{&d.InstanceId},
|
||||
})
|
||||
return err
|
||||
}
|
||||
|
||||
func (d *Driver) Remove() error {
|
||||
if err := d.terminate(); err != nil {
|
||||
return fmt.Errorf("unable to terminate instance: %s", err)
|
||||
|
|
@ -638,13 +645,6 @@ func (d *Driver) Remove() error {
|
|||
return nil
|
||||
}
|
||||
|
||||
func (d *Driver) Restart() error {
|
||||
_, err := d.getClient().RebootInstances(&ec2.RebootInstancesInput{
|
||||
InstanceIds: []*string{&d.InstanceId},
|
||||
})
|
||||
return err
|
||||
}
|
||||
|
||||
func (d *Driver) Kill() error {
|
||||
_, err := d.getClient().StopInstances(&ec2.StopInstancesInput{
|
||||
InstanceIds: []*string{&d.InstanceId},
|
||||
|
|
|
|||
|
|
@ -13,7 +13,6 @@ import (
|
|||
"github.com/docker/machine/libmachine/drivers"
|
||||
"github.com/docker/machine/libmachine/log"
|
||||
"github.com/docker/machine/libmachine/mcnflag"
|
||||
"github.com/docker/machine/libmachine/mcnutils"
|
||||
"github.com/docker/machine/libmachine/ssh"
|
||||
"github.com/docker/machine/libmachine/state"
|
||||
)
|
||||
|
|
@ -310,42 +309,35 @@ func (d *Driver) Stop() error {
|
|||
return nil
|
||||
}
|
||||
|
||||
func (d *Driver) Restart() error {
|
||||
err := d.setUserSubscription()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
if err := vmClient.RestartRole(d.MachineName, d.MachineName, d.MachineName); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
var err error
|
||||
d.IPAddress, err = d.GetIP()
|
||||
return err
|
||||
}
|
||||
|
||||
func (d *Driver) Remove() error {
|
||||
if err := d.setUserSubscription(); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
if available, _, err := vmClient.CheckHostedServiceNameAvailability(d.MachineName); err != nil {
|
||||
return err
|
||||
} else if available {
|
||||
return nil
|
||||
}
|
||||
|
||||
log.Debugf("removing %s", d.MachineName)
|
||||
|
||||
return vmClient.DeleteHostedService(d.MachineName)
|
||||
}
|
||||
|
||||
func (d *Driver) Restart() error {
|
||||
err := d.setUserSubscription()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
if vmState, err := d.GetState(); err != nil {
|
||||
return err
|
||||
} else if vmState == state.Stopped {
|
||||
return errors.New("Host is already stopped, use start command to run it")
|
||||
}
|
||||
|
||||
log.Debugf("restarting %s", d.MachineName)
|
||||
|
||||
if err := vmClient.RestartRole(d.MachineName, d.MachineName, d.MachineName); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
d.IPAddress, err = d.GetIP()
|
||||
return err
|
||||
}
|
||||
|
||||
func (d *Driver) Kill() error {
|
||||
if err := d.setUserSubscription(); err != nil {
|
||||
return err
|
||||
|
|
@ -368,11 +360,6 @@ func (d *Driver) Kill() error {
|
|||
return nil
|
||||
}
|
||||
|
||||
func generateVMName() string {
|
||||
randomID := mcnutils.TruncateID(mcnutils.GenerateRandomID())
|
||||
return fmt.Sprintf("docker-host-%s", randomID)
|
||||
}
|
||||
|
||||
func (d *Driver) setUserSubscription() error {
|
||||
if d.PublishSettingsFilePath != "" {
|
||||
return azure.ImportPublishSettingsFile(d.PublishSettingsFilePath)
|
||||
|
|
|
|||
|
|
@ -290,6 +290,11 @@ func (d *Driver) Stop() error {
|
|||
return err
|
||||
}
|
||||
|
||||
func (d *Driver) Restart() error {
|
||||
_, _, err := d.getClient().DropletActions.Reboot(d.DropletID)
|
||||
return err
|
||||
}
|
||||
|
||||
func (d *Driver) Remove() error {
|
||||
client := d.getClient()
|
||||
if resp, err := client.Keys.DeleteByID(d.SSHKeyID); err != nil {
|
||||
|
|
@ -309,11 +314,6 @@ func (d *Driver) Remove() error {
|
|||
return nil
|
||||
}
|
||||
|
||||
func (d *Driver) Restart() error {
|
||||
_, _, err := d.getClient().DropletActions.Reboot(d.DropletID)
|
||||
return err
|
||||
}
|
||||
|
||||
func (d *Driver) Kill() error {
|
||||
_, _, err := d.getClient().DropletActions.PowerOff(d.DropletID)
|
||||
return err
|
||||
|
|
|
|||
|
|
@ -343,6 +343,17 @@ func (d *Driver) Stop() error {
|
|||
return d.waitForJob(client, svmresp)
|
||||
}
|
||||
|
||||
func (d *Driver) Restart() error {
|
||||
client := egoscale.NewClient(d.URL, d.APIKey, d.APISecretKey)
|
||||
|
||||
svmresp, err := client.RebootVirtualMachine(d.ID)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
return d.waitForJob(client, svmresp)
|
||||
}
|
||||
|
||||
func (d *Driver) Remove() error {
|
||||
client := egoscale.NewClient(d.URL, d.APIKey, d.APISecretKey)
|
||||
|
||||
|
|
@ -362,27 +373,6 @@ func (d *Driver) Remove() error {
|
|||
return nil
|
||||
}
|
||||
|
||||
func (d *Driver) Restart() error {
|
||||
vmstate, err := d.GetState()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
if vmstate == state.Stopped {
|
||||
return fmt.Errorf("Host is stopped, use start command to start it")
|
||||
}
|
||||
|
||||
client := egoscale.NewClient(d.URL, d.APIKey, d.APISecretKey)
|
||||
svmresp, err := client.RebootVirtualMachine(d.ID)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
if err = d.waitForJob(client, svmresp); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
func (d *Driver) Kill() error {
|
||||
return d.Stop()
|
||||
}
|
||||
|
|
|
|||
|
|
@ -159,16 +159,15 @@ func (d *Driver) Stop() error {
|
|||
return errors.New("generic driver does not support stop")
|
||||
}
|
||||
|
||||
func (d *Driver) Remove() error {
|
||||
return nil
|
||||
}
|
||||
|
||||
func (d *Driver) Restart() error {
|
||||
log.Debug("Restarting...")
|
||||
_, err := drivers.RunSSHCommandFromDriver(d, "sudo shutdown -r now")
|
||||
return err
|
||||
}
|
||||
|
||||
func (d *Driver) Remove() error {
|
||||
return nil
|
||||
}
|
||||
|
||||
func (d *Driver) Kill() error {
|
||||
return errors.New("generic driver does not support kill")
|
||||
}
|
||||
|
|
|
|||
|
|
@ -318,6 +318,15 @@ func (d *Driver) Stop() error {
|
|||
return nil
|
||||
}
|
||||
|
||||
// Restart restarts a machine which is known to be running.
|
||||
func (d *Driver) Restart() error {
|
||||
if err := d.Stop(); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
return d.Start()
|
||||
}
|
||||
|
||||
// Kill stops an existing GCE instance.
|
||||
func (d *Driver) Kill() error {
|
||||
return d.Stop()
|
||||
|
|
@ -341,12 +350,3 @@ func (d *Driver) Remove() error {
|
|||
}
|
||||
return c.deleteDisk()
|
||||
}
|
||||
|
||||
// Restart restarts a machine which is known to be running.
|
||||
func (d *Driver) Restart() error {
|
||||
if err := d.Stop(); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
return d.Start()
|
||||
}
|
||||
|
|
|
|||
|
|
@ -400,6 +400,14 @@ func (d *Driver) Stop() error {
|
|||
return d.client.StopInstance(d)
|
||||
}
|
||||
|
||||
func (d *Driver) Restart() error {
|
||||
if err := d.initCompute(); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
return d.client.RestartInstance(d)
|
||||
}
|
||||
|
||||
func (d *Driver) Remove() error {
|
||||
log.Debug("deleting instance...", map[string]string{"MachineId": d.MachineId})
|
||||
log.Info("Deleting OpenStack instance...")
|
||||
|
|
@ -417,17 +425,6 @@ func (d *Driver) Remove() error {
|
|||
return nil
|
||||
}
|
||||
|
||||
func (d *Driver) Restart() error {
|
||||
log.Info("Restarting OpenStack instance...", map[string]string{"MachineId": d.MachineId})
|
||||
if err := d.initCompute(); err != nil {
|
||||
return err
|
||||
}
|
||||
if err := d.client.RestartInstance(d); err != nil {
|
||||
return err
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func (d *Driver) Kill() error {
|
||||
return d.Stop()
|
||||
}
|
||||
|
|
|
|||
|
|
@ -482,10 +482,6 @@ func (d *Driver) Remove() error {
|
|||
return nil
|
||||
}
|
||||
|
||||
func (d *Driver) Restart() error {
|
||||
return d.getClient().VirtualGuest().Reboot(d.Id)
|
||||
}
|
||||
|
||||
func (d *Driver) Start() error {
|
||||
return d.getClient().VirtualGuest().PowerOn(d.Id)
|
||||
}
|
||||
|
|
@ -493,3 +489,7 @@ func (d *Driver) Start() error {
|
|||
func (d *Driver) Stop() error {
|
||||
return d.getClient().VirtualGuest().PowerOff(d.Id)
|
||||
}
|
||||
|
||||
func (d *Driver) Restart() error {
|
||||
return d.getClient().VirtualGuest().Reboot(d.Id)
|
||||
}
|
||||
|
|
|
|||
|
|
@ -503,23 +503,6 @@ func (d *Driver) Start() error {
|
|||
return d.waitForIP()
|
||||
}
|
||||
|
||||
func (d *Driver) waitForIP() error {
|
||||
// Wait for SSH over NAT to be available before returning to user
|
||||
if err := drivers.WaitForSSH(d); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
// Bail if we don't get an IP from DHCP after a given number of seconds.
|
||||
if err := mcnutils.WaitForSpecific(d.hostOnlyIPAvailable, 5, 4*time.Second); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
var err error
|
||||
d.IPAddress, err = d.GetIP()
|
||||
|
||||
return err
|
||||
}
|
||||
|
||||
func (d *Driver) Stop() error {
|
||||
currentState, err := d.GetState()
|
||||
if err != nil {
|
||||
|
|
@ -553,6 +536,34 @@ func (d *Driver) Stop() error {
|
|||
return nil
|
||||
}
|
||||
|
||||
// Restart restarts a machine which is known to be running.
|
||||
func (d *Driver) Restart() error {
|
||||
if err := d.vbm("controlvm", d.MachineName, "reset"); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
d.IPAddress = ""
|
||||
|
||||
return d.waitForIP()
|
||||
}
|
||||
|
||||
func (d *Driver) waitForIP() error {
|
||||
// Wait for SSH over NAT to be available before returning to user
|
||||
if err := drivers.WaitForSSH(d); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
// Bail if we don't get an IP from DHCP after a given number of seconds.
|
||||
if err := mcnutils.WaitForSpecific(d.hostOnlyIPAvailable, 5, 4*time.Second); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
var err error
|
||||
d.IPAddress, err = d.GetIP()
|
||||
|
||||
return err
|
||||
}
|
||||
|
||||
func (d *Driver) Remove() error {
|
||||
s, err := d.GetState()
|
||||
if err != nil {
|
||||
|
|
@ -576,18 +587,6 @@ func (d *Driver) Remove() error {
|
|||
return d.vbm("unregistervm", "--delete", d.MachineName)
|
||||
}
|
||||
|
||||
// Restart restarts a machine which is known to be running.
|
||||
func (d *Driver) Restart() error {
|
||||
log.Infof("Restarting VM...")
|
||||
if err := d.vbm("controlvm", d.MachineName, "reset"); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
d.IPAddress = ""
|
||||
|
||||
return d.waitForIP()
|
||||
}
|
||||
|
||||
func (d *Driver) Kill() error {
|
||||
return d.vbm("controlvm", d.MachineName, "poweroff")
|
||||
}
|
||||
|
|
|
|||
|
|
@ -411,6 +411,11 @@ func (d *Driver) Stop() error {
|
|||
return err
|
||||
}
|
||||
|
||||
func (d *Driver) Restart() error {
|
||||
_, _, err := vmrun("reset", d.vmxPath(), "nogui")
|
||||
return err
|
||||
}
|
||||
|
||||
func (d *Driver) Remove() error {
|
||||
s, _ := d.GetState()
|
||||
if s == state.Running {
|
||||
|
|
@ -423,12 +428,6 @@ func (d *Driver) Remove() error {
|
|||
return nil
|
||||
}
|
||||
|
||||
func (d *Driver) Restart() error {
|
||||
log.Infof("Gracefully restarting %s...", d.MachineName)
|
||||
vmrun("reset", d.vmxPath(), "nogui")
|
||||
return nil
|
||||
}
|
||||
|
||||
func (d *Driver) Kill() error {
|
||||
log.Infof("Forcibly halting %s...", d.MachineName)
|
||||
vmrun("stop", d.vmxPath(), "hard nogui")
|
||||
|
|
|
|||
|
|
@ -206,7 +206,6 @@ func (d *Driver) GetIP() (string, error) {
|
|||
}
|
||||
|
||||
func (d *Driver) GetState() (state.State, error) {
|
||||
|
||||
p, err := govcloudair.NewClient()
|
||||
if err != nil {
|
||||
return state.Error, err
|
||||
|
|
@ -240,11 +239,9 @@ func (d *Driver) GetState() (state.State, error) {
|
|||
return state.Stopped, nil
|
||||
}
|
||||
return state.None, nil
|
||||
|
||||
}
|
||||
|
||||
func (d *Driver) Create() error {
|
||||
|
||||
key, err := d.createSSHKey()
|
||||
if err != nil {
|
||||
return err
|
||||
|
|
@ -514,21 +511,12 @@ func (d *Driver) Stop() error {
|
|||
return err
|
||||
}
|
||||
|
||||
status, err := vapp.GetStatus()
|
||||
task, err := vapp.Shutdown()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
if status == "POWERED_ON" {
|
||||
log.Infof("Shutting down %s...", d.MachineName)
|
||||
task, err := vapp.Shutdown()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
if err = task.WaitTaskCompletion(); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
if err = task.WaitTaskCompletion(); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
if err = p.Disconnect(); err != nil {
|
||||
|
|
@ -558,33 +546,12 @@ func (d *Driver) Restart() error {
|
|||
return err
|
||||
}
|
||||
|
||||
status, err := vapp.GetStatus()
|
||||
task, err := vapp.Reset()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
if status == "POWERED_ON" {
|
||||
// If it's powered on, restart the machine
|
||||
log.Infof("Restarting %s...", d.MachineName)
|
||||
task, err := vapp.Reset()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
if err = task.WaitTaskCompletion(); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
} else {
|
||||
// If it's not powered on, start it.
|
||||
log.Infof("Docker host %s is powered off, powering it back on...", d.MachineName)
|
||||
task, err := vapp.PowerOn()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
if err = task.WaitTaskCompletion(); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
if err = task.WaitTaskCompletion(); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
if err = p.Disconnect(); err != nil {
|
||||
|
|
|
|||
|
|
@ -607,6 +607,38 @@ func (d *Driver) Stop() error {
|
|||
return nil
|
||||
}
|
||||
|
||||
func (d *Driver) Restart() error {
|
||||
if err := d.Stop(); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
// Check for 120 seconds for the machine to stop
|
||||
for i := 1; i <= 60; i++ {
|
||||
machineState, err := d.GetState()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
if machineState == state.Running {
|
||||
log.Debugf("Not there yet %d/%d", i, 60)
|
||||
time.Sleep(2 * time.Second)
|
||||
continue
|
||||
}
|
||||
if machineState == state.Stopped {
|
||||
break
|
||||
}
|
||||
}
|
||||
|
||||
machineState, err := d.GetState()
|
||||
// If the VM is still running after 120 seconds just kill it.
|
||||
if machineState == state.Running {
|
||||
if err = d.Kill(); err != nil {
|
||||
return fmt.Errorf("can't stop VM: %s", err)
|
||||
}
|
||||
}
|
||||
|
||||
return d.Start()
|
||||
}
|
||||
|
||||
func (d *Driver) Remove() error {
|
||||
machineState, err := d.GetState()
|
||||
if err != nil {
|
||||
|
|
@ -672,37 +704,6 @@ func (d *Driver) Remove() error {
|
|||
return nil
|
||||
}
|
||||
|
||||
func (d *Driver) Restart() error {
|
||||
if err := d.Stop(); err != nil {
|
||||
return err
|
||||
}
|
||||
// Check for 120 seconds for the machine to stop
|
||||
for i := 1; i <= 60; i++ {
|
||||
machineState, err := d.GetState()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
if machineState == state.Running {
|
||||
log.Debugf("Not there yet %d/%d", i, 60)
|
||||
time.Sleep(2 * time.Second)
|
||||
continue
|
||||
}
|
||||
if machineState == state.Stopped {
|
||||
break
|
||||
}
|
||||
}
|
||||
|
||||
machineState, err := d.GetState()
|
||||
// If the VM is still running after 120 seconds just kill it.
|
||||
if machineState == state.Running {
|
||||
if err = d.Kill(); err != nil {
|
||||
return fmt.Errorf("can't stop VM: %s", err)
|
||||
}
|
||||
}
|
||||
|
||||
return d.Start()
|
||||
}
|
||||
|
||||
func (d *Driver) Kill() error {
|
||||
ctx, cancel := context.WithCancel(context.Background())
|
||||
defer cancel()
|
||||
|
|
|
|||
|
|
@ -123,15 +123,18 @@ func (h *Host) Kill() error {
|
|||
}
|
||||
|
||||
func (h *Host) Restart() error {
|
||||
log.Infof("Restarting %q...", h.Name)
|
||||
if drivers.MachineInState(h.Driver, state.Stopped)() {
|
||||
return h.Start()
|
||||
}
|
||||
|
||||
if drivers.MachineInState(h.Driver, state.Running)() {
|
||||
if err := h.Driver.Restart(); err != nil {
|
||||
return err
|
||||
}
|
||||
return mcnutils.WaitFor(drivers.MachineInState(h.Driver, state.Running))
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue