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