| { |
| "$schema": "https://json-schema.org/draft/2020-12/schema", |
| "title": "RAS Data schema for openpower-hw-diags", |
| "version": 2, |
| "type": "object", |
| "$defs": { |
| "priority": { |
| "type": "string", |
| "enum": ["HIGH", "MED", "MED_A", "MED_B", "MED_C", "LOW"] |
| }, |
| "flags": { |
| "type": "string", |
| "enum": [ |
| "sue_source", |
| "sue_seen", |
| "cs_possible", |
| "external_checkstop", |
| "recovered_error", |
| "informational_only", |
| "mnfg_informational_only", |
| "mask_but_dont_clear", |
| "crc_related_err", |
| "crc_root_cause", |
| "odp_data_corrupt_side_effect", |
| "odp_data_corrupt_root_cause", |
| "attn_from_ocmb" |
| ] |
| } |
| }, |
| "additionalProperties": false, |
| "required": ["model_ec", "version", "actions", "signatures"], |
| "properties": { |
| "model_ec": { |
| "type": "string", |
| "pattern": "^[0-9A-Fa-f]{8}$" |
| }, |
| "version": { |
| "type": "integer", |
| "minimum": 2, |
| "maximum": 2 |
| }, |
| "units": { |
| "type": "object", |
| "additionalProperties": false, |
| "patternProperties": { |
| "^\\w+$": { |
| "type": "string", |
| "pattern": "^\\w+(\\/\\w+)*$" |
| } |
| } |
| }, |
| "buses": { |
| "type": "object", |
| "additionalProperties": false, |
| "patternProperties": { |
| "^\\w+$": { |
| "type": "object", |
| "additionalProperties": false, |
| "required": ["type"], |
| "properties": { |
| "type": { |
| "type": "string", |
| "enum": ["SMP_BUS", "OMI_BUS"] |
| }, |
| "unit": { |
| "type": "string", |
| "pattern": "^\\w+$" |
| } |
| } |
| } |
| } |
| }, |
| "actions": { |
| "type": "object", |
| "additionalProperties": false, |
| "patternProperties": { |
| "^\\w+$": { |
| "type": "array", |
| "items": { |
| "type": "object", |
| "required": ["type"], |
| "properties": { |
| "type": { |
| "type": "string", |
| "enum": [ |
| "action", |
| "callout_self", |
| "callout_unit", |
| "callout_connected", |
| "callout_bus", |
| "callout_clock", |
| "callout_procedure", |
| "callout_part", |
| "plugin", |
| "flag" |
| ] |
| }, |
| "priority": { |
| "$ref": "#/$defs/priority" |
| }, |
| "guard": { |
| "type": "boolean" |
| }, |
| "name": { |
| "type": "string", |
| "pattern": "^\\w+$" |
| } |
| }, |
| "allOf": [ |
| { |
| "if": { |
| "properties": { |
| "type": { "const": "action" } |
| } |
| }, |
| "then": { |
| "required": ["name"], |
| "not": { "required": ["priority", "guard"] } |
| } |
| }, |
| { |
| "if": { |
| "properties": { |
| "type": { "const": "callout_self" } |
| } |
| }, |
| "then": { |
| "required": ["priority", "guard"], |
| "not": { "required": ["name"] } |
| } |
| }, |
| { |
| "if": { |
| "properties": { |
| "type": { "const": "callout_unit" } |
| } |
| }, |
| "then": { |
| "required": ["name", "priority", "guard"] |
| } |
| }, |
| { |
| "if": { |
| "properties": { |
| "type": { "const": "callout_connected" } |
| } |
| }, |
| "then": { |
| "required": ["name", "priority", "guard"] |
| } |
| }, |
| { |
| "if": { |
| "properties": { |
| "type": { "const": "callout_bus" } |
| } |
| }, |
| "then": { |
| "required": ["name", "priority", "guard"] |
| } |
| }, |
| { |
| "if": { |
| "properties": { |
| "type": { "const": "callout_clock" } |
| } |
| }, |
| "then": { |
| "required": ["name", "priority", "guard"], |
| "properties": { |
| "name": { |
| "enum": [ |
| "OSC_REF_CLOCK_0", |
| "OSC_REF_CLOCK_1", |
| "TOD_CLOCK" |
| ] |
| } |
| } |
| } |
| }, |
| { |
| "if": { |
| "properties": { |
| "type": { "const": "callout_procedure" } |
| } |
| }, |
| "then": { |
| "required": ["name", "priority"], |
| "not": { "required": ["guard"] }, |
| "properties": { |
| "name": { |
| "enum": ["LEVEL2", "SUE_SEEN"] |
| } |
| } |
| } |
| }, |
| { |
| "if": { |
| "properties": { |
| "type": { "const": "callout_part" } |
| } |
| }, |
| "then": { |
| "required": ["name", "priority"], |
| "not": { "required": ["guard"] }, |
| "properties": { |
| "name": { |
| "enum": ["PNOR"] |
| } |
| } |
| } |
| }, |
| { |
| "if": { |
| "properties": { |
| "type": { "const": "plugin" } |
| } |
| }, |
| "then": { |
| "required": ["name", "instance"], |
| "not": { |
| "required": ["priority", "guard"] |
| }, |
| "properties": { |
| "instance": { |
| "type": "integer" |
| } |
| } |
| } |
| }, |
| { |
| "if": { |
| "properties": { |
| "type": { "const": "flag" } |
| } |
| }, |
| "then": { |
| "required": ["name"], |
| "properties": { |
| "name": { |
| "$ref": "#/$defs/flags" |
| } |
| } |
| } |
| } |
| ] |
| } |
| } |
| } |
| }, |
| "signatures": { |
| "type": "object", |
| "additionalProperties": false, |
| "patternProperties": { |
| "^[0-9A-Fa-f]{4}$": { |
| "type": "object", |
| "additionalProperties": false, |
| "patternProperties": { |
| "^[0-9A-Fa-f]{2}$": { |
| "type": "object", |
| "additionalProperties": false, |
| "patternProperties": { |
| "^[0-9A-Fa-f]{2}$": { |
| "type": "string", |
| "pattern": "^\\w+$" |
| }, |
| "flags": { |
| "type": "array", |
| "minItems": 1, |
| "uniqueItems": true, |
| "items": { |
| "$ref": "#/$defs/flags" |
| } |
| } |
| } |
| } |
| } |
| } |
| } |
| } |
| } |
| } |