Generalize RAPI request handling flow
authorOleksiy Mishchenko <oleksiy@google.com>
Fri, 25 Apr 2008 10:05:20 +0000 (10:05 +0000)
committerOleksiy Mishchenko <oleksiy@google.com>
Fri, 25 Apr 2008 10:05:20 +0000 (10:05 +0000)
All request we goin to hanle have similar prerun steps, lets keep them in the same bucket.

Reviewd-by: iustinp

lib/rapi/RESTHTTPServer.py
lib/rapi/resources.py

index b6ea941..a59918d 100644 (file)
@@ -93,12 +93,7 @@ class RESTRequestHandler(BaseHTTPServer.BaseHTTPRequestHandler):
       return
     try:
       rname = self.R_Resource(self.path)
-      mname = 'do_' + self.command
-      if not hasattr(rname, mname):
-        self.send_error(501, "Unsupported method (%r)" % self.command)
-        return
-      method = getattr(rname, mname)
-      method()
+      rname.do_Request(self.command)
     except AttributeError, msg:
       self.send_error(501, "Resource is not available: %s" % msg)
 
index 1143655..dd3610e 100644 (file)
@@ -119,29 +119,23 @@ class R_Generic(object):
     self.code = 200
     self.result = None
 
-  def do_GET(self):
-    """Default GET flow.
+  def do_Request(self, request):
+    """Default request flow.
 
     """
     try:
-      self._get()
+      disp = getattr(self, '_%s' % request.lower())
+      disp()
       self.send(self.code, self.result)
     except RemoteAPIError, msg:
       self.send_error(self.code, str(msg))
     except ganeti.errors.OpPrereqError, msg:
       self.send_error(404, str(msg))
     except AttributeError, msg:
-      self.send_error(405, 'Method not Implemented: %s' % msg)
+      self.send_error(405, 'Method Not Implemented: %s' % msg)
     except Exception, msg:
       self.send_error(500, 'Internal Server Error: %s' % msg)
 
-  def _get(self):
-    """ GET Stub.
-
-    """
-    raise AttributeError("GET method is not implemented")
-
-
   def send(self, code, data=None):
     """ Printout data.