On Thu, 10 May 2007 12:36:30 -0400 Daniel Veillard wrote:
Well I have though about it more, and I'm afraid that proposal
1 makes things
more complex due to the duplication of APIs. I think proposal 2 makes more
sense, i.e. be able to create a Domain object from a config file. We just need
to add new API to generate an xmlDomainPtr from those data, then store the
path or data in the domain structure, and also a new API to be able to
differentiate whether a domain is about a running domain or just the config.
Can I ask something ? That means adding xmlDomainPtr to virDomainPtr,
like this ?
struct _virDomain {
unsigned int magic; /* specific value to check */
int uses; /* reference count */
virConnectPtr conn; /* pointer back to the connection */
xmlDomainPtr conf; <----this one
char *name; /* the domain external name */
int id; /* the domain ID */
unsigned char uuid[VIR_UUID_BUFLEN]; /* the domain unique identifier */
};
The problem is that one need to add one such API for every aspect
of the
domain configuration, if it was only memory that would not be that bad
but we ultimately want to be able to modify everything.
Yes, I would like to modify another values, too.
There are vcpus, disk, network interface, vncport...etc.
I think it's better to allow the duality of virDomainPtr,
accepting
it to be either a representation for a running domain or a representation
of the associated configuration file. The fact that with new versions of Xen
one can change into the other doesn't sound something that will be
common to other engines, and as you noted it actually makes things
harder because if you call the API you don't know a-priori without
checking the current state which aspect will be modified.
So we need to separate the two states, but if we can keep the
same APIs for most of the modification entry points and just add
a few call to create the configuration domains and being able to
ask if a domain is about a config or about a running one.
Now, the result of command seems not to be consistent when the domain is
not running. So I think if we can separate the API between running
domain and not running domain, we get the consistent result.
Thanks,
Saori Fukuta