From a8aaae9e7ea261de090f2b5e93db54cbe9e99aa1 Mon Sep 17 00:00:00 2001 From: David Archer Date: Thu, 11 Jan 2018 23:39:30 -0500 Subject: [PATCH] openstack: ignore 404 when removing machines Signed-off-by: David Archer --- drivers/openstack/openstack.go | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/drivers/openstack/openstack.go b/drivers/openstack/openstack.go index 0eadb5a7..8d1c9b55 100644 --- a/drivers/openstack/openstack.go +++ b/drivers/openstack/openstack.go @@ -4,6 +4,7 @@ import ( "fmt" "io/ioutil" "net" + "net/http" "strings" "time" @@ -13,6 +14,8 @@ import ( "github.com/docker/machine/libmachine/mcnutils" "github.com/docker/machine/libmachine/ssh" "github.com/docker/machine/libmachine/state" + + "github.com/rackspace/gophercloud" ) type Driver struct { @@ -447,7 +450,15 @@ func (d *Driver) Remove() error { return err } if err := d.client.DeleteInstance(d); err != nil { - return err + if gopherErr, ok := err.(*gophercloud.UnexpectedResponseCodeError); ok { + if gopherErr.Actual == http.StatusNotFound { + log.Warn("Remote instance does not exist, proceeding with removing local reference") + } else { + return err + } + } else { + return err + } } log.Debug("deleting key pair...", map[string]string{"Name": d.KeyPairName}) // TODO (fsoppelsa) maybe we want to check this, in case of shared keypairs, before removal