]> git.ipfire.org Git - thirdparty/libvirt.git/commitdiff
add virDomainGetOSType() + small code refactoring
authorKarel Zak <kzak@redhat.com>
Fri, 16 Dec 2005 00:51:27 +0000 (00:51 +0000)
committerKarel Zak <kzak@redhat.com>
Fri, 16 Dec 2005 00:51:27 +0000 (00:51 +0000)
AUTHORS
ChangeLog
include/libvir.h.in
src/internal.h
src/libvir.c
src/libvir_sym.version
src/virsh.c
src/xml.c

diff --git a/AUTHORS b/AUTHORS
index 410def36a4cde5955eef5b09b7bec73f854e5396..ccca6545068f848d2d228a12d9331601f7654e89 100644 (file)
--- a/AUTHORS
+++ b/AUTHORS
@@ -1 +1,2 @@
 Daniel Veillard <veillard@redhat.com> or <daniel@veillard.com>
+Karel Zak <kzak@redhat.com> 
index 45c934da3d973ca09e91a40f67553ae6f266f272..61601bc1baf1b344448772a528b66e4f944aa6ff 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,8 +1,14 @@
+Fri Dec 16 01:43:18 CET 2005 Karel Zak <kzak@redhat.com>
+
+       * include/libvir.h.in: add missing declaration of virDomainGetXMLDesc()
+       * include/libvir.h.in src/libvir.c src/virsh src/libvir_sym.version: add 
+         virDomainGetOSType()
+       * src/internal.h src/libvir.c src/xml.c: add internal function virDomainGetVM(), 
+         move virDomainGetVMInfo() from src/xml.c
+
 Thu Dec 15 17:56:27 CET 2005 Karel Zak <kzak@redhat.com>
 
        * src/virsh.c: remove --id / --name options
-       * include/libvir.h: add missing declaration of virDomainGetXMLDesc()
-
 
 Wed Dec 14 16:28:24 CET 2005 Daniel Veillard <veillard@redhat.com>
 
index ce1347bc7f3c84b7301d3aa5276b8954145c692e..f560e9db35ee45cb3306b79c8eb6675a7769c3a9 100644 (file)
@@ -180,9 +180,14 @@ int                        virDomainGetInfo        (virDomainPtr domain,
  */
 const char *           virDomainGetName        (virDomainPtr domain);
 unsigned int           virDomainGetID          (virDomainPtr domain);
+char *                 virDomainGetOSType      (virDomainPtr domain);
 unsigned long          virDomainGetMaxMemory   (virDomainPtr domain);
 int                    virDomainSetMaxMemory   (virDomainPtr domain,
                                                 unsigned long memory);
+/*
+ * XML domain description
+ */
+char *                 virDomainGetXMLDesc     (virDomainPtr domain, int flags);
 
 #ifdef __cplusplus
 }
index af3963805ca8d8bd7f48146515a49b2822bfeb8b..a4c1d14889b52c080b3af06fe16bf2541bfa2754 100644 (file)
@@ -84,6 +84,14 @@ struct _virDomain {
     int                 handle;        /* internal handle for the dmonain ID */
 };
 
+/*
+ * Internal routines
+ */
+char *         virDomainGetVM          (virDomainPtr domain);
+char *         virDomainGetVMInfo      (virDomainPtr domain,
+                                        const char *vm,
+                                        const char *name);
+
 #ifdef __cplusplus
 }
 #endif /* __cplusplus */
index 4e50e7e4603ebab569e318f64d88fbaff476dec4..937468b0da2a3453ebbf6e05528c233b2e0111e6 100644 (file)
@@ -466,6 +466,83 @@ done:
     return(ret);
 }
 
