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(a)ovirt.org
>>>>>>>>>
http://lists.ovirt.org/mailman/listinfo/kimchi-devel
>>>>>>>>>
>>>>>>>>
>>>>>>>> _______________________________________________
>>>>>>>> Kimchi-devel mailing list
>>>>>>>> Kimchi-devel(a)ovirt.org
>>>>>>>>
http://lists.ovirt.org/mailman/listinfo/kimchi-devel
>>>>>>>>
>>>>>>>
>>>>>>
>>>>>
>>>>
>>>
>>
>