Hi Russell, I assigned you as the approver of bp "nova-api-validation-fw", so could you take a look at this bp?
You have changed the priority from Medium to Low these days. Could you show your concerns about this bp if you have. Thanks Ken'ichi Ohmichi --- On Tue, 9 Jul 2013 20:45:57 +0900 "Ken'ichi Ohmichi" <[email protected]> wrote: > > Hi, > > The blueprint "nova-api-validation-fw" has not been approved yet. > I hope the core patch of this blueprint is merged to Havana-2, > because of completing comprehensive API validation of Nova v3 API > for Havana release. What should we do for it? > > > The summary of "nova-api-validation-fw": > * The patch review is in good progress. > * "nova-api-validation-fw" is API input validation framework. > * Simplify the code in the extensions of Nova v3 API. > * Define API schema with JSON Schema. > * Define common data formats to standardize whole of Nova v3 API. > * Possible to choose APIs which are applied with this framework. > * Possible to migrate other web framework. > > > The details of "nova-api-validation-fw" are the following: > > * The patch review is in good progress. > 7 reviewers have marked +1 now. > We are waiting for the approval of this blueprint before merging the > patch. (https://review.openstack.org/#/c/25358/) > > * "nova-api-validation-fw" is API input validation framework. > This framework validates API parameters in a request body before the > execution of API method. If the parameter is invalid, nova-api returns > a BadRequest response including its reason. > > * Simplify the code in the extensions of Nova v3 API. > There are a lot of validation code in each API method. > After applying this framework, we will be able to separate them from > API methods by defining API schema. That makes the code more readable. > Also through trying to define API schema of each API, we will find the > lacks of validation code and complement them for better v3 API. > Necessary API schemas are for API which contains a request body. They > are 37 APIs on Nova v3 API now, and they will increase later because > the tasks, which port v2 API to v3 API, is in progress. > > * Define API schema with JSON Schema. > JSON Schema contains many features for validation, the details are > written on http://json-schema.org/. > Here is the schema of v3 keypairs API as a sample: > == Request body sample of keypairs API =============== > { > "keypair": { > "name": "keypair-dab428fe-6186-4a14-b3de-92131f76cd39", > "public_key": "ssh-rsa AAAAB3NzaC1yc2EA[..]== Generated by Nova" > } > == API schema of keypairs API ======================== > { > 'type': 'object', > 'properties': { > 'keypair': { > 'type': 'object', > 'properties': { > 'name': {'type': 'string', 'minLength': 1, 'maxLength': > 255}, > 'public_key': {'type': 'string'}, > }, > 'required': ['name'], > }, > }, > 'required': ['keypair'], > } > > * Define common data formats to standardize whole of Nova v3 API. > We can define common data formats with FormatChecker of JSON Schema > library. > > e.g. Data format of 'boolean': > @jsonschema.FormatChecker.cls_checks('boolean') > def validate_boolean_format(instance): > return instance.upper() == 'TRUE' or instance.upper() == 'FALSE' > > The formats can be used in API schema: > 'onSharedStorage': { > 'type': 'string', 'format': 'boolean', > }, > > By re-using these common formats in many API schemas, that will be > able to standardize whole of Nova v3 API. > > * Possible to choose APIs which are applied with this framework. > We can apply this framework to Nova v3 API only, the existing API (v2) can > be out of scope of this framework. > > * Possible to migrate other web framework. > The API validation of this framework is executed with the decorator of API > method, that means this framework does not depend on web framework. > Also when migrating other web framework(e.g. Pecan/WSME) in the future, we > will be able to use this framework. > > > Thanks > Ken'ichi Ohmichi > > --- > On Fri, 5 Jul 2013 16:27:39 +0900 > "Ken'ichi Ohmichi" <[email protected]> wrote: > > > > Hi, > > > > I have submitted a blueprint[1] and a patch[2] for Nova API validation. > > I request someone to review the blueprint and hopefully approve it. > > > > This blueprint was approved once, but the Definition has been changed to > > Discussion because we discussed what is better validation mechanism "WSME > > original validation or JSON Schema". IIUC, we have found the advantages > > of JSON Schema through the discussion. [3] > > > > Also we have found the way to overlap JSON Schema with WSME, so we will > > be able to use JSON Schema also when the web framework of Nova is changed > > to WSME. [4] > > > > My latest patch has been implemented with JSON Schema[2], and I think API > > validation with JSON Schema is useful for Nova v3 API, because the API has > > complex API parameters and JSON Schema can check complex parameters > > naturally. > > > > > > Any comments are welcome :-) > > > > [1]: > > https://blueprints.launchpad.net/openstack/?searchtext=nova-api-validation-fw > > [2]: https://review.openstack.org/#/c/25358/ > > [3]: > > http://lists.openstack.org/pipermail/openstack-dev/2013-June/009824.html > > - http://lists.openstack.org/pipermail/openstack-dev/2013-June/009926.html > > - http://lists.openstack.org/pipermail/openstack-dev/2013-June/009937.html > > - http://lists.openstack.org/pipermail/openstack-dev/2013-June/009970.html > > - http://lists.openstack.org/pipermail/openstack-dev/2013-June/010057.html > > [4]: > > http://lists.openstack.org/pipermail/openstack-dev/2013-June/010814.html > > > > > > Thanks > > Ken'ichi Ohmichi > > > > _______________________________________________ > > OpenStack-dev mailing list > > [email protected] > > http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev > > _______________________________________________ > OpenStack-dev mailing list > [email protected] > http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev _______________________________________________ OpenStack-dev mailing list [email protected] http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev
