NVIDIA UFM Cable Validation Tool

UFM Topology Support

UFM Topology Support

Feature Summary

The UFM Topology feature allows CVT to read the UFM periodic topology file and use it in two ways:

  1. Load directly -- load the UFM topology for cable validation without requiring a manually crafted PTP file.

  2. Generate a stub PTP -- produce a Unified PTP Excel file from the UFM topology that users can enrich offline (add rack layout, IPs, server profiles) and re-upload.

This feature is available only when CVT runs as a UFM plugin (CV_UFM_PLUGIN_MODE=true). The topology source is the IBDM periodic topo file that UFM writes to disk at /opt/ufm/files/periodicTopo/master.topo.

Architecture

/opt/ufm/files/periodicTopo/master.topo
            |
            v
    TopoFileParser (topo_ib_file_parser.py)
            |
            v
  SwitchData / HostData / LinkData
            |
    +-------+-------+
    |               |
    v               v
Load for        UfmPtpGenerator
validation      (ufm_ptp_generator.py)
    |               |
    v               v
Active          unified_ptp.xlsx
Topology        (4 sheets)

Key Components

Component

Location

Role

TopoFileParser

common/topolib/topo_ib_file_parser.py

Parses .topo IBDM files

UfmPtpGenerator

common/topolib/ufm_ptp_generator.py

Converts parsed topology to PTP xlsx

TopologyLoadService

collector/topology_load_service.py

Orchestrates load_ufm_topo() and generate_ptp_from_ufm()

RequestHandler

collector/request_handler.py

REST endpoint definitions

Topology

common/topolib/topo.py

Topology model and validate_switch_data()

User Workflows

#

Action

Endpoint

Result

1

Load UFM topology directly

POST /topology/load/ufm

Topology loaded, ready for validation

2

Generate stub PTP from UFM

POST /topology/generate/ptp

PTP xlsx saved to uploads/topology/ptp/

3

Download generated PTP

GET /files_manager/ptp/files/{name}

User downloads xlsx

4

Edit PTP offline

--

User adds rack, layout, server profiles

5

Re-upload edited PTP

POST /topology/load/ptp

Enriched topology loaded for validation

UI Walkthrough

UFM Tab in Load Topology Wizard

  • The UFM tab appears in the Load Topology wizard only when CVT is running in UFM plugin mode (CV_UFM_PLUGIN_MODE=true).

  • The tab provides two actions:

    • Load UFM Topology -- loads the UFM periodic topology directly for validation.

    • Generate PTP from UFM -- generates a stub PTP Excel file from the UFM topology, which the user can then download, edit offline, and re-upload.

  • Optional enrichment inputs can be provided:

    • IP File -- maps hostnames to IP addresses (populates the IP column in the Nodes sheet).

    • HCA Mapping -- overrides the default mlx5_X port derivation for hosts with non-standard port naming.

    • Server Profile -- replaces the auto-generated Server Profile sheet entirely.

    • DNS toggle -- use hostnames for agent communication (default: true).

  • hca_mapping and server_profile are mutually exclusive; providing both results in a 400 error.

Tab Visibility

  • When CV_UFM_PLUGIN_MODE=false (standalone deployment), the UFM tab is hidden from the UI.

  • The UI checks window["is_ufm"] to control tab visibility.

REST API Quick Reference

POST /topology/load/ufm

Load the UFM periodic topo file directly for validation.

Request body (all fields optional):

{ "ip_file": "uploads/topology/ip/fabric.ip", "hca_mapping": "uploads/topology/hca_mapping/mapping.csv", "server_profile": "uploads/topology/server_profile/profile.csv", "dns": true }

Parameter

Type

Description

ip_file

string

IP mapping file for switch/host IP resolution

hca_mapping

string

HCA mapping CSV for port name mapping

server_profile

string

Server profile CSV (mutually exclusive with hca_mapping)

dns

bool

Use hostnames for communication (default: true)

Response: 202 Accepted

Poll GET /topology/load/result for completion status.


POST /topology/generate/ptp

Generate a stub PTP xlsx from the UFM periodic topo file.

Request body (all fields optional):

