Update pollsters to return counter list
Have pollsters to return the counter list that will be potentially returned. For bp publisher-counters-frequency Change-Id: I103f8ed6ad314080d479d4a2053e0df4312c60a3 Signed-off-by: Yunhong, Jiang <yunhong.jiang@intel.com>
This commit is contained in:
parent
bc471f2bb6
commit
0425a42bfd
@ -51,6 +51,12 @@ def make_counter_from_instance(instance, name, type, unit, volume):
|
|||||||
|
|
||||||
class InstancePollster(plugin.ComputePollster):
|
class InstancePollster(plugin.ComputePollster):
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
def get_counter_names():
|
||||||
|
# Instance type counter is specific because it includes
|
||||||
|
# variable. We don't need such format in future
|
||||||
|
return ['instance', 'instance:*']
|
||||||
|
|
||||||
def get_counters(self, manager, instance):
|
def get_counters(self, manager, instance):
|
||||||
yield make_counter_from_instance(instance,
|
yield make_counter_from_instance(instance,
|
||||||
name='instance',
|
name='instance',
|
||||||
@ -78,6 +84,13 @@ class DiskIOPollster(plugin.ComputePollster):
|
|||||||
"errors=%d",
|
"errors=%d",
|
||||||
])
|
])
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
def get_counter_names():
|
||||||
|
return ['disk.read.requests',
|
||||||
|
'disk.read.bytes',
|
||||||
|
'disk.write.requests',
|
||||||
|
'disk.write.bytes']
|
||||||
|
|
||||||
def get_counters(self, manager, instance):
|
def get_counters(self, manager, instance):
|
||||||
instance_name = _instance_name(instance)
|
instance_name = _instance_name(instance)
|
||||||
try:
|
try:
|
||||||
@ -147,6 +160,10 @@ class CPUPollster(plugin.ComputePollster):
|
|||||||
cpu_util = 100 * cores_fraction * time_used / elapsed
|
cpu_util = 100 * cores_fraction * time_used / elapsed
|
||||||
return cpu_util
|
return cpu_util
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
def get_counter_names():
|
||||||
|
return ['cpu', 'cpu_util']
|
||||||
|
|
||||||
def get_counters(self, manager, instance):
|
def get_counters(self, manager, instance):
|
||||||
self.LOG.info('checking instance %s', instance.id)
|
self.LOG.info('checking instance %s', instance.id)
|
||||||
instance_name = _instance_name(instance)
|
instance_name = _instance_name(instance)
|
||||||
@ -207,6 +224,13 @@ class NetPollster(plugin.ComputePollster):
|
|||||||
resource_metadata=resource_metadata
|
resource_metadata=resource_metadata
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
def get_counter_names():
|
||||||
|
return ['network.incoming.bytes',
|
||||||
|
'network.incoming.packets',
|
||||||
|
'network.outgoing.bytes',
|
||||||
|
'network.outgoing.packets']
|
||||||
|
|
||||||
def get_counters(self, manager, instance):
|
def get_counters(self, manager, instance):
|
||||||
instance_name = _instance_name(instance)
|
instance_name = _instance_name(instance)
|
||||||
self.LOG.info('checking instance %s', instance.id)
|
self.LOG.info('checking instance %s', instance.id)
|
||||||
|
@ -72,6 +72,10 @@ class _Base(plugin.CentralPollster):
|
|||||||
class KwapiPollster(_Base):
|
class KwapiPollster(_Base):
|
||||||
"""Kwapi pollster derived from the base class."""
|
"""Kwapi pollster derived from the base class."""
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
def get_counter_names():
|
||||||
|
return ['energy', 'power']
|
||||||
|
|
||||||
def get_counters(self, manager):
|
def get_counters(self, manager):
|
||||||
"""Returns all counters."""
|
"""Returns all counters."""
|
||||||
for probe in self.iter_probes():
|
for probe in self.iter_probes():
|
||||||
|
@ -83,6 +83,10 @@ class _Base(plugin.PollsterBase):
|
|||||||
|
|
||||||
class ImagePollster(_Base):
|
class ImagePollster(_Base):
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
def get_counter_names():
|
||||||
|
return ['image', 'image.size']
|
||||||
|
|
||||||
def get_counters(self, manager):
|
def get_counters(self, manager):
|
||||||
for image in self.iter_images():
|
for image in self.iter_images():
|
||||||
yield counter.Counter(
|
yield counter.Counter(
|
||||||
|
@ -28,6 +28,10 @@ class FloatingIPPollster(plugin.CentralPollster):
|
|||||||
|
|
||||||
LOG = log.getLogger(__name__ + '.floatingip')
|
LOG = log.getLogger(__name__ + '.floatingip')
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
def get_counter_names():
|
||||||
|
return ['ip.floating']
|
||||||
|
|
||||||
def get_counters(self, manager):
|
def get_counters(self, manager):
|
||||||
nv = nova_client.Client()
|
nv = nova_client.Client()
|
||||||
for ip in nv.floating_ip_get_all():
|
for ip in nv.floating_ip_get_all():
|
||||||
|
@ -93,6 +93,12 @@ class SwiftPollster(_Base):
|
|||||||
"""Iterate over all accounts, using keystone.
|
"""Iterate over all accounts, using keystone.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
def get_counter_names():
|
||||||
|
return ['storage.objects',
|
||||||
|
'storage.objects.size',
|
||||||
|
'storage.objects.containers']
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def iter_accounts():
|
def iter_accounts():
|
||||||
ks = ksclient.Client(username=cfg.CONF.os_username,
|
ks = ksclient.Client(username=cfg.CONF.os_username,
|
||||||
|
@ -77,6 +77,11 @@ class PollsterBase(PluginBase):
|
|||||||
|
|
||||||
__metaclass__ = abc.ABCMeta
|
__metaclass__ = abc.ABCMeta
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
@abc.abstractmethod
|
||||||
|
def get_counter_names():
|
||||||
|
"""Return a sequence of Counter names supported by the pollster."""
|
||||||
|
|
||||||
@abc.abstractmethod
|
@abc.abstractmethod
|
||||||
def get_counters(self, manager, instance):
|
def get_counters(self, manager, instance):
|
||||||
"""Return a sequence of Counter instances from polling the
|
"""Return a sequence of Counter instances from polling the
|
||||||
|
@ -82,6 +82,9 @@ class TestDiskIOPollster(TestPollsterBase):
|
|||||||
counters = list(pollster.get_counters(mgr, self.instance))
|
counters = list(pollster.get_counters(mgr, self.instance))
|
||||||
assert counters
|
assert counters
|
||||||
|
|
||||||
|
self.assertEqual(set([c.name for c in counters]),
|
||||||
|
set(pollster.get_counter_names()))
|
||||||
|
|
||||||
def _verify_disk_metering(name, expected_volume):
|
def _verify_disk_metering(name, expected_volume):
|
||||||
match = [c for c in counters if c.name == name]
|
match = [c for c in counters if c.name == name]
|
||||||
self.assertEquals(len(match), 1, 'missing counter %s' % name)
|
self.assertEquals(len(match), 1, 'missing counter %s' % name)
|
||||||
@ -129,6 +132,8 @@ class TestNetPollster(TestPollsterBase):
|
|||||||
pollster = pollsters.NetPollster()
|
pollster = pollsters.NetPollster()
|
||||||
counters = list(pollster.get_counters(mgr, self.instance))
|
counters = list(pollster.get_counters(mgr, self.instance))
|
||||||
assert counters
|
assert counters
|
||||||
|
self.assertEqual(set([c.name for c in counters]),
|
||||||
|
set(pollster.get_counter_names()))
|
||||||
|
|
||||||
def _verify_vnic_metering(name, ip, expected_volume):
|
def _verify_vnic_metering(name, ip, expected_volume):
|
||||||
match = [c for c in counters if c.name == name and
|
match = [c for c in counters if c.name == name and
|
||||||
@ -168,6 +173,8 @@ class TestCPUPollster(TestPollsterBase):
|
|||||||
def _verify_cpu_metering(zero, expected_time):
|
def _verify_cpu_metering(zero, expected_time):
|
||||||
counters = list(pollster.get_counters(mgr, self.instance))
|
counters = list(pollster.get_counters(mgr, self.instance))
|
||||||
self.assertEquals(len(counters), 2)
|
self.assertEquals(len(counters), 2)
|
||||||
|
self.assertEqual(set([c.name for c in counters]),
|
||||||
|
set(pollster.get_counter_names()))
|
||||||
assert counters[0].name == 'cpu_util'
|
assert counters[0].name == 'cpu_util'
|
||||||
assert (counters[0].volume == 0.0 if zero else
|
assert (counters[0].volume == 0.0 if zero else
|
||||||
counters[0].volume > 0.0)
|
counters[0].volume > 0.0)
|
||||||
|
@ -78,3 +78,8 @@ class TestKwapiPollster(base.TestCase):
|
|||||||
self.assert_(
|
self.assert_(
|
||||||
any(map(lambda counter: counter.volume == probe['w'],
|
any(map(lambda counter: counter.volume == probe['w'],
|
||||||
power_counters)))
|
power_counters)))
|
||||||
|
|
||||||
|
def test_kwapi_counter_list(self):
|
||||||
|
counters = list(kwapi.KwapiPollster().get_counters(self.manager))
|
||||||
|
self.assertEqual(set([c.name for c in counters]),
|
||||||
|
set(kwapi.KwapiPollster().get_counter_names()))
|
||||||
|
@ -105,3 +105,8 @@ class TestImagePollster(base.TestCase):
|
|||||||
self.assert_(
|
self.assert_(
|
||||||
any(map(lambda counter: counter.volume == image.size,
|
any(map(lambda counter: counter.volume == image.size,
|
||||||
counters)))
|
counters)))
|
||||||
|
|
||||||
|
def test_get_counter_names(self):
|
||||||
|
counters = list(glance.ImagePollster().get_counters(self.manager))
|
||||||
|
self.assertEqual(set([c.name for c in counters]),
|
||||||
|
set(glance.ImagePollster().get_counter_names()))
|
||||||
|
@ -67,3 +67,8 @@ class TestFloatingIPPollster(base.TestCase):
|
|||||||
'1.1.1.2',
|
'1.1.1.2',
|
||||||
'1.1.1.3',
|
'1.1.1.3',
|
||||||
])
|
])
|
||||||
|
|
||||||
|
def test_get_counter_names(self):
|
||||||
|
counters = list(self.pollster.get_counters(self.manager))
|
||||||
|
self.assertEqual(set([c.name for c in counters]),
|
||||||
|
set(self.pollster.get_counter_names()))
|
||||||
|
@ -48,3 +48,8 @@ class TestSwiftPollster(base.TestCase):
|
|||||||
def test_objectstore_metering(self):
|
def test_objectstore_metering(self):
|
||||||
counters = list(self.pollster.get_counters(self.manager))
|
counters = list(self.pollster.get_counters(self.manager))
|
||||||
self.assertEqual(len(counters), 6)
|
self.assertEqual(len(counters), 6)
|
||||||
|
|
||||||
|
def test_objectstore_get_counter_names(self):
|
||||||
|
counters = list(self.pollster.get_counters(None))
|
||||||
|
self.assertEqual(set([c.name for c in counters]),
|
||||||
|
set(self.pollster.get_counter_names()))
|
||||||
|
Loading…
Reference in New Issue
Block a user