Nova 实体转换器

https://blueprints.launchpad.net/vitrage/+spec/nova-entity-transformer

当实体事件被引入 Vitrage 图时,必须将其转换为图可以处理的类型。实体转换器负责将实体事件转换为实体包装器。每种实体类型都有其自身的转换器。

所有转换器都应使用 python 编写,并添加到 vitrage.conf 中。实体转换器引擎允许服务提供商通过为每种实体类型编写指定的转换器来扩展对其他实体的支持。

首先要实现的转换器是

  • Nova 实例转换器

  • Nova 主机转换器

问题描述

在 Vitrage 图中,每个(实体的一个)实例都表示为一个顶点。因此,转换器的输出是给定实体的顶点(“实体顶点”)。此外,转换器还返回一个(顶点、边)对列表。配对中的顶点描述了一个具有有限属性的邻居,而边表示两个顶点之间的连接,描述了它们的关系。

Vitrage 应该支持不同的实体类型

  • Openstack 类型(Nova.instance、Nova.host 等)

  • 非 Openstack 类型(Nagios 测试、物理资源等)

注意:在 Vitrage 图中,每个顶点都包含一个键值对字典,表示实体属性。同样,每个边都包含一个键值对字典,表示两个顶点之间关系的各个方面。

提议的变更

当实体处理器收到新的实体事件时,它会要求实体转换器将事件转换为处理器可以进入 Vitrage 图的对象。

转换器操作:当接收到实体事件时,转换器引擎首先识别实体类型,并相应地激活相应的转换器。每个转换器都继承自 Transformer 基类,并实现三种方法

  • 返回实体包装器的方法

  • 返回键字段及其顺序的方法。键字段是必需的

  • 给定实体事件时返回键的方法

输出对象

转换器返回一个实体包装器,该包装器是一个元组,包含一个实体顶点和描述实体邻居(关系)的(顶点、边)对列表。

实体(源)顶点描述

必需属性

  • key - 对于 Openstack 实体,这是 Openstack ID。对于非 Openstack

    实体,这是 Vitrage 将生成的 ID

  • Type - 资源 物理资源 告警 测试 结果

  • Sub Type - 告警名称、主机、实例、交换机等。

  • 实体 名称

  • Is Deleted- 用于图维护,并标记可以被

    垃圾回收器收集的项目

可选属性(顶点元数据)

  • State

  • 项目 ID

可选属性列表是灵活的,可以根据需要进行更改。此外,每种实体类型都可以拥有其自身的相关属性。

(顶点、边)对

该对描述了实体的邻居顶点及其关系。关系可以是物理的、虚拟的或(将来)逻辑的

目标 顶点 描述:

配对中的顶点必须具有足够的数据来帮助唯一指定 Vitrage 图中将连接到该实体的顶点。当前,为此所需的最少信息是

  • ID - 对于每个实体,必须具有连接的顶点的数据

  • Type - 资源 物理资源 告警 测试 结果

  • Sub Type - 告警名称、主机、实例、交换机等。

描述:

  • 源 ID 实体 ID

  • 目标 ID - 对于每个实体,必须具有连接的顶点的数据

  • 关系类型 - 包含、运行、附加等。

事件类型

事件发生的类型,可能的选项

  • CREATE - 创建了新的实体

  • UPDATE - 实体已更新

  • DELETE - 删除实体时

备选方案

数据模型影响

待定

REST API 影响

版本影响

其他最终用户影响

部署者影响

待定

开发者影响

待定

Horizon 影响

实现

负责人

liat har-tal

工作项

依赖项

测试

所有代码都将被测试

文档影响

参考资料

Vitrage 项目 <https://wiki.openstack.org/wiki/Vitrage>