We are delighted to announce the release of:
cloudkitty 0.5.0: Rating as a Service component for OpenStack
This release is part of the mitaka release series.
For more details, please see below.
Changes in cloudkitty 0.4.1..0.5.0
----------------------------------
563b69f Added support for an hybrid gnocchi storage
f7641aa Added gnocchi collector
9fe4552 Migrate from keystoneclient to keystoneauth
32f1645 policy: fix the roles setup in the requests context
1a9c279 Fixed devstack not creating folder for tooz locks
72a5364 Added distributed lock fixing horizontal scaling
cfd16e3 Fixed meta collector not applying mappings
98a13bc Added CORS support to CloudKitty
d43a369 Use IPOpt and PortOpt
d71f167 Updated from global requirements
76db98a Improve default error handling on collector
d36e1cb Cleanup unused conf variables
6e13dbb Refactor keystone tenant fetcher
9d367d4 Removes unused posix_ipc requirement
f9b52a9 Test: make enforce_type=True in CONF.set_override
f806413 Replace deprecated LOG.warn with LOG.warning
a98d3b9 Load wsgi app(api) with paste.deploy
9c949b7 remove rating no match case
4ab4ee7 remove setting for option verbose
545bf13 Modify noop module code in arch.rst
8c2b33f drop py33 and py26 env test
8c60b90 remove unused method in orchestrator
50199eb Remove iso8601 dependency
77ef166 Deprecated tox -downloadcache option removed
77c4788 Fixed random failures in storage tests
84d4489 Loading scripts in memory when load pyscripts rating model
e760e7d Remove unnecessary parameter
5fd110a Put py34 first in the env order of tox
e1d574c Added unit tests for storage drivers
f7d272f Fixed _NO_DATA_ insertion even when data was present
819e89f The result of tenant list may be unpredictable
91b6216 Fixed Horizon static file compression in devstack
534db79 Change not found HTTP status code from 400 to 404
f331366 Move global variables to settings file
399cb5a Fix error when using keystone v3
8d7f7e3 fixes error when get quote price from rpc
b03f903 modify api of report total
b3cfb53 Add .DS_Store to .gitignore
d27b10d Add *.swp to .gitignore
6a23e61 Fixes sample rabbitmq config in doc
3563ac0 Tenant fetcher sometimes return wrong result
57690f1 Added AuthPlugin support in devstack
2019c85 Remove useless LOG definitions
7428e4a Delegate log formatting to logging package
ecaa4e6 devstack: enable cloudkitty services by default
991ce79 Added more API calls for HashMap rating module
7949185 Removed version information from setup.cfg
77347ae Fixed files to support liberty dashboard
4be901f Updated files to the new namespace
8f61fa9 Update .gitreview for new namespace
4482d7d Added new rating module PyScripts
54e3cf8 Fix the sphinx build path in .gitignore file
04a9f0c Added gabbi API tests
03d6fc7 UnconfigurableController returns 409 on all methods
2950eac Removed default values on rating modules
c06aa23 Fixed None value returned by report/total
c926753 Added support for dynamic rating module reloading
8525b6f Fix the README file of the DevStack integration
7dbf3ac readthedocs doesn't allow multiple files anymore
b8f30fd doc: document how to install from packages
6fd60b0 install doc: install policy.json in /etc/cloudkitty
f43dfe5 Added support for Keystone AuthPlugins
1039e44 Moving to Liberty cycle (0.5)
Diffstat (except docs and test files)
-------------------------------------
.gitignore | 4 +-
.gitreview | 2 +-
.testr.conf | 1 +
README.rst | 4 +-
cloudkitty/__init__.py | 19 +
cloudkitty/api/app.py | 55 +--
cloudkitty/api/middleware.py | 9 +
cloudkitty/api/root.py | 3 -
cloudkitty/api/v1/controllers/billing.py | 4 -
cloudkitty/api/v1/controllers/collector.py | 4 +-
cloudkitty/api/v1/controllers/rating.py | 107 ++++--
cloudkitty/api/v1/controllers/report.py | 7 +-
cloudkitty/api/v1/controllers/storage.py | 9 +-
cloudkitty/api/v1/datamodels/rating.py | 6 +-
cloudkitty/api/v1/types.py | 2 +-
cloudkitty/cli/dbsync.py | 2 +-
cloudkitty/cli/processor.py | 7 -
cloudkitty/cli/storage.py | 2 +-
cloudkitty/cli/writer.py | 2 +-
cloudkitty/collector/__init__.py | 43 ++-
cloudkitty/collector/ceilometer.py | 51 ++-
cloudkitty/collector/fake.py | 2 +-
cloudkitty/collector/gnocchi.py | 274 +++++++++++++++
cloudkitty/collector/meta.py | 48 +--
cloudkitty/common/config.py | 2 -
cloudkitty/common/context.py | 3 +-
cloudkitty/common/defaults.py | 46 +++
cloudkitty/common/policy.py | 2 +-
cloudkitty/common/rpc.py | 6 +-
cloudkitty/config.py | 9 +-
cloudkitty/db/__init__.py | 4 +-
cloudkitty/db/api.py | 4 +-
cloudkitty/db/sqlalchemy/api.py | 8 +-
cloudkitty/db/sqlalchemy/models.py | 2 +-
cloudkitty/i18n.py | 2 +-
cloudkitty/orchestrator.py | 136 ++++----
cloudkitty/rating/hash/__init__.py | 26 --
cloudkitty/rating/hash/controllers/field.py | 4 +-
cloudkitty/rating/hash/controllers/group.py | 26 +-
cloudkitty/rating/hash/controllers/mapping.py | 9 +-
cloudkitty/rating/hash/controllers/service.py | 4 +-
cloudkitty/rating/hash/controllers/threshold.py | 9 +-
cloudkitty/rating/hash/db/api.py | 4 +-
cloudkitty/rating/hash/db/sqlalchemy/api.py | 9 +-
cloudkitty/rating/hash/db/sqlalchemy/models.py | 2 +-
cloudkitty/rating/noop.py | 4 +-
cloudkitty/rating/pyscripts/__init__.py | 86 +++++
.../rating/pyscripts/controllers/__init__.py | 0
cloudkitty/rating/pyscripts/controllers/root.py | 27 ++
cloudkitty/rating/pyscripts/controllers/script.py | 134 +++++++
cloudkitty/rating/pyscripts/datamodels/__init__.py | 0
cloudkitty/rating/pyscripts/datamodels/script.py | 60 ++++
cloudkitty/rating/pyscripts/db/__init__.py | 0
cloudkitty/rating/pyscripts/db/api.py | 102 ++++++
.../rating/pyscripts/db/sqlalchemy/__init__.py | 0
.../pyscripts/db/sqlalchemy/alembic/__init__.py | 0
.../rating/pyscripts/db/sqlalchemy/alembic/env.py | 25 ++
.../pyscripts/db/sqlalchemy/alembic/script.py.mako | 22 ++
.../versions/4f9efa4601c0_initial_migration.py | 32 ++
cloudkitty/rating/pyscripts/db/sqlalchemy/api.py | 117 +++++++
.../rating/pyscripts/db/sqlalchemy/migration.py | 47 +++
.../rating/pyscripts/db/sqlalchemy/models.py | 108 ++++++
cloudkitty/service.py | 6 +-
cloudkitty/storage/__init__.py | 68 +++-
cloudkitty/storage/gnocchi_hybrid/__init__.py | 69 ++++
.../storage/gnocchi_hybrid/alembic/__init__.py | 0
cloudkitty/storage/gnocchi_hybrid/alembic/env.py | 25 ++
.../storage/gnocchi_hybrid/alembic/script.py.mako | 22 ++
.../versions/4c2f20df7491_initial_migration.py | 32 ++
cloudkitty/storage/gnocchi_hybrid/migration.py | 47 +++
cloudkitty/storage/gnocchi_hybrid/models.py | 86 +++++
cloudkitty/storage/sqlalchemy/__init__.py | 128 ++++---
cloudkitty/storage/sqlalchemy/models.py | 6 +-
cloudkitty/tenant_fetcher/__init__.py | 2 +-
cloudkitty/tenant_fetcher/fake.py | 2 +-
cloudkitty/tenant_fetcher/keystone.py | 81 +++--
.../gabbi/rating/pyscripts/gabbits/pyscripts.yaml | 131 +++++++
cloudkitty/transformer/__init__.py | 15 +
cloudkitty/transformer/gnocchi.py | 72 ++++
cloudkitty/utils.py | 29 +-
cloudkitty/write_orchestrator.py | 2 +-
contrib/cloudkitty.spec.in | 8 +-
devstack/README.rst | 28 +-
devstack/plugin.sh | 119 +++----
devstack/settings | 61 ++++
etc/cloudkitty/api_paste.ini | 16 +
etc/cloudkitty/cloudkitty.conf.sample | 159 ++++++---
etc/oslo-config-generator/cloudkitty.conf | 6 +-
requirements.txt | 48 +--
rtd-requirements.txt | 35 ++
setup.cfg | 8 +-
setup.py | 3 +-
test-requirements.txt | 24 +-
tox.ini | 7 +-
122 files changed, 4878 insertions(+), 657 deletions(-)
Requirements updates
--------------------
diff --git a/requirements.txt b/requirements.txt
index a4b8cb2..f43ffcd 100644
--- a/requirements.txt
+++ b/requirements.txt
@@ -4,23 +4,25 @@
-pbr>=0.6,!=0.7,<1.0
-eventlet>=0.16.1,!=0.17.0
-keystonemiddleware>=1.5.0,<1.6.0
-python-ceilometerclient>=1.0.13,<1.1.0
-python-keystoneclient>=1.1.0,<1.4.0
-iso8601>=0.1.9
-PasteDeploy>=1.5.0
-posix_ipc
-pecan>=0.8.0
-WSME>=0.6
-oslo.config>=1.9.3,<1.10.0 # Apache-2.0
-oslo.context>=0.2.0,<0.3.0 # Apache-2.0
-oslo.concurrency>=1.8.0,<1.9.0 # Apache-2.0
-oslo.db>=1.7.0,<1.8.0 # Apache-2.0
-oslo.i18n>=1.5.0,<1.6.0 # Apache-2.0
-oslo.log>=1.0.0,<1.1.0 # Apache-2.0
-oslo.messaging>=1.8.0,<1.9.0 # Apache-2.0
-oslo.middleware>=1.0.0,<1.1.0 # Apache-2.0
-oslo.policy>=0.3.1,<0.4.0 # Apache-2.0
-oslo.utils>=1.4.0,<1.5.0 # Apache-2.0
-SQLAlchemy>=0.9.7,<=0.9.99
-six>=1.9.0
-stevedore>=1.3.0,<1.4.0 # Apache-2.0
+pbr>=1.6 # Apache-2.0
+eventlet!=0.18.3,>=0.18.2 # MIT
+keystonemiddleware!=4.1.0,>=4.0.0 # Apache-2.0
+python-ceilometerclient>=2.2.1 # Apache-2.0
+gnocchiclient>=2.1.0 # Apache-2.0
+python-keystoneclient!=1.8.0,!=2.1.0,>=1.6.0 # Apache-2.0
+keystoneauth1>=2.1.0 # Apache-2.0
+iso8601>=0.1.9 # MIT
+PasteDeploy>=1.5.0 # MIT
+pecan>=1.0.0 # BSD
+WSME>=0.8 # MIT
+oslo.config>=3.7.0 # Apache-2.0
+oslo.context>=0.2.0 # Apache-2.0
+oslo.concurrency>=3.5.0 # Apache-2.0
+oslo.db>=4.1.0 # Apache-2.0
+oslo.i18n>=2.1.0 # Apache-2.0
+oslo.log>=1.14.0 # Apache-2.0
+oslo.messaging>=4.0.0 # Apache-2.0
+oslo.middleware>=3.0.0 # Apache-2.0
+oslo.policy>=0.5.0 # Apache-2.0
+oslo.utils>=3.5.0 # Apache-2.0
+SQLAlchemy<1.1.0,>=1.0.10 # MIT
+six>=1.9.0 # MIT
+stevedore>=1.5.0 # Apache-2.0
+tooz>=1.28.0 # Apache-2.0
diff --git a/rtd-requirements.txt b/rtd-requirements.txt
new file mode 100644
index 0000000..86b0a3d
--- /dev/null
+++ b/rtd-requirements.txt
@@ -0,0 +1,35 @@
+# The order of packages is significant, because pip processes them in the order
+# of appearance. Changing the order has an impact on the overall integration
+# process, which may cause wedges in the gate later.
+pbr<2.0,>=1.6
+eventlet>=0.17.4
+keystonemiddleware>=2.0.0
+python-ceilometerclient>=1.0.13
+python-keystoneclient>=1.6.0
+PasteDeploy>=1.5.0
+pecan>=1.0.0
+WSME>=0.7
+oslo.config>=2.3.0 # Apache-2.0
+oslo.context>=0.2.0 # Apache-2.0
+oslo.concurrency>=2.3.0 # Apache-2.0
+oslo.db>=2.4.1 # Apache-2.0
+oslo.i18n>=1.5.0 # Apache-2.0
+oslo.log>=1.8.0 # Apache-2.0
+oslo.messaging!=1.17.0,!=1.17.1,>=1.16.0 # Apache-2.0
+oslo.middleware>=2.6.1 # Apache-2.0
+oslo.policy>=0.5.0 # Apache-2.0
+oslo.utils>=2.0.0 # Apache-2.0
+SQLAlchemy<1.1.0,>=0.9.7
+six>=1.9.0
+stevedore>=1.5.0 # Apache-2.0
+hacking<0.10,>=0.9.2
+coverage>=3.6
+discover
+testscenarios>=0.4
+testrepository>=0.0.18
+mock>=1.2
+sphinx!=1.2.0,!=1.3b1,<1.3,>=1.1.2
+oslosphinx>=2.5.0 # Apache-2.0
+oslotest>=1.10.0 # Apache-2.0
+sphinxcontrib-httpdomain
+sphinxcontrib-pecanwsme>=0.8
diff --git a/test-requirements.txt b/test-requirements.txt
index 769c650..b761433 100644
--- a/test-requirements.txt
+++ b/test-requirements.txt
@@ -4,11 +4,13 @@
-hacking>=0.9.2,<0.10
-coverage>=3.6
-discover
-testscenarios>=0.4
-testrepository>=0.0.18
-mock>=1.0
-sphinx>=1.1.2,!=1.2.0,!=1.3b1,<1.3
-oslosphinx>=2.5.0,<2.6.0 # Apache-2.0
-oslotest>=1.5.1,<1.6.0 # Apache-2.0
-sphinxcontrib-httpdomain
-sphinxcontrib-pecanwsme>=0.8
+hacking<0.10,>=0.9.2
+coverage>=3.6 # Apache-2.0
+discover # BSD
+gabbi>=1.11.0 # Apache-2.0
+mox3>=0.7.0 # Apache-2.0
+testscenarios>=0.4 # Apache-2.0/BSD
+testrepository>=0.0.18 # Apache-2.0/BSD
+mock>=1.2 # BSD
+sphinx!=1.2.0,!=1.3b1,<1.3,>=1.1.2 # BSD
+oslosphinx!=3.4.0,>=2.5.0 # Apache-2.0
+oslotest>=1.10.0 # Apache-2.0
+sphinxcontrib-httpdomain # BSD
+sphinxcontrib-pecanwsme>=0.8 # Apache-2.0