def _discoverSoftwareCmps(sapUtils, config, system_osh): '@types: SapUtils, flow.DiscoveryConfigBuilder, osh -> oshv' logger.info("Discover software components") discoverer = sap_abap_discoverer.SoftwareComponentDiscovererByJco(sapUtils) cmps = discoverer.discoverComponents() logger.debug("Found %s components" % len(cmps)) reportAsConfigFileEnabled = config.reportComponentsAsConfigFile vector = sap_abap.reportSoftwareCmps(cmps, system_osh, reportAsConfigFileEnabled) return vector
def _discoverCmps(solman, sysPairsBySysName, sendVector, reportAsConfig, reportError): ''' Report components for systems that are discovered before @type sysNameToCmpPairs: tuple[str, sap.SoftwareComponent] @type sysPairsBySysName: dict[str, tuple[System, osh]] @type sendVector: oshv -> None ''' try: sysNameToCmpPairs = _discoverSoftwareCmps(solman) cmpPairsBySysName = groupby(first, sysNameToCmpPairs) systems = sysPairsBySysName.iterkeys() hasComponents = cmpPairsBySysName.get for sysName in ifilter(hasComponents, systems): _, systemOsh = sysPairsBySysName.get(sysName) cmps = imap(second, cmpPairsBySysName.get(sysName)) vec = sap_abap.reportSoftwareCmps(cmps, systemOsh, reportAsConfig) sendVector(vec) except (Exception, JException): msg = "Failed to discover Software Components" logger.warnException(msg) reportError(msg)