def get_readable_metro_value(pds): """ Récupère et retourne une valeur "lisible" de métrologie, c'est à dire avec trois chiffres significatifs et l'ordre de grandeur. @param pds: l'indicateur de métrologie @type pds: C{vigilo.models.tables.perfdatasource.PerfDataSource} @return: un couple valeur entière, valeur en pourcentage @rtype: C{tuple} """ # doit être chargé après from vigilo.turbogears.controllers.proxy import get_through_proxy host = pds.host.name usage_url = "lastvalue?host=%s&ds=%s" % ( urllib2.quote(host, ''), urllib2.quote(pds.name, ''), ) try: usage_req = get_through_proxy("vigirrd", host, usage_url) except urllib2.HTTPError: logging.warning(_("Failed to get URL: %s"), url("/vigirrd/%s/%s" % (host, usage_url), qualified=True)) raise usage = simplejson.load(usage_req)['lastvalue'] try: usage = float(usage) if pds.max is not None: percent = int(usage / float(pds.max) * 100) else: percent = None usage = convert_with_unit(usage) except (ValueError, TypeError): LOGGER.warning(_("Failed to convert DS %(ds)s on %(host)s: " "value was %(value)s (max: %(max)s)"), { 'ds': pds.name, 'host': host, 'value': usage, 'max': pds.max, }) usage = percent = None return (usage, percent)