Пример #1
0
 def findConfigPath(self):
     """
     Returns path to mysql configuration file
     @return string my.cnf path
     """
     if self.configPath:
         return self.configPath
     #try to take from options
     fileMonitor = file_mon_utils.FileMonitor(self.Framework, self.shell,
                                              None, '', None)
     if self.DEFAULTS_FILE_OPT_NAME in self.opts.keys():
         self.configPath = self.opts[self.DEFAULTS_FILE_OPT_NAME]
         cnfPath = self.opts[self.DEFAULTS_FILE_OPT_NAME]
         if fileMonitor.checkPath(cnfPath):
             self.configPath = cnfPath
         else:
             strException = 'MySQL configuration file path is not valid'
             errormessages.resolveAndReport(
                 strException,
                 self.Framework.getDestinationAttribute('Protocol'),
                 self.Framework)
     #try to get from help
     elif not self.getConfigsFromHelp(fileMonitor):
         strException = 'Failed to find MySQL configuration file location'
         errormessages.resolveAndReport(
             strException,
             self.Framework.getDestinationAttribute('Protocol'),
             self.Framework)
     return self.configPath
Пример #2
0
def discoverConfigFiles(Framework, sgclusterOSH, shellUtils, cmclconfig_path,
                        cmclconfig_files_pattern, OSHVResult):
    #get list of all config files
    file_name = None
    exstention = None
    if cmclconfig_files_pattern.rfind('.') > 0:
        file_name = cmclconfig_files_pattern
    else:
        exstention = cmclconfig_files_pattern

    try:
        fileMonitor = file_mon_utils.FileMonitor(Framework, shellUtils,
                                                 OSHVResult, exstention, None)
        fileMonitor.getFiles(sgclusterOSH, cmclconfig_path, file_name)
    except:
        errorMessage = 'Failed to find configuration files for Service Guard Cluster'
        logger.debugException('errorMessage')
        errobj = errorobject.createError(
            errorcodes.FAILED_FINDING_CONFIGURATION_FILE,
            ['Service Guard Cluster'], errorMessage)
        logger.reportWarningObject(errobj)
