ia64/xen-unstable

changeset 13210:766eec31afab

Added __repr__ implementation, initialise last_login_method to None, and
use gettext's ugettext explicitly, rather than using gettext.install. These
things together improve the error messages that you get when using this
module incorrectly in the interactive interpreter.

Signed-off-by: Ewan Mellor <ewan@xensource.com>
author Ewan Mellor <ewan@xensource.com>
date Thu Dec 28 15:28:45 2006 +0000 (2006-12-28)
parents 3f24490932cd
children ce83c1896acc
files tools/python/xen/xm/XenAPI.py
line diff
     1.1 --- a/tools/python/xen/xm/XenAPI.py	Thu Dec 28 15:26:45 2006 +0000
     1.2 +++ b/tools/python/xen/xm/XenAPI.py	Thu Dec 28 15:28:45 2006 +0000
     1.3 @@ -50,7 +50,7 @@ import xmlrpclib
     1.4  import xen.util.xmlrpclib2
     1.5  
     1.6  
     1.7 -gettext.install('xen-xm')
     1.8 +translation = gettext.translation('xen-xm')
     1.9  
    1.10  class Failure(Exception):
    1.11      def __init__(self, details):
    1.12 @@ -68,7 +68,7 @@ class Failure(Exception):
    1.13  
    1.14      def __str__(self):
    1.15          try:
    1.16 -            return _(self.details[0]) % self._details_map()
    1.17 +            return translation.ugettext(self.details[0]) % self._details_map()
    1.18          except TypeError, exn:
    1.19              return "Message database broken: %s.\nXen-API failure: %s" % \
    1.20                     (exn, str(self.details))
    1.21 @@ -108,6 +108,8 @@ class Session(xen.util.xmlrpclib2.Server
    1.22                                                   encoding, verbose,
    1.23                                                   allow_none)
    1.24          self._session = None
    1.25 +        self.last_login_method = None
    1.26 +        self.last_login_params = None
    1.27  
    1.28  
    1.29      def xenapi_request(self, methodname, params):
    1.30 @@ -121,7 +123,11 @@ class Session(xen.util.xmlrpclib2.Server
    1.31                  result = _parse_result(getattr(self, methodname)(*full_params))
    1.32                  if result == _RECONNECT_AND_RETRY:
    1.33                      retry_count += 1
    1.34 -                    self._login(self.last_login_method, self.last_login_params)
    1.35 +                    if self.last_login_method:
    1.36 +                        self._login(self.last_login_method,
    1.37 +                                    self.last_login_params)
    1.38 +                    else:
    1.39 +                        raise xmlrpclib.Fault(401, 'You must log in')
    1.40                  else:
    1.41                      return result
    1.42              raise xmlrpclib.Fault(
    1.43 @@ -172,10 +178,18 @@ class _Dispatcher:
    1.44      def __init__(self, send, name):
    1.45          self.__send = send
    1.46          self.__name = name
    1.47 +
    1.48 +    def __repr__(self):
    1.49 +        if self.__name:
    1.50 +            return '<XenAPI._Dispatcher for %s>' % self.__name
    1.51 +        else:
    1.52 +            return '<XenAPI._Dispatcher>'
    1.53 +
    1.54      def __getattr__(self, name):
    1.55          if self.__name is None:
    1.56              return _Dispatcher(self.__send, name)
    1.57          else:
    1.58              return _Dispatcher(self.__send, "%s.%s" % (self.__name, name))
    1.59 +
    1.60      def __call__(self, *args):
    1.61          return self.__send(self.__name, args)