跳转到主要内容

OpenStack microversion头解析器

项目描述

一组用于管理OpenStack microversion头部的函数,这些函数可以在中间件、应用程序处理器和装饰器中使用,以有效地管理microversion。

此外,在middleware模块中还包括一个MicroversionMiddleware,它将处理传入的microversion头部。

get_version

OpenStack microversion头部的简单解析器

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'])

# If headers are not already available, a dict of headers
# can be extracted from the WSGI environ
headers = microversion_parse.headers_from_wsgi_environ(environ)
version = microversion_parse.get_version(
    headers, service_type='placement')

它处理标准形式的microversion头部

OpenStack-API-Version: compute 2.1

在这种情况下,响应将是‘2.1’。

如果提供了legacy_headers参数,这被视为一个包含额外头部以检查microversion的列表。一些头部的示例包括

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

如果找不到版本字符串,将返回None。如果输入不正确,允许通常的Python异常(ValueError,TypeError)抛出到调用者。

parse_version_string

一个函数,将版本字符串转换为Version,一个可比较的namedtuple

version_tuple = microversion_parse.parse_version_string('2.1')

如果提供的字符串不是有效的microversion字符串,将引发TypeError

extract_version

get_versionparse_version_string 合并,以在一系列头部中找到并验证特定服务类型的微版本。

version_tuple = microversion_parse.extract_version(
    headers,  # a representation of headers, as accepted by get_version
    service_type,  # service type identify to match in headers
    versions_list,  # an ordered list of strings of version numbers that
                    # are the valid versions presented by this service
)

latest 将被转换为 versions_list 中的最大版本号。

如果找到的版本不在 versions_list 中,将抛出 ValueError

注意,extract_version 不支持 legacy_headers

MicroversionMiddleware

这是一个 WSGI 中间件,可以包装需要微版本意识的应用程序。应用程序将获得一个包含 'SERVICE_TYPE.microversion' 键的 WSGI 环境变量,该键具有与 SERVICE_TYPE 匹配的 'openstack-api-version' 头部中找到的微版本值。如果没有找到头,将设置最小微版本。如果使用了特殊关键词 'latest',则将设置最大微版本。

如果请求的微版本不可用,将返回 406 响应。

如果解析提供的头时出错,将返回 400 响应。

否则,将调用应用程序。

中间件在创建时进行配置。需要三个参数

app

堆栈中下一个 WSGI 中间件或应用程序。

service_type

应用程序的服务类型,用于识别微版本头部。

versions_list

一个按顺序排列的应用程序合法微版本列表(作为字符串)。假设任何使用微版本的应用程序都会为自己的维护和文档有一个这样的列表。

一个命名参数是可选的

json_error_formatter

一个 Webob 错误格式化程序,可以用于在期望 JSON 时结构化响应。

例如

def app():
    app = middleware.MicroversionMiddleware(
        MyWSGIApp(), 'cats', ['1.0', '1.1', '1.2'])
    return app

项目详情


下载文件

为您的平台下载文件。如果您不确定选择哪个,请了解更多关于 安装包 的信息。

源分发

microversion_parse-2.0.0.tar.gz (20.8 kB 查看哈希值)

上传

构建分发

microversion_parse-2.0.0-py3-none-any.whl (19.6 kB 查看哈希值)

上传 Python 3

由以下支持