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