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
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)
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)
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
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
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:
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)