diff --git a/builtin/providers/digitalocean/resource_digitalocean_droplet.go b/builtin/providers/digitalocean/resource_digitalocean_droplet.go index a40fbee4b..83e98eef0 100644 --- a/builtin/providers/digitalocean/resource_digitalocean_droplet.go +++ b/builtin/providers/digitalocean/resource_digitalocean_droplet.go @@ -325,6 +325,14 @@ func new_droplet_state_refresh_func(id string, attribute string, client *digital return nil, "", err } + // If the droplet is locked, continue waiting. We can + // only perform actions on unlocked droplets, so it's + // pointless to look at that status + if droplet.IsLocked() == "true" { + log.Println("[DEBUG] Droplet is locked, skipping status check and retrying") + return nil, "", nil + } + // Use our mapping to get back a map of the // droplet properties resourceMap, err := resource_digitalocean_droplet_update_state( diff --git a/builtin/providers/digitalocean/resource_digitalocean_droplet_test.go b/builtin/providers/digitalocean/resource_digitalocean_droplet_test.go index ea729f2c7..b1750820a 100644 --- a/builtin/providers/digitalocean/resource_digitalocean_droplet_test.go +++ b/builtin/providers/digitalocean/resource_digitalocean_droplet_test.go @@ -59,7 +59,7 @@ func TestAccDigitalOceanDroplet_Update(t *testing.T) { testAccCheckDigitalOceanDropletExists("digitalocean_droplet.foobar", &droplet), testAccCheckDigitalOceanDropletRenamedAndResized(&droplet), resource.TestCheckResourceAttr( - "digitalocean_droplet.foobar", "name", "foo"), + "digitalocean_droplet.foobar", "name", "baz"), resource.TestCheckResourceAttr( "digitalocean_droplet.foobar", "size", "1gb"), ),