
Hi Ramon, Please, check the attached patch. I did those changes on top of your patch and now the validation using JSON Schema is working as expected. Let me know if you have any doubts about the changes I did. Regards, Aline Manera On 02/03/2017 11:13 AM, Ramon Medeiros wrote:
Just rebase it:
On 2/3/17 11:06 AM, Aline Manera wrote:
I am not able to apply the attached patch:
[alinefm@alinefm-TP440 kimchi]$ git am -3 /home/alinefm/mail-patches/0001-Bug-fix-147-Block-authentication-request-after-too-m.patch Applying: Bug fix #147: Block authentication request after too many failures fatal: sha1 information is lacking or useless (src/wok/i18n.py). error: could not build fake ancestor Patch failed at 0001 Bug fix #147: Block authentication request after too many failures The copy of the patch that failed is found in: /home/alinefm/wok/.git/modules/src/wok/plugins/kimchi/rebase-apply/patch When you have resolved this problem, run "git am --continue". If you prefer to skip this patch, run "git am --skip" instead. To restore the original branch and stop patching, run "git am --abort".
On 02/01/2017 10:40 AM, Ramon Medeiros wrote:
Here is the patch
On 1/31/17 10:36 AM, Aline Manera wrote:
Hrm... Could you send the patch so I can do some debug?
On 01/31/2017 10:32 AM, Ramon Medeiros wrote:
On 1/31/17 10:30 AM, Aline Manera wrote:
Hi Ramon,
Does the WokRoot class have set self.api_schema attribute to get the right data?
It should have something like:
self.api_schema = json.load(<path>)
Regards, Aline Manera
yes, it is:
class WokRoot(Root): def __init__(self, model, dev_env=False): super(WokRoot, self).__init__(model, dev_env) self.default_page = 'wok-ui.html' for ident, node in sub_nodes.items(): setattr(self, ident, node(model)) with open(os.path.join(wok_paths.src_dir, 'API.json')) as f: self.api_schema = json.load(f)
On 01/30/2017 04:41 PM, Ramon Medeiros wrote: > > > On 1/30/17 3:30 PM, Aline Manera wrote: >> Hi Ramon, >> >> There is a function in src/wok/control/utils.py called >> model_fn() which determines the model function name used by >> controller. >> I think you need to use the same function in your code and then >> update API.json accordingly. >> > model_fn returned wokroot_login, which i already tried. May i > missing something on API.json? >> On 01/27/2017 12:26 PM, Ramon Medeiros wrote: >>> Just adding more information: >>> >>> at the pdb output, you can see "wokroot_login" as method. I >>> have already tried this one at API.json >>> >>> >>> On 1/27/17 12:24 PM, Ramon Medeiros wrote: >>>> Propose: valid strings username and password with API.json >>>> >>>> Issue: validator is not recognizing method >>>> >>>> >>>> Just saw that src/wok/control/utils.py has a method >>>> validate_params, that reads API and validate the output of >>>> request_params. I've added this changes to code: >>>> >>>> diff --git a/src/wok/API.json b/src/wok/API.json >>>> index 8965db9..3faa31b 100644 >>>> --- a/src/wok/API.json >>>> +++ b/src/wok/API.json >>>> @@ -2,5 +2,24 @@ >>>> "$schema": "http://json-schema.org/draft-03/schema#", >>>> "title": "Wok API", >>>> "description": "Json schema for Wok API", >>>> - "type": "object" >>>> + "type": "object", >>>> + "properties": { >>>> + "login": { >>>> + "type": "object", >>>> + "properties": { >>>> + "username": { >>>> + "description": "Username", >>>> + "required": true, >>>> + "type": "string", >>>> + "error": "WOKAUTH0003E" >>>> + }, >>>> + "password": { >>>> + "description": "Password", >>>> + "required": true, >>>> + "type": "string", >>>> + "error": "WOKAUTH0003E" >>>> + } >>>> + } >>>> + } >>>> + } >>>> } >>>> diff --git a/src/wok/root.py b/src/wok/root.py >>>> index e4cecae..55e1886 100644 >>>> --- a/src/wok/root.py >>>> +++ b/src/wok/root.py >>>> @@ -32,7 +32,7 @@ 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.utils import parse_request >>>> +from wok.control.utils import parse_request, validate_params >>>> from wok.exception import MissingParameter, UnauthorizedError >>>> from wok.reqlogger import log_request >>>> >>>> @@ -170,6 +170,8 @@ class WokRoot(Root): >>>> >>>> try: >>>> params = parse_request() >>>> + validate_params(params, self, "login") >>>> username = params['username'] >>>> password = params['password'] >>>> except KeyError, item: >>>> >>>> >>>> Debugging the code, i just saw that the action_name passed to >>>> validate_params (login) is not found by the validator: >>>> >>>> /root/WOK/src/wok/control/utils.py(109)validate_params() >>>> -> validator.validate(request) >>>> (Pdb) s >>>> --Call-- >>>> > >>>> /usr/lib/python2.7/site-packages/jsonschema/validators.py(121)validate() >>>> >>>> -> def validate(self, *args, **kwargs): >>>> (Pdb) n >>>> > >>>> /usr/lib/python2.7/site-packages/jsonschema/validators.py(122)validate() >>>> >>>> -> for error in self.iter_errors(*args, **kwargs): >>>> (Pdb) s >>>> --Call-- >>>> > >>>> /usr/lib/python2.7/site-packages/jsonschema/validators.py(78)iter_errors() >>>> -> def iter_errors(self, instance, _schema=None): >>>> (Pdb) n >>>> > >>>> /usr/lib/python2.7/site-packages/jsonschema/validators.py(79)iter_errors() >>>> -> if _schema is None: >>>> (Pdb) >>>> > >>>> /usr/lib/python2.7/site-packages/jsonschema/validators.py(80)iter_errors() >>>> -> _schema = self.schema >>>> (Pdb) >>>> > >>>> /usr/lib/python2.7/site-packages/jsonschema/validators.py(82)iter_errors() >>>> -> scope = _schema.get(u"id") >>>> (Pdb) >>>> > >>>> /usr/lib/python2.7/site-packages/jsonschema/validators.py(83)iter_errors() >>>> -> if scope: >>>> (Pdb) print _schema >>>> {u'$schema': u'http://json-schema.org/draft-03/schema#', >>>> u'type': u'object', u'description': u'Json schema for Wok >>>> API', u'properties': {u'wokroot_login': {u'type': u'object', >>>> u'properties': {u'username': {u'required': True, u'type': >>>> u'string', u'description': u'Username', u'error': >>>> u'WOKAUTH0003E'}, u'password': {u'required': True, u'type': >>>> u'string', u'description': u'Password', u'error': >>>> u'WOKAUTH0003E'}}}}, u'title': u'Wok API'} >>>> (Pdb) n >>>> > >>>> /usr/lib/python2.7/site-packages/jsonschema/validators.py(85)iter_errors() >>>> -> try: >>>> (Pdb) >>>> > >>>> /usr/lib/python2.7/site-packages/jsonschema/validators.py(86)iter_errors() >>>> -> ref = _schema.get(u"$ref") >>>> >>>> How i can know the correct one? >>>> >>>> _______________________________________________ >>>> Kimchi-devel mailing list >>>> Kimchi-devel@ovirt.org >>>> http://lists.ovirt.org/mailman/listinfo/kimchi-devel >>>> >>> >>> _______________________________________________ >>> Kimchi-devel mailing list >>> Kimchi-devel@ovirt.org >>> http://lists.ovirt.org/mailman/listinfo/kimchi-devel >>> >> >