From a02667389ed169a4fd432b618f84813e55206409 Mon Sep 17 00:00:00 2001 From: Brett Mack Date: Wed, 25 Nov 2015 12:05:59 +0000 Subject: [PATCH] Only undeploy a machine if it is switched on --- builtin/providers/vcd/resource_vcd_vapp.go | 25 ++++++++++++++-------- 1 file changed, 16 insertions(+), 9 deletions(-) diff --git a/builtin/providers/vcd/resource_vcd_vapp.go b/builtin/providers/vcd/resource_vcd_vapp.go index 73ae6f2b7..16bdf72e8 100644 --- a/builtin/providers/vcd/resource_vcd_vapp.go +++ b/builtin/providers/vcd/resource_vcd_vapp.go @@ -315,16 +315,23 @@ func resourceVcdVAppDelete(d *schema.ResourceData, meta interface{}) error { return fmt.Errorf("error finding vapp: %s", err) } - err = retryCall(vcdClient.MaxRetryTimeout, func() error { - task, err := vapp.Undeploy() - if err != nil { - return fmt.Errorf("Error undeploying: %#v", err) - } - - return task.WaitTaskCompletion() - }) + status, err := vapp.GetStatus() if err != nil { - return err + return fmt.Errorf("Error getting VApp status: %#v", err) + } + + if status == "POWERED_ON" { + err = retryCall(vcdClient.MaxRetryTimeout, func() error { + task, err := vapp.Undeploy() + if err != nil { + return fmt.Errorf("Error undeploying: %#v", err) + } + + return task.WaitTaskCompletion() + }) + if err != nil { + return err + } } err = retryCall(vcdClient.MaxRetryTimeout, func() error {