Momgodb-events-feature specs
The purpose of this bp is to implement event feature on MongoDB and DB2 Implements blueprint mongodb-events-feature Change-Id: Id8174b4889f85d07e5ade8419664b52f4c856b2e
This commit is contained in:
parent
0dde32ad6b
commit
e225b5213b
164
specs/juno/mongodb-events-feature.rst
Normal file
164
specs/juno/mongodb-events-feature.rst
Normal file
@ -0,0 +1,164 @@
|
||||
..
|
||||
This work is licensed under a Creative Commons Attribution 3.0 Unported
|
||||
License.
|
||||
|
||||
http://creativecommons.org/licenses/by/3.0/legalcode
|
||||
|
||||
===============================
|
||||
Enable event feature on MongoDB
|
||||
===============================
|
||||
|
||||
https://blueprints.launchpad.net/ceilometer/+spec/mongodb-events-feature
|
||||
|
||||
Events feature was implemented on SQLAlchemy and HBase backends. And now it is
|
||||
necessary to extend it on MongoDB and DB2.
|
||||
|
||||
Problem description
|
||||
===================
|
||||
|
||||
The usecase is to store events in database (MongoDB or DB2) and to get
|
||||
events (event's types, traits, trait's types) from this database.
|
||||
|
||||
The main idea is to implement event feature in way like it was done on
|
||||
other drivers (SQLAlchemy and HBase).
|
||||
|
||||
Usecases:
|
||||
|
||||
- to get all events that were created in a specified period of time
|
||||
|
||||
- to get events by event's type
|
||||
|
||||
- to get events by event's message id
|
||||
|
||||
- to get events by trait's description, type, and value
|
||||
|
||||
- to get all event's types that were stored
|
||||
|
||||
- to get all trait types belonging to specific event type
|
||||
|
||||
- to get all traits that could be found in specific event's type, and
|
||||
optionally with specific trait type.
|
||||
|
||||
Proposed change
|
||||
===============
|
||||
|
||||
Add new methods in ceilometer.storage.pymongo_base.py for storing and getting
|
||||
events from database. Basing on events implementation that have been already
|
||||
done we should create next methods:
|
||||
|
||||
1. record_event -- method for storing collected events into MongoDB and DB2
|
||||
|
||||
2. get_events -- method for getting events from MongoDB and DB2 with specified
|
||||
filters:
|
||||
- period of event's generation time
|
||||
- event's type
|
||||
- event's message id
|
||||
- trait's description, type, and value (here should be taken into account
|
||||
possible operations on values, for ex: <lt, le, eq, ne, ge, gt>)
|
||||
|
||||
3. get_event_types -- method for getting all event's types that were stored in
|
||||
database.
|
||||
|
||||
4. get_trait_types -- method returns all trait types for all stored event
|
||||
types or only for one event's type if it is specified.
|
||||
|
||||
5. get_traits -- method returns all traits for certain event type, or traits
|
||||
for specified trait's type if type is defined.
|
||||
|
||||
Alternatives
|
||||
------------
|
||||
|
||||
None
|
||||
|
||||
Data model impact
|
||||
-----------------
|
||||
|
||||
We will need to add new collection into MongoDB and DB2 for events
|
||||
|
||||
Collection:
|
||||
|
||||
- events
|
||||
- _id: uuid of event (Event.message_id)
|
||||
- event_type: description of event's type
|
||||
- timestamp: time stamp of event generation
|
||||
- traits: [array of {trait_name: string, trait_type: integer,
|
||||
trait_value: data}]
|
||||
|
||||
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:
|
||||
* idegtiarov
|
||||
|
||||
Ongoing maintainer:
|
||||
* idegtiarov
|
||||
|
||||
Work Items
|
||||
----------
|
||||
|
||||
* Create new method for event feature implementation on MongoDB and DB2
|
||||
* Test method in unit tests
|
||||
|
||||
Future lifecycle
|
||||
================
|
||||
|
||||
None
|
||||
|
||||
Dependencies
|
||||
============
|
||||
|
||||
None
|
||||
|
||||
Testing
|
||||
=======
|
||||
|
||||
This code will be tested in unit tests for event feature
|
||||
|
||||
Documentation Impact
|
||||
====================
|
||||
|
||||
None
|
||||
|
||||
References
|
||||
==========
|
||||
|
||||
None
|
||||
|
Loading…
Reference in New Issue
Block a user