Skip to content

Commit

Permalink
Add multiple error handling during resource removal (#37)
Browse files Browse the repository at this point in the history
* Add multiple error handling during resource removal

* Update version to 0.2.3b3
  • Loading branch information
outcatcher authored Apr 13, 2020
1 parent 17b7422 commit aee991e
Show file tree
Hide file tree
Showing 5 changed files with 29 additions and 8 deletions.
2 changes: 1 addition & 1 deletion Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ export PATH:=/usr/local/go/bin:$(PATH)
exec_path := /usr/local/bin/
exec_name := docker-machine-driver-otc

VERSION := 0.2.3b2
VERSION := 0.2.3b3


default: test build
Expand Down
16 changes: 9 additions & 7 deletions driver/opentelekomcloud.go
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,7 @@ import (
"github.com/docker/machine/libmachine/ssh"
"github.com/docker/machine/libmachine/state"
"github.com/gophercloud/utils/openstack/clientconfig"
"github.com/hashicorp/go-multierror"
"github.com/huaweicloud/golangsdk"
"github.com/huaweicloud/golangsdk/openstack/compute/v2/servers"

Expand Down Expand Up @@ -808,32 +809,33 @@ func (d *Driver) deleteSecGroups() error {
}

func (d *Driver) Remove() error {
var errs error
if err := d.Authenticate(); err != nil {
return err
}
if err := d.deleteInstance(); err != nil {
return err
errs = multierror.Append(errs, err)
}
if d.KeyPairName.DriverManaged {
if err := d.client.DeleteKeyPair(d.KeyPairName.Value); err != nil {
return err
errs = multierror.Append(errs, err)
}
}
if d.FloatingIP.DriverManaged && d.FloatingIP.Value != "" {
if err := d.client.DeleteFloatingIP(d.FloatingIP.Value); err != nil {
return err
errs = multierror.Append(errs, err)
}
}
if err := d.deleteSubnet(); err != nil {
return err
errs = multierror.Append(errs, err)
}
if err := d.deleteSecGroups(); err != nil {
return err
errs = multierror.Append(errs, err)
}
if err := d.deleteVPC(); err != nil {
return err
errs = multierror.Append(errs, err)
}
return nil
return errs
}

func (d *Driver) Restart() error {
Expand Down
14 changes: 14 additions & 0 deletions driver/opentelekomcloud_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ import (
"github.com/docker/machine/libmachine/drivers"
"github.com/docker/machine/libmachine/log"
"github.com/docker/machine/libmachine/ssh"
"github.com/hashicorp/go-multierror"
"github.com/huaweicloud/golangsdk"
"github.com/huaweicloud/golangsdk/openstack/compute/v2/extensions/servergroups"
"github.com/stretchr/testify/assert"
Expand Down Expand Up @@ -408,3 +409,16 @@ func TestDriver_ResolveServerGroup(t *testing.T) {
assert.Equal(t, group.ID, driver.ServerGroupID)

}

func TestDriver_FaultyRemove(t *testing.T) {
driver, derr := defaultDriver()
require.NoError(t, derr)
require.NoError(t, driver.initCompute())
require.NoError(t, driver.initNetwork())
require.NoError(t, driver.resolveIDs())
driver.SubnetID.DriverManaged = true
driver.VpcID.DriverManaged = true
driver.KeyPairName.DriverManaged = true
err := multierror.Append(driver.Remove())
assert.Equal(t, 4, err.Len())
}
1 change: 1 addition & 0 deletions go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ require (
github.com/docker/machine v0.16.2
github.com/gophercloud/gophercloud v0.7.0 // indirect
github.com/gophercloud/utils v0.0.0-20200104035643-cb37ab634bff
github.com/hashicorp/go-multierror v1.1.0
github.com/huaweicloud/golangsdk v0.0.0-20200122065641-034e66c4f159
github.com/kr/pretty v0.2.0 // indirect
github.com/stretchr/testify v1.4.0
Expand Down
4 changes: 4 additions & 0 deletions go.sum
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,10 @@ github.com/gophercloud/gophercloud v0.7.0 h1:vhmQQEM2SbnGCg2/3EzQnQZ3V7+UCGy9s8e
github.com/gophercloud/gophercloud v0.7.0/go.mod h1:gmC5oQqMDOMO1t1gq5DquX/yAU808e/4mzjjDA76+Ss=
github.com/gophercloud/utils v0.0.0-20200104035643-cb37ab634bff h1:MfGIDiSP+vQqD1aQAEyjKg3pLU+xqKD/mlk4DCzeGAA=
github.com/gophercloud/utils v0.0.0-20200104035643-cb37ab634bff/go.mod h1:ehWUbLQJPqS0Ep+CxeD559hsm9pthPXadJNKwZkp43w=
github.com/hashicorp/errwrap v1.0.0 h1:hLrqtEDnRye3+sgx6z4qVLNuviH3MR5aQ0ykNJa/UYA=
github.com/hashicorp/errwrap v1.0.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4=
github.com/hashicorp/go-multierror v1.1.0 h1:B9UzwGQJehnUY1yNrnwREHc3fGbC2xefo8g4TbElacI=
github.com/hashicorp/go-multierror v1.1.0/go.mod h1:spPvp8C1qA32ftKqdAHm4hHTbPw+vmowP0z+KUhOZdA=
github.com/hashicorp/go-uuid v1.0.1/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro=
github.com/huaweicloud/golangsdk v0.0.0-20200122065641-034e66c4f159 h1:6WuXxXZ68xHV2LQyNEVyJmwpIOkFJ85obDWJSx5xisA=
github.com/huaweicloud/golangsdk v0.0.0-20200122065641-034e66c4f159/go.mod h1:WQBcHRNX9shz3928lWEvstQJtAtYI7ks6XlgtRT9Tcw=
Expand Down

0 comments on commit aee991e

Please sign in to comment.