def base_disk_delete(): base_disk_path = cvb.get_base_disk_path() if vm.disk_registered(base_disk_path): # Remove users of base disk logger.info("Unregistering and removing all disks attached to" " base disk path.") disk_delete_child_vms(base_disk_path) logger.info("Unregistering old base disk.") vm.disk_unregister(base_disk_path) logger.info("Removing old base disk.") try: os.remove(base_disk_path) except OSError as err: if err.errno != errno.ENOENT: raise
def disk_delete_child_vms(disk): if not vm.disk_registered(disk): logger.warn("Disk not registered with VirtualBox:\n\t%s", disk) return 0 while True: child_disk_uuid = vm.get_next_child_disk_uuid(disk) if not child_disk_uuid: break child_disk_path = vm.disk_to_path(child_disk_uuid) vm_name = vm.disk_to_vm(child_disk_uuid) if vm_name: logger.info("Deleting VM %s.", vm_name) vm.vm_delete(vm_name) else: logger.info("Unregistering and deleting:\n\t%s", child_disk_path) vm.disk_unregister(child_disk_uuid) os.remove(child_disk_path)