func resourceVfxtDelete()

in src/terraform/providers/terraform-provider-avere/resource_vfxt.go [1122:1169]


func resourceVfxtDelete(d *schema.ResourceData, m interface{}) error {
	log.Printf("[INFO] [resourceVfxtDelete")
	defer log.Printf("[INFO] resourceVfxtDelete]")

	avereVfxt, err := fillAvereVfxt(d)
	if err != nil {
		return err
	}

	if avereVfxt.RunLocal == false {
		if err := VerifySSHConnection(avereVfxt.ControllerAddress, avereVfxt.ControllerUsename, avereVfxt.SshAuthMethod, avereVfxt.SshPort); err != nil {
			return err
		}
	}

	if avereVfxt.EnableSupportUploads == true && avereVfxt.ActiveSupportUpload == true {
		// in case there was failure, enable the support uploads before, but
		// don't let it block the deletion
		if err := avereVfxt.EnableSupport(); err != nil {
			log.Printf("[ERROR] failed to upload rolling trace: %v", err)
		} else {
			if err := avereVfxt.UploadRollingTraceAndBlock(); err != nil {
				log.Printf("[ERROR] failed to upload rolling trace: %v", err)
			}
			if err := avereVfxt.UploadSupportBundleAndBlock(); err != nil {
				log.Printf("[ERROR] failed to upload support bundle: %v", err)
			}
		}
	}

	log.Printf("[INFO] vfxt: ensure cluster is stable before deletion so vfxt.py will have a smooth deletion")
	if err := avereVfxt.EnsureClusterStable(); err != nil {
		return err
	}

	if err := avereVfxt.Platform.DestroyVfxt(avereVfxt); err != nil {
		return fmt.Errorf("failed to destroy cluster: %s\n", err)
	}

	d.Set(vfxt_management_ip, avereVfxt.ManagementIP)
	d.Set(vserver_ip_addresses, avereVfxt.VServerIPAddresses)
	d.Set(node_names, avereVfxt.NodeNames)

	// acknowledge deletion of the vfxt
	d.SetId("")

	return nil
}