[openstack-dev] [Nova] RFC: Generate API sample files from API schemas

Kenichi Oomichi oomichi at mxs.nes.nec.co.jp
Thu Feb 6 13:38:22 UTC 2014


Hi,

I'd like to propose one idea that autogenerates API sample files from API
schema for Nova v3 API.

We are working on API validation for v3 API, the works require API schema
which is defined with JSONSchema for each API. On the other hand, API sample
files of v3 API are autogenerated from the template files of v3 API under
nova/tests/integrated/v3/api_samples, as api_samples's README.rst[1].
The API schema files are similar to the template files, because both represent
the API parameter structures and each API name.

For example, the template file of keypairs is
--------------------------------------------------------------------------
  {
      "keypair": {
          "name": "%(keypair_name)s"
      }
  }
--------------------------------------------------------------------------

and the API schema file is
--------------------------------------------------------------------------
  create = {
      'type': 'object',
      'properties': {
          'keypair': {
              'type': 'object',
              'properties': {
                  'name': {
                      'type': 'string', 'minLength': 1, 'maxLength': 255,
                      'pattern': '^[a-zA-Z0-9 _-]+$'
                  },
                  'public_key': {'type': 'string'},
              },
              'required': ['name'],
              'additionalProperties': False,
          },
      },
      'required': ['keypair'],
      'additionalProperties': False,
  }
--------------------------------------------------------------------------

When implementing new v3 API, we need to write/review both files and that
would be hard works. For reducing the workload, I'd like to propose one
idea[2] that autogenerates API sample files from API schema instead of
template files. We would not need to write a template file of a request.

The XML support is dropped from Nova v3 API, and the decision could make
this implementation easier. The NOTE is that we still need response template
files even if implementing this idea, because API schema files of response
don't exist.

Any comments are welcome.


Thanks
Ken'ichi Ohmichi

---
[1]: https://github.com/openstack/nova/blob/master/nova/tests/integrated/api_samples/README.rst
[2]: https://review.openstack.org/#/c/71465/




More information about the OpenStack-dev mailing list