服务列表 API

StoryBoard 链接: https://storyboard.openstack.org/#!/story/2004897

此规范添加了一个新的 API,用于列出所有 Vitrage 服务及其状态。

问题描述

在生产云环境中,Vitrage 将在多个主机上部署多个服务。这将使管理员能够找到这些服务并获取详细信息,例如

  • Vitrage 服务运行在哪个节点上,

  • Vitrage 服务的运行状态。

  • Vitrage 服务成功运行了多长时间。

提议的变更

将添加一个新的 API 命令 vitrage service list,它将列出所有当前正在运行的 Vitrage 服务,它们运行的位置、状态以及运行时间。

响应示例

[
    {
      "Created At": "2019-02-10T11:07:15+00:00",
      "Hostname": "controller-1",
      "Process Id": 23161,
      "Name": "ApiWorker worker(0)"
    },
    {
      "Created At": "2019-02-10T11:07:15+00:00",
      "Hostname": "controller-1",
      "Process Id": 23153,
      "Name": "EvaluatorWorker worker(0)"
    },
    {
      "Created At": "2019-02-10T11:07:15+00:00",
      "Hostname": "controller-1",
      "Process Id": 23155,
      "Name": "EvaluatorWorker worker(1)"
    },
    {
      "Created At": "2019-02-10T11:07:15+00:00",
      "Hostname": "controller-1",
      "Process Id": 23157,
      "Name": "EvaluatorWorker worker(2)"
    },
    {
      "Created At": "2019-02-10T11:07:15+00:00",
      "Hostname": "controller-1",
      "Process Id": 23158,
      "Name": "EvaluatorWorker worker(3)"
    },
    {
      "Created At": "2019-02-10T11:07:33+00:00",
      "Hostname": "controller-1",
      "Process Id": 23366,
      "Name": "MachineLearningService worker(0)"
    },
    {
      "Created At": "2019-02-10T11:07:35+00:00",
      "Hostname": "controller-1",
      "Process Id": 23475,
      "Name": "PersistorService worker(0)"
    },
    {
      "Created At": "2019-02-10T11:07:15+00:00",
      "Hostname": "controller-1",
      "Process Id": 23164,
      "Name": "SnmpParsingService worker(0)"
    },
    {
      "Created At": "2019-02-10T11:14:30+00:00",
      "Hostname": "controller-1",
      "Process Id": 25698,
      "Name": "vitrageuWSGI worker 1"
    },
    {
      "Created At": "2019-02-10T11:14:30+00:00",
      "Hostname": "controller-1",
      "Process Id": 25699,
      "Name": "vitrageuWSGI worker 2"
    },
    {
      "Created At": "2019-02-10T11:07:32+00:00",
      "Hostname": "controller-1",
      "Process Id": 23352,
      "Name": "VitrageNotifierService worker(0)"
    }
]

CLI 示例

+----------------------------------+------------+--------------+---------------------------+
| Name                             | Process Id | Hostname     | Created At                |
+----------------------------------+------------+--------------+---------------------------+
| ApiWorker worker(0)              |      23161 | controller-1 | 2019-02-10T11:07:15+00:00 |
| EvaluatorWorker worker(0)        |      23153 | controller-1 | 2019-02-10T11:07:15+00:00 |
| EvaluatorWorker worker(1)        |      23155 | controller-1 | 2019-02-10T11:07:15+00:00 |
| EvaluatorWorker worker(2)        |      23157 | controller-1 | 2019-02-10T11:07:15+00:00 |
| EvaluatorWorker worker(3)        |      23158 | controller-1 | 2019-02-10T11:07:15+00:00 |
| MachineLearningService worker(0) |      23366 | controller-1 | 2019-02-10T11:07:33+00:00 |
| PersistorService worker(0)       |      23475 | controller-1 | 2019-02-10T11:07:35+00:00 |
| SnmpParsingService worker(0)     |      23164 | controller-1 | 2019-02-10T11:07:15+00:00 |
| vitrageuWSGI worker 1            |      25698 | controller-1 | 2019-02-10T11:14:30+00:00 |
| vitrageuWSGI worker 2            |      25699 | controller-1 | 2019-02-10T11:14:30+00:00 |
| VitrageNotifierService worker(0) |      23352 | controller-1 | 2019-02-10T11:07:32+00:00 |
+----------------------------------+------------+--------------+---------------------------+

注意: 云运维人员必须预先安装 ZooKeeper 或其他 TooZ 后端组件。否则,当用户调用服务 REST API 时将引发异常。

如果 Vitrage 正在 k8s 集群中运行,则此 API 可能是不必要的。因为 k8s 处理 Pod 的健康状况和拓扑。在这种情况下,我们可能会让服务 API 与 k8s API 通信,以获取所有 Vitrage 服务及其状态。

数据模型影响

无。

REST API 影响

将向 Vitrage 添加新的 API 以列出服务。

版本影响

无。

其他最终用户影响

为了支持该 API,我们需要一个后端来存储信息。我们将使用支持多个后端的 TooZ 库,请参阅 Tooz

部署者影响

部署者必须预先安装 ZooKeeper 或其他 TooZ 后端组件,以支持 API。

部署容器时,必须更改主机名,以便 API 可读。

开发者影响

我们需要考虑容器部署的情况该怎么办。Docker 默认情况下具有容器 ID 的主机名,但可以更改。

如果容器中存在,我们可以使用可选的环境变量(例如 HOST_HOSTNAME)作为主机名,并将其传递给容器。

Horizon 影响

无。

实现

负责人

主要负责人

Eyal

工作项

  • 添加 TooZ 支持

  • 向 Vitrage 添加新的 API

  • 向 Vitrage 客户端添加 服务列表

  • 文档和测试

依赖项

依赖于配置了后端的 TooZ 库。

测试

单元测试、功能测试和 Tempest 测试

文档影响

新的 API 将被记录

参考资料