parent
5e8eade205
commit
f7de056f23
|
@ -75,17 +75,13 @@ func (s *stepCreateVM) Run(ctx context.Context, state multistep.StateBag) multis
|
|||
return multistep.ActionHalt
|
||||
}
|
||||
|
||||
var diskIDs []string
|
||||
for _, hdd := range hdds {
|
||||
if hdd.Disk.Name == chrootDiskName {
|
||||
state.Put("chroot_disk_id", hdd.Disk.Id)
|
||||
} else {
|
||||
diskIDs = append(diskIDs, hdd.Disk.Id)
|
||||
break
|
||||
}
|
||||
}
|
||||
|
||||
state.Put("disk_ids", diskIDs)
|
||||
|
||||
netadp, _, err := client.VmApi.VmListNetadp(ctx, vm.Id)
|
||||
if err != nil {
|
||||
err := fmt.Errorf("error listing netadp: %s", formatOpenAPIError(err))
|
||||
|
@ -169,19 +165,31 @@ func (s *stepCreateVM) Cleanup(state multistep.StateBag) {
|
|||
return
|
||||
}
|
||||
|
||||
client := state.Get("client").(*openapi.APIClient)
|
||||
ui := state.Get("ui").(packer.Ui)
|
||||
|
||||
ui.Say("Deleting VM...")
|
||||
|
||||
deleteOptions := openapi.VmDelete{}
|
||||
diskIDs, ok := state.Get("disk_ids").([]string)
|
||||
if ok && len(diskIDs) > 0 {
|
||||
deleteOptions.RemoveDisks = diskIDs
|
||||
}
|
||||
|
||||
_, err := client.VmApi.VmDelete(context.TODO(), s.vmID, deleteOptions)
|
||||
ui.Say(fmt.Sprintf("Deleting VM %s...", s.vmID))
|
||||
err := deleteVMWithDisks(s.vmID, state)
|
||||
if err != nil {
|
||||
ui.Error(fmt.Sprintf("Error deleting server '%s' - please delete it manually: %s", s.vmID, formatOpenAPIError(err)))
|
||||
ui.Error(err.Error())
|
||||
}
|
||||
}
|
||||
|
||||
func deleteVMWithDisks(vmID string, state multistep.StateBag) error {
|
||||
client := state.Get("client").(*openapi.APIClient)
|
||||
hdds, _, err := client.VmApi.VmListHdd(context.TODO(), vmID)
|
||||
if err != nil {
|
||||
return fmt.Errorf("error listing hdd: %s", formatOpenAPIError(err))
|
||||
}
|
||||
|
||||
deleteOptions := openapi.VmDelete{}
|
||||
for _, hdd := range hdds {
|
||||
deleteOptions.RemoveDisks = append(deleteOptions.RemoveDisks, hdd.Disk.Id)
|
||||
}
|
||||
|
||||
_, err = client.VmApi.VmDelete(context.TODO(), vmID, deleteOptions)
|
||||
if err != nil {
|
||||
return fmt.Errorf("Error deleting server '%s' - please delete it manually: %s", vmID, formatOpenAPIError(err))
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
|
|
@ -53,18 +53,11 @@ func (s *stepCreateVMFromDisk) Cleanup(state multistep.StateBag) {
|
|||
return
|
||||
}
|
||||
|
||||
client := state.Get("client").(*openapi.APIClient)
|
||||
ui := state.Get("ui").(packer.Ui)
|
||||
chrootDiskID := state.Get("chroot_disk_id").(string)
|
||||
|
||||
ui.Say("Deleting VM (from disk)...")
|
||||
|
||||
deleteOptions := openapi.VmDelete{
|
||||
RemoveDisks: []string{chrootDiskID},
|
||||
}
|
||||
|
||||
_, err := client.VmApi.VmDelete(context.TODO(), s.vmID, deleteOptions)
|
||||
ui.Say(fmt.Sprintf("Deleting VM %s (from chroot disk)...", s.vmID))
|
||||
err := deleteVMWithDisks(s.vmID, state)
|
||||
if err != nil {
|
||||
ui.Error(fmt.Sprintf("Error deleting server '%s' - please delete it manually: %s", s.vmID, formatOpenAPIError(err)))
|
||||
ui.Error(err.Error())
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue