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