def syncNmapPortConfigFile(agentPath): ''' Sync nmap port config with global probe's "port number to port name" mapping ''' logger.debug('synchronizing nmap port config file') portConfigFilename = agentPath + CollectorsParameters.getDiscoveryConfigFolder( ) + CollectorsParameters.FILE_SEPARATOR + 'portNumberToPortName.xml' mamservice = File(portConfigFilename) nmapservice = File(agentPath + CollectorsParameters.getDiscoveryResourceFolder() + CollectorsParameters.FILE_SEPARATOR + 'nmap-services') if nmapservice.lastModified() > mamservice.lastModified(): return nmapFile = FileOutputStream(nmapservice) document = SAXBuilder(0).build(mamservice) # document = parse(portConfigFilename) ports = XmlWrapper(document.getRootElement().getChildren('portInfo')) for port in ports: if int(port.getAttributeValue("discover")): portNumber = port.getAttributeValue("portNumber") portName = port.getAttributeValue("portName") portProtocol = port.getAttributeValue("portProtocol") nmapFile.write("%s\t%s/%s\r\n" % (portName, portNumber, portProtocol)) nmapFile.close()
def discovery(Framework, connectionManager=None): connectionDataManager = connectionManager try: logger.debug('Replicating topology from HP ucs') if not connectionDataManager: connectionDataManager = FrameworkBasedConnectionDataManager( Framework) if not connectionDataManager.validate(): return mappingFileFolder = os.path.join( CollectorsParameters.BASE_PROBE_MGR_DIR, CollectorsParameters.getDiscoveryConfigFolder(), MAPPING_CONFIG_FOLDER) mappingFileManager = UCSMappingFileManager(mappingFileFolder) mappingFile = getMappingFileFromFramework(Framework) if mappingFile: return replicateTopologyUsingMappingFile( os.path.join(mappingFileFolder, mappingFile), connectionDataManager, mappingFileManager) else: Framework.reportError('No mapping file found.') logger.errorException("No mapping file found.") except Exception, e: Framework.reportError('%s' % e) logger.errorException('%s' % e)
def DiscoveryMain(Framework): connectionDataManager = None try: logger.debug('Replicating topology from HP OneView') connectionDataManager = FrameworkBasedConnectionDataManager(Framework) if not connectionDataManager.validate(): return mappingFileFolder = os.path.join( CollectorsParameters.BASE_PROBE_MGR_DIR, CollectorsParameters.getDiscoveryConfigFolder(), HP_ONE_VIEW_CONFIG_FOLDER) mappingFileManager = OneviewMappingFileManager(mappingFileFolder) mappingFile = getMappingFileFromFramework(Framework) if mappingFile: return replicateTopologyUsingMappingFile( os.path.join(mappingFileFolder, mappingFile), connectionDataManager, mappingFileManager) else: Framework.reportError('No mapping file found.') logger.errorException("No mapping file found.") except: Framework.reportError('Failed to pull data from OneView.') logger.errorException('Failed to pull data from OneView.') finally: if connectionDataManager: connectionDataManager.closeClient()
def DiscoveryMain(Framework): try: logger.debug('Replicating toplogy from ServiceNow') connectionDataManager = FrameworkBasedConnectionDataManager(Framework) mappingFileFolder = os.path.join( CollectorsParameters.BASE_PROBE_MGR_DIR, CollectorsParameters.getDiscoveryConfigFolder(), 'servicenow') mappingFileManager = OldMappingFileManager(mappingFileFolder) global chunkSize chunkSize = getStepSizeFromFramework(Framework) mappingFile = getMappingFileFromFramework(Framework) if mappingFile: return replicateTopologyUsingMappingFile( os.path.join(mappingFileFolder, mappingFile), connectionDataManager, mappingFileManager) else: return replicateTopologyFromServiceNow(connectionDataManager, mappingFileManager) except: Framework.reportError( 'Failed to pull data from ServiceNow. See RemoteProcess log on the Probe for details' ) logger.errorException('Failed to pull data from ServiceNow')
def getNatIPFromConfigurationFile(): """ Read IP or IP range from configuration file. @return: A list contains IPAddress objects and IPNetwork objects """ NATIPConfigurationFileFolder = os.path.join( CollectorsParameters.BASE_PROBE_MGR_DIR, CollectorsParameters.getDiscoveryConfigFolder()) NATIPConfigurationFile = os.path.join(NATIPConfigurationFileFolder, 'NATIpAddress.xml') if not os.path.exists(NATIPConfigurationFile): logger.info("There is no NAT IP address defined.") return # Read tags from xml file builder = SAXBuilder() configDoc = builder.build(NATIPConfigurationFile) rootElement = configDoc.getRootElement() ipElements = rootElement.getChildren('Ip') ipRangeElements = rootElement.getChildren('IpRange') NAT_IPs = [] # Read IPAddress, add valid one to NAT_IPs list if ipElements: for ipElement in ipElements: ip = ipElement.getText() if ip_addr.isValidIpAddress(ip): ipObj = ip_addr.IPAddress(ip) NAT_IPs.append(ipObj) # Read IP Ranges, create IPNetwork and add to NAT_IPs list if ipRangeElements: for ipRangeElement in ipRangeElements: ip_range_raw = ipRangeElement.getText() ips = ip_range_raw.split('-') ip_start = ips[0] ip_end = ips[1] if ip_addr.isValidIpAddress(ip_start) and ip_addr.isValidIpAddress( ip_end): ip_start = ip_addr.IPAddress(ip_start) ip_end = ip_addr.IPAddress(ip_end) ips = ip_addr.summarize_address_range(ip_start, ip_end) logger.debug(ips) NAT_IPs.extend(ips) else: logger.warn( "IP Range should start and end with valid IP address") return NAT_IPs
def getUCSURLs(): mappingFileFolder = os.path.join( CollectorsParameters.BASE_PROBE_MGR_DIR, CollectorsParameters.getDiscoveryConfigFolder(), ucs_pull_base.MAPPING_CONFIG_FOLDER) ucsURLListFile = os.path.join(mappingFileFolder, URL_LIST_FILE) if not os.path.exists(ucsURLListFile): logger.error('UCS URL list file not found:', ucsURLListFile) return None listFile = open(ucsURLListFile) lines = listFile.readlines() lines = map(str.strip, lines) def validLine(line): return line and not line.startswith('#') and line.startswith('http') return filter(validLine, lines)
def DiscoveryMain(Framework): OSHVResult = ObjectStateHolderVector() configFileFolder = os.path.join( CollectorsParameters.BASE_PROBE_MGR_DIR, CollectorsParameters.getDiscoveryConfigFolder()) uriEndpointConf = os.path.join(configFileFolder, URL_FILE_NAME) logger.debug("uriEndpointConf:", uriEndpointConf) if not os.path.exists(uriEndpointConf): logger.error('UriEndpoint configuration file not found:', uriEndpointConf) return None listFile = open(uriEndpointConf) try: url_dom = minidom.parseString(listFile.read()) nodeList = url_dom.getElementsByTagName('uri-endpoint') length = nodeList.length ips = [] while length > 0: node = nodeList.item(nodeList.length - length) if node.getElementsByTagName("url"): url = node.getElementsByTagName( "url")[0].childNodes[0].nodeValue ips = resolveIpAddress(url) if node.getElementsByTagName("type"): type = node.getElementsByTagName( "type")[0].childNodes[0].nodeValue if node.getElementsByTagName("ip-address"): ip_address = node.getElementsByTagName( "ip-address")[0].childNodes[0].nodeValue ips.append(IPAddress(ip_address)) if url and node and type and ips: OSHVResult.addAll(reportCIs(url, type, ips)) length = length - 1 except: msg = "Failed to read file:" + str(URL_FILE_NAME) logger.reportWarning(msg) logger.error(msg, str(sys.exc_info()[1])) finally: listFile.close() return OSHVResult
# discoveryResources\CaCmdbPushAdapter adapterResBaseDir = "%s%s%s%s" % ( CollectorsParameters.BASE_PROBE_MGR_DIR, CollectorsParameters.getDiscoveryResourceFolder(), FILE_SEPARATOR, ADAPTER_NAME) adapterResBaseDirFile = File(adapterResBaseDir) # discoveryResources\CaCmdbPushAdapter\work adapterResWorkDir = "%s%s%s" % (adapterResBaseDir, FILE_SEPARATOR, WORK_DIR) adapterResWorkDirFile = File(adapterResWorkDir) # discoveryConfigFiles\CaCmdbPushAdapter adapterConfigBaseDir = "%s%s%s%s" % ( CollectorsParameters.BASE_PROBE_MGR_DIR, CollectorsParameters.getDiscoveryConfigFolder(), FILE_SEPARATOR, ADAPTER_NAME) # logs slogger = Logger.getLogger("successLogger") flogger = Logger.getLogger("failureLogger") #UCMDB ID to Atrium ID cache id_cache = {} ''' Method Definitions ''' def isNoneOrEmpty(s): return (s == None or s == "")
def getConfigFilePath(fileName): return ''.join((CollectorsParameters.BASE_PROBE_MGR_DIR, CollectorsParameters.getDiscoveryConfigFolder(), CollectorsParameters.FILE_SEPARATOR, fileName))