$schema: http://support.riverbed.com/apis/service_def/2.2 description: 'REST API for hardware monitor service. ' id: http://support.riverbed.com/apis/npm.hardware_monitor/1.1 name: npm.hardware_monitor provider: riverbed resources: chassis: additionalProperties: false description: A single chassis links: get: method: GET response: {$ref: '#/resources/chassis'} self: {path: '$/chassis/items/{serial_number}'} properties: availability: $merge: source: {$ref: '#/types/chassis_availability'} with: {readOnly: true} columns: {description: 'The number of columns of disk slots on the chassis. ''0'' is at the left. ', minimum: 0, readOnly: true, type: integer} headunit: {description: Indicates whether this is the head unit chassis., readOnly: true, type: boolean} health: $merge: source: {$ref: '#/types/health_status'} with: {readOnly: true} model: {description: Chassis model, readOnly: true, type: string} rows: {description: 'The number of rows of disk slots on the chassis. ''0'' is at the top. ', minimum: 0, readOnly: true, type: integer} sensor_status: additionalProperties: false description: 'Status of the sensors on the chassis. Available sensors varies based on chassis model. ' properties: cpus: description: List of CPU sensors items: {$ref: '#/types/cpu'} type: array exhaust_air_sensors: description: List of chassis air exhaust sensors items: {$ref: '#/types/exhaust_air_sensor'} type: array intake_air_sensors: description: List of chassis air intake sensors items: {$ref: '#/types/intake_air_sensor'} type: array power_supplies: description: List of power supply sensors items: {$ref: '#/types/power_supply'} type: array raid_controllers: description: List of RAID controller sensors items: {$ref: '#/types/raid_controller'} type: array storage_unit_controllers: description: List of storage unit controller sensors items: {$ref: '#/types/storage_unit_controller'} type: array system_fans: description: List of system fan sensors items: {$ref: '#/types/system_fan'} type: array type: object serial_number: $merge: source: {$ref: '#/types/device_id'} with: {description: Chassis serial number, readOnly: true} unused_slots: description: A list of positions in the disk grid that are unused items: description: 'A list of [row, column] pairs representing an unused disk location ' items: {description: A row or column index, type: integer} type: array type: array relations: disks: resource: '#/resources/disks' vars: {chassis: 0/serial_number} instances: {resource: '#/resources/chassis_list'} type: object chassis_list: additionalProperties: false description: All chassis known to the system links: get: method: GET response: {$ref: '#/resources/chassis_list'} self: params: availability: {$ref: '#/types/chassis_availability'} path: $/chassis properties: items: description: List of chassis items: {$ref: '#/resources/chassis'} type: array type: object disk: additionalProperties: false description: A single disk links: get: method: GET response: {$ref: '#/resources/disk'} self: {path: '$/disks/items/{id}'} set: method: PUT request: {$ref: '#/resources/disk'} response: {$ref: '#/resources/disk'} properties: blink: {description: Set to true to blink the drive for identification, type: boolean} chassis: $merge: source: {$ref: '#/types/device_id'} with: {description: Chassis identifier, readOnly: true} device_type: description: The type of device this is enum: [disk] readOnly: true type: string disk_type: {description: Disk technology, readOnly: true, type: string} health: $merge: source: {$ref: '#/types/health_status'} with: {readOnly: true} id: {description: 'A unique identifier for this disk''s slot on this system. ', readOnly: true, type: string} location: $merge: source: {$ref: '#/types/disk_location'} with: {readOnly: true} model: {description: Model string of the disk, readOnly: true, type: string} serial_number: {description: Unique identifier of the disk, readOnly: true, type: string} size_mb: {description: Size of the disk in mebibytes, readOnly: true, type: integer} status: $merge: source: {$ref: '#/types/disk_status'} with: {readOnly: true} relations: chassis: description: All chassis in the system resource: '#/resources/chassis' vars: {serial_number: 0/chassis} instances: {description: All disks in the system, resource: '#/resources/disks'} required: [id, blink] type: object disks: additionalProperties: false description: All disks known to the system links: get: method: GET response: {$ref: '#/resources/disks'} self: params: chassis: {$ref: '#/types/device_id'} disk_type: {type: string} serial_number: {type: string} status: {$ref: '#/types/disk_status'} path: $/disks properties: items: description: List of disks items: {$ref: '#/resources/disk'} type: array type: object hardware_health: additionalProperties: false description: Overall hardware health links: get: method: GET response: {$ref: '#/resources/hardware_health'} refresh: {description: Force a refresh of hardware status, method: POST, path: $/status/refresh} self: {path: $/status} properties: status: $merge: source: {$ref: '#/types/health_status'} with: {readOnly: true} type: object tags: relint-disable: [E0105] title: Hardware Monitor types: chassis_availability: description: Chassis availability enum: [ok, missing, foreign, invalid] type: string cpu: additionalProperties: false description: CPU sensor data properties: name: {description: The CPU name, type: string} status: {$ref: '#/types/sensor_status'} status_msg: {description: The CPU status, type: string} temperature: {$ref: '#/types/sensor_temperature'} required: [status, name, status_msg, temperature] type: object device_id: {description: A generic device identifier, type: string} device_type: description: The type of a device enum: [disk, chassis] type: string disk_location: additionalProperties: false description: The location of a disk in a chassis properties: column: {description: Disk column, minimum: 0, type: integer} label: {description: Disk label, type: string} row: {description: Disk row, minimum: 0, type: integer} type: object disk_status: description: Status of a disk enum: [ok, failed, failing, rebuilding, missing, invalid, new] type: string exhaust_air_sensor: additionalProperties: false description: Chassis air exhaust sensor data properties: name: {description: Sensor name, type: string} status: {$ref: '#/types/sensor_status'} status_msg: {description: Sensor status, type: string} temperature: {$ref: '#/types/sensor_temperature'} required: [status, name, status_msg, temperature] type: object health_status: description: Health status enum: [ok, notice, failing, failed] type: string intake_air_sensor: additionalProperties: false description: Chassis air intake sensor data properties: name: {description: Sensor name, type: string} status: {$ref: '#/types/sensor_status'} status_msg: {description: Sensor status, type: string} temperature: {$ref: '#/types/sensor_temperature'} required: [status, name, status_msg, temperature] type: object power_supply: additionalProperties: false description: Power supply sensor data properties: name: {description: The power supply name, type: string} status: {$ref: '#/types/sensor_status'} status_msg: {description: The power supply status, type: string} temperature: {$ref: '#/types/sensor_temperature'} required: [status, name, status_msg, temperature] type: object raid_controller: additionalProperties: false description: RAID controller sensor data properties: battery: $merge: source: {$ref: '#/types/sensor_status'} with: {description: The status of the controller's battery} name: {description: RAID controller name, type: string} status: {$ref: '#/types/sensor_status'} status_msg: {description: RAID controller status, type: string} temperature: {$ref: '#/types/sensor_temperature'} required: [status, name, status_msg, battery, temperature] type: object rpm: {description: Revolutions per minute, type: integer} sensor_status: description: The status of a sensor enum: [ok, missing, unknown, failing, failed] type: string sensor_temperature: additionalProperties: false description: Temperature sensor data properties: current_temperature: {description: Current temperature in celsius, type: integer} threshold: {description: Threshold temperature in celsius, type: integer} required: [current_temperature, threshold] type: object storage_unit_controller: additionalProperties: false description: Storage unit controller sensor data properties: name: {description: Controller name, type: string} status: {$ref: '#/types/sensor_status'} status_msg: {description: Controller status, type: string} temperature: {$ref: '#/types/sensor_temperature'} required: [status, name, status_msg, temperature] type: object system_fan: additionalProperties: false description: System fan sensor data properties: fan_speed: {$ref: '#/types/rpm'} name: {description: The fan name, type: string} status: {$ref: '#/types/sensor_status'} status_msg: {description: The fan status, type: string} required: [status, name, status_msg, fan_speed] type: object version: '1.1'