diff --git a/docs/design-guide/device-types.md b/docs/design-guide/device-types.md index 742536ba4..8f520738d 100644 --- a/docs/design-guide/device-types.md +++ b/docs/design-guide/device-types.md @@ -29,7 +29,7 @@ JSON Schema, which enforces validation and consistency across all definitions. All device types must specify: -* **class**: Device category - `server`, `switch`, or `firewall` +* **class**: Device category - `server`, `switch`, `firewall`, or `storage` * **manufacturer**: Hardware vendor (e.g., "Dell", "HPE") * **model**: Specific model identifier (e.g., "PowerEdge R7615") * **u_height**: Rack unit height (must be greater than 0) @@ -194,7 +194,7 @@ The schema enforces: * Required field presence * Type correctness (strings, numbers, booleans, arrays, objects) -* Enum constraints (e.g., `class` must be server/switch/firewall) +* Enum constraints (e.g., `class` must be server/switch/firewall/storage) * Conditional requirements (servers must have resource classes) * Numeric constraints (e.g., `u_height > 0`) diff --git a/docs/operator-guide/device-types.md b/docs/operator-guide/device-types.md index 146fef21f..0b9615a6a 100644 --- a/docs/operator-guide/device-types.md +++ b/docs/operator-guide/device-types.md @@ -203,7 +203,7 @@ This performs full JSON schema validation including: * Required field presence * Type correctness (strings, numbers, booleans, arrays, objects) -* Enum constraints (e.g., `class` must be server/switch/firewall) +* Enum constraints (e.g., `class` must be server/switch/firewall/storage) * Conditional requirements (servers must have resource classes) * Numeric constraints (e.g., `u_height > 0`) @@ -381,7 +381,7 @@ Ensure all required fields are present: `class`, `manufacturer`, `model`, **Invalid class value**: -The `class` field must be exactly one of: `server`, `switch`, `firewall`. +The `class` field must be exactly one of: `server`, `switch`, `firewall`, `storage`. **Invalid u_height**: @@ -515,3 +515,30 @@ power-ports: type: iec-60320-c20 maximum_draw: 1440 ``` + +### Storage Device Type + +```yaml +# yaml-language-server: $schema=https://rackerlabs.github.io/understack/device-type.schema.json +manufacturer: NetApp +model: FAS8200 +u_height: 3 +is_full_depth: true + +interfaces: + - name: mgmt + type: 1000base-t + mgmt_only: true + type: 1000base-t + - name: e4 + type: 10gbase-x-sfp+ + - name: e4 + type: 10gbase-x-sfp+ + # ... additional data plane interfaces + +power-ports: + - name: PSU1 + type: iec-60320-c14 + - name: PSU2 + type: iec-60320-c14 +``` diff --git a/schema/device-type.schema.json b/schema/device-type.schema.json index 080640d11..7ceb4a4ec 100644 --- a/schema/device-type.schema.json +++ b/schema/device-type.schema.json @@ -8,7 +8,7 @@ "class": { "description": "Device class category", "type": "string", - "enum": ["server", "switch", "firewall"] + "enum": ["server", "switch", "firewall", "storage"] }, "manufacturer": { "description": "Manufacturer of the hardware chassis",