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