def __call__(self, outputs, datetime=None) -> bool:
        command_out = outputs.get('stdout', None)
        time_output = outputs.get('stderr', None)
        rc = outputs.get('rc')
        try:
            exp_rc = self.options.get('rc', None)
            if exp_rc:
                if rc not in [int(_rc) for _rc in re.split(r'\s*\|\s*', exp_rc)]:
                    raise AssertionError(
                        f"Result return rc {rc} not match expected\nStdOut:\n\t{command_out}\nStdErr:\n\t{time_output}")
            data = time_output.split(',')
            row_dict = DotDict(**{k: v.replace('%', '') for (k, v) in [entry.split(':', 1) for entry in data]})
            for k in row_dict.keys():
                if k == 'Command':
                    continue
                row_dict.update({k: float(row_dict[k])})
            logger.info(f"Command: {row_dict.get('Command')} [Rc: {row_dict.get('Rc')}]")

            row = self.table.template(self.host_id, None, *tuple(list(row_dict.values()) + [-1]))
            du = model.data_factory(self.table, row, output=command_out, datetime=datetime)

            self.data_handler(du)
            return True
        except Exception as e:
            f, li = get_error_info()
            logger.error(f"{self.__class__.__name__}: {e}; File: {f}:{li}")
            raise RunnerError(f"{self}", f"{e}; File: {f}:{li}")