Exemplo n.º 1
0
def _report_ipse(config, ip, svcename, container, db_osh):
    oshs = []
    endpoint_osh = None
    if config.ipse_id:
        endpoint_osh = modeling.createOshByCmdbIdString('ip_service_endpoint', config.ipse_id)
        oshs.append(endpoint_osh)
    else:
        port = resolve_svcename_to_port_nr(svcename)
        if port:
            db2_reporter = db2_topology.Reporter()
            link_reporter = db2_topology.LinkReporter()
            endpoint_osh = db2_reporter.reportDb2IpServiceEndpoint(ip, port, container)
            oshs.append(link_reporter.report_usage(db_osh, endpoint_osh))
            oshs.append(endpoint_osh)
    return endpoint_osh, oshs
Exemplo n.º 2
0
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
Exemplo n.º 3
0
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
Exemplo n.º 4
0
def _report(ip, config, version_info, partition_groups, partitions,
            pg_names_by_partition_number, buffer_pools_by_partition_nr,
            tablespaces, partition_numbers_by_pg_name, mountpoint_by_container,
            containers_by_tablespace_id, partition_nr_by_container,
            schemas, tables, sessions, inst_name=None, svcename=None, version=None):
    oshs = []
    add_all_to_result = Fn(_add_vector_and_return, oshs, fptools._)
    add_to_result = Fn(_add_osh_and_return, oshs, fptools._)

    link_reporter = db2_topology.LinkReporter()
    report_usage_link = comp(add_to_result, link_reporter.report_usage)
    report_client_server_link = comp(add_to_result,
                                link_reporter.report_client_server)
    report_dbclient_link = comp(add_to_result,
                                link_reporter.report_dbclient)

    host_reporter = db2_host.Reporter(db2_host.Builder())

    report_host = comp(add_to_result, modeling.createHostOSH, str)
    process_reporter = process.Reporter()
    report_process = Fn(process_reporter.report,
                                            fptools._,
                                            fptools._,
                                            process.ProcessBuilder())
    report_process = comp(add_all_to_result, report_process)

    host_osh = modeling.createOshByCmdbIdString('node', config.host_id)
    db_osh = modeling.createOshByCmdbIdString('db2_database', config.db_id)
    oshs.append(host_osh)
    oshs.append(db_osh)

    endpoint_osh, oshs_ = _report_ipse(config, ip, svcename, host_osh, db_osh)
    oshs.extend(oshs_)

    db2_rs_osh, oshs_ = _report_instance(config, inst_name, version, db_osh, host_osh, endpoint_osh)
    oshs.extend(oshs_)

    if version_info:
        if db2_rs_osh:
            db2_topology.SoftwareBuilder.updateVersionDescription(db2_rs_osh,
                                                                  str(version_info))
        db2_topology.SoftwareBuilder.updateVersionDescription(db_osh,
                                                              str(version_info))

    db2_reporter = db2_topology.Reporter()

    report_dbschema = Fn(db2_reporter.reportDbSchema,
                                          fptools._,
                                          db_osh)
    report_dbschema = comp(add_to_result, report_dbschema)
    report_datafile = comp(add_all_to_result, db2_reporter.reportDatafile)
    report_tablespace = comp(add_all_to_result, db2_reporter.reportTablespace)
    report_table = comp(add_all_to_result, db2_reporter.reportTable)
    report_partition_group = Fn(db2_reporter.reportPartitionGroup,
                                            fptools._,
                                            db_osh)
    report_partition_group = comp(add_to_result, report_partition_group)
    report_partition = comp(add_all_to_result, db2_reporter.reportPartition)
    report_buffer_pool = comp(add_all_to_result,
                              Fn(db2_reporter.reportBufferPool,
                                 fptools._, db_osh, fptools._,))

    file_system_builder = db2_topology.FileSystemBuilder()
    file_system_reporter = db2_topology.FileSystemReporter(file_system_builder)
    report_file_system = comp(add_to_result, file_system_reporter.report_file_system)

    pg_osh_by_pg_name = _report_pgs(partition_groups, report_partition_group)

    partition_osh_by_number, node_osh_by_partition_nr = _report_partitions(partitions, db2_rs_osh, oshs, pg_names_by_partition_number, pg_osh_by_pg_name, report_partition, host_reporter)

    bp_osh_by_partition_nr_and_bp_id = _report_bufferpools(buffer_pools_by_partition_nr,
                                                          partition_osh_by_number,
                                                          report_buffer_pool)

    container_oshes_by_tablespace = _report_data_files(mountpoint_by_container,
                                                       containers_by_tablespace_id,
                                                      partition_nr_by_container,
                                                      tablespaces,
                                                      partition_osh_by_number,
                                                      node_osh_by_partition_nr,
                                                      report_datafile,
                                                      report_file_system)

    tablespace_osh_by_tablespace = _report_tablespaces(tablespaces,
                                                       db_osh,
                                                       pg_osh_by_pg_name,
                                                       partition_numbers_by_pg_name,
                                                       bp_osh_by_partition_nr_and_bp_id,
                                                       container_oshes_by_tablespace,
                                                       report_tablespace,
                                                       report_usage_link)
    schema_osh_by_name = {}
    for schema in schemas:
        schema_osh_by_name[schema.name] = report_dbschema(schema)

    for table, tablespace, schema_name, owner in tables:
        table_pdo = db2_topology.Builder.TablePdo(table.name, owner)
        tablespace_osh = tablespace_osh_by_tablespace.get(tablespace)
        schemaOsh = schema_osh_by_name.get(schema_name)
        if schemaOsh:
            report_table(table_pdo, schemaOsh, tablespaceOsh=tablespace_osh)
        else:
            logger.warn("Schema '%s' not found, table '%s' is not reported" %
                                                    (schema_name, table.name))

    port = config.port or resolve_svcename_to_port_nr(svcename)
    _report_sessions(sessions, endpoint_osh, db2_rs_osh, port, report_host, report_process, report_client_server_link, report_dbclient_link)
    return oshs