[Kimchi-devel] [PATCH] [Wok 1/7] Create log_request() method for code simplification

Aline Manera alinefm at linux.vnet.ibm.com
Thu Sep 1 13:08:00 UTC 2016



On 08/31/2016 06:06 PM, Lucio Correia wrote:
> Signed-off-by: Lucio Correia <luciojhc at linux.vnet.ibm.com>
> ---
>   src/wok/control/base.py | 47 +++++++++++++++++------------------------------
>   src/wok/root.py         | 41 ++++-------------------------------------
>   2 files changed, 21 insertions(+), 67 deletions(-)
>
> diff --git a/src/wok/control/base.py b/src/wok/control/base.py
> index 04cf2cb..f4443c8 100644
> --- a/src/wok/control/base.py
> +++ b/src/wok/control/base.py
> @@ -43,6 +43,20 @@ RESOURCE_DEFAULT_LOG = "WOKRES0001L"
>   LOG_DISABLED_METHODS = ['GET']
>

> +def log_request(code, params, exception, method, status, user=None):
> +    log_id = RequestRecord(
> +        {'code': code, 'params': params},
> +        exception,
> +        app=get_plugin_from_request(),
> +        req=method,
> +        status=status,
> +        user=user or cherrypy.session.get(USER_NAME, 'N/A'),
> +        ip=cherrypy.request.remote.ip
> +    ).log()
> +
> +    return log_id
> +
> +

As this function may be used by everyone, I suggest to move it to 
control/utils.py

>   class Resource(object):
>       """
>       A Resource represents a single entity in the API (such as a Virtual
> @@ -157,16 +171,7 @@ class Resource(object):
>                   # log request
>                   code = self.getRequestMessage(method, action_name)
>                   reqParams = utf8_dict(self.log_args, request)
> -                RequestRecord(
> -                    reqParams,
> -                    details,
> -                    app=get_plugin_from_request(),
> -                    msgCode=code,
> -                    req=method,
> -                    status=status,
> -                    user=cherrypy.session.get(USER_NAME, 'N/A'),
> -                    ip=cherrypy.request.remote.ip
> -                ).log()
> +                log_request(code, reqParams, details, method, status)
>
>           wrapper.__name__ = action_name
>           wrapper.exposed = True
> @@ -220,16 +225,7 @@ class Resource(object):
>               # log request
>               if method not in LOG_DISABLED_METHODS:
>                   code = self.getRequestMessage(method)
> -                RequestRecord(
> -                    self.log_args,
> -                    details,
> -                    app=get_plugin_from_request(),
> -                    msgCode=code,
> -                    req=method,
> -                    status=status,
> -                    user=cherrypy.session.get(USER_NAME, 'N/A'),
> -                    ip=cherrypy.request.remote.ip
> -                ).log()
> +                log_request(code, self.log_args, details, method, status)
>
>           return result
>
> @@ -462,16 +458,7 @@ class Collection(object):
>                   # log request
>                   code = self.getRequestMessage(method)
>                   reqParams = utf8_dict(self.log_args, params)
> -                RequestRecord(
> -                    reqParams,
> -                    details,
> -                    app=get_plugin_from_request(),
> -                    msgCode=code,
> -                    req=method,
> -                    status=status,
> -                    user=cherrypy.session.get(USER_NAME, 'N/A'),
> -                    ip=cherrypy.request.remote.ip
> -                ).log()
> +                log_request(code, reqParams, details, method, status)
>
>
>   class AsyncCollection(Collection):
> diff --git a/src/wok/root.py b/src/wok/root.py
> index e54bf38..8f2f764 100644
> --- a/src/wok/root.py
> +++ b/src/wok/root.py
> @@ -29,10 +29,9 @@ from wok import template
>   from wok.i18n import messages
>   from wok.config import paths as wok_paths
>   from wok.control import sub_nodes
> -from wok.control.base import Resource
> +from wok.control.base import log_request, Resource
>   from wok.control.utils import parse_request
>   from wok.exception import MissingParameter
> -from wok.reqlogger import RequestRecord
>
>
>   ROOT_REQUESTS = {
> @@ -156,8 +155,6 @@ class WokRoot(Root):
>           details = None
>           method = 'POST'
>           code = self.getRequestMessage(method, 'login')
> -        app = 'wok'
> -        ip = cherrypy.request.remote.ip
>
>           try:
>               params = parse_request()
> @@ -165,18 +162,7 @@ class WokRoot(Root):
>               password = params['password']
>           except KeyError, item:
>               details = e = MissingParameter('WOKAUTH0003E', {'item': str(item)})
> -
> -            RequestRecord(
> -                params,
> -                details,
> -                app=app,
> -                msgCode=code,
> -                req=method,
> -                status=400,
> -                user='N/A',
> -                ip=ip
> -            ).log()
> -
> +            log_request(code, params, details, method, 400)
>               raise cherrypy.HTTPError(400, e.message)
>
>           try:
> @@ -186,16 +172,7 @@ class WokRoot(Root):
>               status = e.status
>               raise
>           finally:
> -            RequestRecord(
> -                params,
> -                details,
> -                app=app,
> -                msgCode=code,
> -                req=method,
> -                status=status,
> -                user='N/A',
> -                ip=ip
> -            ).log()
> +            log_request(code, params, details, method, status)
>
>           return json.dumps(user_info)
>
> @@ -204,19 +181,9 @@ class WokRoot(Root):
>           method = 'POST'
>           code = self.getRequestMessage(method, 'logout')
>           params = {'username': cherrypy.session.get(auth.USER_NAME, 'N/A')}
> -        ip = cherrypy.request.remote.ip
>
>           auth.logout()
>
> -        RequestRecord(
> -            params,
> -            None,
> -            app='wok',
> -            msgCode=code,
> -            req=method,
> -            status=200,
> -            user=params['username'],
> -            ip=ip
> -        ).log()
> +        log_request(code, params, None, method, 200, user=params['username'])
>
>           return '{}'




More information about the Kimchi-devel mailing list