[et-mgmt-tools] [RFC] virt-install: remote guest creation

Michael DeHaan mdehaan at redhat.com
Wed Jul 30 21:17:58 UTC 2008


Cole Robinson wrote:
> I've taken a stab at getting remote guest creation up and running
> for virt-install. Most of the existing code translates well to the
> remote case, but the main issue is storage: how does the user tell
> us where to create and find existing storage/media, and how can we
> usefully validate this info. The libvirt storage API is the lower
> level mechanism that allows this fun stuff to happen, its really
> just a matter of choosing a sane interface for it all.
>
> The two interface problems we have are:
>
> - Changes to VirtualDisk to handle storage apis
> - Changes to virt-install cli to allow specifying storage info
>
> For VirtualDisk, I added two options
>    - volobj     : a libvirt virStorageVol instance
>    - volinstall : a virtinst StorageVolume instance
>   

Do you have examples of what this might look like for VirtualDisk?   I'm 
interested in teaching koan how to install on remote hosts.

> If the user wants the VirtualDisk to use existing storage, they
> will need to query libvirt for the virStorageVol and pass this
> to the VirtualDisk, which will take care of the rest.
>   
Basically the use cases I care about are:

Install to a specific path and/or filename
Install to an existing partition
Install to a new partition in an existing LVM volume group.

As koan needed to do this before the storage stuff (IIRC) I have code in 
koan to manage LVM.    I'll need to keep it around for support of RHEL 
5.older and F8-previous, so if the new stuff works relatively the same 
that would be great.

Basically if I can pass in a path or LVM volume group name, I'm happy.   
Needing to grok any XML would make me unhappy :)

> If the user wants to create a new managed volume, they populate
> a StorageVolume object (posted earlier but not yet committed)
> and pass this VirtualDisk. VirtualDisk will map the setup and
> is_size_conflict commands as appropriate, so all current
> infrastructure will just work.
>
> Now there wasn't a lot of functionality that needed to be added
> to accomplish this, but VirtualDisk was becoming unmaintainable
> so I took this opportunity to break it out into it's own file
> and clean it up quite a bit. I also added a parent VirtualDevice
> class which I will move all the other device classes over to in
> the future, but it's not an immediate priority.
>
> The other choices here are to offload looking up storage volumes
> to VirtualDisk, or maybe add an option to attempt to lookup
> the 'path' parameter as a storage volume if we are on a remote
> connection. These could just be options added later though.
>
>
> The next piece is how the interface changes for virt-install.
> Here are the storage use cases we now have:
>
> 1) use existing non-managed (local) disk
>    - signified by --file /some/real/path
>
> 2) create non-managed (local) disk
>    - signified by --file /some/real/dir/idontexist
>   

What is "managed vs unmanaged" here?

> 3) create managed disk
>    - all we would really need is the pool name to install on.
>   

What's a pool in context here?     I'm basically trying to make sure 
this is usable without requiring ovirt.

> 4) use existing managed disk
>    - could be a pool name, vol name combo, or perhaps
>      even an absolute path representing a volume.
>   
a volume group name is good.

A path to a volume group is ok too as we know that just lives under 
/dev/mapper and is easy to get to.


> 5) use existing non-managed media (cdrom)
>    - signified by --cdrom /some/real/path
>
> 6) use existing managed media
>    - same syntax as existing managed disk
>
> The options I see are:
>
> A) overload existing options (--file, --cdrom): we can detect we
>    are using a remote connection, and try to lookup a passed path
>    as a volume. if the user wants to specify pool/vol by name, we
>    can use something like 'poolname:volname' for some reasonable
>    delimiter. however this could collide with some legitimate 
>    storage names so it may not feasible. We could always get
>    fancy and allow escaping characters though.
>   
IMHO, autodetection would be very nice if it worked just like it was a 
path on the remote system and the only difference was that you were
using a different connection string.   This makes remote work as close 
to local as possible.   If that's not doable that's ok.

> B) Add extra options. To completely get away without having to
>    add some 'poolname:volname' type format as above, we would
>    probably need a --pool-name and --vol-name, and someway to
>    indicate that we want these for cdrom media as well :/
>   

Again, I'm not sure what a "pool" here in context of this library.   
LVMs, mount points, I get :)

Hope that helps?

--Michael


> I've currently been testing this with a hacked up version of A.
>
> The only remaining issue is some trouble with Guest objects
> expecting the install location to be local, but I'm still
> playing with that.
>
> Attached are the new VirtualDisk and VirtualDevice files, this
> all works and passes validation testing but I haven't given it
> any real polish yet.
>
> Any feedback is appreciated.
>
> Thanks,
> Cole
>
>
>   
> ------------------------------------------------------------------------
>
> _______________________________________________
> et-mgmt-tools mailing list
> et-mgmt-tools at redhat.com
> https://www.redhat.com/mailman/listinfo/et-mgmt-tools




More information about the et-mgmt-tools mailing list