def run_stage(self, stage): self.stage = stage self._make_verbose_path() self._make_report_path() self._make_arf_path() self._make_results_path() self.command_base = [] self.command_options = [] self.command_operands = [] result = None if stage == 'initial': result = self.initial() elif stage == 'remediation': result = self.remediation() elif stage == 'final': result = self.final() else: raise RuntimeError('Unknown stage: {}.'.format(stage)) if self.clean_files: for fname in self._filenames_to_clean_afterwards: os.remove(fname) if result: LogHelper.log_preloaded('pass') else: LogHelper.log_preloaded('fail') return result
def run_stage(self, stage): self.stage = stage self._make_verbose_path() self._make_report_path() self._make_arf_path() self._make_results_path() self.command_base = [] self.command_options = ['--verbose', 'DEVEL'] self.command_operands = [] result = None if stage == 'initial': result = self.initial() elif stage == 'remediation': result = self.remediation() elif stage == 'final': result = self.final() else: raise RuntimeError('Unknown stage: {}.'.format(stage)) if self.clean_files: for fname in tuple(self._filenames_to_clean_afterwards): try: os.remove(fname) except OSError: logging.error( "Failed to cleanup file '{0}'" .format(fname)) finally: self._filenames_to_clean_afterwards.remove(fname) if result: LogHelper.log_preloaded('pass') if self.clean_files: files_to_remove = [self.verbose_path] if stage in ['initial', 'final']: files_to_remove.append(self.results_path) for fname in tuple(files_to_remove): try: if os.path.exists(fname): os.remove(fname) except OSError: logging.error( "Failed to cleanup file '{0}'" .format(fname)) else: LogHelper.log_preloaded('fail') if self.manual_debug: self._wait_for_continue() return result
def run_stage(self, stage): self.stage = stage self._make_verbose_path() self._make_report_path() self._make_arf_path() self._make_results_path() self.command_base = [] self.command_options = ['--verbose', 'DEVEL'] self.command_operands = [] result = None if stage == 'initial': result = self.initial() elif stage == 'remediation': result = self.remediation() elif stage == 'final': result = self.final() else: raise RuntimeError('Unknown stage: {}.'.format(stage)) self._remove_files_to_clean() if result == 1: LogHelper.log_preloaded('pass') if self.clean_files: self._filenames_to_clean_afterwards.add(self.verbose_path) if stage in ['initial', 'remediation', 'final']: # We need the initial ARF so we can generate the remediation out of it later self._filenames_to_clean_afterwards.add(self.arf_path) elif result == 2: LogHelper.log_preloaded('notapplicable') else: LogHelper.log_preloaded('fail') if self.manual_debug: self._wait_for_continue() return result
# check expected result try: actual_results = re.findall('{0}:(.*)$'.format(rule_id), output, re.MULTILINE) except IndexError: LogHelper.preload_log(logging.ERROR, ('Rule {0} has not been ' 'evaluated! Wrong profile ' 'selected?').format(rule_id), 'fail') success = False else: if context not in actual_results: LogHelper.preload_log(logging.ERROR, ('Rule result should have been ' '"{0}", but is "{1}"!').format( context, ', '.join(actual_results)), 'fail') success = False if success and not dont_clean: # to save space, we are going to remove the report # as we have not encountered any anomalies os.remove(formatting['report']) if success: LogHelper.log_preloaded('pass') else: LogHelper.log_preloaded('fail') return success