1e36866c3SCaleb Palmer{ 2e36866c3SCaleb Palmer "$schema": "https://json-schema.org/draft/2020-12/schema", 3e36866c3SCaleb Palmer "title": "RAS Data schema for openpower-hw-diags", 4e36866c3SCaleb Palmer "version": 2, 5e36866c3SCaleb Palmer "type": "object", 6e36866c3SCaleb Palmer "$defs": { 7e36866c3SCaleb Palmer "priority": { 8e36866c3SCaleb Palmer "type": "string", 9*8b10d699SPatrick Williams "enum": ["HIGH", "MED", "MED_A", "MED_B", "MED_C", "LOW"] 10e36866c3SCaleb Palmer }, 11e36866c3SCaleb Palmer "flags": { 12e36866c3SCaleb Palmer "type": "string", 13e36866c3SCaleb Palmer "enum": [ 14e36866c3SCaleb Palmer "sue_source", 15e36866c3SCaleb Palmer "sue_seen", 16e36866c3SCaleb Palmer "cs_possible", 17e36866c3SCaleb Palmer "external_checkstop", 18e36866c3SCaleb Palmer "recovered_error", 19e36866c3SCaleb Palmer "informational_only", 20e36866c3SCaleb Palmer "mnfg_informational_only", 21e36866c3SCaleb Palmer "mask_but_dont_clear", 22e36866c3SCaleb Palmer "crc_related_err", 23e36866c3SCaleb Palmer "crc_root_cause", 24e36866c3SCaleb Palmer "odp_data_corrupt_side_effect", 25e36866c3SCaleb Palmer "odp_data_corrupt_root_cause" 26e36866c3SCaleb Palmer ] 27e36866c3SCaleb Palmer } 28e36866c3SCaleb Palmer }, 29e36866c3SCaleb Palmer "additionalProperties": false, 30e36866c3SCaleb Palmer "required": ["model_ec", "version", "actions", "signatures"], 31e36866c3SCaleb Palmer "properties": { 32e36866c3SCaleb Palmer "model_ec": { 33e36866c3SCaleb Palmer "type": "string", 34e36866c3SCaleb Palmer "pattern": "^[0-9A-Fa-f]{8}$" 35e36866c3SCaleb Palmer }, 36e36866c3SCaleb Palmer "version": { 37e36866c3SCaleb Palmer "type": "integer", 38e36866c3SCaleb Palmer "minimum": 1 39e36866c3SCaleb Palmer }, 40e36866c3SCaleb Palmer "units": { 41e36866c3SCaleb Palmer "type": "object", 42e36866c3SCaleb Palmer "additionalProperties": false, 43e36866c3SCaleb Palmer "patternProperties": { 44e36866c3SCaleb Palmer "^\\w+$": { 45e36866c3SCaleb Palmer "type": "string", 46e36866c3SCaleb Palmer "pattern": "^\\w+(\\/\\w+)*$" 47e36866c3SCaleb Palmer } 48e36866c3SCaleb Palmer } 49e36866c3SCaleb Palmer }, 50e36866c3SCaleb Palmer "buses": { 51e36866c3SCaleb Palmer "type": "object", 52e36866c3SCaleb Palmer "additionalProperties": false, 53e36866c3SCaleb Palmer "patternProperties": { 54e36866c3SCaleb Palmer "^\\w+$": { 55e36866c3SCaleb Palmer "type": "object", 56e36866c3SCaleb Palmer "additionalProperties": false, 57e36866c3SCaleb Palmer "required": ["type"], 58e36866c3SCaleb Palmer "properties": { 59e36866c3SCaleb Palmer "type": { 60e36866c3SCaleb Palmer "type": "string", 61e36866c3SCaleb Palmer "enum": ["SMP_BUS", "OMI_BUS"] 62e36866c3SCaleb Palmer }, 63e36866c3SCaleb Palmer "unit": { 64e36866c3SCaleb Palmer "type": "string", 65e36866c3SCaleb Palmer "pattern": "^\\w+$" 66e36866c3SCaleb Palmer } 67e36866c3SCaleb Palmer } 68e36866c3SCaleb Palmer } 69e36866c3SCaleb Palmer } 70e36866c3SCaleb Palmer }, 71e36866c3SCaleb Palmer "actions": { 72e36866c3SCaleb Palmer "type": "object", 73e36866c3SCaleb Palmer "additionalProperties": false, 74e36866c3SCaleb Palmer "patternProperties": { 75e36866c3SCaleb Palmer "^\\w+$": { 76e36866c3SCaleb Palmer "type": "array", 77e36866c3SCaleb Palmer "items": { 78e36866c3SCaleb Palmer "type": "object", 79e36866c3SCaleb Palmer "required": ["type"], 80e36866c3SCaleb Palmer "properties": { 81e36866c3SCaleb Palmer "type": { 82e36866c3SCaleb Palmer "type": "string", 83e36866c3SCaleb Palmer "enum": [ 84e36866c3SCaleb Palmer "action", 85e36866c3SCaleb Palmer "callout_self", 86e36866c3SCaleb Palmer "callout_unit", 87e36866c3SCaleb Palmer "callout_connected", 88e36866c3SCaleb Palmer "callout_bus", 89e36866c3SCaleb Palmer "callout_clock", 90e36866c3SCaleb Palmer "callout_procedure", 91e36866c3SCaleb Palmer "callout_part", 92e36866c3SCaleb Palmer "plugin", 93e36866c3SCaleb Palmer "flag" 94e36866c3SCaleb Palmer ] 95e36866c3SCaleb Palmer }, 96e36866c3SCaleb Palmer "priority": { 97e36866c3SCaleb Palmer "$ref": "#/$defs/priority" 98e36866c3SCaleb Palmer }, 99e36866c3SCaleb Palmer "guard": { 100e36866c3SCaleb Palmer "type": "boolean" 101e36866c3SCaleb Palmer }, 102e36866c3SCaleb Palmer "name": { 103e36866c3SCaleb Palmer "type": "string", 104e36866c3SCaleb Palmer "pattern": "^\\w+$" 105e36866c3SCaleb Palmer } 106e36866c3SCaleb Palmer }, 107e36866c3SCaleb Palmer "allOf": [ 108e36866c3SCaleb Palmer { 109e36866c3SCaleb Palmer "if": { 110e36866c3SCaleb Palmer "properties": { 111e36866c3SCaleb Palmer "type": { "const": "action" } 112e36866c3SCaleb Palmer } 113e36866c3SCaleb Palmer }, 114e36866c3SCaleb Palmer "then": { 115e36866c3SCaleb Palmer "required": ["name"], 116e36866c3SCaleb Palmer "not": { "required": ["priority", "guard"] } 117e36866c3SCaleb Palmer } 118e36866c3SCaleb Palmer }, 119e36866c3SCaleb Palmer { 120e36866c3SCaleb Palmer "if": { 121e36866c3SCaleb Palmer "properties": { 122e36866c3SCaleb Palmer "type": { "const": "callout_self" } 123e36866c3SCaleb Palmer } 124e36866c3SCaleb Palmer }, 125e36866c3SCaleb Palmer "then": { 126e36866c3SCaleb Palmer "required": ["priority", "guard"], 127e36866c3SCaleb Palmer "not": { "required": ["name"] } 128e36866c3SCaleb Palmer } 129e36866c3SCaleb Palmer }, 130e36866c3SCaleb Palmer { 131e36866c3SCaleb Palmer "if": { 132e36866c3SCaleb Palmer "properties": { 133e36866c3SCaleb Palmer "type": { "const": "callout_unit" } 134e36866c3SCaleb Palmer } 135e36866c3SCaleb Palmer }, 136e36866c3SCaleb Palmer "then": { 137e36866c3SCaleb Palmer "required": ["name", "priority", "guard"] 138e36866c3SCaleb Palmer } 139e36866c3SCaleb Palmer }, 140e36866c3SCaleb Palmer { 141e36866c3SCaleb Palmer "if": { 142e36866c3SCaleb Palmer "properties": { 143e36866c3SCaleb Palmer "type": { "const": "callout_connected" } 144e36866c3SCaleb Palmer } 145e36866c3SCaleb Palmer }, 146e36866c3SCaleb Palmer "then": { 147e36866c3SCaleb Palmer "required": ["name", "priority", "guard"] 148e36866c3SCaleb Palmer } 149e36866c3SCaleb Palmer }, 150e36866c3SCaleb Palmer { 151e36866c3SCaleb Palmer "if": { 152e36866c3SCaleb Palmer "properties": { 153e36866c3SCaleb Palmer "type": { "const": "callout_bus" } 154e36866c3SCaleb Palmer } 155e36866c3SCaleb Palmer }, 156e36866c3SCaleb Palmer "then": { 157e36866c3SCaleb Palmer "required": ["name", "priority", "guard"] 158e36866c3SCaleb Palmer } 159e36866c3SCaleb Palmer }, 160e36866c3SCaleb Palmer { 161e36866c3SCaleb Palmer "if": { 162e36866c3SCaleb Palmer "properties": { 163e36866c3SCaleb Palmer "type": { "const": "callout_clock" } 164e36866c3SCaleb Palmer } 165e36866c3SCaleb Palmer }, 166e36866c3SCaleb Palmer "then": { 167e36866c3SCaleb Palmer "required": ["name", "priority", "guard"], 168e36866c3SCaleb Palmer "properties": { 169e36866c3SCaleb Palmer "name": { 170e36866c3SCaleb Palmer "enum": [ 171e36866c3SCaleb Palmer "OSC_REF_CLOCK_0", 172e36866c3SCaleb Palmer "OSC_REF_CLOCK_1", 173e36866c3SCaleb Palmer "TOD_CLOCK" 174e36866c3SCaleb Palmer ] 175e36866c3SCaleb Palmer } 176e36866c3SCaleb Palmer } 177e36866c3SCaleb Palmer } 178e36866c3SCaleb Palmer }, 179e36866c3SCaleb Palmer { 180e36866c3SCaleb Palmer "if": { 181e36866c3SCaleb Palmer "properties": { 182e36866c3SCaleb Palmer "type": { "const": "callout_procedure" } 183e36866c3SCaleb Palmer } 184e36866c3SCaleb Palmer }, 185e36866c3SCaleb Palmer "then": { 186e36866c3SCaleb Palmer "required": ["name", "priority"], 187e36866c3SCaleb Palmer "not": { "required": ["guard"] }, 188e36866c3SCaleb Palmer "properties": { 189e36866c3SCaleb Palmer "name": { 190*8b10d699SPatrick Williams "enum": ["LEVEL2", "SUE_SEEN"] 191e36866c3SCaleb Palmer } 192e36866c3SCaleb Palmer } 193e36866c3SCaleb Palmer } 194e36866c3SCaleb Palmer }, 195e36866c3SCaleb Palmer { 196e36866c3SCaleb Palmer "if": { 197e36866c3SCaleb Palmer "properties": { 198e36866c3SCaleb Palmer "type": { "const": "callout_part" } 199e36866c3SCaleb Palmer } 200e36866c3SCaleb Palmer }, 201e36866c3SCaleb Palmer "then": { 202e36866c3SCaleb Palmer "required": ["name", "priority"], 203e36866c3SCaleb Palmer "not": { "required": ["guard"] }, 204e36866c3SCaleb Palmer "properties": { 205e36866c3SCaleb Palmer "name": { 206*8b10d699SPatrick Williams "enum": ["PNOR"] 207e36866c3SCaleb Palmer } 208e36866c3SCaleb Palmer } 209e36866c3SCaleb Palmer } 210e36866c3SCaleb Palmer }, 211e36866c3SCaleb Palmer { 212e36866c3SCaleb Palmer "if": { 213e36866c3SCaleb Palmer "properties": { 214e36866c3SCaleb Palmer "type": { "const": "plugin" } 215e36866c3SCaleb Palmer } 216e36866c3SCaleb Palmer }, 217e36866c3SCaleb Palmer "then": { 218e36866c3SCaleb Palmer "required": ["name", "instance"], 219*8b10d699SPatrick Williams "not": { 220*8b10d699SPatrick Williams "required": ["priority", "guard"] 221*8b10d699SPatrick Williams }, 222e36866c3SCaleb Palmer "properties": { 223e36866c3SCaleb Palmer "instance": { 224e36866c3SCaleb Palmer "type": "integer" 225e36866c3SCaleb Palmer } 226e36866c3SCaleb Palmer } 227e36866c3SCaleb Palmer } 228e36866c3SCaleb Palmer }, 229e36866c3SCaleb Palmer { 230e36866c3SCaleb Palmer "if": { 231e36866c3SCaleb Palmer "properties": { 232e36866c3SCaleb Palmer "type": { "const": "flag" } 233e36866c3SCaleb Palmer } 234e36866c3SCaleb Palmer }, 235e36866c3SCaleb Palmer "then": { 236e36866c3SCaleb Palmer "required": ["name"], 237e36866c3SCaleb Palmer "properties": { 238e36866c3SCaleb Palmer "name": { 239e36866c3SCaleb Palmer "$ref": "#/$defs/flags" 240e36866c3SCaleb Palmer } 241e36866c3SCaleb Palmer } 242e36866c3SCaleb Palmer } 243e36866c3SCaleb Palmer } 244e36866c3SCaleb Palmer ] 245e36866c3SCaleb Palmer } 246e36866c3SCaleb Palmer } 247e36866c3SCaleb Palmer } 248e36866c3SCaleb Palmer }, 249e36866c3SCaleb Palmer "signatures": { 250e36866c3SCaleb Palmer "type": "object", 251e36866c3SCaleb Palmer "additionalProperties": false, 252e36866c3SCaleb Palmer "patternProperties": { 253e36866c3SCaleb Palmer "^[0-9A-Fa-f]{4}$": { 254e36866c3SCaleb Palmer "type": "object", 255e36866c3SCaleb Palmer "additionalProperties": false, 256e36866c3SCaleb Palmer "patternProperties": { 257e36866c3SCaleb Palmer "^[0-9A-Fa-f]{2}$": { 258e36866c3SCaleb Palmer "type": "object", 259e36866c3SCaleb Palmer "additionalProperties": false, 260e36866c3SCaleb Palmer "patternProperties": { 261e36866c3SCaleb Palmer "^[0-9A-Fa-f]{2}$": { 262e36866c3SCaleb Palmer "type": "string", 263e36866c3SCaleb Palmer "pattern": "^\\w+$" 264e36866c3SCaleb Palmer }, 265e36866c3SCaleb Palmer "flags": { 266e36866c3SCaleb Palmer "type": "array", 267e36866c3SCaleb Palmer "minItems": 1, 268e36866c3SCaleb Palmer "uniqueItems": true, 269*8b10d699SPatrick Williams "items": { 270e36866c3SCaleb Palmer "$ref": "#/$defs/flags" 271e36866c3SCaleb Palmer } 272e36866c3SCaleb Palmer } 273e36866c3SCaleb Palmer } 274e36866c3SCaleb Palmer } 275e36866c3SCaleb Palmer } 276e36866c3SCaleb Palmer } 277e36866c3SCaleb Palmer } 278e36866c3SCaleb Palmer } 279e36866c3SCaleb Palmer } 280e36866c3SCaleb Palmer} 281