def _discoverDatabase(client, baseTopology): r'@types: BaseSapJmxClient, BaseTopology -> oshv' logger.info("Discover DB information") vector = ObjectStateHolderVector() try: dbInfo = _getDatabase(client) except (Exception, JException): logger.warnException("Failed to get DB info using new MBean model") else: if dbInfo: try: logger.info("Resolve DB address: ", dbInfo.hostname) dnsResolver = netutils.JavaDnsResolver() ips = dnsResolver.resolveIpsByHostname(dbInfo.hostname) hostReporter = sap.HostReporter(sap.HostBuilder()) hostOsh, hVector = hostReporter.reportHostWithIps(*ips) vector.addAll(hVector) hVector.clear() except netutils.ResolveException: logger.warn("DB won't be reported as DB addr is not resolved") else: try: logger.info("Discovered: ", dbInfo) systemOsh = baseTopology.systemOsh vector.addAll(sap_db.report_db_info(dbInfo, systemOsh, hostOsh)) except ValueError, ve: logger.warn("%s: %s" % (ve, dbInfo.type))
def _reportDatabases(dbInstance, systemOsh): r''' @type dbInstance: SapJEEMonitoringXmlParser.DbInstance @rtype: ObjectStateHolderVector ''' vector = ObjectStateHolderVector() dbHostOsh, _, vector_ = _buildHostAndIpOshs(dbInstance.host.ip) vector.addAll(vector_) info = _buildDatabaseInfo(dbInstance) try: vector.addAll(sap_db.report_db_info(info, systemOsh, dbHostOsh)) except ValueError, ve: logger.warn("Failed to report DB based on %s. %s" % (dbInstance, ve))
def _report_topology(self, osh, host_osh, db_host_osh, topology): '@types: osh, osh, osh, _Topology -> list[osh]' system = topology.system system_osh, oshs = self.report_system(system, osh) system_osh.setStringAttribute('data_note', 'This SAP System link to ' + host_osh.getAttributeValue('host_key')) #Making database reporting optional depending on global configuration according to QCCR1H100374 Keep a possibility option to discover SAP related database via Host Applications job do_report_database = GeneralSettingsConfigFile.getInstance().getPropertyStringValue('reportSapAppServerDatabase', 'false') if do_report_database.lower() == 'true' and topology.db_info and db_host_osh: try: oshs.extend(sap_db.report_db_info(topology.db_info, system_osh, db_host_osh)) except(Exception, JException), ve: msg = "Failed to report %s. %s" % (str(topology.db_info), ve) logger.warn(msg)
def _report_topology(self, osh, host_osh, db_host_osh, topology): '@types: osh, osh, osh, _Topology -> list[osh]' system = topology.system system_osh, oshs = self.report_system(system, osh) system_osh.setStringAttribute( 'data_note', 'This SAP System link to ' + host_osh.getAttributeValue('host_key')) #Making database reporting optional depending on global configuration according to QCCR1H100374 Keep a possibility option to discover SAP related database via Host Applications job do_report_database = GeneralSettingsConfigFile.getInstance( ).getPropertyStringValue('reportSapAppServerDatabase', 'false') if do_report_database.lower( ) == 'true' and topology.db_info and db_host_osh: try: oshs.extend( sap_db.report_db_info(topology.db_info, system_osh, db_host_osh)) except (Exception, JException), ve: msg = "Failed to report %s. %s" % (str(topology.db_info), ve) logger.warn(msg)