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 classtype_from_id(id): "classtype_from_id(id) -> (class, type) pair from numeric id" if not _init_maps(): raise KeyError(id) finfo = pysilk.flowtype_info()[id] cinfo = pysilk.class_info()['data'] return (cinfo[finfo['class']]['name'], finfo['type'])
def classtypes(): "classtypes() -> tuple of (class, type) pairs" _init_maps() clinfo = pysilk.class_info()['data'] return tuple((clinfo[x['class']]['name'], x['type']) for x in itervalues(pysilk.flowtype_info()))