[openstack-dev] [Nova] Review request: Blurprint of API validation
Ken'ichi Ohmichi
oomichi at mxs.nes.nec.co.jp
Tue Jul 16 04:37:15 UTC 2013
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" <oomichi at mxs.nes.nec.co.jp> 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" <oomichi at mxs.nes.nec.co.jp> 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
> > OpenStack-dev at lists.openstack.org
> > http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev
>
> _______________________________________________
> OpenStack-dev mailing list
> OpenStack-dev at lists.openstack.org
> http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev
More information about the OpenStack-dev
mailing list