]> xenbits.xensource.com Git - people/liuw/libxenctrl-split/libvirt.git/commitdiff
add virConnectNumOfDomains()
authorKarel Zak <kzak@redhat.com>
Wed, 7 Dec 2005 11:03:24 +0000 (11:03 +0000)
committerKarel Zak <kzak@redhat.com>
Wed, 7 Dec 2005 11:03:24 +0000 (11:03 +0000)
include/libvir.h
src/libvir.c

index 20b855cab89033801251e2b1f9476a3b1d0bd521..86d0e60875a3c7a8a3f111a9f3152c45bcb25efb 100644 (file)
@@ -124,6 +124,12 @@ int                        virConnectListDomains   (virConnectPtr conn,
                                                 int *ids,
                                                 int maxids);
 
+/*
+ * Number of domains
+ */
+int                    virConnectNumOfDomains  (virConnectPtr conn);
+
+
 /*
  * Domain creation and destruction
  */
index fb711c4a56b917671e200aab9e99d9a26e66c172..bd578dc4be51fbfdca6a09d78f7f1efa35766d9a 100644 (file)
@@ -257,6 +257,34 @@ done:
     return(ret);
 }
 
+/**
+ * virConnectNumOfDomains:
+ * @conn: pointer to the hypervisor connection
+ *
+ * Returns the number of domain found or -1 in case of error
+ */
+int
+virConnectNumOfDomains(virConnectPtr conn) {
+    struct xs_transaction_handle* t;
+    int ret = -1;
+    unsigned int num;
+    char **idlist = NULL;
+
+    if ((conn == NULL) || (conn->magic != VIR_CONNECT_MAGIC))
+        return(-1);
+    
+    t = xs_transaction_start(conn->xshandle);
+    if (t) {
+        idlist = xs_directory(conn->xshandle, t, "/local/domain", &num);
+        if (idlist) {
+            free(idlist);
+           ret = num;
+        }
+        xs_transaction_end(conn->xshandle, t, 0);
+    }
+    return(ret);
+}
+
 /**
  * virDomainCreateLinux:
  * @conn: pointer to the hypervisor connection