Vitrage 多租户支持

当一个租户使用 Vitrage API 时,我们希望只向他展示与他相关的数据。

问题描述

Vitrage 需要在其 API 和 CLI 中只显示与该租户相关的数据(由于每个租户的无关性和隐私性,不能显示所有数据)。因此,对于每个数据源和实体,我们需要知道要向该租户显示哪些相关数据。我们还希望如果有人添加 `all_tenants` 属性,则显示所有数据。

提议的变更

以下是每个 Vitrage API 如何为每个租户表现的描述

获取告警
  1. 查找具有请求的 `project_id` 的所有告警(如果项目是 admin,则也显示没有 `project_id` 属性的告警)

  2. 查找具有请求的 `project_id` 的所有资源,并返回附加到它们的告警。

  3. 合并来自上一步的结果并返回。

获取根本原因分析 (RCA)
  1. 递归查找此告警导致的所有告警。当到达 `project_id` 不相同(或资源 `project_id` 相同)的告警时,停止递归,并将此最后一个告警包含在响应中。

  2. 递归查找导致此告警的所有告警。当到达 `project_id` 不相同(或资源 `project_id` 相同)的告警时,停止递归,并将此最后一个告警包含在响应中。

  3. 合并来自上一步的结果并返回。

获取拓扑
  1. 查找 `project_id` 的所有连通分量。

  2. 对于每个分量,选择一个实体并找到所有通往“openstack.cluster”实体的路径(无环)。将路径中的所有顶点添加到该分量中。

  3. 合并所有分量并返回。

备注:API 和 CLI 需要表现相同。

备选方案

数据模型影响

REST API 影响

安全影响

流水线影响

其他最终用户影响

性能/可扩展性影响

其他部署者影响

开发者影响

实现

负责人

主要负责人

alexey_weyl <alexey.weyl@alcatel-lucent.com>

工作项

未来生命周期

依赖项

测试

文档影响

参考资料