blob: 0401b45b5a355278e2332366aeb067b2648fedcc [file] [log] [blame]
Zane Shelley90d12522021-07-20 13:20:10 -05001{
2 "$schema": "https://json-schema.org/draft/2020-12/schema",
3 "title": "RAS Data schema for openpower-hw-diags",
Zane Shelleyee54c992021-08-08 17:46:48 -05004 "version": 1,
Zane Shelley90d12522021-07-20 13:20:10 -05005 "type": "object",
Zane Shelley869d9bb2021-08-05 10:46:47 -05006 "definitions": {
7 "priority": {
8 "type": "string",
9 "enum": [
10 "HIGH",
11 "MED",
12 "MED_A",
13 "MED_B",
14 "MED_C",
15 "LOW"
16 ]
17 }
18 },
Zane Shelley90d12522021-07-20 13:20:10 -050019 "additionalProperties": false,
20 "required": [ "model_ec", "version", "actions", "signatures" ],
21 "properties": {
22 "model_ec": {
23 "type": "string",
24 "pattern": "^[0-9A-Fa-f]{8}$"
25 },
26 "version": {
27 "type": "integer",
28 "minimum": 1
29 },
30 "units": {
31 "type": "object",
32 "additionalProperties": false,
33 "patternProperties": {
34 "^\\w+$": {
35 "type": "string",
36 "pattern": "^\\w+(\\/\\w+)*$"
37 }
38 }
39 },
40 "buses": {
41 "type": "object",
42 "additionalProperties": false,
43 "patternProperties": {
44 "^\\w+$": {
45 "type": "object",
46 "additionalProperties": false,
47 "required": [ "type" ],
48 "properties": {
49 "type": {
50 "type": "string",
Zane Shelley5d63cef2021-09-17 18:10:17 -050051 "enum": [ "SMP_BUS", "OMI_BUS" ]
Zane Shelley90d12522021-07-20 13:20:10 -050052 },
53 "unit": {
54 "type": "string",
55 "pattern": "^\\w+$"
56 }
57 }
58 }
59 }
60 },
61 "actions": {
62 "type": "object",
63 "additionalProperties": false,
64 "patternProperties": {
65 "^\\w+$": {
66 "type": "array",
67 "items": {
68 "type": "object",
69 "required": [ "type" ],
70 "properties": {
71 "type": {
72 "type": "string",
73 "enum": [
74 "action",
75 "callout_self",
76 "callout_unit",
77 "callout_connected",
78 "callout_bus",
79 "callout_clock",
80 "callout_procedure",
81 "callout_part",
82 "plugin"
83 ]
84 },
85 "priority": {
Zane Shelley869d9bb2021-08-05 10:46:47 -050086 "$ref": "#/definitions/priority"
Zane Shelley90d12522021-07-20 13:20:10 -050087 },
88 "guard": {
89 "type": "boolean"
90 },
91 "name": {
92 "type": "string",
93 "pattern": "^\\w+$"
94 }
95 },
96 "allOf": [
97 {
98 "if": {
99 "properties": {
100 "type": { "const": "action" }
101 }
102 },
103 "then": {
104 "required": [ "name" ],
105 "not": { "required": [ "priority", "guard" ] }
106 }
107 },
108 {
109 "if": {
110 "properties": {
111 "type": { "const": "callout_self" }
112 }
113 },
114 "then": {
115 "required": [ "priority", "guard" ],
116 "not": { "required": [ "name" ] }
117 }
118 },
119 {
120 "if": {
121 "properties": {
122 "type": { "const": "callout_unit" }
123 }
124 },
125 "then": {
126 "required": [ "name", "priority", "guard" ]
127 }
128 },
129 {
130 "if": {
131 "properties": {
132 "type": { "const": "callout_connected" }
133 }
134 },
135 "then": {
136 "required": [ "name", "priority", "guard" ]
137 }
138 },
139 {
140 "if": {
141 "properties": {
142 "type": { "const": "callout_bus" }
143 }
144 },
145 "then": {
Zane Shelley7cebfbc2021-10-21 16:13:43 -0500146 "required": [ "name", "priority", "guard" ]
Zane Shelley90d12522021-07-20 13:20:10 -0500147 }
148 },
149 {
150 "if": {
151 "properties": {
152 "type": { "const": "callout_clock" }
153 }
154 },
155 "then": {
Zane Shelley84721d92021-09-08 13:30:27 -0500156 "required": [ "name", "priority", "guard" ],
Zane Shelley90d12522021-07-20 13:20:10 -0500157 "properties": {
Zane Shelley84721d92021-09-08 13:30:27 -0500158 "name": {
159 "enum": [
160 "OSC_REF_CLOCK_0",
Zane Shelleyd195b712022-01-26 13:26:34 -0600161 "OSC_REF_CLOCK_1",
162 "TOD_CLOCK"
Zane Shelley84721d92021-09-08 13:30:27 -0500163 ]
Zane Shelley90d12522021-07-20 13:20:10 -0500164 }
165 }
166 }
167 },
168 {
169 "if": {
170 "properties": {
171 "type": { "const": "callout_procedure" }
172 }
173 },
174 "then": {
175 "required": [ "name", "priority" ],
176 "not": { "required": [ "guard" ] },
177 "properties": {
178 "name": {
179 "enum": [
Zane Shelleyd8b70182022-03-10 10:50:22 -0600180 "LEVEL2",
181 "SUE_SEEN"
Zane Shelley90d12522021-07-20 13:20:10 -0500182 ]
183 }
184 }
185 }
186 },
187 {
188 "if": {
189 "properties": {
190 "type": { "const": "callout_part" }
191 }
192 },
193 "then": {
194 "required": [ "name", "priority" ],
195 "not": { "required": [ "guard" ] },
196 "properties": {
197 "name": {
Zane Shelleya4134772022-01-10 17:22:44 -0600198 "enum": [
199 "PNOR"
200 ]
Zane Shelley90d12522021-07-20 13:20:10 -0500201 }
202 }
203 }
204 },
205 {
206 "if": {
207 "properties": {
208 "type": { "const": "plugin" }
209 }
210 },
211 "then": {
Zane Shelleye13a9f92021-12-16 21:19:11 -0600212 "required": [ "name", "instance" ],
213 "not": { "required": [ "priority", "guard" ] },
214 "properties": {
215 "instance": {
216 "type": "integer"
217 }
218 }
Zane Shelley90d12522021-07-20 13:20:10 -0500219 }
220 }
221 ]
222 }
223 }
224 }
225 },
226 "signatures": {
227 "type": "object",
228 "additionalProperties": false,
229 "patternProperties": {
230 "^[0-9A-Fa-f]{4}$": {
231 "type": "object",
232 "additionalProperties": false,
233 "patternProperties": {
234 "^[0-9A-Fa-f]{2}$": {
235 "type": "object",
236 "additionalProperties": false,
237 "patternProperties": {
238 "^[0-9A-Fa-f]{2}$": {
239 "type": "string",
240 "pattern": "^\\w+$"
241 }
242 }
243 }
244 }
245 }
246 }
247 }
248 }
249}