oxidecomputer / oxidecomputer/omicron

oxide hardware switch-port status returns 500 error when querying unconfigured port

Open
#7,147 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
Rust
Stars
572
Forks
97
Avg merge
2d 12h
Merged PRs (30d)
96

Description

On the colo rack, we have both qsfp8 ports populated, but the qsfp9 ports are empty:

✕ treyaspelund@Tallon-IV 01:05:31 PM | ~/Downloads
‣ ./oxide --profile colo-admin system hardware switch-port show-status | grep 'qsfp[89]'
qsfp8   true        true     a8:40:25:05:15:43  false    RS    up/LinkUp       Optical  Speed100G
qsfp9   false       -        -                  -        -     -               -        -
qsfp8   true        true     a8:40:25:05:0f:43  false    RS    up/LinkUp       Optical  Speed100G
qsfp9   false       -        -                  -        -     -               -        -

If we query qsfp8, we get a valid response:

✕ treyaspelund@Tallon-IV 01:05:08 PM | ~/Downloads
‣ ./oxide --profile colo-admin system hardware switch-port status --port qsfp8 --switch-location switch1 --rack-id 48759651-d754-43e2-ad49-64dde3adc1c2
{
  "link": {
    "address": {
      "a": [
        168,
        64,
        37,
        5,
        15,
        67
      ]
    },
    "asic_id": 136,
    "autoneg": false,
    "enabled": true,
    "fec": "RS",
    "fsm_state": "LinkUp",
    "ipv6_enabled": false,
    "kr": false,
    "link_id": 0,
    "link_state": "up",
    "media": "Optical",
    "port_id": "qsfp8",
    "prbs": "Mission",
    "presence": true,
    "speed": "Speed100G",
    "tofino_connector": 41
  },
  "monitors": {
    "receiver_power": [
      {
        "average": 1.2298001050949097
      },
      {
        "average": 0.8708999752998352
      },
      {
        "average": 0.9979000091552734
      },
      {
        "average": 1.1165000200271606
      }
    ],
    "transmitter_bias_current": [
      47.880001068115234,
      47.880001068115234,
      47.880001068115234,
      47.880001068115234
    ],
    "transmitter_power": [
      0.959600031375885,
      0.7152000069618225,
      0.8762000203132629,
      1.259200096130371
    ]
  }
}

However, if we query qsfp9 we get a 500 error:

treyaspelund@Tallon-IV 01:05:12 PM | ~/Downloads
‣ ./oxide --profile colo-admin system hardware switch-port status --port qsfp9 --switch-location switch1 --rack-id 48759651-d754-43e2-ad49-64dde3adc1c2
error
Error Response: status: 500 Internal Server Error; headers: {"content-type": "application/json", "x-request-id": "598d70b2-76dd-465f-afe8-5d605aaf689f", "content-length": "124", "date": "Fri, 22 Nov 2024 20:05:31 GMT"}; value: Error { error_code: Some("Internal"), message: "Internal Server Error", request_id: "598d70b2-76dd-465f-afe8-5d605aaf689f" }

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start by reproducing the switch-port status command for the unconfigured qsfp9 port and trace the API path that handles the request. Compare it with the successful qsfp8 response; done means querying an unconfigured port no longer returns a 500 Internal Server Error.

Written by the indexing model from the issue text.

Assessment

Tech stack
rust
Domain
api, infrastructure
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
45/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.