The driver inherits LinuxDriver for the OS surface and set TYPE_LABEL to
"Storage", but netOrk derives device_class from an issubclass chain that
reaches OSDriver before StorageDriver and returned "linux". The UI gates
the Storage tab on device_class === "storage", so an OMV device showed a
Storage label in the list and no Storage tab on the detail page — while
its disks, pools, volumes and shares were being collected and persisted
the whole time.
netOrk now honours an explicit DEVICE_CLASS attribute before falling back
to the chain, mirroring how it already honours TYPE_LABEL.
Refs christianmanivong/netork#111
get_device_warnings() now returns only {code, meta} — severity, title,
message, and action are resolved centrally by netork's
WARNING_CATALOG (netork/core/device_warnings.py), not by the driver.
Keeps this driver independent of netork and avoids per-vendor drift in
how the same warning code is presented.
The TYPE_LABEL attribute on the base class hierarchy is now the
canonical way for drivers to declare their device category. The
storage_device sentinel flag is removed — classification is determined
by reading TYPE_LABEL via getattr() in the backend.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>