diff --git a/cloudcontrol/node/hypervisor/lib.py b/cloudcontrol/node/hypervisor/lib.py index 81841f8e26da34b504fe16b7a722aa03696cc3d8..fdcf3d1a25f19917b3854a4fadcd29e99f647fbb 100644 --- a/cloudcontrol/node/hypervisor/lib.py +++ b/cloudcontrol/node/hypervisor/lib.py @@ -20,6 +20,7 @@ import logging from itertools import chain, imap, count from StringIO import StringIO from xml.etree import cElementTree as et +from functools import partial import pyev import libvirt @@ -321,17 +322,17 @@ class StorageIndex(object): self.storages[s.name] = s # add tags self.handler.tag_db.add_tags(( - Tag('sto%s_state' % s.name, lambda: s.state, 5, 5), - Tag('sto%s_size' % s.name, lambda: s.capacity, 5, 5), - Tag('sto%s_free' % s.name, lambda: s.available, 5, 5), + Tag('sto%s_state' % s.name, partial(lambda x: x.state, s), 5, 5), + Tag('sto%s_size' % s.name, partial(lambda x: x.capacity, s), 5, 5), + Tag('sto%s_free' % s.name, partial(lambda x: x.available, s), 5, 5), Tag('sto%s_used' % s.name, - lambda: s.capacity - s.available, 5, 5), - Tag('sto%s_type' % s.name, lambda: s.type, 5, 5), + partial(lambda x: x.capacity - x.available, s), 5, 5), + Tag('sto%s_type' % s.name, partial(lambda x: x.type, s), 5, 5), Tag('sto%s_vol' % s.name, - lambda: ' '.join(s.volumes) if s.volumes and not s.is_shared else None, + partial(lambda x: ' '.join(x.volumes) if x.volumes and not x.is_shared else None, s), 5, 5), Tag('sto%s_ratio' % s.name, - lambda: '%0.2f' % (1 - float(s.available) / s.capacity), 5, 5), + partial(lambda x: '%0.2f' % (1 - float(x.available) / x.capacity), s), 5, 5), )) self.update_path_index()