def _discover_local_databases(self, context, instance_name, application_port, db2_home_path, discoverer, executor, interpreter): db2_instance_osh = context.application.applicationOsh get_local_databases = safeFn(discoverer.get_local_databases) local_dbs = get_local_databases(executor, interpreter, instance_name, db2_home_path=db2_home_path) if local_dbs: reporter = db2_topology.Reporter() address = context.application.getApplicationIp() if not application_port: resolve_servicename = safeFn(discoverer.resolve_servicename) get_svcename = safeFn(discoverer.get_svcename_by_instancename) svce_name = get_svcename(executor, interpreter, instance_name, db2_home_path=db2_home_path) if svce_name: net_service = resolve_servicename(executor, svce_name) if net_service: application_port = net_service.port inst = DatabaseServer(address, application_port) local_dbs = [db2_topology.build_database_pdo(inst, db) for db in local_dbs] oshs = reporter.updateInstanceDatabases(db2_instance_osh, local_dbs, context.hostOsh) context.resultsVector.addAll(oshs) else: logger.debug('No local databases found for %s' % instance_name)
def _report(node_osh, ip, svcename, instance_name=None, version=None, dbname=None): oshs = [] db2_builder = db2_topology.Builder() db2_reporter = db2_topology.Reporter(db2_builder) port = resolve_svcename_to_port_nr(svcename) db2 = db.DatabaseServer(address=ip, port=port, instance=instance_name, version=version) if dbname: database = db2_model.Database(dbname) database_pdo = db2_topology.build_database_pdo(db2, database) db2.addDatabases(database_pdo) _, _, db_oshs, oshs_ = db2_reporter.reportServerAndDatabases(db2, node_osh) oshs.extend(oshs_) return oshs, db_oshs