blob: e18b93336078eb772d0aac388a1cf0d312cc5d0d [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",
161 "OSC_REF_CLOCK_1"
162 ]
Zane Shelley90d12522021-07-20 13:20:10 -0500163 }
164 }
165 }
166 },
167 {
168 "if": {
169 "properties": {
170 "type": { "const": "callout_procedure" }
171 }
172 },
173 "then": {
174 "required": [ "name", "priority" ],
175 "not": { "required": [ "guard" ] },
176 "properties": {
177 "name": {
178 "enum": [
179 "LEVEL2"
180 ]
181 }
182 }
183 }
184 },
185 {
186 "if": {
187 "properties": {
188 "type": { "const": "callout_part" }
189 }
190 },
191 "then": {
192 "required": [ "name", "priority" ],
193 "not": { "required": [ "guard" ] },
194 "properties": {
195 "name": {
196 "enum": []
197 }
198 }
199 }
200 },
201 {
202 "if": {
203 "properties": {
204 "type": { "const": "plugin" }
205 }
206 },
207 "then": {
208 "required": [ "name" ],
209 "not": { "required": [ "priority", "guard" ] }
210 }
211 }
212 ]
213 }
214 }
215 }
216 },
217 "signatures": {
218 "type": "object",
219 "additionalProperties": false,
220 "patternProperties": {
221 "^[0-9A-Fa-f]{4}$": {
222 "type": "object",
223 "additionalProperties": false,
224 "patternProperties": {
225 "^[0-9A-Fa-f]{2}$": {
226 "type": "object",
227 "additionalProperties": false,
228 "patternProperties": {
229 "^[0-9A-Fa-f]{2}$": {
230 "type": "string",
231 "pattern": "^\\w+$"
232 }
233 }
234 }
235 }
236 }
237 }
238 }
239 }
240}