def apply_scan(self): """Extract tar ball for remediation""" self.prepare_apply_directories() tarball_result_dir(self.conf.apply, self.conf.result_dir, self.conf.verbose, direction=False) if remediate.hash_postupgrade_file(self.conf.verbose, self.get_postupgrade_dir(), check=True): remediate.postupgrade_scripts(self.conf.verbose, self.get_postupgrade_dir())
def scan_system(self): """The function is used for scanning system with all steps.""" self._set_devel_mode() self.prepare_scan_system() assessment_dir = self.generate_report() # Update source XML file in temporary directory self.content = os.path.join(assessment_dir, settings.content_file) try: self.report_parser = ReportParser(self.content) except IOError: log_message("Content {0} does not exist".format(self.content)) sys.exit(1) if not self.conf.contents: version = get_assessment_version(self.conf.scan) if version is None: log_message("Your scan have wrong format", level=logging.ERROR) log_message("Examples format is like RHEL6_7", level=logging.ERROR) sys.exit(1) self.report_parser.modify_platform_tag(version[0]) if self.conf.mode: try: lines = [i.rstrip() for i in get_file_content(os.path.join(os.path.dirname(self.path), self.conf.mode), 'rb', method=True)] except IOError: return self.report_parser.select_rules(lines) if self.conf.select_rules: lines = [i.strip() for i in self.conf.select_rules.split(',')] unknown_rules = self.report_parser.check_rules(lines) if unknown_rules: log_message(settings.unknown_rules % '\n'.join(unknown_rules)) self.report_parser.select_rules(lines) self.run_scan_process() main_report = self.scanning_progress.get_output_data() # This function prepare XML and generate HTML self.prepare_xml_for_html() third_party_dir_name = self.get_third_party_dir(assessment_dir) if os.path.exists(third_party_dir_name): self.run_third_party_modules(third_party_dir_name) self.copy_preupgrade_scripts(assessment_dir) # It prints out result in table format format_rules_to_table(main_report, "main contents") for target, report in six.iteritems(self.report_data): format_rules_to_table(report, "3rdparty content " + target) tar_ball_name = tarball_result_dir(self.conf.tarball_name, self.conf.result_dir, self.conf.verbose) log_message("Tarball with results is stored here %s ." % tar_ball_name) log_message("The latest assessment is stored in directory %s ." % self.conf.result_dir) # pack all configuration files to tarball return tar_ball_name