标签元数据定义 - 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

工作项

将对以下内容进行更改

  1. 支持新子命令的 python-glanceclient

依赖项

与 Glance 相同的依赖项。

测试

将为所有可能的代码添加单元测试,目标是尽可能地隔离功能。

文档影响

需要有关新 API 扩展和用法的文档

参考资料

Youtube summit 回顾 Graffiti Juno POC 演示,其中包含标签。

当前 glance 元数据定义目录文档。

简单的应用程序类别标签(无层次结构)

可以将图像、卷、软件应用程序分配到类别。 类似地,可以“标记”flavor 或 host aggregate 以支持应用程序类别,例如“BigData”或“Encryption”。 通过匹配类别,可以轻松地将支持该应用程序类别的 flavor 或 host aggregate 配对。

注意:如果资源类型不提供“标签”机制(仅键值对),则应添加蓝图以支持该类型资源的标签。 在没有该蓝图的情况下,可以将键“tags”设置为资源上的逗号分隔的标签列表。