]> git.ipfire.org Git - thirdparty/libvirt.git/commitdiff
bhyve: add domainLookupByID v1.2.3-rc1
authorWojciech Macek <wma@semihalf.com>
Thu, 27 Mar 2014 07:31:21 +0000 (08:31 +0100)
committerRoman Bogorodskiy <bogorodskiy@gmail.com>
Thu, 27 Mar 2014 07:46:39 +0000 (11:46 +0400)
Implement domain lookup by its ID.

src/bhyve/bhyve_driver.c

index f54dff02fad76c593c42b05bc9ea7921123ff7e5..7a12d69db5260fdbab82118dda16248f2dbdfed0 100644 (file)
@@ -532,6 +532,34 @@ static virDomainPtr bhyveDomainLookupByName(virConnectPtr conn,
     return dom;
 }
 
+static virDomainPtr
+bhyveDomainLookupByID(virConnectPtr conn,
+                      int id)
+{
+    bhyveConnPtr privconn = conn->privateData;
+    virDomainObjPtr vm;
+    virDomainPtr dom = NULL;
+
+    vm = virDomainObjListFindByID(privconn->domains, id);
+
+    if (!vm) {
+        virReportError(VIR_ERR_NO_DOMAIN,
+                       _("No domain with matching ID '%d'"), id);
+        goto cleanup;
+    }
+
+    if (virDomainLookupByIDEnsureACL(conn, vm->def) < 0)
+        goto cleanup;
+
+    dom = virGetDomain(conn, vm->def->name, vm->def->uuid);
+    if (dom)
+        dom->id = vm->def->id;
+
+ cleanup:
+    virObjectUnlock(vm);
+    return dom;
+}
+
 static int
 bhyveDomainCreateWithFlags(virDomainPtr dom,
                            unsigned int flags)
@@ -798,6 +826,7 @@ static virDriver bhyveDriver = {
     .domainDestroy = bhyveDomainDestroy, /* 1.2.2 */
     .domainLookupByUUID = bhyveDomainLookupByUUID, /* 1.2.2 */
     .domainLookupByName = bhyveDomainLookupByName, /* 1.2.2 */
+    .domainLookupByID = bhyveDomainLookupByID, /* 1.2.3 */
     .domainDefineXML = bhyveDomainDefineXML, /* 1.2.2 */
     .domainUndefine = bhyveDomainUndefine, /* 1.2.2 */
     .domainGetXMLDesc = bhyveDomainGetXMLDesc, /* 1.2.2 */