![Christian Berendt](/assets/img/avatar_default.png)
Rules are avaialble at https://en.wikipedia.org/wiki/Wikipedia:AutoWikiBrowser/Typos. Fixed some more typos found by Dina Belova. Change-Id: If6c83c112f1e5d193cf31481cbd11759c7213c7d
2.8 KiB
Dedicated database for the alarm definition and history of Ceilometer
https://blueprints.launchpad.net/ceilometer/+spec/dedicated-alarm-database
Currently if we use MongoDB for storing metering data, we are forced to use MongoDB for storing events and alarms. Because the API service can use only one database connection object.
Also metering and alarm are two completely different things, but the db code are currently in the same place.
The blueprint proposes to allow to have a different database for alarms definition and alarms history.
Problem description
The usecase is I want to store my metering data into MongoDB and my alarm definition and history into MySQL
Proposed change
The idea is to move all alarms db stuffs from ceilometer/storage to ceilometer/alarm/storage
ceilometer.storage.get_connection_from_conf get a new argument 'purpose', that can be set to metering or alarm.
This will allow to use a different namespace to load a driver that depends of the purpose.
New entry points will be added to have a different set of driver for alarm and metering.
Ceilometer API will use two connection objects, one for metering and one for alarm depending on the used API endpoint requested.
Alternatives
None
Data model impact
None
In case of SQLAlchemy, migration scripts will continue to be stored in a common place to ensure easy migration. And if a dedicated database is used, we accepted having unused and empty tables.
REST API impact
None
Security impact
None
Pipeline impact
None
Other end user impact
None
Performance/Scalability Impacts
None
Other deployer impact
The deployer can now optionally define a dedicated database for the alarming of ceilometer by adding:
[database]
connection = mongodb://localhost/ceilometer
alarm_connection = mysql://localhost/ceilometer
Developer impact
None
Implementation
Assignee(s)
- Primary assignee:
-
sileht
- Ongoing maintainer:
-
sileht
Work Items
- Splits the alarm db API from metering db API
- Remove unuseful drivers for alarm API
Future lifecycle
None
Dependencies
None
Testing
The is code refactoring with a new optional configuration option. This configuration will be tested in new unit tests.
Documentation Impact
None
References
None