Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Qumulo Drive Inventory Tool

A command-line utility that collects a complete drive inventory — model, serial, firmware version, bay location, capacity, and health — for every drive across all nodes in a Qumulo cluster. It connects to the cluster's REST API for the drive inventory and over SSH to each node to read firmware versions, then flags any drives that are eligible for a firmware update based on published Qumulo advisories.

Requirements

  • Python 3.8 – 3.11
  • paramikopip install paramiko
  • Network access from the machine running the tool to:
    • the cluster REST API (default TCP port 8000), and
    • SSH (default TCP port 22) on each node.
  • An SSH account with sudo privileges on the nodes (needed to read drive firmware). By default this is the same Qumulo admin account used for the API.

Usage

# Basic run against any node or floating IP (prompts for the admin password)
python3 drive_inventory.py --host 10.0.0.1

# Non-interactive, write a CSV report
python3 drive_inventory.py --host 10.0.0.1 --user admin --format csv -o report.csv

# Provide node IPs explicitly (skips auto-discovery)
python3 drive_inventory.py --host 10.0.0.1 --node-ips 10.0.0.1,10.0.0.2,10.0.0.3

# Product-package nodes that use a separate SSH user / key
python3 drive_inventory.py --host 10.0.0.1 --ssh-user ubuntu --ssh-key ~/.ssh/id_rsa

Run python3 drive_inventory.py --help for the full list of options.

What It Does

  1. Authenticates to the Qumulo REST API and reads the drive inventory (/v1/cluster/slots/) — model, serial, bay, capacity, and health for every slot in the cluster.
  2. Discovers a reachable IP per node from the cluster's network status (falling back gracefully across API versions), or uses the IPs you pass with --node-ips.
  3. Collects firmware by connecting to each node over SSH in parallel and reading the firmware revision for every NVMe and SATA/SAS device.
  4. Joins the API inventory with the per-node firmware and checks each drive against the advisory list below.

Output

  • The full inventory (all columns, all drives, grouped by node) is written to a timestamped log file in the current directory, e.g. drive_inventory_<cluster>_<YYYYMMDD_HHMMSS>.log.
  • A firmware advisory summary is printed to the screen, listing only the drives that need a firmware update:
===============================================================================================
  FIRMWARE UPDATES REQUIRED -- my-cluster
===============================================================================================
  Node   Slot Model                      Serial             Current FW   Target FW
  ------ ---- -------------------------- ------------------ ------------ ------------
  4      5    WDC_WUH722020BLE6L4        9AHVBHXS           PQGNW540     PQGNWGC8
  ------ ---- -------------------------- ------------------ ------------ ------------
  Total drives needing update: 1

  Reference:
    WDC HC560 20TB        https://care.qumulo.com/s/article/WDC-HC560-Firmware-Update-Instructions-For-Qumulo
  • With -o/--output you can also write the inventory as table, json, or csv (--format). The JSON output includes an advisory object per matched drive.

If firmware for a node cannot be collected (for example, SSH is blocked), that node's drives still appear in the inventory with their model and serial; their firmware is marked unavailable and the summary notes how many drives could not be checked.

Firmware Advisories

Advisory Drive Model Required Firmware
HPE a00148409en_us HPE NVMe SSD (MO001600KYDZR, MO000800KYDZK) HPK5 or newer
KB 000001305 Micron 7450 NVMe SSD E2MU300
KB 000001295 WDC SN640 NVMe SSD R1110026
KB 000001304 WDC HC560 20TB HDD (WDC_WUH722020ALE6L4, WDC_WUH722020BLE6L4) PQGNWGC8
KB 000001037 WDC 14TB HDD (WDC_WUH721414ALE6L4) LDGNW400
KB 000001037 WDC 18TB HDD (WDC_WUH721818ALE6L4) PCGNW8C2
KB 000001037 HGST 12TB HDD (HGST_HUH721212ALE600, HGST_HUH721212ALN600) LEGNTB01

Most advisories require an exact firmware match — any other revision is reported as needing an update. The HPE NVMe advisory instead specifies a minimum: HPK5 and anything newer (HPK6, and so on) is reported as current, and only older revisions are flagged.

The HPE advisory covers nine drive models, but only the two that Qumulo ships on HPE platforms are enabled. The other seven are listed commented-out in HPE_HPK5_MODELS in drive_inventory.py and can be switched on by removing the # from their line if a future platform uses them.

Refer to the linked Qumulo Care article for each advisory before performing any firmware update.

Tests

test_drive_inventory.py covers the advisory matching logic, the inventory join, and the output formatters. No cluster access or network is required:

python3 -m unittest test_drive_inventory -v

SSH Access & Credentials

By default the tool uses one password prompt for both the REST API and SSH, assuming the SSH account matches the Qumulo admin account. If SSH uses a different account, use the SSH override options:

  • --ssh-user <name> — SSH username, if different from --user.
  • --ssh-key <path> — path to an SSH private key (skips password auth).
  • --ssh-password <pw> — SSH password, if different from the API password.
  • --ssh-port <n> — SSH port (default 22).

The tool never stores credentials; the password is only held in memory for the duration of the run.

Troubleshooting

  • 'paramiko' is required but not installed — run pip install paramiko.
  • A node reports an SSH error — confirm the machine running the tool can reach that node on port 22 and that the SSH account has sudo access. You can pass IPs directly with --node-ips if auto-discovery picks unreachable addresses.
  • Firmware shows as unavailable for all nodes — usually an SSH auth or reachability problem; verify the SSH user/key and network path to the nodes.

License

Released under the MIT License.

About

Collect drive model, serial, firmware, and health across all nodes in a Qumulo cluster, and flag drives eligible for firmware updates.

Resources

Stars

Watchers

Forks

Releases

Packages

Used by

Contributors

Languages