Skip to content

Commit 4e898b1

Browse files
Merge pull request docker-archive-public#3362 from nathanleclaire/fix_dangling_amazonec2_ssh_key
Ensure that attempt to remove instance and SSH key both go through
2 parents 73bf92b + 770d5bb commit 4e898b1

File tree

2 files changed

+23
-4
lines changed

2 files changed

+23
-4
lines changed

drivers/amazonec2/amazonec2.go

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -748,16 +748,23 @@ func (d *Driver) Kill() error {
748748
}
749749

750750
func (d *Driver) Remove() error {
751+
multierr := mcnutils.MultiError{
752+
Errs: []error{},
753+
}
754+
751755
if err := d.terminate(); err != nil {
752-
return fmt.Errorf("unable to terminate instance: %s", err)
756+
multierr.Errs = append(multierr.Errs, err)
753757
}
754758

755-
// remove keypair
756759
if err := d.deleteKeyPair(); err != nil {
757-
return fmt.Errorf("unable to remove key pair: %s", err)
760+
multierr.Errs = append(multierr.Errs, err)
758761
}
759762

760-
return nil
763+
if len(multierr.Errs) == 0 {
764+
return nil
765+
}
766+
767+
return multierr
761768
}
762769

763770
func (d *Driver) getInstance() (*ec2.Instance, error) {

libmachine/mcnutils/utils.go

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,18 @@ import (
1111
"time"
1212
)
1313

14+
type MultiError struct {
15+
Errs []error
16+
}
17+
18+
func (e MultiError) Error() string {
19+
aggregate := ""
20+
for _, err := range e.Errs {
21+
aggregate += err.Error() + "\n"
22+
}
23+
return aggregate
24+
}
25+
1426
// GetHomeDir returns the home directory
1527
// TODO: Having this here just strikes me as dangerous, but some of the drivers
1628
// depend on it ;_;

0 commit comments

Comments
 (0)