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