Added host.dmesg method.
authorEwan Mellor <ewan@xensource.com>
Fri, 2 Feb 2007 10:25:17 +0000 (10:25 +0000)
committerEwan Mellor <ewan@xensource.com>
Fri, 2 Feb 2007 10:25:17 +0000 (10:25 +0000)
Also, fixed all of the host methods, which had been broken by the introduction
of the host_metrics class.

Signed-off-by: Ewan Mellor <ewan@xensource.com>
docs/xen-api/xenapi-datamodel.tex
tools/libxen/include/xen_host.h
tools/libxen/src/xen_host.c
tools/libxen/test/test_bindings.c
tools/python/xen/xend/XendAPI.py

index 739d270244d01ec2adf001a47fc1053c82b75890..ee34fc71601cc1499fbaedcf7a543ba891690a46 100644 (file)
@@ -4661,13 +4661,45 @@ void
 
 
 
+\vspace{0.3cm}
+\vspace{0.3cm}
+\vspace{0.3cm}
+\subsubsection{RPC name:~dmesg}
+
+{\bf Overview:} 
+Get the host xen dmesg.
+
+ \noindent {\bf Signature:} 
+\begin{verbatim} string dmesg (session_id s, host ref host)\end{verbatim}
+
+
+\noindent{\bf Arguments:}
+
+\vspace{0.3cm}
+\begin{tabular}{|c|c|p{7cm}|}
+ \hline
+{\bf type} & {\bf name} & {\bf description} \\ \hline
+{\tt host ref } & host & The Host to query \\ \hline 
+
+\end{tabular}
+
+\vspace{0.3cm}
+
+ \noindent {\bf Return Type:} 
+{\tt 
+string
+}
+
+
+dmesg string
 \vspace{0.3cm}
 \vspace{0.3cm}
 \vspace{0.3cm}
 \subsubsection{RPC name:~get\_all}
 
 {\bf Overview:} 
-Return a list of all the hosts known to the system
+Return a list of all the hosts known to the system.
 
  \noindent {\bf Signature:} 
 \begin{verbatim} ((host ref) Set) get_all (session_id s)\end{verbatim}
index e64390b89fa0874020ea5578b4e485f8e63a6d90..26ca29d59217225ac94ce0ca7318dbd52f89990b 100644 (file)
@@ -393,6 +393,13 @@ extern bool
 xen_host_reboot(xen_session *session, xen_host host);
 
 
+/**
+ * Get the host xen dmesg.
+ */
+extern bool
+xen_host_dmesg(xen_session *session, char **result, xen_host host);
+
+
 /**
  * Return a list of all the hosts known to the system.
  */
index 7968b9699487ce1527a2d49f2616c8ae51f377ab..4a79daa90ff297216ae131612c9f9aab923a73ec 100644 (file)
@@ -631,6 +631,23 @@ xen_host_reboot(xen_session *session, xen_host host)
 }
 
 
+bool
+xen_host_dmesg(xen_session *session, char **result, xen_host host)
+{
+    abstract_value param_values[] =
+        {
+            { .type = &abstract_type_string,
+              .u.string_val = host }
+        };
+
+    abstract_type result_type = abstract_type_string;
+
+    *result = NULL;
+    XEN_CALL_("host.dmesg");
+    return session->ok;
+}
+
+
 bool
 xen_host_get_all(xen_session *session, struct xen_host_set **result)
 {
index 8ce02377b1e99b5b3e0044f3fd6753b433acde6e..c1df98dcea4e8ac60561a2ad20e46f81c093654d 100644 (file)
@@ -206,6 +206,20 @@ int main(int argc, char **argv)
         return 1;
     }
 
+    char *dmesg;
+    if (!xen_host_dmesg(session, &dmesg, host))
+    {
+        print_error(session);
+        xen_string_string_map_free(versions);
+        xen_host_free(host);
+        xen_vm_record_free(vm_record);
+        xen_uuid_bytes_free(vm_uuid_bytes);
+        xen_uuid_free(vm_uuid);
+        xen_vm_free(vm);
+        CLEANUP;
+        return 1;
+    }
+
     printf("%s.\n", vm_uuid);
 
     fprintf(stderr, "In bytes, the VM UUID is ");
@@ -223,6 +237,8 @@ int main(int argc, char **argv)
                versions->contents[i].val);
     }
 
+    printf("Host dmesg follows:\n%s\n\n", dmesg);
+
     printf("%s.\n", vm_record->uuid);
 
     printf("Resident on %s.\n", (char *)vm_record->resident_on->u.handle);
@@ -244,6 +260,7 @@ int main(int argc, char **argv)
 
     xen_host_free(host);
     xen_string_string_map_free(versions);
+    free(dmesg);
 
 
     xen_vm new_vm = create_new_vm(session, true);
index 0b3c54a89b2266edc5649acd9e2f392afa8b93fb..49f20828937fd63b033366c2224e9cf33fa766e9 100644 (file)
@@ -22,7 +22,7 @@ import sys
 import traceback
 import threading
 
-from xen.xend import XendDomain, XendDomainInfo, XendNode
+from xen.xend import XendDomain, XendDomainInfo, XendNode, XendDmesg
 from xen.xend import XendLogging, XendTaskManager
 
 from xen.xend.XendAuthSessions import instance as auth_manager
@@ -615,7 +615,8 @@ class XendAPI(object):
                     ('reboot', None),
                     ('shutdown', None),
                     ('add_to_other_config', None),
-                    ('remove_from_other_config', None)]
+                    ('remove_from_other_config', None),
+                    ('dmesg', 'String')]
     
     host_funcs = [('get_by_name_label', 'Set(host)')]
 
@@ -674,6 +675,9 @@ class XendAPI(object):
             return xen_api_error(XEND_ERROR_HOST_RUNNING)
         return xen_api_error(XEND_ERROR_UNSUPPORTED)        
 
+    def host_dmesg(self, session, host_ref):
+        return xen_api_success(XendDmesg.instance().info())
+
     def host_get_record(self, session, host_ref):
         node = XendNode.instance()
         dom = XendDomain.instance()
@@ -737,7 +741,7 @@ class XendAPI(object):
                             'memory_free',
                             'host']
     host_metrics_attr_rw = []
-    host_methods = []
+    host_metrics_methods = []
 
     def _host_metrics_get(self, ref, f):
         return xen_api_success(getattr(node, f)())