Simple library for parsing OpenStack microversion headers.
Go to file
Louis Taylor 4b04aaf3b2 Make service_type a positional argument
This removes the assert to ensure a value for service_type is set. The
keyword style of calling can still be used, so

    microversion_parse.get_version(headers, service_type='compute')

will remain working.

Using an assert for this is probably inadvisable, since it will be
stripped away if python is run with -O.

Change-Id: I9775c5d87890c8ff4a6072c600d54fa47264fa9f
2016-04-08 14:03:08 +01:00
doc/source Include README.rst content on doc index 2016-03-31 18:07:23 +01:00
microversion_parse Make service_type a positional argument 2016-04-08 14:03:08 +01:00
.gitignore Initial commit 2016-03-22 15:29:38 +00:00
.gitreview Enable gerrit, gitreview and gate testing 2016-03-31 12:31:20 +01:00
.testr.conf Initial proof of concept of microversion_parse 2016-03-22 17:48:42 +00:00
LICENSE Initial commit 2016-03-22 15:29:38 +00:00
Makefile allow tox to skip missing interpreters 2016-03-24 13:28:08 +00:00
README.rst Cleanup README 2016-03-24 13:35:42 +00:00
requirements.txt Initial proof of concept of microversion_parse 2016-03-22 17:48:42 +00:00
setup.cfg Enable gerrit, gitreview and gate testing 2016-03-31 12:31:20 +01:00
setup.py Initial proof of concept of microversion_parse 2016-03-22 17:48:42 +00:00
test-requirements.txt Fix folded header checks for WebOb 2016-03-31 14:03:13 +01:00
tox.ini Enable gerrit, gitreview and gate testing 2016-03-31 12:31:20 +01:00

README.rst

microversion_parse

A simple parser for OpenStack microversion headers:

import microversion_parse

# headers is a dict of headers with folded (comma-separated
# values) or a list of header, value tuples
version = microversion_parse.get_version(
    headers, service_type='compute',
    legacy_headers=['x-openstack-nova-api-version'])

It processes microversion headers with the standard form:

OpenStack-API-Version: compute 2.1

If provided with a legacy_headers argument, this is treated as a list of headers to check for microversions. Some examples of headers include:

OpenStack-telemetry-api-version: 2.1
OpenStack-nova-api-version: 2.1
X-OpenStack-nova-api-version: 2.1

If a version string cannot be found, None will be returned. If the input is incorrect usual Python exceptions (ValueError, TypeError) are allowed to raise to the caller.