Skip to content

Commit c95fc72

Browse files
committed
Convert NetBox speed (kbps) to SONiC speed (Mbps)
NetBox stores interface speed in kbps (e.g., 1000000 for 1 Gbps), while SONiC expects speed in Mbps (e.g., 1000 for 1 Gbps). Add conversion (divide by 1000) when using NetBox speed values for SONiC port configuration. AI-assisted: Claude Code Signed-off-by: Christian Berendt <[email protected]>
1 parent 49831e9 commit c95fc72

File tree

1 file changed

+12
-7
lines changed

1 file changed

+12
-7
lines changed

osism/tasks/conductor/sonic/config_generator.py

Lines changed: 12 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -332,35 +332,40 @@ def _add_port_configurations(
332332
# Override with NetBox data if available
333333
# - Always use explicitly set NetBox speed (overrides port config)
334334
# - Use derived speed (from port type) only if port config has no speed
335+
# Note: NetBox stores speed in kbps, SONiC expects Mbps (divide by 1000)
335336
if port_name in netbox_interfaces:
336337
netbox_speed = netbox_interfaces[port_name]["speed"]
337338
speed_explicit = netbox_interfaces[port_name].get("speed_explicit", False)
338339
if netbox_speed:
340+
# Convert NetBox speed (kbps) to SONiC speed (Mbps)
341+
sonic_speed = str(int(netbox_speed) // 1000)
339342
if speed_explicit:
340343
# Explicitly set speed in NetBox always takes precedence
341-
if str(netbox_speed) != str(port_speed):
344+
if sonic_speed != str(port_speed):
342345
logger.info(
343-
f"Using explicit NetBox speed {netbox_speed} for port {port_name} "
346+
f"Using explicit NetBox speed {netbox_speed} kbps -> {sonic_speed} Mbps for port {port_name} "
344347
f"(overriding port config speed: {port_speed})"
345348
)
346-
port_speed = str(netbox_speed)
349+
port_speed = sonic_speed
347350
elif not port_speed or port_speed == "0":
348351
# Derived speed (from port type) only used if port config has no speed
349352
logger.info(
350-
f"Using derived NetBox speed {netbox_speed} for port {port_name} "
353+
f"Using derived NetBox speed {netbox_speed} kbps -> {sonic_speed} Mbps for port {port_name} "
351354
f"(hardware config had: {port_speed})"
352355
)
353-
port_speed = str(netbox_speed)
356+
port_speed = sonic_speed
354357

355358
if port_name in breakout_info["breakout_ports"]:
356359
# Get the master port to determine original speed and lanes
357360
master_port = breakout_info["breakout_ports"][port_name]["master"]
358361

359362
# Override with individual breakout port speed from NetBox if available
360363
if port_name in netbox_interfaces and netbox_interfaces[port_name]["speed"]:
361-
port_speed = str(netbox_interfaces[port_name]["speed"])
364+
# Convert NetBox speed (kbps) to SONiC speed (Mbps)
365+
netbox_speed = netbox_interfaces[port_name]["speed"]
366+
port_speed = str(int(netbox_speed) // 1000)
362367
logger.debug(
363-
f"Using NetBox speed {port_speed} for breakout port {port_name}"
368+
f"Using NetBox speed {netbox_speed} kbps -> {port_speed} Mbps for breakout port {port_name}"
364369
)
365370
elif master_port in breakout_info["breakout_cfgs"]:
366371
# Fallback to extracting speed from breakout mode

0 commit comments

Comments
 (0)