vexxhost / vexxhost/openstack_database_exporter

Design Inconsistency related to Quota Metric Export

Open
#113 0 comments 0 reactions 0 assignees View on GitHub

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

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. 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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.