Simple library for parsing OpenStack microversion headers.
Go to file
PollyZ 1f6eac7c3d Convert dict headers and Webob headers into lowercase.
In the fold_headers function, if the headers behaves like a dict,
they were being retured unchanged. This would cause issues in the
later processing to extract the microversion header, which matches
on lower case strings.

Convert these headers to lowercase also provide a test case to
validate the header is being parsed correctly.

Change-Id: I8501c813d668c0a32905906e4ef3f8c6c6b12de2
Close-Bug:# 1606351
2016-07-29 13:22:36 -05:00
doc/source Include README.rst content on doc index 2016-03-31 18:07:23 +01:00
microversion_parse Convert dict headers and Webob headers into lowercase. 2016-07-29 13:22:36 -05: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 Fix summary information used in pypi display 2016-04-11 18:59:35 +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.