标签元数据定义 - python-glanceclient 变更¶
https://blueprints.launchpad.net/glance/+spec/metadefs-tags-cli
此蓝图添加了对元数据定义 (metadef) 标签的支持代码。metadef 标签目录已获得批准,并在 Kilo 版本中添加到 Glance 服务器中。
这里是已实现的 Kilo 规范,供参考:https://github.com/openstack/glance-specs/blob/master/specs/kilo/metadefs-tags.rst
问题描述¶
此蓝图指定了 metadef 标签的 CRUD 细节。
此蓝图的大部分工作是在 Kilo 时间范围内完成的,但未能及时通过评审流程并发布。
提议的变更¶
我们建议增强 python-glanceclient,以允许创建、检索、更新和删除 metadef 标签。
以下子命令将被添加到 python-glanceclient
- o md-tag-create –name <NAME> <NAMESPACE>
将标签 <NAME> 添加到命名空间 <NAMESPACE>。保留所有其他标签名称。
- o md-tag-create-multiple –names <NAMES> [–delim <DELIM>] <NAMESPACE>
将 <NAMESPACE> 中的所有标签替换为 <NAMES> 中列出的标签。可以使用单字符 <DELIM> 覆盖列表中使用的分隔符。默认分隔符是逗号。
- o md-tag-delete <NAMESPACE> <TAG>
从命名空间中删除标签 <TAG>。
- o md-tag-list <NAMESPACE>
列出与命名空间关联的所有标签。
- o md-tag-show <NAMESPACE> <TAG>
显示指定标签的详细信息。
- o md-tag-update –name <NAME> <NAMESPACE> <TAG>
将与 <NAMESPACE> <TAG> 关联的标签重命名为新的 <NAME>。
- o md-namespace-tags-delete <NAMESPACE>
删除与命名空间关联的所有标签。
在指定 –os-image-api-version 为 2 时,允许使用这些子命令。例如:glance –os-image-api-version 2 md-tag-list <NAMESPACE>
这与实现其他 metadef 命令的方式一致。
备选方案¶
有人建议使用替代的“help”列表来显示 metadef 相关子命令,以减少“md”相关子命令的数量。如果这样做,应在单独的 bug 中处理。
数据模型影响¶
无。以下是 Kilo 中实现的数据库模式。为了便于阅读,未显示约束。
基本模式
CREATE TABLE `metadef_tags` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`namespace_id` int(11) NOT NULL,
`name` varchar(80) NOT NULL,
`created_at` timestamp NOT NULL,
`updated_at` timestamp
)
REST API 影响¶
无。python-glanceclient 将使用 Kilo 中创建的 metadef Tag REST API。
API 版本
所有 URL 都在 v2 Glance API 下。如果未明确指定,则假定 /v2/<url>
安全影响¶
无
通知影响¶
无
其他最终用户影响¶
我们打算通过 Horizon 公开此功能,并且正在进行相关的蓝图工作。
性能影响¶
预计没有。
预计这将从 Horizon 调用,当管理员想要将标签注释到图像和实例等事物上时。为了获取可用标签或创建新标签,将调用此 API。
其他部署者影响¶
无
开发人员影响¶
无(新 API)
实现¶
负责人¶
- 主要负责人
wayne-okuma
- 其他贡献者
无
评审人员¶
- 核心评审人
zhiyan Ian Cordasco (sigmavirus24) Stuart McLaren
- 其他审核员
lakshmi-sampath travis-tripp
工作项¶
将对以下内容进行更改
支持新子命令的 python-glanceclient
依赖项¶
与 Glance 相同的依赖项。
测试¶
将为所有可能的代码添加单元测试,目标是尽可能地隔离功能。
文档影响¶
需要有关新 API 扩展和用法的文档
参考资料¶
Youtube summit 回顾 Graffiti Juno POC 演示,其中包含标签。
简单的应用程序类别标签(无层次结构)
可以将图像、卷、软件应用程序分配到类别。 类似地,可以“标记”flavor 或 host aggregate 以支持应用程序类别,例如“BigData”或“Encryption”。 通过匹配类别,可以轻松地将支持该应用程序类别的 flavor 或 host aggregate 配对。
注意:如果资源类型不提供“标签”机制(仅键值对),则应添加蓝图以支持该类型资源的标签。 在没有该蓝图的情况下,可以将键“tags”设置为资源上的逗号分隔的标签列表。