WARNING - OLD ARCHIVES

This is an archived copy of the Xen.org mailing list, which we have preserved to ensure that existing links to archives are not broken. The live archive, which contains the latest emails, can be found at http://lists.xen.org/
   
 
 
Xen 
 
Home Products Support Community News
 
   
 

xen-changelog

[Xen-changelog] [xen-unstable] Expose the method-listing call as host.li

To: xen-changelog@xxxxxxxxxxxxxxxxxxx
Subject: [Xen-changelog] [xen-unstable] Expose the method-listing call as host.list_methods.
From: Xen patchbot-unstable <patchbot-unstable@xxxxxxxxxxxxxxxxxxx>
Date: Thu, 05 Apr 2007 06:50:18 -0700
Delivery-date: Thu, 05 Apr 2007 06:50:32 -0700
Envelope-to: www-data@xxxxxxxxxxxxxxxxxx
List-help: <mailto:xen-changelog-request@lists.xensource.com?subject=help>
List-id: BK change log <xen-changelog.lists.xensource.com>
List-post: <mailto:xen-changelog@lists.xensource.com>
List-subscribe: <http://lists.xensource.com/cgi-bin/mailman/listinfo/xen-changelog>, <mailto:xen-changelog-request@lists.xensource.com?subject=subscribe>
List-unsubscribe: <http://lists.xensource.com/cgi-bin/mailman/listinfo/xen-changelog>, <mailto:xen-changelog-request@lists.xensource.com?subject=unsubscribe>
Reply-to: xen-devel@xxxxxxxxxxxxxxxxxxx
Sender: xen-changelog-bounces@xxxxxxxxxxxxxxxxxxx
# HG changeset patch
# User Ewan Mellor <ewan@xxxxxxxxxxxxx>
# Date 1175708540 -3600
# Node ID 5dcb272de7e4f159d5c91c22c0dce9819d31aadb
# Parent  4de1e743a5a83add228c18ef0cfcc87c040c7e80
Expose the method-listing call as host.list_methods.

Signed-off-by: Ewan Mellor <ewan@xxxxxxxxxxxxx>
---
 docs/xen-api/xenapi-datamodel.tex |   21 ++++++++++++++++++
 tools/libxen/include/xen_host.h   |    7 ++++++
 tools/libxen/src/xen_host.c       |   12 ++++++++++
 tools/libxen/test/test_bindings.c |   43 ++++++++++++++++++++++++++++++++++++++
 tools/python/xen/xend/XendAPI.py  |   18 +++++++--------
 tools/python/xen/xm/main.py       |    2 -
 6 files changed, 92 insertions(+), 11 deletions(-)

diff -r 4de1e743a5a8 -r 5dcb272de7e4 docs/xen-api/xenapi-datamodel.tex
--- a/docs/xen-api/xenapi-datamodel.tex Wed Apr 04 15:00:57 2007 +0100
+++ b/docs/xen-api/xenapi-datamodel.tex Wed Apr 04 18:42:20 2007 +0100
@@ -4952,6 +4952,27 @@ dmesg string
 \vspace{0.3cm}
 \vspace{0.3cm}
 \vspace{0.3cm}
+\subsubsection{RPC name:~list\_methods}
+
+{\bf Overview:} 
+List all supported methods.
+
+ \noindent {\bf Signature:} 
+\begin{verbatim} (string Set) list_methods (session_id s)\end{verbatim}
+
+
+\vspace{0.3cm}
+
+ \noindent {\bf Return Type:} 
+{\tt 
+string Set
+}
+
+
+The name of every supported method.
+\vspace{0.3cm}
+\vspace{0.3cm}
+\vspace{0.3cm}
 \subsubsection{RPC name:~get\_all}
 
 {\bf Overview:} 
