Revert "remove instance:<flavor> meter"
This reverts commit 88dcdb5d70c806b18aeb604040ee85e1ac8e7c51. Partially Closes-Bug: #1439766 DocImpact Change-Id: I59938b9129b23d140a443cf055ea73b3568f00d4
This commit is contained in:
parent
bf72980e5d
commit
2fb046fb66
@ -141,6 +141,22 @@ class EphemeralDiskSize(ComputeInstanceNotificationBase):
|
|||||||
message=message)
|
message=message)
|
||||||
|
|
||||||
|
|
||||||
|
class InstanceFlavor(ComputeInstanceNotificationBase,
|
||||||
|
plugin_base.NonMetricNotificationBase):
|
||||||
|
def get_sample(self, message):
|
||||||
|
instance_type = message.get('payload', {}).get('instance_type')
|
||||||
|
if instance_type:
|
||||||
|
yield sample.Sample.from_notification(
|
||||||
|
name='instance:%s' % instance_type,
|
||||||
|
type=sample.TYPE_GAUGE,
|
||||||
|
unit='instance',
|
||||||
|
volume=1,
|
||||||
|
user_id=message['payload']['user_id'],
|
||||||
|
project_id=message['payload']['tenant_id'],
|
||||||
|
resource_id=message['payload']['instance_id'],
|
||||||
|
message=message)
|
||||||
|
|
||||||
|
|
||||||
class InstanceDelete(ComputeInstanceNotificationBase):
|
class InstanceDelete(ComputeInstanceNotificationBase):
|
||||||
"""Handle the messages sent by the nova notifier plugin.
|
"""Handle the messages sent by the nova notifier plugin.
|
||||||
|
|
||||||
|
@ -31,3 +31,19 @@ class InstancePollster(pollsters.BaseComputePollster):
|
|||||||
unit='instance',
|
unit='instance',
|
||||||
volume=1,
|
volume=1,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
class InstanceFlavorPollster(pollsters.BaseComputePollster):
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
def get_samples(manager, cache, resources):
|
||||||
|
for instance in resources:
|
||||||
|
yield util.make_sample_from_instance(
|
||||||
|
instance,
|
||||||
|
# Use the "meter name + variable" syntax
|
||||||
|
name='instance:%s' %
|
||||||
|
instance.flavor['name'],
|
||||||
|
type=sample.TYPE_GAUGE,
|
||||||
|
unit='instance',
|
||||||
|
volume=1,
|
||||||
|
)
|
||||||
|
@ -248,7 +248,19 @@ class SampleSource(Source):
|
|||||||
raise PipelineException("Discovery should be a list", cfg)
|
raise PipelineException("Discovery should be a list", cfg)
|
||||||
self.check_source_filtering(self.meters, 'meters')
|
self.check_source_filtering(self.meters, 'meters')
|
||||||
|
|
||||||
|
# (yjiang5) To support meters like instance:m1.tiny,
|
||||||
|
# which include variable part at the end starting with ':'.
|
||||||
|
# Hope we will not add such meters in future.
|
||||||
|
@staticmethod
|
||||||
|
def _variable_meter_name(name):
|
||||||
|
m = name.partition(':')
|
||||||
|
if m[1] == ':':
|
||||||
|
return m[1].join((m[0], '*'))
|
||||||
|
else:
|
||||||
|
return name
|
||||||
|
|
||||||
def support_meter(self, meter_name):
|
def support_meter(self, meter_name):
|
||||||
|
meter_name = self._variable_meter_name(meter_name)
|
||||||
return self.is_supported(self.meters, meter_name)
|
return self.is_supported(self.meters, meter_name)
|
||||||
|
|
||||||
|
|
||||||
|
@ -631,6 +631,13 @@ class TestNotifications(base.BaseTestCase):
|
|||||||
c = counters[0]
|
c = counters[0]
|
||||||
self.assertEqual(1, c.volume)
|
self.assertEqual(1, c.volume)
|
||||||
|
|
||||||
|
def test_instance_create_flavor(self):
|
||||||
|
ic = instance.InstanceFlavor(None)
|
||||||
|
counters = list(ic.process_notification(INSTANCE_CREATE_END))
|
||||||
|
self.assertEqual(1, len(counters))
|
||||||
|
c = counters[0]
|
||||||
|
self.assertEqual(1, c.volume)
|
||||||
|
|
||||||
def test_instance_create_memory(self):
|
def test_instance_create_memory(self):
|
||||||
ic = instance.Memory(None)
|
ic = instance.Memory(None)
|
||||||
counters = list(ic.process_notification(INSTANCE_CREATE_END))
|
counters = list(ic.process_notification(INSTANCE_CREATE_END))
|
||||||
@ -670,11 +677,21 @@ class TestNotifications(base.BaseTestCase):
|
|||||||
counters = list(ic.process_notification(INSTANCE_EXISTS_METADATA_LIST))
|
counters = list(ic.process_notification(INSTANCE_EXISTS_METADATA_LIST))
|
||||||
self.assertEqual(1, len(counters))
|
self.assertEqual(1, len(counters))
|
||||||
|
|
||||||
|
def test_instance_exists_flavor(self):
|
||||||
|
ic = instance.Instance(None)
|
||||||
|
counters = list(ic.process_notification(INSTANCE_EXISTS))
|
||||||
|
self.assertEqual(1, len(counters))
|
||||||
|
|
||||||
def test_instance_delete_instance(self):
|
def test_instance_delete_instance(self):
|
||||||
ic = instance.Instance(None)
|
ic = instance.Instance(None)
|
||||||
counters = list(ic.process_notification(INSTANCE_DELETE_START))
|
counters = list(ic.process_notification(INSTANCE_DELETE_START))
|
||||||
self.assertEqual(1, len(counters))
|
self.assertEqual(1, len(counters))
|
||||||
|
|
||||||
|
def test_instance_delete_flavor(self):
|
||||||
|
ic = instance.Instance(None)
|
||||||
|
counters = list(ic.process_notification(INSTANCE_DELETE_START))
|
||||||
|
self.assertEqual(1, len(counters))
|
||||||
|
|
||||||
def test_instance_finish_resize_instance(self):
|
def test_instance_finish_resize_instance(self):
|
||||||
ic = instance.Instance(None)
|
ic = instance.Instance(None)
|
||||||
counters = list(ic.process_notification(INSTANCE_FINISH_RESIZE_END))
|
counters = list(ic.process_notification(INSTANCE_FINISH_RESIZE_END))
|
||||||
@ -683,6 +700,15 @@ class TestNotifications(base.BaseTestCase):
|
|||||||
self.assertEqual(1, c.volume)
|
self.assertEqual(1, c.volume)
|
||||||
self._verify_user_metadata(c.resource_metadata)
|
self._verify_user_metadata(c.resource_metadata)
|
||||||
|
|
||||||
|
def test_instance_finish_resize_flavor(self):
|
||||||
|
ic = instance.InstanceFlavor(None)
|
||||||
|
counters = list(ic.process_notification(INSTANCE_FINISH_RESIZE_END))
|
||||||
|
self.assertEqual(1, len(counters))
|
||||||
|
c = counters[0]
|
||||||
|
self.assertEqual(1, c.volume)
|
||||||
|
self.assertEqual('instance:m1.small', c.name)
|
||||||
|
self._verify_user_metadata(c.resource_metadata)
|
||||||
|
|
||||||
def test_instance_finish_resize_memory(self):
|
def test_instance_finish_resize_memory(self):
|
||||||
ic = instance.Memory(None)
|
ic = instance.Memory(None)
|
||||||
counters = list(ic.process_notification(INSTANCE_FINISH_RESIZE_END))
|
counters = list(ic.process_notification(INSTANCE_FINISH_RESIZE_END))
|
||||||
@ -709,6 +735,15 @@ class TestNotifications(base.BaseTestCase):
|
|||||||
self.assertEqual(1, c.volume)
|
self.assertEqual(1, c.volume)
|
||||||
self._verify_user_metadata(c.resource_metadata)
|
self._verify_user_metadata(c.resource_metadata)
|
||||||
|
|
||||||
|
def test_instance_resize_finish_flavor(self):
|
||||||
|
ic = instance.InstanceFlavor(None)
|
||||||
|
counters = list(ic.process_notification(INSTANCE_RESIZE_REVERT_END))
|
||||||
|
self.assertEqual(1, len(counters))
|
||||||
|
c = counters[0]
|
||||||
|
self.assertEqual(1, c.volume)
|
||||||
|
self.assertEqual('instance:m1.tiny', c.name)
|
||||||
|
self._verify_user_metadata(c.resource_metadata)
|
||||||
|
|
||||||
def test_instance_resize_finish_memory(self):
|
def test_instance_resize_finish_memory(self):
|
||||||
ic = instance.Memory(None)
|
ic = instance.Memory(None)
|
||||||
counters = list(ic.process_notification(INSTANCE_RESIZE_REVERT_END))
|
counters = list(ic.process_notification(INSTANCE_RESIZE_REVERT_END))
|
||||||
|
@ -41,6 +41,14 @@ class TestInstancePollster(base.TestPollsterBase):
|
|||||||
self.assertEqual(0, samples[0].resource_metadata['ephemeral_gb'])
|
self.assertEqual(0, samples[0].resource_metadata['ephemeral_gb'])
|
||||||
self.assertEqual('active', samples[0].resource_metadata['status'])
|
self.assertEqual('active', samples[0].resource_metadata['status'])
|
||||||
|
|
||||||
|
@mock.patch('ceilometer.pipeline.setup_pipeline', mock.MagicMock())
|
||||||
|
def test_get_samples_instance_flavor(self):
|
||||||
|
mgr = manager.AgentManager()
|
||||||
|
pollster = pollsters_instance.InstanceFlavorPollster()
|
||||||
|
samples = list(pollster.get_samples(mgr, {}, [self.instance]))
|
||||||
|
self.assertEqual(1, len(samples))
|
||||||
|
self.assertEqual('instance:m1.small', samples[0].name)
|
||||||
|
|
||||||
@mock.patch('ceilometer.pipeline.setup_pipeline', mock.MagicMock())
|
@mock.patch('ceilometer.pipeline.setup_pipeline', mock.MagicMock())
|
||||||
def test_get_reserved_metadata_with_keys(self):
|
def test_get_reserved_metadata_with_keys(self):
|
||||||
self.CONF = self.useFixture(fixture_config.Config()).conf
|
self.CONF = self.useFixture(fixture_config.Config()).conf
|
||||||
|
@ -751,6 +751,43 @@ class BasePipelineTestCase(base.BaseTestCase):
|
|||||||
self.assertEqual('a_update',
|
self.assertEqual('a_update',
|
||||||
getattr(publisher.samples[0], 'name'))
|
getattr(publisher.samples[0], 'name'))
|
||||||
|
|
||||||
|
def test_variable_counter(self):
|
||||||
|
self.pipeline_cfg = [{
|
||||||
|
'name': "test_pipeline",
|
||||||
|
'interval': 5,
|
||||||
|
'counters': ['a:*'],
|
||||||
|
'transformers': [
|
||||||
|
{'name': "update",
|
||||||
|
'parameters': {}}
|
||||||
|
],
|
||||||
|
'publishers': ["test://"],
|
||||||
|
}, ]
|
||||||
|
pipeline_manager = pipeline.PipelineManager(self.pipeline_cfg,
|
||||||
|
self.transformer_manager)
|
||||||
|
|
||||||
|
self.test_counter = sample.Sample(
|
||||||
|
name='a:b',
|
||||||
|
type=self.test_counter.type,
|
||||||
|
volume=self.test_counter.volume,
|
||||||
|
unit=self.test_counter.unit,
|
||||||
|
user_id=self.test_counter.user_id,
|
||||||
|
project_id=self.test_counter.project_id,
|
||||||
|
resource_id=self.test_counter.resource_id,
|
||||||
|
timestamp=self.test_counter.timestamp,
|
||||||
|
resource_metadata=self.test_counter.resource_metadata,
|
||||||
|
)
|
||||||
|
|
||||||
|
with pipeline_manager.publisher(None) as p:
|
||||||
|
p([self.test_counter])
|
||||||
|
|
||||||
|
publisher = pipeline_manager.pipelines[0].publishers[0]
|
||||||
|
self.assertEqual(1, len(publisher.samples))
|
||||||
|
self.assertEqual(1, len(self.TransformerClass.samples))
|
||||||
|
self.assertEqual('a:b_update',
|
||||||
|
getattr(publisher.samples[0], "name"))
|
||||||
|
self.assertEqual('a:b',
|
||||||
|
getattr(self.TransformerClass.samples[0], "name"))
|
||||||
|
|
||||||
def test_global_unit_conversion(self):
|
def test_global_unit_conversion(self):
|
||||||
scale = 'volume / ((10**6) * 60)'
|
scale = 'volume / ((10**6) * 60)'
|
||||||
transformer_cfg = [
|
transformer_cfg = [
|
||||||
|
@ -31,6 +31,7 @@ ceilometer.notification =
|
|||||||
magnetodb_table = ceilometer.key_value_storage.notifications:Table
|
magnetodb_table = ceilometer.key_value_storage.notifications:Table
|
||||||
magnetodb_index_count = ceilometer.key_value_storage.notifications:Index
|
magnetodb_index_count = ceilometer.key_value_storage.notifications:Index
|
||||||
instance = ceilometer.compute.notifications.instance:Instance
|
instance = ceilometer.compute.notifications.instance:Instance
|
||||||
|
instance_flavor = ceilometer.compute.notifications.instance:InstanceFlavor
|
||||||
instance_delete = ceilometer.compute.notifications.instance:InstanceDelete
|
instance_delete = ceilometer.compute.notifications.instance:InstanceDelete
|
||||||
instance_scheduled = ceilometer.compute.notifications.instance:InstanceScheduled
|
instance_scheduled = ceilometer.compute.notifications.instance:InstanceScheduled
|
||||||
memory = ceilometer.compute.notifications.instance:Memory
|
memory = ceilometer.compute.notifications.instance:Memory
|
||||||
@ -139,6 +140,7 @@ ceilometer.poll.compute =
|
|||||||
network.incoming.bytes.rate = ceilometer.compute.pollsters.net:IncomingBytesRatePollster
|
network.incoming.bytes.rate = ceilometer.compute.pollsters.net:IncomingBytesRatePollster
|
||||||
network.outgoing.bytes.rate = ceilometer.compute.pollsters.net:OutgoingBytesRatePollster
|
network.outgoing.bytes.rate = ceilometer.compute.pollsters.net:OutgoingBytesRatePollster
|
||||||
instance = ceilometer.compute.pollsters.instance:InstancePollster
|
instance = ceilometer.compute.pollsters.instance:InstancePollster
|
||||||
|
instance_flavor = ceilometer.compute.pollsters.instance:InstanceFlavorPollster
|
||||||
memory.usage = ceilometer.compute.pollsters.memory:MemoryUsagePollster
|
memory.usage = ceilometer.compute.pollsters.memory:MemoryUsagePollster
|
||||||
memory.resident = ceilometer.compute.pollsters.memory:MemoryResidentPollster
|
memory.resident = ceilometer.compute.pollsters.memory:MemoryResidentPollster
|
||||||
disk.capacity = ceilometer.compute.pollsters.disk:CapacityPollster
|
disk.capacity = ceilometer.compute.pollsters.disk:CapacityPollster
|
||||||
|
Loading…
x
Reference in New Issue
Block a user