X Tutup
Skip to content

Commit e143c68

Browse files
committed
Merge pull request docker-archive-public#2732 from dgageot/better-logs
Improve Start/Stop/Kill/Restart lifecycle/logs
2 parents d771d65 + 855de07 commit e143c68

File tree

15 files changed

+213
-347
lines changed

15 files changed

+213
-347
lines changed

drivers/amazonec2/amazonec2.go

Lines changed: 14 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -612,11 +612,7 @@ func (d *Driver) Start() error {
612612
return err
613613
}
614614

615-
if err := d.waitForInstance(); err != nil {
616-
return err
617-
}
618-
619-
return nil
615+
return d.waitForInstance()
620616
}
621617

622618
func (d *Driver) Stop() error {
@@ -627,20 +623,6 @@ func (d *Driver) Stop() error {
627623
return err
628624
}
629625

630-
func (d *Driver) Remove() error {
631-
632-
if err := d.terminate(); err != nil {
633-
return fmt.Errorf("unable to terminate instance: %s", err)
634-
}
635-
636-
// remove keypair
637-
if err := d.deleteKeyPair(); err != nil {
638-
return fmt.Errorf("unable to remove key pair: %s", err)
639-
}
640-
641-
return nil
642-
}
643-
644626
func (d *Driver) Restart() error {
645627
_, err := d.getClient().RebootInstances(&ec2.RebootInstancesInput{
646628
InstanceIds: []*string{&d.InstanceId},
@@ -656,6 +638,19 @@ func (d *Driver) Kill() error {
656638
return err
657639
}
658640

641+
func (d *Driver) Remove() error {
642+
if err := d.terminate(); err != nil {
643+
return fmt.Errorf("unable to terminate instance: %s", err)
644+
}
645+
646+
// remove keypair
647+
if err := d.deleteKeyPair(); err != nil {
648+
return fmt.Errorf("unable to remove key pair: %s", err)
649+
}
650+
651+
return nil
652+
}
653+
659654
func (d *Driver) getClient() *ec2.EC2 {
660655
config := aws.NewConfig()
661656
config = config.WithRegion(d.Region)

drivers/azure/azure.go

Lines changed: 9 additions & 52 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,6 @@ import (
1313
"github.com/docker/machine/libmachine/drivers"
1414
"github.com/docker/machine/libmachine/log"
1515
"github.com/docker/machine/libmachine/mcnflag"
16-
"github.com/docker/machine/libmachine/mcnutils"
1716
"github.com/docker/machine/libmachine/ssh"
1817
"github.com/docker/machine/libmachine/state"
1918
)
@@ -286,8 +285,6 @@ func (d *Driver) Start() error {
286285
return nil
287286
}
288287

289-
log.Debugf("starting %s", d.MachineName)
290-
291288
if err := vmClient.StartRole(d.MachineName, d.MachineName, d.MachineName); err != nil {
292289
return err
293290
}
@@ -302,15 +299,6 @@ func (d *Driver) Stop() error {
302299
return err
303300
}
304301

305-
if vmState, err := d.GetState(); err != nil {
306-
return err
307-
} else if vmState == state.Stopped {
308-
log.Infof("Host is already stopped")
309-
return nil
310-
}
311-
312-
log.Debugf("stopping %s", d.MachineName)
313-
314302
if err := vmClient.ShutdownRole(d.MachineName, d.MachineName, d.MachineName); err != nil {
315303
return err
316304
}
@@ -319,67 +307,36 @@ func (d *Driver) Stop() error {
319307
return nil
320308
}
321309

322-
func (d *Driver) Remove() error {
323-
if err := d.setUserSubscription(); err != nil {
324-
return err
325-
}
326-
if available, _, err := vmClient.CheckHostedServiceNameAvailability(d.MachineName); err != nil {
327-
return err
328-
} else if available {
329-
return nil
330-
}
331-
332-
log.Debugf("removing %s", d.MachineName)
333-
334-
return vmClient.DeleteHostedService(d.MachineName)
335-
}
336-
337310
func (d *Driver) Restart() error {
338-
err := d.setUserSubscription()
339-
if err != nil {
340-
return err
341-
}
342-
if vmState, err := d.GetState(); err != nil {
311+
if err := d.setUserSubscription(); err != nil {
343312
return err
344-
} else if vmState == state.Stopped {
345-
return errors.New("Host is already stopped, use start command to run it")
346313
}
347314

348-
log.Debugf("restarting %s", d.MachineName)
349-
350315
if err := vmClient.RestartRole(d.MachineName, d.MachineName, d.MachineName); err != nil {
351316
return err
352317
}
353318

319+
var err error
354320
d.IPAddress, err = d.GetIP()
355321
return err
356322
}
357323

358324
func (d *Driver) Kill() error {
325+
return d.Stop()
326+
}
327+
328+
func (d *Driver) Remove() error {
359329
if err := d.setUserSubscription(); err != nil {
360330
return err
361331
}
362332

363-
if vmState, err := d.GetState(); err != nil {
333+
if available, _, err := vmClient.CheckHostedServiceNameAvailability(d.MachineName); err != nil {
364334
return err
365-
} else if vmState == state.Stopped {
366-
log.Infof("Host is already stopped")
335+
} else if available {
367336
return nil
368337
}
369338

370-
log.Debugf("killing %s", d.MachineName)
371-
372-
if err := vmClient.ShutdownRole(d.MachineName, d.MachineName, d.MachineName); err != nil {
373-
return err
374-
}
375-
376-
d.IPAddress = ""
377-
return nil
378-
}
379-
380-
func generateVMName() string {
381-
randomID := mcnutils.TruncateID(mcnutils.GenerateRandomID())
382-
return fmt.Sprintf("docker-host-%s", randomID)
339+
return vmClient.DeleteHostedService(d.MachineName)
383340
}
384341

385342
func (d *Driver) setUserSubscription() error {

drivers/digitalocean/digitalocean.go

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -288,6 +288,16 @@ func (d *Driver) Stop() error {
288288
return err
289289
}
290290

291+
func (d *Driver) Restart() error {
292+
_, _, err := d.getClient().DropletActions.Reboot(d.DropletID)
293+
return err
294+
}
295+
296+
func (d *Driver) Kill() error {
297+
_, _, err := d.getClient().DropletActions.PowerOff(d.DropletID)
298+
return err
299+
}
300+
291301
func (d *Driver) Remove() error {
292302
client := d.getClient()
293303
if resp, err := client.Keys.DeleteByID(d.SSHKeyID); err != nil {
@@ -307,16 +317,6 @@ func (d *Driver) Remove() error {
307317
return nil
308318
}
309319

310-
func (d *Driver) Restart() error {
311-
_, _, err := d.getClient().DropletActions.Reboot(d.DropletID)
312-
return err
313-
}
314-
315-
func (d *Driver) Kill() error {
316-
_, _, err := d.getClient().DropletActions.PowerOff(d.DropletID)
317-
return err
318-
}
319-
320320
func (d *Driver) getClient() *godo.Client {
321321
token := &oauth2.Token{AccessToken: d.AccessToken}
322322
tokenSource := oauth2.StaticTokenSource(token)

drivers/exoscale/exoscale.go

Lines changed: 18 additions & 48 deletions
Original file line numberDiff line numberDiff line change
@@ -320,45 +320,40 @@ func (d *Driver) Create() error {
320320
}
321321

322322
func (d *Driver) Start() error {
323-
vmstate, err := d.GetState()
324-
if err != nil {
325-
return err
326-
}
327-
if vmstate == state.Running || vmstate == state.Starting {
328-
log.Infof("Host is already running or starting")
329-
return nil
330-
}
331-
332323
client := egoscale.NewClient(d.URL, d.APIKey, d.APISecretKey)
324+
333325
svmresp, err := client.StartVirtualMachine(d.ID)
334326
if err != nil {
335327
return err
336328
}
337-
if err = d.waitForJob(client, svmresp); err != nil {
338-
return err
339-
}
340-
return nil
329+
330+
return d.waitForJob(client, svmresp)
341331
}
342332

343333
func (d *Driver) Stop() error {
344-
vmstate, err := d.GetState()
334+
client := egoscale.NewClient(d.URL, d.APIKey, d.APISecretKey)
335+
336+
svmresp, err := client.StopVirtualMachine(d.ID)
345337
if err != nil {
346338
return err
347339
}
348-
if vmstate == state.Stopped {
349-
log.Infof("Host is already stopped")
350-
return nil
351-
}
352340

341+
return d.waitForJob(client, svmresp)
342+
}
343+
344+
func (d *Driver) Restart() error {
353345
client := egoscale.NewClient(d.URL, d.APIKey, d.APISecretKey)
354-
svmresp, err := client.StopVirtualMachine(d.ID)
346+
347+
svmresp, err := client.RebootVirtualMachine(d.ID)
355348
if err != nil {
356349
return err
357350
}
358-
if err = d.waitForJob(client, svmresp); err != nil {
359-
return err
360-
}
361-
return nil
351+
352+
return d.waitForJob(client, svmresp)
353+
}
354+
355+
func (d *Driver) Kill() error {
356+
return d.Stop()
362357
}
363358

364359
func (d *Driver) Remove() error {
@@ -380,31 +375,6 @@ func (d *Driver) Remove() error {
380375
return nil
381376
}
382377

383-
func (d *Driver) Restart() error {
384-
vmstate, err := d.GetState()
385-
if err != nil {
386-
return err
387-
}
388-
if vmstate == state.Stopped {
389-
return fmt.Errorf("Host is stopped, use start command to start it")
390-
}
391-
392-
client := egoscale.NewClient(d.URL, d.APIKey, d.APISecretKey)
393-
svmresp, err := client.RebootVirtualMachine(d.ID)
394-
if err != nil {
395-
return err
396-
}
397-
if err = d.waitForJob(client, svmresp); err != nil {
398-
return err
399-
}
400-
401-
return nil
402-
}
403-
404-
func (d *Driver) Kill() error {
405-
return d.Stop()
406-
}
407-
408378
func (d *Driver) jobIsDone(client *egoscale.Client, jobid string) (bool, error) {
409379
resp, err := client.PollAsyncJob(jobid)
410380
if err != nil {

drivers/fakedriver/fakedriver.go

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -80,10 +80,6 @@ func (d *Driver) Create() error {
8080
return nil
8181
}
8282

83-
func (d *Driver) Remove() error {
84-
return nil
85-
}
86-
8783
func (d *Driver) Start() error {
8884
d.MockState = state.Running
8985
return nil
@@ -104,6 +100,10 @@ func (d *Driver) Kill() error {
104100
return nil
105101
}
106102

103+
func (d *Driver) Remove() error {
104+
return nil
105+
}
106+
107107
func (d *Driver) Upgrade() error {
108108
return nil
109109
}

drivers/generic/generic.go

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -159,16 +159,15 @@ func (d *Driver) Stop() error {
159159
return errors.New("generic driver does not support stop")
160160
}
161161

162-
func (d *Driver) Remove() error {
163-
return nil
164-
}
165-
166162
func (d *Driver) Restart() error {
167-
log.Debug("Restarting...")
168163
_, err := drivers.RunSSHCommandFromDriver(d, "sudo shutdown -r now")
169164
return err
170165
}
171166

172167
func (d *Driver) Kill() error {
173168
return errors.New("generic driver does not support kill")
174169
}
170+
171+
func (d *Driver) Remove() error {
172+
return nil
173+
}

drivers/google/compute_util.go

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -340,7 +340,6 @@ func (c *ComputeUtil) deleteInstance() error {
340340

341341
// stopInstance stops the instance.
342342
func (c *ComputeUtil) stopInstance() error {
343-
log.Infof("Stopping instance.")
344343
op, err := c.service.Instances.Stop(c.project, c.zone, c.instanceName).Do()
345344
if err != nil {
346345
return err
@@ -352,7 +351,6 @@ func (c *ComputeUtil) stopInstance() error {
352351

353352
// startInstance starts the instance.
354353
func (c *ComputeUtil) startInstance() error {
355-
log.Infof("Starting instance.")
356354
op, err := c.service.Instances.Start(c.project, c.zone, c.instanceName).Do()
357355
if err != nil {
358356
return err

drivers/google/google.go

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -316,6 +316,15 @@ func (d *Driver) Stop() error {
316316
return nil
317317
}
318318

319+
// Restart restarts a machine which is known to be running.
320+
func (d *Driver) Restart() error {
321+
if err := d.Stop(); err != nil {
322+
return err
323+
}
324+
325+
return d.Start()
326+
}
327+
319328
// Kill stops an existing GCE instance.
320329
func (d *Driver) Kill() error {
321330
return d.Stop()
@@ -339,12 +348,3 @@ func (d *Driver) Remove() error {
339348
}
340349
return c.deleteDisk()
341350
}
342-
343-
// Restart restarts a machine which is known to be running.
344-
func (d *Driver) Restart() error {
345-
if err := d.Stop(); err != nil {
346-
return err
347-
}
348-
349-
return d.Start()
350-
}

0 commit comments

Comments
 (0)
X Tutup