Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
20 changes: 12 additions & 8 deletions app/models/concerns/foreman_bootdisk/compute_resources/proxmox.rb
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,18 @@ def iso_upload(iso, vm_uuid)
storage.volumes.any? { |v| v.volid.include? File.basename(iso) }
end

def iso_delete(_iso, vm_uuid)
server = find_vm_by_uuid(vm_uuid)

# get volid to delete iso after detaching from vm
volid = server.volumes.get(CDROM_VOLUME).volid

# delete the iso file from proxmox server
storage = storages(server.node_id, 'iso')[0]
volume = storage.volumes.detect { |v| v.volid.include? volid }
volume.destroy
end

def iso_attach(iso, vm_uuid)
server = find_vm_by_uuid(vm_uuid)
storage = storages(server.node_id, 'iso')[0]
Expand All @@ -31,18 +43,10 @@ def iso_attach(iso, vm_uuid)

def iso_detach(vm_uuid)
server = find_vm_by_uuid(vm_uuid)

# get volid to delete iso after detaching from vm
volid = server.volumes.get(CDROM_VOLUME).volid
server.update({ ide2: "none,media=cdrom" })

# cdrom will be ejected on next power off
server.detach(CDROM_VOLUME)

# delete the iso file from proxmox server
storage = storages(server.node_id, 'iso')[0]
volume = storage.volumes.detect { |v| v.volid.include? volid }
volume.destroy
end
end
end
Expand Down
10 changes: 10 additions & 0 deletions app/models/concerns/foreman_bootdisk/compute_resources/vmware.rb
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,16 @@ def iso_upload(iso, vm_uuid)
client.upload_iso options
end

def iso_delete(iso, vm_uuid)
options = {
'local_path' => iso,
'datacenter' => dc.name,
'datastore' => bootdisk_datastore(vm_uuid),
'upload_directory' => 'foreman_isos'
}
client.destroy_iso options
end

def iso_attach(iso, vm_uuid)
controller = controller_config(vm_uuid)
options = {
Expand Down
16 changes: 16 additions & 0 deletions app/models/concerns/foreman_bootdisk/orchestration/compute.rb
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,8 @@ def queue_bootdisk_compute
elsif old&.build? && !build?
queue.create(name: _('Detach ISO image from CDROM drive for %s') % self, priority: 52,
action: [self, :setDetachIsoImage])
queue.create(name: _('Delete ISO image for %s') % self, priority: 53,
action: [self, :setDeleteIsoImage])
end
true
end
Expand All @@ -59,6 +61,10 @@ def bootdisk_upload_iso
compute_resource.iso_upload(bootdisk_isofile, uuid)
end

def bootdisk_delete_iso
compute_resource.iso_delete(bootdisk_isofile, uuid)
end

def bootdisk_attach_iso
compute_resource.iso_attach(File.basename(bootdisk_isofile), uuid)
end
Expand Down Expand Up @@ -101,6 +107,16 @@ def setDetachIsoImage
end

def delDetachIsoImage; end

def setDeleteIsoImage
logger.info format('Delete ISO image for %s', name)
bootdisk_delete_iso
rescue StandardError => e
failure format(_('Failed to delete ISO image of instance %{name}: %{message}'), name: name, message: e.message), e
end

def delDeleteIsoImage; end

end
end
end