- 1 CloudKitty
- 1.1 Motivation
- 1.2 How to use it ?
- 1.3 Architecture
- 1.4 Licencing
- 1.5 Current Implementation
- 1.6 RoadMap
- 1.7 Documentation
- 1.8 Community
CloudKitty is the project name of a RatingAsAService project started.
From the beginning of the Ceilometer project billing and pricing where excluded of the goals to achieve. But since those aspects are inherent to providing cloud (for both public and/or private), this gap needed to be filled using both the same technologies and the same Open Source approach than the rest of every OpenStack project. That is the goal of CloudKitty which is so far developed by Objectif Libre, but we are really hoping to get more developers on board on a next future.
We know that billing is made of generic rules, but also some specific ones, most billing operations are business specific. Our approach is to be modular allowing a huge flexibility in the treatments. We will focus on many generic rules, but allowing specific cases to be ruled by specific modules.
CloudKitty has been made to be highly modular on 4 levels :
- input data sources (collectors)
- rating policies (rating pipeline)
- output storage (storage)
- output file format (writers, used to generate reports)
CloudKitty supports multiple collectors, multiple rating policies and multiple outputs.
An overview of CloudKitty has been demoed during the OpenStack Summit in Paris, here is the video https://www.openstack.org/summit/openstack-paris-summit-2014/session-videos/presentation/sponsor-demo-theater-objective-libre-cloudkitty-open-source-rating-component-for-openstack
How to use it ?
CloudKitty proposes the following way to interact with it :
- Python Binding
- Python client (in progress)
CloudKitty has been designed to use the same modules and architecture of other OpenStack components, such as:
CloudKitty is realeased under Apache 2.0 Licence.
So far the architecture is single-user, but the multi-user / multi-tenant working has been designed and will be integrated in the code in the next weeks.
A huge focus as been put on integrating the OpenStack metrics from Ceilometer, hence the standard Ceilometer collector module. So far only the compute collector has been (partly) implemented to have a proof of concept and be able to pricing base on instance uptime. It is something that will be expanded on the next weeks.
Current REST API
The API is still evolving at the moment, but here what exists:
- GET /v1/billing/modules: List all the modules available
- GET /v1/billing/modules/<module_name>: Get the list of the services associated to that module
- GET /v1/report/total: Get the total price of the current period
- POST /v1/billing/quote: Take a JSON with many resource parameter and get the expected price of that resource for the configured period
Current Horizon Integration
The horizon integration falls in 2 parts :
Using the administration pane, it is possible to activate / deactivate services. It is also possible to pass values to configure the various services.
To get an idea of the horizon integration for the administrators we have published a video that shows the management of the price for resources by an admin: https://www.youtube.com/watch?v=KlagCqTUPco
It is displaying "real-time" price (the granularity is defined in the administration panel).
* How the user will see the estimated price of the resource they are about to launch https://www.youtube.com/watch?v=CmaBXzv28oI * How the user see the total estimed price he will be charged for his past usage https://www.youtube.com/watch?v=v6m1vPl55pg
Some aspects are moving very fast, here is the content of our RoadMap
The main change will be to enable the multi-user / multi-tenant.This work is already in progress. Since we want to spread the project, it is important to enable translation in the various aspect of CloudKitty.
RoadMap of the Collectors
It is one of the big work we are envisaging : covering all ressources... that includes :
- Pricing associated to images (Glance)
- Pricing associated to network (Neutron)
- Pricing associated to volumes (cinder)
- Improvment to compute informations
Some of that elements will be treated using events emited by the various components.
RoadMap of the REST API
The roadmap here is focussing on the API of each new module.
RoadMap of the Horizon Integration
The roadmap here is focussing on configuring each new module using Horizon.
We have an automated generated documentation (extracted from the code) available at
- Cloudkitty on StackForge
- Python Cloudkitty client library on StackForge
- Horizon plugin for CloudKitty on StackForge
#cloudkity on freenode