Use 'meta' in the openstack_glance plugin

This change modifies the openstack_glance collectd plugin to provide the
'status' and 'visibility' values in the 'meta' dict instead of
'type_instance'.

Change-Id: Ia8a187a11be25e3089cc88c45dfc920ac0f41935
This commit is contained in:
Simon Pasquier 2016-03-11 15:09:35 +01:00
parent ab142b8d45
commit 1e15fd5267
2 changed files with 11 additions and 9 deletions

View File

@ -49,7 +49,9 @@ class GlanceStatsPlugin(openstack.CollectdPlugin):
status = self.count_objects_group_by(images_details,
group_by_func=groupby)
for s, nb in status.iteritems():
self.dispatch_value(s, nb)
(name, visibility, status) = s.split('.')
self.dispatch_value(name, nb, meta={'visibility': visibility,
'status': status})
# sizes
def count_size_bytes(d):
@ -66,16 +68,18 @@ class GlanceStatsPlugin(openstack.CollectdPlugin):
group_by_func=groupby_size,
count_func=count_size_bytes)
for s, nb in sizes.iteritems():
self.dispatch_value(s, nb)
(name, visibility, status) = s.split('.')
self.dispatch_value(name, nb, meta={'visibility': visibility,
'status': status})
def dispatch_value(self, name, value):
def dispatch_value(self, name, value, meta=None):
v = collectd.Values(
plugin=PLUGIN_NAME, # metric source
type='gauge',
type_instance=name,
interval=INTERVAL,
# w/a for https://github.com/collectd/collectd/issues/716
meta={'0': True},
meta=meta or {'0': True},
values=[value]
)
v.dispatch()

View File

@ -223,12 +223,10 @@ function process_message ()
msg['Fields']['tag_fields'] = { 'state' }
msg['Fields']['state'] = sample['type_instance']
elseif metric_source == 'glance' then
-- TODO(pasquier-s): check if the collectd plugin can send state as type_instance
local resource, visibility, state = string.match(sample['type_instance'], '^([^.]+)%.([^.]+)%.(.+)$')
msg['Fields']['name'] = 'openstack' .. sep .. 'glance' .. sep .. replace_dot_by_sep(resource)
msg['Fields']['name'] = 'openstack' .. sep .. 'glance' .. sep .. sample['type_instance']
msg['Fields']['tag_fields'] = { 'state', 'visibility' }
msg['Fields']['state'] = state
msg['Fields']['visibility'] = visibility
msg['Fields']['state'] = sample['meta']['status']
msg['Fields']['visibility'] = sample['meta']['visibility']
elseif metric_source == 'keystone' then
-- TODO(pasquier-s): check if the collectd plugin can send state as type_instance
if sample['type_instance'] == 'roles' then