On Thu, May 28, 2020 at 12:24:22AM +0000, Eric Wheeler wrote:
 On Mon, 15 Oct 2018, Nir Soffer wrote:
 > On Sat, Oct 13, 2018 at 9:45 PM Eric Wheeler <nbd(a)lists.ewheeler.net> wrote:
 >       Hello all,
 > 
 >       It might be neat to attach ISOs to KVM guests via websockets.  Basically
 >       the  browser would be the NBD "server" and an NBD client would run
on the
 >       hypervisor, then use `virsh change-media vm1 hdc --insert /dev/nbd0` could
 >       use an ISO from my desk to boot from.
 > 
 >       Here's an HTML5 open file example:
 >      
https://stackoverflow.com/questions/3582671/how-to-open-a-local-disk-file...
 > 
 >       and the NBD protocol looks simple enough to implement in javascript:
 >      
https://stackoverflow.com/questions/17295140/where-is-the-network-block-d...
 > 
 >       What do you think? Does anyone have an interest in doing this?
 > 
 > 
 > HTML File API is very limited:
 > - you cannot access any file except file provided by the user interactively
 > - no support for sparseness or underlying disk block size
 > 
 > So it will be a pretty bad backend for NBD server.
 > 
 > What are you trying to do?
 
 Hi Nir and Eric,
 
 I hope you are well!  
 
 (I'm resurecting this old thread, not sure how I missed the replies.)
 
 We are interested in attaching a local ISO to a remote VM over http (maybe 
 .qcow's, but ISO is the primary interest). 
So this bit is simple, and something we do regularly.  Assuming the
"remote VM" is using qemu as a hypervisor, then qemu has a curl driver
integrated so you can mount remote http:// or https:// resources as
disks on the VM directly.  eg:
  $ qemu-system-x86_64 -m 2048 -cdrom
https://download.fedoraproject.org/pub/fedora/linux/releases/32/Server/x8...
(A more realistic example would use libvirt, see the https protocol
in: 
https://libvirt.org/formatdomain.html#elementsDisks )
You can also bounce the connection through nbdkit-curl-plugin which
gives you a bit more flexibility, eg the ability to transparently
uncompress the remote ISO.  You would be using the NBD client in qemu
to connect (eg. over a Unix domain socket) to a local nbdkit, and
nbdkit's curl plugin to connect to the remote ISO.  More info and a
worked example in these pages:
  
http://libguestfs.org/nbdkit-curl-plugin.1.html
  https://rwmj.wordpress.com/2018/11/23/nbdkit-xz-curl/
 This is common for remote KVM (iDRAC/iLO/iKVM/CIMC), so wondering
about 
 an http front-end for qemu to do the same. 
I'm a bit confused by what you mean by "http front-end for qemu".
 Combining that with a spice JS client or noVNC for VM console access
would 
 be neat. 
These are separate issues.  qemu has a VNC or SPICE client built in
for the console.
 I also like Eric Blake's idea of direct NBD client integration
with qemu 
 instead of using /dev/nbd0. 
You shouldn't need to use a loop device for this scenario, assuming
I've understood what you want.
Rich.
-- 
Richard Jones, Virtualization Group, Red Hat 
http://people.redhat.com/~rjones
Read my programming and virtualization blog: 
http://rwmj.wordpress.com
virt-p2v converts physical machines to virtual machines.  Boot with a
live CD or over the network (PXE) and turn machines into KVM guests.
http://libguestfs.org/virt-v2v