Vitrage Multi Tenancy Support¶
When a tenant uses Vitrage APIs we would like to show him only the data that is relevant to him.
Problem description¶
Vitrage needs to show in its API an CLI only the data relevant to that tenant (it can’t show all the data due to irrelevancy and privacy of each tenant). Thus for each datasource and entity we need to know what relevant data to show for that tenant. We would also like to show all of the data if someone adds the all_tenants property.
Proposed change¶
Here is a description, for each of the Vitrage APIs, how it should behave for each tenant:
- Get alarms:
Find all the alarms with the requested project_id (if the project is admin then show also alarms that has no project_id property)
Find all the resources with the requested project_id and return all the alarms that are attached to them.
Merge the results from the previous steps and return it.
- Get RCA:
Find all the alarms that this alarm has caused, recursively. When reaching an alarm that is not of same project_id (or on resource of same project_id), stop the recursion, including this last alarm in the response.
Find all the alarms that caused this alarm, recursively. When reaching an alarm that is not of same project_id (or on resource of same project_id), stop the recursion, including this last alarm in the response.
Merge the results from the previous steps and return it.
- Get Topology:
Find all the connected components for project_id.
For each component, select 1 entity and find all paths (without cycles) to “openstack.cluster” entity. Add all of the vertices in the path to the component.
Merge all the components and return it.
Remark: API and CLI needs to behave the same.
Alternatives¶
None
Data model impact¶
None
REST API impact¶
None
Security impact¶
None
Pipeline impact¶
None
Other end user impact¶
None
Performance/Scalability Impacts¶
None
Other deployer impact¶
None
Developer impact¶
None
Implementation¶
Assignee(s)¶
- Primary assignee:
alexey_weyl <alexey.weyl@alcatel-lucent.com>
Work Items¶
None
Future lifecycle¶
None
Dependencies¶
None
Testing¶
None
Documentation Impact¶
None
References¶
None