6.2 KiB
Service List API
StoryBoard link: https://storyboard.openstack.org/#!/story/2004897
This spec adds a new api for listing all vitrage services and their status.
Problem description
In a production cloud environment, Vitrage will have multiple services deployed on multiple hosts. This will enable an admin to find these services and get details like:
- what is the node on which vitrage service is running,
- what is the running status of vitrage service.
- How long the vitrage services are running successfully.
Proposed change
A new api command vitrage service list
will be added
that will list all the vitrage services that are currently running,
where are they running, their status and how long are they running.
Example of a response
[
{
"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 Example
+----------------------------------+------------+--------------+---------------------------+
| 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 |
+----------------------------------+------------+--------------+---------------------------+
Note: The cloud operator must pre-install zookeeper or other tooz backend component. Otherwise, an exception will be raised when users call the service REST API.
If vitrage is running in k8s cluster then this api might be redundant. Since k8s handles pods health and topology. We might make the service api communicate with the k8s api in this case to get all vitrage services and their statuses.
Data model impact
None.
REST API impact
New api will be added to vitrage to list the services.
Versioning impact
None.
Other end user impact
In order to support the api we will need a backend to store the information. We will use the tooz library that supports multiple backends see Tooz.
Deployer impact
The deployer must pre-install zookeeper or other tooz backend component In order to support the API.
When deploying a container then hostname must be changed so api will be readable.
Developer impact
We need to think what to do in case of a container deployment. docker by default has a hostname of the container id but it can be changed.
We might use an optional environment variable (e.g HOST_HOSTNAME) for host name if exist in case of a container that can be passed to the container.
Horizon impact
None.
Implementation
Assignee(s)
- Primary assignee:
-
Eyal
Work Items
- add tooz support
- add new API to vitrage
- add service list to vitrage client
- Documentation and tests
Dependencies
Depends on the tooz library with a backend configured.
Testing
Unit tests, functional tests and tempest tests
Documentation Impact
The new api will be documented
References
None