Beispiel #1
0
def _discoverDatabases(solman, sysPairsBySysName, sendVector, reportError,
                       resolveIps):
    try:
        logger.info("Discover Databases")
        query = GetDatabaseUsages()
        queryExecutor = TableQueryExecutor(solman)
        dbName = second
        usagePairsByDbName = groupby(dbName, queryExecutor.executeQuery(query))
        logger.info("Found %s databases in use" % len(usagePairsByDbName))

        query = GetDatabaseInstances()
        inDiscoveredSystems = F(_inDiscoveredSystems, fptools._, sysPairsBySysName)
        isUsedDb = comp(inDiscoveredSystems,
                         usagePairsByDbName.get,
                         _getDbInstance)

        findPlatform = comp(db_platform.findPlatformBySignature, _getDbVendor)
        dbInsts = queryExecutor.executeQuery(query)
        logger.info("Found %s database instances" % len(dbInsts))
        dbs_1, dbs_2, dbs_3 = tee(ifilter(isUsedDb, dbInsts), 3)
        platforms = imap(findPlatform, dbs_1)
        ips = imap(comp(resolveIps, _getAddress), dbs_2)
        dbs = ifilter(all, izip(dbs_3, platforms, ips))
        reported = len(map(comp(sendVector, _reportDatabase), dbs))
        logger.info("Reported %s databases" % reported)
    except Exception:
        msg = 'Failed to discover databases'
        logger.debugException(msg)
        reportError(msg)
Beispiel #2
0
def _discoverHostToAddressMapping(solman, reportError):
    r'@types: ?, (str -> None) -> dict[str, sap.Address]'
    logger.info("Discovery hostname to IP mapping")
    mapping = {}
    try:
        query = GetHostToAddressMapping()
        queryExecutor = TableQueryExecutor(solman)
        addresses = queryExecutor.executeQuery(query)
        getHostname = lambda a: a.hostname
        mapping = applyMapping(getHostname, addresses)
    except (Exception, JException):
        msg = "Failed to discovery mappings"
        logger.warn(msg)
        reportError(msg)
    return mapping