{ "output": "my_fabric_ptp.xlsx", "ip_file": "uploads/topology/ip/fabric.ip", "hca_mapping": "uploads/topology/hca_mapping/mapping.csv", "server_profile": "uploads/topology/server_profile/profile.csv" }

Parameter

Type

Description

output

string

Output filename (default: timestamped ufm_ptp_YYYYMMDD_HHMMSS.xlsx)

ip_file

string

IP mapping file to populate the IP column

hca_mapping

string

HCA mapping CSV for port name overrides

server_profile

string

Server profile CSV (mutually exclusive with hca_mapping)

Response: 202 Accepted

Poll GET /topology/load/result for completion. On success:

{ "status": "completed", "file": "ufm_ptp_20260311_143000.xlsx", "switches": 42, "hosts": 120, "links": 500, "warnings": [] }

Download via GET /files_manager/ptp/files/ufm_ptp_20260311_143000.xlsx.

Validation Rules

  • hca_mapping and server_profile are mutually exclusive -- 400 if both provided.

  • Both endpoints require CV_UFM_PLUGIN_MODE=true -- 400 otherwise.

  • Both operations are asynchronous -- clients must poll for results.

Generated PTP File Format

The output follows the Unified PTP Excel format with four sheets:

Nodes Sheet

Column

Auto-Populated

Notes

FabricId

No

Empty stub for user to fill

Rack

No

Empty stub for user to fill

Unit

No

Empty stub for user to fill

TrayIndex

No

Empty stub for user to fill

NodeName

Yes

Hostname extracted from topo

NodeType

Yes

switch or host

NodeOS

Yes

mlnx_os for switches, linux for hosts

NodeModel

Yes

Switch model (e.g., MQM8700); empty for hosts

ServerProfile

Yes

ufm_default for hosts; empty for switches

Managed

Yes

yes for all nodes

CredentialProfile

No

Empty

IP

Optional

Populated if ip_file is provided

Column

Auto-Populated

Notes

Protocol

Yes

ib (from topo parser)

Shuffle-ID

No

Empty

A-Node

Yes

Source node hostname

A-Port

Yes

Switch port (e.g., P12) or host port (e.g., mlx5_0)

A-Module-PN

No

Empty

Z-Node

Yes

Destination node hostname

Z-Port

Yes

Same format as A-Port

Z-Module-PN

No

Empty

DC Floor Layout Sheet

Headers only (empty stub for user to fill).

Server Profile Sheet

Auto-generated default mapping based on observed HCA indices:

ServerProfile

CustomNicName

NicOSName

PhysicalPort

RDMAName

ufm_default

mlx5_0

mlx5_0

1

mlx5_0

ufm_default

mlx5_1

mlx5_1

2

mlx5_1

...

...

...

...

...

ufm_default

mlx5_N

mlx5_N

N+1

mlx5_N

Range determined from the maximum mlx5_X index observed across all host links. Overridden entirely if server_profile CSV is provided.

Data Transformation Rules

Input

Transformation

Output

Switch line: MQM8700 sw-hdr-01

NodeName = 2nd token, NodeModel = 1st token

Node: sw-hdr-01, model MQM8700

Host line: HCA_mlx5_2 compute-01

Strip HCA_* prefix

Node: compute-01, type host

Host port: mlx5_0/P1

Strip /P\d+ suffix

Port: mlx5_0

SYS node: SYS0c42a... S0c42a...

Excluded (unmanaged)

Not in PTP output

Down ports

Not present in UFM topo file

Silently accepted

Configuration

Setting

Default

Where

Description

CV_UFM_PLUGIN_MODE

false

Environment / Dockerfile

Enables UFM plugin features

CVT_UFM_TOPO_FILE

/opt/ufm/files/periodicTopo/master.topo

cvt_env.conf

Path to UFM periodic topo file

Docker Volume Mount

The CVT container requires read-only access to UFM filesystem:

/opt/ufm/files:/opt/ufm/files:ro

Configured in conf/plugin/cablevalidation_shared_volumes.conf.

Prerequisites

  1. UFM plugin mode enabled: CVT must be deployed as a UFM plugin with CV_UFM_PLUGIN_MODE=true.

  2. UFM periodic topology file exists: UFM must have generated the topo file at the configured path.

  3. Volume mount configured: The CVT container must have read access to /opt/ufm/files.

Last updated: