
On 01/09/2013 03:28 AM, Daniel P. Berrange wrote:
We have virDomainDefineXML with no flags, but we have virDomainCreateXML with flags; maybe the better approach is to add a new creation flag that says that in addition to starting the domain, we also make it persistent at the same time.
But if we do that, it would argue that 'virsh create --persistent blah.xml' is nicer than 'virsh define --start blah.xml', at least in that the former needs only 1 API call for new libvirt (but falls back to 2 API calls when talking to older libvirt), while the latter always needs 2 API calls.
Or maybe it means we need to add virDomainDefineXMLFlags().
Anyone else want to throw some paint on the bikeshed on how best to make the user experience nicer?
While I think the virsh idea is fine, I don't want to see this done at the virDomainDefine API level, since it just duplicates functionality already present. Just have virsh make an API call to the existing create API.
I agree that we don't really need to add virDomainDefineXMLFlags(). But I'm not quite clear on your stance on adding a new flag to the existing virDomainCreateXML(). A single API call is always nicer than two API calls for atomicity reasons. That is, I'm proposing that we add a new flag, and that: virDomainCreateXML(conn, xml, VIR_DOMAIN_CREATE_PERSISTENT) be used to both start and define a domain in one call, and only if that flag is unrecognized do we fall back to the two-API sequence of virDomainCreateXML(conn, xml, 0) && virDomainDefineXML(conn, xml) or the equivalent two-API sequence of dom=virDomainDefineXML(conn, xml) && virDomainCreate(dom) -- Eric Blake eblake redhat com +1-919-301-3266 Libvirt virtualization library http://libvirt.org