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] [XEND] Add debug class to Xen API plus no

To: xen-changelog@xxxxxxxxxxxxxxxxxxx
Subject: [Xen-changelog] [xen-unstable] [XEND] Add debug class to Xen API plus non-standard debug.wait().
From: Xen patchbot-unstable <patchbot-unstable@xxxxxxxxxxxxxxxxxxx>
Date: Thu, 25 Jan 2007 08:55:34 -0800
Delivery-date: Thu, 25 Jan 2007 09:50:23 -0800
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 Alastair Tse <atse@xxxxxxxxxxxxx>
# Date 1169654349 0
# Node ID a94363b85e192540bf94c4da60adcf4176ecbdd0
# Parent  da23e1b616b0a2abe46290c3ed8e18e8c95a25ab
[XEND] Add debug class to Xen API plus non-standard debug.wait().

debug.wait(seconds) will just do a time.sleep() so the task progress
support can be tested.

Signed-off-by: Alastair Tse <atse@xxxxxxxxxxxxx>
---
 tools/python/scripts/xapi.py     |    2 -
 tools/python/xen/xend/XendAPI.py |   47 +++++++++++++++++++++++++++++++++++++++
 2 files changed, 48 insertions(+), 1 deletion(-)

diff -r da23e1b616b0 -r a94363b85e19 tools/python/scripts/xapi.py
--- a/tools/python/scripts/xapi.py      Wed Jan 24 15:57:10 2007 +0000
+++ b/tools/python/scripts/xapi.py      Wed Jan 24 15:59:09 2007 +0000
@@ -662,7 +662,7 @@ def xapi_debug_wait(args, async = False)
     if len(args) > 0:
         secs = int(args[0])
     server, session = connect()
-    task_uuid = execute(server, 'Debug.wait', (session, secs), async=async)
+    task_uuid = execute(server, 'debug.wait', (session, secs), async=async)
     print 'Task UUID: %s' % task_uuid
 
 #
diff -r da23e1b616b0 -r a94363b85e19 tools/python/xen/xend/XendAPI.py
--- a/tools/python/xen/xend/XendAPI.py  Wed Jan 24 15:57:10 2007 +0000
+++ b/tools/python/xen/xend/XendAPI.py  Wed Jan 24 15:59:09 2007 +0000
@@ -260,6 +260,17 @@ def valid_task(func):
            _check_ref(XendTaskManager.get_task,
                       'TASK_HANDLE_INVALID', func, *args, **kwargs)
 
+def valid_debug(func):
+    """Decorator to verify if task_ref is valid before calling
+    method.
+
+    @param func: function with params: (self, session, task_ref)
+    @rtype: callable object
+    """
+    return lambda *args, **kwargs: \
+           _check_ref(lambda r: r in XendAPI._debug,
+                      'TASK_HANDLE_INVALID', func, *args, **kwargs)
+
 # -----------------------------
 # Bridge to Legacy XM API calls
 # -----------------------------
@@ -300,6 +311,7 @@ class XendAPI(object):
 
     __decorated__ = False
     __init_lock__ = threading.Lock()
+    _debug = {}
     
     def __new__(cls, *args, **kwds):
         """ Override __new__ to decorate the class only once.
@@ -337,6 +349,7 @@ class XendAPI(object):
             'SR'      : valid_sr,
             'PIF'     : valid_pif,
             'task'    : valid_task,
+            'debug'   : valid_debug,
         }
 
         # Cheat methods
@@ -1866,6 +1879,40 @@ class XendAPI(object):
         return xen_api_success_void()
 
 
+    # Xen API: Class debug
+    # ----------------------------------------------------------------
+
+    debug_methods = [('destroy', None),
+                     ('get_record', 'debug')]
+    debug_funcs = [('wait', None),
+                   ('return_failure', None)]
+    
+    def debug_wait(self, session, wait_secs):
+         import time
+         prog_units = 100/float(wait_secs)
+         for i in range(int(wait_secs)):
+             XendTask.log_progress(prog_units * i, prog_units * (i + 1),
+                                   time.sleep, 1)
+         return xen_api_success_void()
+
+
+    def debug_return_failure(self, session):
+        return xen_api_error(['DEBUG_FAIL', session])
+
+    def debug_create(self, session):
+        debug_uuid = uuid.createString()
+        self._debug[debug_uuid] = None
+        return xen_api_success(debug_uuid)
+
+    def debug_destroy(self, session, debug_ref):
+        del self._debug[debug_ref]
+        return xen_api_success_void()
+
+    def debug_get_record(self, session, debug_ref):
+        return xen_api_success({'uuid': debug_ref})
+
+             
+
 class XendAPIAsyncProxy:
     """ A redirector for Async.Class.function calls to XendAPI
     but wraps the call for use with the XendTaskManager.

_______________________________________________
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] [XEND] Add debug class to Xen API plus non-standard debug.wait()., Xen patchbot-unstable <=