def get_check(name, config_str): checksd_path = Paths().get_checksd_path() if checksd_path not in sys.path: sys.path.append(checksd_path) check_module = __import__(name) check_class = None classes = inspect.getmembers(check_module, inspect.isclass) for name, clsmember in classes: if AgentCheck in clsmember.__bases__: check_class = clsmember break if check_class is None: raise Exception( "Unable to import check %s. Missing a class that inherits AgentCheck" % name) return check_class.from_yaml(yaml_text=config_str, check_name=name)
def load_check(name, config): checksd_path = Paths().get_checksd_path() if checksd_path not in sys.path: sys.path.append(checksd_path) check_module = __import__(name) check_class = None classes = inspect.getmembers(check_module, inspect.isclass) for name, clsmember in classes: if clsmember == AgentCheck: continue if issubclass(clsmember, AgentCheck): check_class = clsmember if AgentCheck in clsmember.__bases__: continue else: break if check_class is None: raise Exception( "Unable to import check %s. Missing a class that inherits AgentCheck" % name) init_config = config.get('init_config', None) instances = config.get('instances') agent_config = base_config.get_config(sections='Main') # init the check class try: return check_class(name, init_config=init_config, agent_config=agent_config, instances=instances) except: # Backwards compatitiblity for old checks that don't support the # instances argument. c = check_class(name, init_config=init_config, agent_config=agent_config) c.instances = instances return c