Exemplo n.º 1
0
 def __updateHostName(self, logInfo, keyword):
     """Handle Host Name
   """
     host_name_info = trunctStr(logInfo, keyword, trunct_from_start=True)
     if NIMBUS_KEY in host_name_info:
         self._esx_hostname = host_name_info.replace(':_:', '-')
         self._esx_hostname = host_name_info.replace('...', '')
     else:
         self._esx_hostname = trunctStr(host_name_info, '-ilo')
Exemplo n.º 2
0
    def _handleErrorLog(self):
        """Only return the first line of error message,
      and ignore the whole exception traceback
      """
        for isMatched in [
                self.__handleInfraErrorLog(),
                self.__handleMiscErrorLog()
        ]:
            if isMatched:
                return

        # Remove redundant info away first
        self._raw_log_info = trunctStr(self._raw_log_info,
                                       self.KEY_GENERIC_EXCEPTION_DEPRECATED,
                                       trunct_from_start=True)

        if self.KEY_TRACEBACK not in self._raw_log_info:
            # If no traceback in raw info, record all
            self._info = self._raw_log_info

        else:
            # only record important error info, ignore the whole traceback
            info_list = self._raw_log_info.split('\n')
            strip_info_list = [value for value in info_list if value != '']

            if self.KEY_ANOTHER_EXCEPTION in strip_info_list:
                index = strip_info_list.index(self.KEY_ANOTHER_EXCEPTION) - 1
            else:
                index = len(strip_info_list) - 1

            self._info = strip_info_list[index]
Exemplo n.º 3
0
 def _handleWarnningLog(self):
     if self.KEY_DISABLED in self._raw_log_info:
         self._result = LEVEL_DISABLED
         self._info = trunctStr(self._raw_log_info, self.KEY_DISABLED)
     elif self.KEY_UWCOREDUMP in self._raw_log_info:
         self._result = LEVEL_UWCOREDUMP
         pattern = '%s\s\(app:.*?\, file:\s(.*?)\)' % self.KEY_UWCOREDUMP
         self._info = re.findall(pattern, self._raw_log_info)[0]
     else:
         self._info = self._raw_log_info
Exemplo n.º 4
0
    def __handleInfraErrorLog(self):
        """Return a boolean to indicate whether or not
      matched proper infrastructure keyword, upper caller is _handleErrorLog
      """
        if self.KEY_TESTESXD_START_ISSUE in self._raw_log_info:
            # Handle testesxd exception
            self._result = LEVEL_INFRA_TESTESX
            self._info = trunctStr(self._raw_log_info, self.KEY_TRACEBACK)

        elif self.KEY_BOOT_TIMEOUT in self._raw_log_info:
            # Handle boot timeout
            self._result = LEVEL_INFRA_BOOT_TIMEOUT
            pattern = 'error:\s(.*?)\,\s(.*?)\s\(or is it hung\?\)'
            # ('ESX has started', 'but was too slow to initialize')
            start, slow = re.findall(pattern, self._raw_log_info)[0]
            self._info = '%s %s' % (start, slow)

        else:
            pattern = None
            if self.KEY_NIMBUS_COMMNAND_ERROR in self._raw_log_info:
                # Handle Nimbus Command Error
                self._result = LEVEL_INFRA_NIMBUS
                pattern = 'error:\s+(.*?)\s\-\svm name'

            elif self.KEY_IPMI_TRANS_ISSUE in self._raw_log_info:
                # Handle IPMI Transport issue
                self._result = LEVEL_INFRA_IPMI
                pattern = 'error:\s+(.*?)\s\-\sipmitool'

            elif self.KEY_PXE_COMMAND_ERROR in self._raw_log_info:
                # Handle PXEConfig error
                self._result = LEVEL_INFRA_PXE
                pattern = 'error:\s+(.*?)\s\-\scommand'

            elif self.KEY_GENERIC_TELNET_ISSUE in self._raw_log_info:
                # Handle generic telnet issue
                self._result = LEVEL_INFRA_TELNET
                pattern = 'error:\s+(.*)'

            elif self.KEY_INFRA_ISSUE in self._raw_log_info:
                # Handle generic infrastructure issue
                self._result = LEVEL_INFRA
                pattern = 'error:\s+(.*?)\s\-\shostname'

            if pattern:
                self._info = re.findall(pattern, self._raw_log_info)[0]

        return True if self._info else False
Exemplo n.º 5
0
    def __handleInfoLog(self, timestamp, logInfo):
        """Handle log info which log level is INFO
      """
        def setTimeStamp(value, newValue):
            if value == NOT_AVAILABLE:
                value = newValue

            return value

        if self.KEY_ESX_HOST in logInfo:
            self.__updateHostName(logInfo, self.KEY_ESX_HOST)

        elif self.KEY_HOST_IP in logInfo:
            # Parser esx host ip after host boot
            self.host_ip = trunctStr(logInfo,
                                     self.KEY_HOST_IP,
                                     trunct_from_start=True)

        elif self.KEY_RESET_MACHINE in logInfo:
            self._reset_time = setTimeStamp(self._reset_time, timestamp)
            self.__updateHostName(logInfo, self.KEY_RESET_MACHINE)

        elif self.KEY_BOOTLOARDER_START in logInfo:
            self._bootloader_st = setTimeStamp(self._bootloader_st, timestamp)

        elif self.KEY_BOOTLOARDER_DONE in logInfo:
            self._bootloader_dt = setTimeStamp(self._bootloader_dt, timestamp)

        elif self.KEY_VMKBOOT_START in logInfo:
            self._vmkboot_st = setTimeStamp(self._vmkboot_st, timestamp)

        elif self.KEY_VMKBOOT_DONE in logInfo:
            self._vmkboot_dt = setTimeStamp(self._vmkboot_dt, timestamp)

        elif self.KEY_VMKLOAD_START in logInfo:
            self._vmkload_st = setTimeStamp(self._vmkload_st, timestamp)

        elif self.KEY_VMKLOAD_DONE in logInfo:
            self._vmkload_dt = setTimeStamp(self._vmkload_dt, timestamp)

        elif self.KEY_VMKENREL_INITIAZLIED in logInfo:
            self._vmk_it = setTimeStamp(self._vmk_it, timestamp)

        elif self.KEY_TESTESX_READY in logInfo:
            self._testesx_rt = setTimeStamp(self._testesx_rt, timestamp)