Пример #3
0
def parseOpmnXml(opmnXML, HOST_IP, ORACLE_HOME, MANAGER_PORT, shellUtils, OSHVResult, Framework):

    builder = SAXBuilder(0)
    doc = builder.build(StringReader(opmnXML))
    root = doc.getRootElement()
    
    ucmdbVersion = modeling.CmdbClassModel().version()
    
    processManager = root.getChildren()
    
    processManagerIterator = processManager.iterator()
    while processManagerIterator.hasNext():
        currProcessManager = processManagerIterator.next()
        currElementName = currProcessManager.getName()
        
        if currElementName == 'process-manager':
            
            iasInstance = currProcessManager.getChildren()
            
            iasInstanceIterator = iasInstance.iterator()
            while iasInstanceIterator.hasNext():
                currIasInstance = iasInstanceIterator.next()
                
                if currIasInstance.getName() == 'ias-instance':

                    OracleApplicationServerName = currIasInstance.getAttributeValue('name') or currIasInstance.getAttributeValue('id') or 'Default Server'


                    discoveredHost = modeling.createHostOSH(HOST_IP)
                    
                    # Create Oracle IAS
                    oracleIASOSH = modeling.createJ2EEServer('oracleias', HOST_IP, int(MANAGER_PORT), discoveredHost, OracleApplicationServerName)
                    OSHVResult.add(oracleIASOSH)

                    iasComponent = currIasInstance.getChildren()
                    iasComponentIterator = iasComponent.iterator()
                    while iasComponentIterator.hasNext(): 
                        currIasComponent = iasComponentIterator.next()
                        if 'ias-component' == currIasComponent.getName(): 

                            groupName = currIasComponent.getAttributeValue('id')
                            
                            # Create OC4J Group
                            oc4jGroupOSH = ObjectStateHolder('oc4jgroup')
                            oc4jGroupOSH.setContainer(oracleIASOSH)
                            oc4jGroupOSH.setAttribute('data_name', groupName)
                            OSHVResult.add(oc4jGroupOSH)
                            
                            #'process-type'
                            processType = currIasComponent.getChildren()
                            processTypeIterator = processType.iterator()
                            while processTypeIterator.hasNext():
                                currProcessType = processTypeIterator.next()
                                
                                oc4jName = currProcessType.getAttributeValue('id')
                                moduleId = currProcessType.getAttributeValue('module-id')

                                if 'OC4J' == moduleId:
                                    
                                    oc4jOSH = ObjectStateHolder('oc4j')
                                    oc4jOSH.setContainer(oc4jGroupOSH)
                                    oc4jOSH.setAttribute('data_name', oc4jName)
                                    OSHVResult.add(oc4jOSH)
                                    
                                    try:
                                        serverXML = shellUtils.safecat('%s/j2ee/%s/config/server.xml' % (ORACLE_HOME, oc4jName))

                                        tg = '<application name="(\w+)"'
                                        compiled = re.compile(tg,re.S)
                                        matches = compiled.findall(serverXML)

                                        appList = {}
                                        for match in matches:
                                            if ucmdbVersion < 9:
                                                applicationOSH = modeling.createApplicationOSH('application', match, oc4jOSH)
                                            else:
                                                applicationOSH = ObjectStateHolder('oc4j_app')
                                                applicationOSH.setAttribute('data_name',match)
                                                applicationOSH.setContainer(oc4jOSH)
                                            #
                                            OSHVResult.add(applicationOSH)
                                            
                                            appList[match] = applicationOSH
                                        
                                    except:
                                        logger.debugException()
                                        logger.warn('Failed to get server.xml')
                                        
                                    # Check if it holds web service
                                    wsdlDir = shellUtils.rebuildPath('%s/j2ee/%s/application-deployments/' % (ORACLE_HOME, OracleApplicationServerName))
                                    fileMon = file_mon_utils.FileMonitor(Framework, shellUtils, OSHVResult, None, None)
                                    files = fileMon.getFilesInPath(wsdlDir, '*.wsdl')
                                    if (files == []):
                                        wsdlDir = shellUtils.rebuildPath('%s/j2ee/%s/application-deployments/' % (ORACLE_HOME, oc4jName))
                                        logger.info('Pi Debug - parseOpmnXml() - trying with wsdlDir = %s' % wsdlDir)
                                        files = fileMon.getFilesInPath(wsdlDir, '*.wsdl')
                                    wsdlDirRes = '\n'.join(files)
                                    if wsdlDirRes.find('File Not Found') != -1:
                                        # NO WSDL
                                        continue
                                    else:
                                        # WSDL
                                        handleWSDL(HOST_IP, MANAGER_PORT, wsdlDirRes, wsdlDir, appList, shellUtils, OSHVResult)
Пример #4
0
def processEviewConfFiles(Framework, localshell):
    _vector = ObjectStateHolderVector()
    fileMonitor = file_mon_utils.FileMonitor(Framework, localshell, ObjectStateHolderVector(), None, None)
    folder = Framework.getParameter('EViewInstallationFolder')
    if isNull(folder):
        logger.reportError('Job parameter - EViewInstallationFolder is empty. Set the path to the EView client installation root and rerun job.')
        return _vector

    appPath = fileMonitor.rebuildPath(folder) + "\\bin\\ev390hostcmd.exe"
    confFolder = fileMonitor.rebuildPath(folder) + "\\conf\\"
    confFiles = None
    try:
        confFiles = fileMonitor.listFilesWindows(confFolder, EViewConfFileNameFilter())
    except:
        logger.reportError('Unable to get EView configuration files from folder: %s' % confFolder)
        return _vector

    # Create zOS & EView agent objects -----------------------------------------
    if isNull(confFiles):
        logger.reportError('Unable to get EView configuration files from folder: %s' % confFolder)
        return _vector
    elif len(confFiles) < 1:
        logger.reportError('Unable to get EView configuration files from folder: %s' % confFolder)
        return _vector
    else:
        for file in confFiles:

            nodeName = file[13:len(file)]   # The name of the configuration file is ev390_config_<NODE_NAME>
            if eview_lib.isNotNull(nodeName):

                #===================================================================
                # connect to each node with configuration and only
                # create EView CI for the ones that connect
                #===================================================================
                ls = eview_lib.EvShell(Framework, nodeName, appPath)
                # Get EView agent version ------------------------------------------
                task = Framework.getParameter('EViewStartedTask')
                if isNull(task):
                    task = 'VP390'
                eviewVersion = ev1_getEviewVersion(ls, task)
                if eview_lib.isNotNull(eviewVersion):
                    logger.debug('Successfully executed command against EView agent on node: ', nodeName)

                    # Get IPL info -------------------------------------------------
                    (zOsRelease, ieasymList, ieasysList, machineBootDate) = ev2_getIplInfoOutput(ls)
                    
                    # Spencer: Get memory info -------------------------------------
                    memory = ev6_getMemoryOutput(ls)

                    # Get the default IP of the LPAR -------------------------------
                    defaultIp = ev_getDefaultIpOfLpar(ls)

                    if isNull(defaultIp):
                        logger.reportWarning('Unable to get IP Address of LPAR: %s. Continuing with next LPAR.' % nodeName)
                        continue
                    else:
                        # Get Symbols --------------------------------------------------
                        symbolsMap = ev5_getSymlistOutput(ls)   # {symbolName:symbolValue}
                        
                        # CPU List Command ---------------------------------------------------------
                        (cpuLists, cpcSi, cpcId, cpcName) = ev7_getCpulistOutput(ls)
                        
                        # Create zOS OSH ---------------------------------
                        zOsOsh = osh_createZOsOsh(defaultIp, zOsRelease, ieasymList, ieasysList, machineBootDate, symbolsMap, memory, cpcSi)
                        _vector.add(zOsOsh)

                        if isNotNull(zOsOsh):
                            # Create IP OSH and link it to zOS OSH -------------------------
                            _vector.addAll(osh_createIpOsh(zOsOsh, defaultIp))

                            # Create EView Agent OSH and link it to the zOS OSH ------------
                            eviewOSH = osh_createEviewOsh(localshell, zOsOsh, appPath, confFolder, file, nodeName, eviewVersion, defaultIp)
                            _vector.add(eviewOSH)
                else:
                    warnMsg = 'Unable to connect to: %s' % nodeName
                    logger.warn(warnMsg)
                    warnObj = errorobject.createError(errorcodes.CONNECTION_FAILED, None, warnMsg)
                    logger.reportWarningObject(warnObj)

    return _vector
Пример #5
0
def processEviewConfFiles(Framework, localshell):
    _vector = ObjectStateHolderVector()
    fileMonitor = file_mon_utils.FileMonitor(Framework, localshell,
                                             ObjectStateHolderVector(), None,
                                             None)
    folder = Framework.getParameter('EViewInstallationFolder')
    if isNull(folder):
        logger.reportError(
            'Job parameter - EViewInstallationFolder is empty. Set the path to the EView client installation root and rerun job.'
        )
        return _vector

    appPath = fileMonitor.rebuildPath(folder) + "\\bin\\ev400hostcmd.exe"
    confFolder = fileMonitor.rebuildPath(folder) + "\\conf\\"
    confFiles = None
    try:
        confFiles = fileMonitor.listFilesWindows(confFolder,
                                                 EViewConfFileNameFilter())
    except:
        logger.reportError(
            'Unable to get EView configuration files from folder: %s' %
            confFolder)
        return _vector

    # Create iSeries & EView agent objects -----------------------------------------
    if isNull(confFiles):
        logger.reportError(
            'Unable to get EView configuration files from folder: %s' %
            confFolder)
        return _vector
    elif len(confFiles) < 1:
        logger.reportError(
            'Unable to get EView configuration files from folder: %s' %
            confFolder)
        return _vector
    else:
        for file in confFiles:

            nodeName = file[13:len(
                file
            )]  # The name of the configuration file is ev400_config_<NODE_NAME>
            logger.debug('Node = ', nodeName)
            if eview400_lib.isNotNull(nodeName):

                #===================================================================
                # connect to each node with configuration and only
                # create EView CI for the ones that connect
                #===================================================================

                ls = eview400_lib.EvShell(Framework, nodeName, appPath)
                # Get EView agent version ------------------------------------------

                eviewVersion = ev1_getEviewVersion(ls)
                if eview400_lib.isNotNull(eviewVersion):
                    logger.debug(
                        'Successfully executed command against EView agent on node: ',
                        nodeName)

                    # Get the iSeries  info -------------------------------------------------
                    (model, serialnbr, osversion,
                     sysname) = ev2_getiSeriesOutput(ls)

                    # Get the default IP of the LPAR -------------------------------
                    defaultIp, macAddress = ev_getIPofLpar(ls)

                    if isNull(defaultIp):
                        logger.reportWarning(
                            'Unable to get IP Address of LPAR: %s. Continuing with next LPAR.'
                            % nodeName)
                        continue
                    else:

                        # Create iSeries OSH ---------------------------------
                        iSeriesOsh = osh_createiSeriesOsh(
                            defaultIp, model, osversion, serialnbr, sysname,
                            macAddress)
                        _vector.add(iSeriesOsh)

                        if isNotNull(iSeriesOsh):
                            # Create IP OSH and link it to zOS OSH -------------------------
                            _vector.addAll(
                                osh_createIpOsh(iSeriesOsh, defaultIp))

                            # Create EView Agent OSH and link it to the zOS OSH ------------
                            eviewOSH = osh_createEviewOsh(
                                localshell, iSeriesOsh, appPath, confFolder,
                                file, nodeName, eviewVersion, defaultIp)
                            _vector.add(eviewOSH)
                else:
                    warnMsg = 'Unable to connect to: %s' % nodeName
                    logger.warn(warnMsg)
                    warnObj = errorobject.createError(
                        errorcodes.CONNECTION_FAILED, None, warnMsg)
                    logger.reportWarningObject(warnObj)

    return _vector