diff -r 4de1e743a5a8 -r 5dcb272de7e4 tools/libxen/include/xen_host.h
--- a/tools/libxen/include/xen_host.h   Wed Apr 04 15:00:57 2007 +0100
+++ b/tools/libxen/include/xen_host.h   Wed Apr 04 18:42:20 2007 +0100
@@ -436,6 +436,13 @@ xen_host_dmesg(xen_session *session, cha
 
 
 /**
+ * List all supported methods.
+ */
+extern bool
+xen_host_list_methods(xen_session *session, struct xen_string_set **result);
+
+
+/**
  * Return a list of all the hosts known to the system.
  */
 extern bool
diff -r 4de1e743a5a8 -r 5dcb272de7e4 tools/libxen/src/xen_host.c
--- a/tools/libxen/src/xen_host.c       Wed Apr 04 15:00:57 2007 +0100
+++ b/tools/libxen/src/xen_host.c       Wed Apr 04 18:42:20 2007 +0100
@@ -740,6 +740,18 @@ xen_host_dmesg(xen_session *session, cha
 
 
 bool
+xen_host_list_methods(xen_session *session, struct xen_string_set **result)
+{
+
+    abstract_type result_type = abstract_type_string_set;
+
+    *result = NULL;
+    xen_call_(session, "host.list_methods", NULL, 0, &result_type, result);
+    return session->ok;
+}
+
+
+bool
 xen_host_get_all(xen_session *session, struct xen_host_set **result)
 {
 
diff -r 4de1e743a5a8 -r 5dcb272de7e4 tools/libxen/test/test_bindings.c
--- a/tools/libxen/test/test_bindings.c Wed Apr 04 15:00:57 2007 +0100
+++ b/tools/libxen/test/test_bindings.c Wed Apr 04 18:42:20 2007 +0100
@@ -64,6 +64,7 @@ typedef struct
 
 static xen_vm create_new_vm(xen_session *session, bool hvm);
 static void print_session_info(xen_session *session);
+static void print_methods(xen_session *session);
 static void print_vm_power_state(xen_session *session, xen_vm vm);
 static void print_vm_metrics(xen_session *session, xen_vm vm);
 
@@ -159,6 +160,14 @@ int main(int argc, char **argv)
         xen_session_login_with_password(call_func, NULL, username, password);
 
     print_session_info(session);
+    if (!session->ok)
+    {
+        /* Error has been logged, just clean up. */
+        CLEANUP;
+        return 1;
+    }
+
+    print_methods(session);
     if (!session->ok)
     {
         /* Error has been logged, just clean up. */
@@ -644,6 +653,40 @@ static void print_session_info(xen_sessi
 }
 
 
+static int pstrcmp(const void *p1, const void *p2)
+{
+    return strcmp(*(char **)p1, *(char **)p2);
+}
+
+
+/**
+ * Print the list of supported methods.
+ */
+static void print_methods(xen_session *session)
+{
+    xen_string_set *methods;
+
+    if (!xen_host_list_methods(session, &methods))
+    {
+        print_error(session);
+        goto done;
+    }
+
+    printf("%zd.\n", methods->size);
+    qsort(methods->contents, methods->size, sizeof(char *), pstrcmp);
+
+    printf("Supported methods:\n");
+    for (size_t i = 0; i < methods->size; i++)
+    {
+        printf("  %s\n", methods->contents[i]);
+    }
+    fflush(stdout);
+
+done:
+    xen_string_set_free(methods);
+}
+
+
 /**
  * Print the metrics for the given VM.
  */
diff -r 4de1e743a5a8 -r 5dcb272de7e4 tools/python/xen/xend/XendAPI.py
--- a/tools/python/xen/xend/XendAPI.py  Wed Apr 04 15:00:57 2007 +0100
+++ b/tools/python/xen/xend/XendAPI.py  Wed Apr 04 18:42:20 2007 +0100
@@ -886,7 +886,8 @@ class XendAPI(object):
                     ('get_log', 'String'),
                     ('send_debug_keys', None)]
     
-    host_funcs = [('get_by_name_label', 'Set(host)')]
+    host_funcs = [('get_by_name_label', None),
+                  ('list_methods', None)]
 
     # attributes
     def host_get_name_label(self, session, host_ref):
@@ -1010,6 +1011,12 @@ class XendAPI(object):
             return xen_api_success((XendNode.instance().uuid,))
         return xen_api_success([])
     
+    def host_list_methods(self, _):
+        def _funcs():
+            return [getattr(XendAPI, x) for x in XendAPI.__dict__]
+
+        return xen_api_success([x.api for x in _funcs()
+                                if hasattr(x, 'api')])
 
     # Xen API: Class host_CPU
     # ----------------------------------------------------------------
@@ -2611,15 +2618,6 @@ class XendAPI(object):
         return xen_api_success({'uuid': debug_ref})
 
 
-    def list_all_methods(self, _):
-        def _funcs():
-            return [getattr(XendAPI, x) for x in XendAPI.__dict__]
-
-        return xen_api_success([x.api for x in _funcs()
-                                if hasattr(x, 'api')])
-    list_all_methods.api = '_UNSUPPORTED_list_all_methods'
-
-
 class XendAPIAsyncProxy:
     """ A redirector for Async.Class.function calls to XendAPI
     but wraps the call for use with the XendTaskManager.
diff -r 4de1e743a5a8 -r 5dcb272de7e4 tools/python/xen/xm/main.py
--- a/tools/python/xen/xm/main.py       Wed Apr 04 15:00:57 2007 +0100
+++ b/tools/python/xen/xm/main.py       Wed Apr 04 18:42:20 2007 +0100
@@ -591,7 +591,7 @@ class Shell(cmd.Cmd):
         self.prompt = "xm> "
         if serverType == SERVER_XEN_API:
             try:
-                res = server.xenapi._UNSUPPORTED_list_all_methods()
+                res = server.xenapi.host.list_methods()
                 for f in res:
                     setattr(Shell, 'do_' + f + ' ', self.default)
             except:

_______________________________________________
Xen-changelog mailing list
Xen-changelog@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-changelog

<Prev in Thread] Current Thread [Next in Thread>
  • [Xen-changelog] [xen-unstable] Expose the method-listing call as host.list_methods., Xen patchbot-unstable <=