We are ecstatic to announce the release of: cloudkitty 7.0.0: Rating as a Service component for OpenStack This release is part of the queens release series. Download the package from: https://pypi.python.org/pypi/cloudkitty For more details, please see below. 7.0.0 ^^^^^ New Features ************ * A collector for Monasca has been added. It works with telemetry metrics published to Monasca by Ceilometer agent through Ceilosca. * The storage system is being refactored. A hybrid storage backend has been added. This backend handles states via SQLAlchemy and pure storage via another storage backend. Once this new storage is considered stable, it will become the default storage. This will ease the creation of storage backends (no more state handling). Deprecation Notes ***************** * The ceilometer collector has been deprecated. Gnocchi should be used by default. The collector will be removed during the Rocky development cycle. * All storage backends except sqlalchemy and the new hybrid storage have been deprecated. Bug Fixes ********* * The value of the UsageEnd field in CSV reports has been fixed. Other Notes *********** * A tempest plugin has been created for CloudKitty, and it is used for gate tests. * The deprecated 'Billing' API endpoint has been removed, and its code has been deleted from the CloudKitty repository. Changes in cloudkitty 6.0.0..7.0.0 ---------------------------------- 15d0a7d Secure convert_unit() function de36c1d Add Apache License Content in index.rst e90841b Replaces yaml.load() with yaml.safe_load() a111d36 Use metric dimensions as metadata in monasca collector 3c3af85 Make build reproducible 2857cd0 Fix YAML configuration usage in monasca collector dc1249a Pass project_id in dimensions rather than query parameter 16e2615 Fix the typo and update the url links in doc files of cloudkitty 47d3f2b Create state entry for tenant_id in _dispatch for hybrid storage 2a2967d Update default configuration for cors 07ba0dc Utils: fix usage of iso8601_from_timestamp 015482e fix custom configuration file path 90f4c06 Fix two mistakes of method description b09709a Zuul: Remove project name d2f7e06 Refactor the storage backend da7dbc4 Deprecate the ceilometer collector a0db1f1 Manage metrics units in yaml configuration. 93d420b Remove use of unsupported TEMPEST_SERVICES variable c89a343 Use CK_DBUSER for the mysql user in the documentation 949f18a Use RABBIT_USER for the rabbit user in the documentation e605827 Add Ceph Object Storage Usage service af20bde Minor documentation improvements e225fad Update fields of CSV reports. 6e470bc Fix UsageEnd in CSV reports 51d1dd4 Don't run non-voting jobs in gate 7eca672 Policy in code 4b7dfdc Use metrics.yml in get_time_frame() cfc53b4 Ensure compatibility with all versions of gnocchiclient. 6678489 Remove deprecated oslo_messaging.get_transport 43e1999 Fix metric name in etc/metrics.yml e6f5c28 Remove deprecated APIs and method in cloudkitty b8c848f Split metrology configuration from CK config file 6026a6e Fix devstack for gnocchi collector c7ba8da Fix wrong data in jsonfile generated by osrf writer 9585fe1 Add app.wsgi to target of pep8 016fd7f Add a tempest plugin gate job 7a4c718 Remove setting of version/release from releasenotes e5e90e8 Fix Devstack plugin 74c6c5e Update and replace http with https for doc links in cloudkitty d4f03fb Replace launchpad with storyboard in README 8876785 Add a collector for Monasca 6b17052 Add rm to whitelist_externals a3a1ee6 Update devstack/README.rst 8fea4e1 Update usage of gabbi in Cloudkitty test 5baa3b8 Allow authentification method to be chosen b1692ab Update reno for stable/pike 0f9c00a Update log translation hacking rule Diffstat (except docs and test files) ------------------------------------- .gitignore | 1 + .zuul.yaml | 17 + HACKING.rst | 10 +- README.rst | 20 +- cloudkitty/api/app.py | 7 +- cloudkitty/api/v1/controllers/billing.py | 41 -- cloudkitty/api/v1/controllers/collector.py | 12 +- cloudkitty/api/v1/controllers/info.py | 12 +- cloudkitty/api/v1/controllers/rating.py | 12 +- cloudkitty/api/v1/controllers/report.py | 10 +- cloudkitty/api/v1/controllers/storage.py | 2 +- cloudkitty/api/v1/datamodels/billing.py | 31 -- cloudkitty/api/v1/datamodels/info.py | 8 +- cloudkitty/api/v1/datamodels/rating.py | 7 +- cloudkitty/billing/__init__.py | 38 -- cloudkitty/billing/hash/__init__.py | 31 -- cloudkitty/billing/hash/controllers/__init__.py | 31 -- cloudkitty/billing/hash/controllers/field.py | 18 - cloudkitty/billing/hash/controllers/group.py | 18 - cloudkitty/billing/hash/controllers/mapping.py | 18 - cloudkitty/billing/hash/controllers/root.py | 18 - cloudkitty/billing/hash/controllers/service.py | 18 - cloudkitty/billing/hash/datamodels/__init__.py | 31 -- cloudkitty/billing/hash/datamodels/field.py | 18 - cloudkitty/billing/hash/datamodels/group.py | 18 - cloudkitty/billing/hash/datamodels/mapping.py | 18 - cloudkitty/billing/hash/datamodels/service.py | 18 - cloudkitty/billing/hash/db/__init__.py | 31 -- cloudkitty/billing/hash/db/api.py | 18 - cloudkitty/billing/hash/db/sqlalchemy/__init__.py | 31 -- cloudkitty/billing/hash/db/sqlalchemy/api.py | 18 - cloudkitty/billing/hash/db/sqlalchemy/migration.py | 18 - cloudkitty/billing/hash/db/sqlalchemy/models.py | 18 - cloudkitty/billing/noop.py | 18 - cloudkitty/cli/processor.py | 8 +- cloudkitty/collector/__init__.py | 36 +- cloudkitty/collector/ceilometer.py | 206 ++++++++- cloudkitty/collector/gnocchi.py | 159 +++++-- cloudkitty/collector/meta.py | 2 +- cloudkitty/collector/monasca.py | 343 +++++++++++++++ cloudkitty/common/config.py | 7 +- cloudkitty/common/defaults.py | 38 +- cloudkitty/common/policies/__init__.py | 34 ++ cloudkitty/common/policies/base.py | 36 ++ cloudkitty/common/policies/collector.py | 57 +++ cloudkitty/common/policies/info.py | 43 ++ cloudkitty/common/policies/rating.py | 56 +++ cloudkitty/common/policies/report.py | 43 ++ cloudkitty/common/policies/storage.py | 32 ++ cloudkitty/common/policy.py | 85 +++- cloudkitty/db/api.py | 29 +- cloudkitty/db/sqlalchemy/api.py | 67 ++- cloudkitty/hacking/checks.py | 29 +- cloudkitty/messaging.py | 2 +- cloudkitty/orchestrator.py | 16 +- cloudkitty/rating/__init__.py | 4 +- cloudkitty/service.py | 1 + cloudkitty/storage/__init__.py | 12 +- cloudkitty/storage/gnocchi/__init__.py | 36 +- cloudkitty/storage/hybrid/__init__.py | 128 ++++++ cloudkitty/storage/hybrid/alembic/env.py | 25 ++ cloudkitty/storage/hybrid/alembic/script.py.mako | 24 ++ .../versions/03da4bb002b9_initial_revision.py | 44 ++ cloudkitty/storage/hybrid/backends/__init__.py | 97 +++++ cloudkitty/storage/hybrid/backends/gnocchi.py | 461 +++++++++++++++++++++ cloudkitty/storage/hybrid/migration.py | 42 ++ cloudkitty/storage/hybrid/models.py | 38 ++ cloudkitty/transformer/ceilometer.py | 9 + cloudkitty/utils.py | 143 ++++++- cloudkitty/writer/__init__.py | 1 - cloudkitty/writer/csv_map.py | 11 +- devstack/README.rst | 8 +- devstack/plugin.sh | 11 +- devstack/settings | 5 +- etc/cloudkitty/api_paste.ini | 5 +- etc/cloudkitty/metrics.yml | 75 ++++ etc/cloudkitty/policy.json | 28 -- etc/oslo-policy-generator/cloudkitty.conf | 3 + playbooks/cloudkitty-tempest-full/post.yaml | 15 + playbooks/cloudkitty-tempest-full/run.yaml | 54 +++ .../notes/add-tempest-plugin-3584e1918f344fb2.yaml | 5 + .../notes/collector-monasca-f0871406513ff22c.yaml | 5 + ...cate-ceilometer-collector-6d8f72c84b95662b.yaml | 5 + .../notes/fix-csv-usage-end-7bcf4cb5effc4461.yaml | 4 + .../notes/refactor-storage-e5453296e477e594.yaml | 13 + ...-deprecated-api-endpoints-26606e322b8a225e.yaml | 5 + releasenotes/source/conf.py | 12 +- releasenotes/source/index.rst | 15 + releasenotes/source/pike.rst | 6 + requirements.txt | 5 +- setup.cfg | 11 + test-requirements.txt | 2 +- tox.ini | 7 +- 117 files changed, 3566 insertions(+), 1289 deletions(-) Requirements updates -------------------- diff --git a/requirements.txt b/requirements.txt index c91fbd2..36fbf12 100644 --- a/requirements.txt +++ b/requirements.txt @@ -9,0 +10 @@ gnocchiclient>=2.5.0 # Apache-2.0 +python-monascaclient>=1.7.0 # Apache-2.0 @@ -22,2 +23,2 @@ oslo.log>=1.14.0 # Apache-2.0 -oslo.messaging>=5.11.0 # Apache-2.0 -oslo.middleware>=3.0.0 # Apache-2.0 +oslo.messaging!=5.25.0,>=5.24.2 # Apache-2.0 +oslo.middleware>=3.27.0 # Apache-2.0 diff --git a/test-requirements.txt b/test-requirements.txt index 1de1d4e..2399120 100644 --- a/test-requirements.txt +++ b/test-requirements.txt @@ -11 +11 @@ ddt>=1.0.1 # MIT -gabbi>=1.11.0,<=1.25.0 # Apache-2.0 +gabbi>=1.26.1 # Apache-2.0