vexxhost / vexxhost/openstack_database_exporter
Design Inconsistency related to Quota Metric Export
Nobody has claimed this yet.
- Dominant language
- Go
- Stars
- 12
- Forks
- 3
- Avg merge
- 31m
- Merged PRs (30d)
- 5
Description
There is an inconsistency in design. Should the vexxhost exporter only export quota metrics of KNOWN projects, i.e., projects that are stored in keystone, or should it export metrics of all projects found in all dbs?
Example for Neutron: openstack_database_exporter/internal/collector/neutron/quotas.go
- Exports for all projects known from Neutron DB. Keystone is used to fill in gaps but is not the sole source of truth.
Example for Nova: openstack_database_exporter/internal/collector/nova/quotas.go
- Exports for all projects known by keystone (
c.projectResolver.AllProjects()). The quota info from the nova db is added only to those projects, if nova db had more quotas unknown by keystone, they will not be exported.
Example for Cinder: openstack_database_exporter/internal/collector/cinder/limits.go
- Exports again for all quotas in the cinder db and use keystone as a reference to update, not the sole source of truth.
Why does this matter?
It appears that openstack does not have a mechanism where project deletion also deletes quotas. This can lead to quota tables of the various openstack component dbs to fill up quickly. The API exporter does not indicate this issue but it becomes visible via the database exporter.
I think there should be a decision where you either export quotas per db or per keystone source of truth, or maybe make it optional via a flag.
Contributor guide
No contributing guide indexed for this repository
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start by comparing internal/collector/neutron/quotas.go, internal/collector/nova/quotas.go, and internal/collector/cinder/limits.go, especially their project and quota source handling. Trace c.projectResolver.AllProjects() and the relevant database queries, then establish whether exports should follow Keystone, each component database, or an option. Done means the project has an explicit, consistent policy or clearly specified flag behavior.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- go
- Domain
- databases, observability-sre
- Issue type
- Feature
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Quiet
- Clarity
- Needs clarification
- Newbie friendliness
- 35/100