Merge "Add new transformer for Magnum pollster"
This commit is contained in:
commit
3efc5c26c3
@ -399,3 +399,38 @@ class TestNetworkServiceTransformer(base.DistilTestCase):
|
|||||||
FAKE_DATA.t1)
|
FAKE_DATA.t1)
|
||||||
|
|
||||||
self.assertEqual({'fake_meter': 0}, usage)
|
self.assertEqual({'fake_meter': 0}, usage)
|
||||||
|
|
||||||
|
@mock.patch.object(general, 'get_transformer_config',
|
||||||
|
mock.Mock(return_value=FAKE_CONFIG))
|
||||||
|
class TestMagnumTransformer(base.DistilTestCase):
|
||||||
|
def test_basic_sum(self):
|
||||||
|
"""Tests that the transformer correctly calculate the sum value.
|
||||||
|
"""
|
||||||
|
|
||||||
|
data = [
|
||||||
|
{'timestamp': '2014-01-01T00:00:00', 'volume': 1},
|
||||||
|
{'timestamp': '2014-01-01T00:10:00', 'volume': 0},
|
||||||
|
{'timestamp': '2014-01-01T01:00:00', 'volume': 2},
|
||||||
|
]
|
||||||
|
|
||||||
|
xform = conversion.MagnumTransformer()
|
||||||
|
usage = xform.transform_usage('fake_meter', data, FAKE_DATA.t0,
|
||||||
|
FAKE_DATA.t1)
|
||||||
|
|
||||||
|
self.assertEqual({'fake_meter': 1}, usage)
|
||||||
|
|
||||||
|
def test_only_non_charged(self):
|
||||||
|
"""Tests that the transformer correctly calculate the sum value.
|
||||||
|
"""
|
||||||
|
|
||||||
|
data = [
|
||||||
|
{'timestamp': '2014-01-01T00:00:00', 'volume': 1},
|
||||||
|
{'timestamp': '2014-01-01T00:10:00', 'volume': 1},
|
||||||
|
{'timestamp': '2014-01-01T01:00:00', 'volume': 18},
|
||||||
|
]
|
||||||
|
|
||||||
|
xform = conversion.MagnumTransformer()
|
||||||
|
usage = xform.transform_usage('fake_meter', data, FAKE_DATA.t0,
|
||||||
|
FAKE_DATA.t1)
|
||||||
|
|
||||||
|
self.assertEqual({'fake_meter': 0}, usage)
|
||||||
|
@ -161,3 +161,25 @@ class NetworkServiceTransformer(BaseTransformer):
|
|||||||
max_vol = max(volumes) if len(volumes) else 0
|
max_vol = max(volumes) if len(volumes) else 0
|
||||||
hours = (end - start).total_seconds() / 3600.0
|
hours = (end - start).total_seconds() / 3600.0
|
||||||
return {name: max_vol * hours}
|
return {name: max_vol * hours}
|
||||||
|
|
||||||
|
|
||||||
|
class MagnumTransformer(BaseTransformer):
|
||||||
|
"""Transformer for Magnum clusters.
|
||||||
|
"""
|
||||||
|
|
||||||
|
def _transform_usage(self, name, data, start, end):
|
||||||
|
# NOTE(flwang): The magnum pollster of Ceilometer is using
|
||||||
|
# status as the volume(see ceilometer/cim/magnum.py), so we have
|
||||||
|
# to check the volume to make sure only the active clusters are
|
||||||
|
# charged.
|
||||||
|
charged_cluster_status = [2, 3, 4, 5, 9, 10, 11,
|
||||||
|
12, 13, 14, 15, 16, 17]
|
||||||
|
volumes = [v["volume"] for v in data if
|
||||||
|
v["volume"] in charged_cluster_status]
|
||||||
|
|
||||||
|
# If there is any valid status in this hour, then we think it's a valid
|
||||||
|
# sample.
|
||||||
|
max_vol = 1 if len(volumes) else 0
|
||||||
|
hours = (end - start).total_seconds() / 3600.0
|
||||||
|
return {name: max_vol * hours}
|
||||||
|
|
||||||
|
@ -241,3 +241,15 @@
|
|||||||
name:
|
name:
|
||||||
sources:
|
sources:
|
||||||
- name
|
- name
|
||||||
|
|
||||||
|
-
|
||||||
|
meter: cim.coe.cluster
|
||||||
|
service: p1.coe
|
||||||
|
type: COE Cluster
|
||||||
|
transformer: MagnumTransformer
|
||||||
|
unit: hour
|
||||||
|
metadata:
|
||||||
|
name:
|
||||||
|
sources:
|
||||||
|
- name
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user