import sys import splunk import splunk.entity as en import splunk.Intersplunk as si import string import logging, logging.handlers import os from itertools import groupby from operator import itemgetter from splunk.entity import Entity import json import operator import bz2,json,contextlib,codecs import time import splunk.bundle as bundle import splunk.util as util from splunk.clilib.bundle_paths import make_splunkhome_path sys.path.append(make_splunkhome_path(['etc', 'apps', 'DA-ITSI-CP-vmware-dashboards', 'lib'])) from vmware_utils import six try: from urllib.request import urlopen except ImportError: from urllib2 import urlopen class Usage(Exception): def __init__(self, value): self.value = value def __str__(self): return repr(self.value) class NoMatch(Exception): pass (isgetinfo, sys.argv) = si.isGetInfo(sys.argv) if isgetinfo: si.outputInfo(True, False, True, False, None, False) sys.exit(0) #results = si.readResults(None, None, True) results,dummyresults,settings = si.getOrganizedResults() ## Get session key sessionKey = settings.get('sessionKey', None) # Get the host host = splunk.getDefault("host") #splunk_home= os.environ['SPLUNK_HOME'] datastructures_path = make_splunkhome_path(['etc', 'apps', 'DA-ITSI-CP-vmware-dashboards', 'local', 'data']) def setup_logger(): """ Setup a logger for the search command """ # Do not ship with a DEBUG level. It will overflow customer machines. (TAG-8235) logger = logging.getLogger('generateIIT') logger.setLevel(logging.INFO) file_handler = logging.handlers.RotatingFileHandler(os.environ['SPLUNK_HOME'] + '/var/log/splunk/generateIIT.log' ) formatter = logging.Formatter('%(asctime)s %(levelname)s %(message)s') file_handler.setFormatter(formatter) logger.addHandler(file_handler) return logger def buildPrefixTree(keys, partial_matching, suggestionsLimit): """ /** * Builds Prefix tree with all the prefixes * for each key in 'keys' added to IIT * T */ """ iit={} allPrefixKeys=[] keyIIT={} for i in range(0,len(keys)): key=keys[i] if partial_matching: [allprefixTree, keyIIT]=addtoKeyIndex(key, allPrefixKeys, keyIIT, suggestionsLimit) for j in range(len(key),0, -1): word=key[0:j] if(not word in iit ): iit[word]=[] iit[word].append(i) else: keyPts=iit[word] if len(keyPts)< suggestionsLimit: keyPts.append(i) else: break; prefixTree={} prefixTree['iit']=iit prefixTree['allPrefixKeys']=allPrefixKeys prefixTree['keyIIT']=keyIIT return prefixTree def addtoKeyIndex(word, allPrefixKeys, keyIIT, suggestionsLimit): """ /** * Add keys to Character level Inverted Index Trees Input * word- key that needs to be broken down into substrings * Substrings will be added to keyIIT Inverted Index Tree */ """ allPrefixKeys.append(word) localHashForDups={} for i in range(1,len(word)-1): for j in range(len(word), i, -1): substr=word[i:j] if(substr in localHashForDups): break else: localHashForDups[substr]=1 if(not substr in keyIIT): keyIIT[substr]=[] keyIIT[substr].append(len(allPrefixKeys)-1) else: if(len(keyIIT[substr])