def _init_maps(): global _initialized global _default_class if _initialized or not (have_site_config() or init_site()): return _initialized si = pysilk.sensor_info() ci = pysilk.class_info() fi = pysilk.flowtype_info() default_classid = ci['default'] ci = ci['data'] for item in itervalues(si): newitem = copy.deepcopy(item) newitem['classes'] = tuple(ci[x]['name'] for x in item['classes']) _sensor_map[item['name']] = newitem if default_classid is not None: _default_class = ci[default_classid]['name'] for item in itervalues(ci): newitem = copy.deepcopy(item) newitem['sensors'] = tuple(si[x]['name'] for x in item['sensors']) newitem['flowtypes'] = tuple(fi[x]['name'] for x in item['flowtypes']) newitem['default_flowtypes'] = tuple(fi[x]['name'] for x in item['default_flowtypes']) _class_map[item['name']] = newitem for item in itervalues(fi): newitem = copy.deepcopy(item) newitem['class'] = ci[item['class']]['name'] _flowtype_map[item['name']] = newitem cdict = _classtype_map.setdefault(ci[item['class']]['name'], {}) cdict[item['type']] = newitem _initialized = True return True
def sensor_from_id(id): "sensor_from_id(id) -> sensor from numeric id" if not _init_maps(): raise KeyError(id) sinfo = pysilk.sensor_info() return sinfo[id]['name']