blob: e8f823aa90a33add937933229c8dfa8319baf1a3 [file] [log] [blame]
{
"$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"
]
}
},
"additionalProperties": false,
"required": ["model_ec", "version", "actions", "signatures"],
"properties": {
"model_ec": {
"type": "string",
"pattern": "^[0-9A-Fa-f]{8}$"
},
"version": {
"type": "integer",
"minimum": 1
},
"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"
}
}
}
}
}
}
}
}
}
}