Source code for insights.cleaner.keyword

"""
Keyword Replacement
===================
"""

import logging
import os

from insights.cleaner.utilities import write_report

logger = logging.getLogger(__name__)


[docs] class Keyword(object): """ Class to replace the keyword specified by users to "keyword#" """ def __init__(self, keywords=None): # - Keyword replacement information self._kw_key = "keyword" self._kw_db = dict() # keyword database self._keywords2db(keywords) self._obfuscated = set() # keywords that have been replaced def _keywords2db(self, keywords): # processes optional keywords to add to be obfuscated try: if keywords: k_count = 0 for keyword in keywords: keyword = keyword.strip() o_kw = "{0}{1}".format(self._kw_key, k_count) self._kw_db[keyword] = o_kw logger.debug("Added Obfuscated Keyword - %s", o_kw) k_count += 1 logger.debug("Added All keyword Contents from Customer's configuration") except Exception as e: # pragma: no cover logger.warning(e)
[docs] def parse_line(self, line, **kwargs): if not line: return line for k, v in self._kw_db.items(): if k in line: logger.debug("Replacing Keyword - %s > %s", k, v) line = line.replace(k, v) self._obfuscated.add(k) return line
[docs] def mapping(self): mapping = [] for k in self._obfuscated: mapping.append({'original': k, 'obfuscated': self._kw_db[k]}) return mapping
[docs] def generate_report(self, report_dir, archive_name): try: kw_report_file = os.path.join(report_dir, "%s-keyword.csv" % archive_name) logger.info('Creating Keyword Report - %s', kw_report_file) lines = ['Replaced Keyword,Original Keyword'] for k in self._obfuscated: lines.append('{0},{1}'.format(k, self._kw_db[k])) except Exception as e: # pragma: no cover logger.exception(e) raise Exception('CreateReport Error: Error Creating Keyword Report') write_report(lines, kw_report_file) logger.info('Completed Keyword Report.')