Fix 2 domain ID handling bugs in remote driver

This commit is contained in:
Daniel P. Berrange 2009-04-19 15:21:54 +00:00
parent cb43623acd
commit c881b32215
2 changed files with 24 additions and 0 deletions

View File

@ -1,3 +1,10 @@
Sun Apr 19 16:19:22 BST 2009 Daniel P. Berrange <berrange@redhat.com>
Fix 2 domain ID handling bugs in remote driver
* src/remote_internal.c: Add virDomainCreate(), do a lookup
to find the ID of newly created domain. Reset ID to -1 after
doing a destroy operation on a domain
Sun Apr 19 16:14:22 BST 2009 Daniel P. Berrange <berrange@redhat.com>
* src/domain_conf.c: Switch over todo domain lookup based

View File

@ -1939,6 +1939,7 @@ remoteDomainDestroy (virDomainPtr domain)
goto done;
rv = 0;
domain->id = -1;
done:
remoteDriverUnlock(priv);
@ -2673,6 +2674,8 @@ remoteDomainCreate (virDomainPtr domain)
{
int rv = -1;
remote_domain_create_args args;
remote_domain_lookup_by_uuid_args args2;
remote_domain_lookup_by_uuid_ret ret2;
struct private_data *priv = domain->conn->privateData;
remoteDriverLock(priv);
@ -2684,6 +2687,20 @@ remoteDomainCreate (virDomainPtr domain)
(xdrproc_t) xdr_void, (char *) NULL) == -1)
goto done;
/* Need to do a lookup figure out ID of newly started guest, because
* bug in design of REMOTE_PROC_DOMAIN_CREATE means we aren't getting
* it returned.
*/
memcpy (args2.uuid, domain->uuid, VIR_UUID_BUFLEN);
memset (&ret2, 0, sizeof ret2);
if (call (domain->conn, priv, 0, REMOTE_PROC_DOMAIN_LOOKUP_BY_UUID,
(xdrproc_t) xdr_remote_domain_lookup_by_uuid_args, (char *) &args2,
(xdrproc_t) xdr_remote_domain_lookup_by_uuid_ret, (char *) &ret2) == -1)
goto done;
domain->id = ret2.dom.id;
xdr_free ((xdrproc_t) &xdr_remote_domain_lookup_by_uuid_ret, (char *) &ret2);
rv = 0;
done: