Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Supermicro only baseboard serial number set #296

Open
Garfunkl opened this issue Apr 29, 2024 · 3 comments
Open

Supermicro only baseboard serial number set #296

Garfunkl opened this issue Apr 29, 2024 · 3 comments

Comments

@Garfunkl
Copy link

Describe the bug
On our Supermicro Servers there is nearly never a system or chassis serial number set. That leads to this error:

...
File "/usr/local/lib/python3.9/site-packages/pynetbox/core/endpoint.py", line 147, in get raise ValueError(
ValueError: get() returned more than one result. Check that the kwarg(s) passed are valid for this endpoint or use filter() or all() instead.    

Expected behavior
Maybe fall back to baseboard serial ?

Environment:

  • OS: Rocky Linux 9.3
  • Netbox agent version 0.7.1

Additional context
Working fix in my setup for netbox_agent/vendors/supermicro.py :

def get_service_tag(self):
    default_serial = "0123456789"
    baseboard_serial = self.baseboard[0]['Serial Number'].strip()
    system_serial = str(self.system[0]['Serial Number']).strip() 

    if self.is_blade() or system_serial == default_serial:
        return baseboard_serial
    return system_serial
@FlorianHeigl
Copy link

Hi,

as a fellow supermicro user I can confirm that patch is needed.

if you have many, could you complain to supermicro of their incompetence so they finally start getting this right?
You might wanna have some conditions that whatever is returned is value is in fact looking like a serial number
(so [0-9A-F]{1,20} or something - don't have one to look at right now)

@Garfunkl
Copy link
Author

Garfunkl commented Sep 3, 2024

At least for us, it's probably not the fault of Supermicro. Supermicro doesn't sell its servers directly. We have to buy them from resellers, and on the bill, they show up with a custom serial from the reseller.

For example:
A Supermicro server with the serial supermicro-xyz shows up as reseller-xyz.
I think the resellers are supposed to set those serial numbers, but they nearly never do.

The "workaround" I proposed was to set the system serial number to the motherboard serial number if it is set to the default of "0123456789". Since the motherboard serial is set by Supermicro and is hopefully a unique identifier, this should resolve the issue.

TiagoTT added a commit to TiagoTT/netbox-agent that referenced this issue Oct 30, 2024
Solution provided by @Garfunkl (Simon Brandstetter).
See details of the problem and solution in: Solvik#296
@TiagoTT
Copy link
Contributor

TiagoTT commented Oct 30, 2024

Thank you @Garfunkl for the proposed solution.
We are facing the same issue with the default serial number in many of our Supermicro servers and I took the liberty to pick you proposed solution and opened this pull request: #321
In this other pull request there is also a new command line option to update the serial number of existing servers, which we needed to update the old serial numbers with the new ones without removing the server object from Netbox: #320

TiagoTT added a commit to brandwatch/netbox-agent that referenced this issue Nov 4, 2024
Solution provided by @Garfunkl (Simon Brandstetter).
See details of the problem and solution in: Solvik#296
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants