Пример #1
0
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()
Пример #2
0
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)
Пример #3
0
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()
Пример #4
0
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')
Пример #5
0
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
Пример #6
0
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)
Пример #7
0
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
Пример #8
0
# 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))