+
+/**
+ * virDomainGetVM:
+ * @domain: a domain object
+ *
+ * Internal API extracting a xenstore vm path.
+ *
+ * Returns the new string or NULL in case of error
+ */
+char *
+virDomainGetVM(virDomainPtr domain)
+{
+    struct xs_transaction_handle* t;
+    char *vm;
+    char query[200];
+    unsigned int len;
+    
+    if ((domain == NULL) || (domain->magic != VIR_DOMAIN_MAGIC))
+       return(NULL);
+    if ((domain->conn == NULL) || (domain->conn->magic != VIR_CONNECT_MAGIC))
+        return(NULL);
+
+    t = xs_transaction_start(domain->conn->xshandle);
+    if (t == NULL)
+        return(NULL);
+
+    snprintf(query, 199, "/local/domain/%d/vm", 
+             virDomainGetID(domain));
+    query[199] = 0;
+
+    vm = xs_read(domain->conn->xshandle, t, &query[0], &len);
+
+    if (t != NULL)
+       xs_transaction_end(domain->conn->xshandle, t, 0);
+
+    return(vm);
+}
+
+/**
+ * virDomainGetVMInfo:
+ * @domain: a domain object
+ * @vm: the xenstore vm path
+ * @name: the value's path
+ *
+ * Internal API extracting one information the device used 
+ * by the domain from xensttore
+ *
+ * Returns the new string or NULL in case of error
+ */
+char *
+virDomainGetVMInfo(virDomainPtr domain, const char *vm, 
+                   const char *name) {
+    struct xs_transaction_handle* t;
+    char s[256];
+    char *ret = NULL;
+    unsigned int len = 0;
+    
+    if ((domain == NULL) || (domain->magic != VIR_DOMAIN_MAGIC))
+       return(NULL);
+    if ((domain->conn == NULL) || (domain->conn->magic != VIR_CONNECT_MAGIC))
+        return(NULL);
+
+    snprintf(s, 255, "%s/%s", vm, name);
+    s[255] = 0;
+
+    t = xs_transaction_start(domain->conn->xshandle);
+    if (t == NULL)
+        goto done;
+
+    ret = xs_read(domain->conn->xshandle, t, &s[0], &len);
+
+done:
+    if (t != NULL)
+       xs_transaction_end(domain->conn->xshandle, t, 0);
+    return(ret);
+}
+
 /**
  * virDomainLookupByID:
  * @conn: pointer to the hypervisor connection
@@ -695,6 +772,29 @@ virDomainGetID(virDomainPtr domain) {
     return(domain->handle);
 }
 
+/**
+ * virDomainGetOSType:
+ * @domain: a domain object
+ *
+ * Get the type of domain operation system.
+ *
+ * Returns the new string or NULL in case of error
+ */
+char *
+virDomainGetOSType(virDomainPtr domain) {
+    char *vm, *str = NULL;
+    
+    if ((domain == NULL) || (domain->magic != VIR_DOMAIN_MAGIC))
+        return(NULL);
+
+    vm = virDomainGetVM(domain);
+    if (vm) {
+       str = virDomainGetVMInfo(domain, vm, "image/ostype");
+       free(vm);
+    }
+    return(str);
+}
+
 /**
  * virDomainGetMaxMemory:
  * @domain: a domain object or NULL
index e62bdee77725728796d3f12342af56c15501dafb..c28e4e65a141984ccd2f7fcee0c5fdf7c6ffd888 100644 (file)
        virDomainGetInfo;
        virDomainGetMaxMemory;
        virDomainGetName;
+       virDomainGetOSType;
+       virDomainGetXMLDesc;
        virDomainLookupByID;
        virDomainLookupByName;
        virDomainResume;
        virDomainSetMaxMemory;
        virDomainSuspend;
-       virDomainGetXMLDesc;
        virGetVersion;
     local: *;
 };
index 3fa66b9ec521881b40da7649813deca2c051a263..bc0e038e6c7d052b92cc5cc879fba9f62bfe9f87 100644 (file)
@@ -482,6 +482,7 @@ cmdDinfo(vshControl *ctl, vshCmd *cmd) {
     virDomainInfo info;
     virDomainPtr dom;
     int ret = TRUE;
+    char *str;
    
     if (!vshConnectionUsability(ctl, ctl->conn, TRUE))
         return FALSE;
@@ -489,13 +490,20 @@ cmdDinfo(vshControl *ctl, vshCmd *cmd) {
     if (!(dom = vshCommandOptDomain(ctl, cmd, "domain", NULL)))
         return FALSE;
     
+     vshPrint(ctl, VSH_MESG, "%-15s %d\n", "Id:", 
+            virDomainGetID(dom));
+     vshPrint(ctl, VSH_MESG, "%-15s %s\n", "Name:", 
+            virDomainGetName(dom));
+     
+     if ((str=virDomainGetOSType(dom))) {
+         vshPrint(ctl, VSH_MESG, "%-15s %s\n", "OS Type:", str);
+         free(str);
+     }
+
     if (virDomainGetInfo(dom, &info)==0) {
-        vshPrint(ctl, VSH_MESG, "%-15s %d\n", "Id:", 
-                virDomainGetID(dom));
-        vshPrint(ctl, VSH_MESG, "%-15s %s\n", "Name:", 
-                virDomainGetName(dom));
         vshPrint(ctl, VSH_MESG, "%-15s %s\n", "State:",    
                 vshDomainStateToString(info.state));
+        
         vshPrint(ctl, VSH_MESG, "%-15s %d\n", "CPU(s):",
                 info.nrVirtCpu);
         
index 3ec4e4e08fd6b0cf22ceedc993f38f0bcb2ff3ab..e8fbc7bb7396383421d0eec087e57c51087fd8f9 100644 (file)
--- a/src/xml.c
+++ b/src/xml.c
@@ -167,39 +167,6 @@ done:
     return(ret);
 }
 
-/**
- * virDomainGetVMInfo:
- * @domain: a domain object
- * @vm: the xenstore vm path
- * @name: the value's path
- *
- * Extract one information the device used by the domain from xensttore
- *
- * Returns the new string or NULL in case of error
- */
-static char *
-virDomainGetVMInfo(virDomainPtr domain, const char *vm, 
-                   const char *name) {
-    struct xs_transaction_handle* t;
-    char s[256];
-    char *ret = NULL;
-    unsigned int len = 0;
-
-    snprintf(s, 255, "%s/%s", vm, name);
-    s[255] = 0;
-
-    t = xs_transaction_start(domain->conn->xshandle);
-    if (t == NULL)
-        goto done;
-
-    ret = xs_read(domain->conn->xshandle, t, &s[0], &len);
-
-done:
-    if (t != NULL)
-       xs_transaction_end(domain->conn->xshandle, t, 0);
-    return(ret);
-}
-
 /**
  * virDomainGetXMLDevice:
  * @domain: a domain object
@@ -419,6 +386,9 @@ done:
     return(ret);
 }
 
+
+
+
 /**
  * virDomainGetXMLBoot:
  * @domain: a domain object
@@ -430,34 +400,15 @@ done:
  */
 static int
 virDomainGetXMLBoot(virDomainPtr domain, virBufferPtr buf) {
-    struct xs_transaction_handle* t;
     char *vm, *str;
-    char query[200];
-    virConnectPtr conn;
-    int len;
 
-    conn = domain->conn;
-
-    if ((conn == NULL) || (conn->magic != VIR_CONNECT_MAGIC))
+    if ((domain == NULL) || (domain->magic != VIR_DOMAIN_MAGIC))
         return(-1);
     
-    t = xs_transaction_start(conn->xshandle);
-    if (t == NULL)
-        return(-1);
-
-    snprintf(query, 199, "/local/domain/%d/vm", 
-             virDomainGetID(domain));
-    query[199] = 0;
-
-    vm = xs_read(domain->conn->xshandle, t, &query[0], &len);
-
-    if (t != NULL)
-       xs_transaction_end(domain->conn->xshandle, t, 0);
-
+    vm = virDomainGetVM(domain);
     if (vm == NULL)
         return(-1);
 
-
     virBufferAdd(buf, "  <os>\n", 7);
     str = virDomainGetVMInfo(domain, vm, "image/ostype");
     if (str != NULL) {