Пример #6
0
    try:
        client = Framework.createClient(properties)
        shellUtils = shellutils.ShellUtils(client)
    except Exception, ex:
        exInfo = ex.getMessage()
        errormessages.resolveAndReport(exInfo, protocol, Framework)
    except:
        exInfo = logger.prepareJythonStackTrace('')
        errormessages.resolveAndReport(exInfo, protocol, Framework)
    else:
        extensions = Framework.getParameter('extensions')
        binaryExtensions = Framework.getParameter('binary_file_extensions')
        hostId = Framework.getDestinationAttribute('hostId')

        fileMonitor = file_mon_utils.FileMonitor(Framework, shellUtils,
                                                 OSHVResult, extensions,
                                                 hostId, binaryExtensions)
        files = []
        reported = []
        try:
            FOLDERS = Framework.getParameter('folders')
            folders = string.split(FOLDERS, ',')
            isWinOS = shellUtils.isWinOs()
            for folder in folders:
                folder = folder.strip()
                if (not isWinOS) == (folder and folder[0] == '/'):
                    filesList = fileMonitor.getFiles(None, folder, None, 0)
                    if filesList:
                        files.extend(filesList)
            # Report each file
            for file in files:
Пример #7
0
		shellUtils = shellutils.ShellUtils(Framework, properties)
	except Exception, ex:
		exInfo = ex.getMessage()
		errormessages.resolveAndReport(exInfo, resolveProtocol(shellUtils, Framework), Framework)
	except:
		exInfo = logger.prepareJythonStackTrace('')
		errormessages.resolveAndReport(exInfo, resolveProtocol(shellUtils, Framework), Framework)
	else:
		protocolName = resolveProtocol(shellUtils, Framework)
		try:
			applicationName = Framework.getDestinationAttribute('application_name')
			cf = Framework.getConfigFile(CollectorsParameters.KEY_COLLECTORS_SERVERDATA_APPLICATIONSIGNATURE)
			paths = cf.getConfigFilesForApplication(applicationName)
			if len(paths) > 0:
				hostId = Framework.getDestinationAttribute('hostId')
				fileMonitor = file_mon_utils.FileMonitor(Framework, shellUtils, OSHVResult, None, hostId)
				hostOSH = modeling.createOshByCmdbIdString('host',hostId)
				fileMonitor.getFilesByPath(hostOSH, paths)
				if OSHVResult.size() > 0:
					applicationOsh = modeling.createApplicationOSH('application', applicationName, hostOSH)

					resultSize = OSHVResult.size()
					for i in range(0, resultSize):
						aplicationCF = OSHVResult.get(i)
						#we suppose that all OSHs are of 'configfile' type
						#may be we should check class type of each OSH
						link = modeling.createLinkOSH('use', applicationOsh, aplicationCF)
						OSHVResult.add(link)
		except Exception, ex:
			exInfo = ex.getMessage()
			errormessages.resolveAndReport(exInfo, protocolName, Framework)