
Reviewed-by: Daniel Barboza <danielhb@linux.vnet.ibm.com> On 12/26/2013 07:48 PM, Aline Manera wrote:
From: Aline Manera <alinefm@br.ibm.com>
controller.py file must contain all related to Kimchi API resources Common cherrypy functions must be in root.py
Signed-off-by: Aline Manera <alinefm@br.ibm.com> --- src/kimchi/controller.py | 20 -------------------- src/kimchi/root.py | 26 ++++++++++++++++++++++++-- 2 files changed, 24 insertions(+), 22 deletions(-)
diff --git a/src/kimchi/controller.py b/src/kimchi/controller.py index 13b394e..af30118 100644 --- a/src/kimchi/controller.py +++ b/src/kimchi/controller.py @@ -28,7 +28,6 @@ from functools import wraps
import kimchi.template -from kimchi import auth from kimchi.control.utils import get_class_name, internal_redirect, model_fn from kimchi.control.utils import parse_request, validate_method, validate_params from kimchi.exception import InvalidOperation, InvalidParameter, MissingParameter @@ -649,25 +648,6 @@ class Partition(Resource): def data(self): return self.info
-@cherrypy.expose -def login(*args): - params = parse_request() - try: - userid = params['userid'] - password = params['password'] - except KeyError, key: - raise cherrypy.HTTPError(400, "Missing parameter: '%s'" % key) - try: - auth.login(userid, password) - except OperationFailed: - raise cherrypy.HTTPError(401) - return '{}' - -@cherrypy.expose -def logout(): - auth.logout() - return '{}' - class Plugins(Collection): def __init__(self, model): super(Plugins, self).__init__(model) diff --git a/src/kimchi/root.py b/src/kimchi/root.py index 46403ab..21950bc 100644 --- a/src/kimchi/root.py +++ b/src/kimchi/root.py @@ -25,9 +25,12 @@ import cherrypy import json
+from kimchi import auth from kimchi import controller from kimchi import template from kimchi.config import get_api_schema_file +from kimchi.control.utils import parse_request +from kimchi.exception import OperationFailed
class Root(controller.Resource): @@ -52,8 +55,6 @@ class Root(controller.Resource): self.tasks = controller.Tasks(model) self.config = controller.Config(model) self.host = controller.Host(model) - self.login = controller.login - self.logout = controller.logout self.debugreports = controller.DebugReports(model) self.plugins = controller.Plugins(model) self.api_schema = json.load(open(get_api_schema_file())) @@ -87,3 +88,24 @@ class Root(controller.Resource): if page.endswith('.html'): return template.render('tabs/' + page, None) raise cherrypy.HTTPError(404) + + @cherrypy.expose + def login(self, *args): + params = parse_request() + try: + userid = params['userid'] + password = params['password'] + except KeyError, key: + raise cherrypy.HTTPError(400, "Missing parameter: '%s'" % key) + + try: + auth.login(userid, password) + except OperationFailed: + raise cherrypy.HTTPError(401) + + return '{}' + + @cherrypy.expose + def logout(self): + auth.logout() + return '{}'