blob: d525c624743279c12fb562ffeccb0313b9d74fbb [file] [log] [blame]
Michael Landof5f13c42017-02-19 12:35:04 +02001{
2 "$schema": "http://json-schema.org/draft-04/schema#",
3 "type": "object",
4 "properties": {
5 "general": {
6 "type": "object",
7 "properties": {
8 "hypervisor": {
9 "type": "object",
10 "properties": {
11 "hypervisor": {
12 "type": "string",
13 "enum": [
14 "KVM",
15 "VMWare ESXi"
16 ],
17 "default": "KVM"
18 },
19 "drivers": {
20 "type": "string",
21 "maxLength": 300,
22 "pattern": "^[A-Za-z0-9_,-]*$"
23 },
24 "containerFeaturesDescription": {
25 "type": "string",
26 "maxLength": 1000,
27 "pattern": "^[A-Za-z0-9_, -]*$"
28 }
29 },
30 "additionalProperties": false
31 },
32 "image": {
33 "type": "object",
34 "properties": {
35 "format": {
36 "type": "string",
37 "enum": [
38 "aki",
39 "ami",
40 "ari",
41 "iso",
42 "qcow2",
43 "raw",
44 "vdi",
45 "vhd",
46 "vmdk"
47 ],
48 "default": "qcow2"
49 },
50 "providedBy": {
51 "type": "string",
52 "enum": [
53 "Vendor"
54 ],
55 "default": "Vendor"
56 },
57 "bootDiskSizePerVM": {
58 "type": "number",
59 "maximum": 100
60 },
61 "ephemeralDiskSizePerVM": {
62 "type": "number",
63 "maximum": 400
64 }
65 },
66 "additionalProperties": false
67 },
68 "recovery": {
69 "type": "object",
70 "properties": {
71 "pointObjective": {
72 "type": "number",
73 "minimum": 0,
74 "exclusiveMinimum": true,
75 "maximum": 15,
76 "exclusiveMaximum ": true
77 },
78 "timeObjective": {
79 "type": "number",
80 "minimum": 0,
81 "exclusiveMinimum": true,
82 "maximum": 300,
83 "exclusiveMaximum ": true
84 },
85 "vmProcessFailuresHandling": {
86 "type": "string"
87 }
88 },
89 "additionalProperties": false
90 },
91 "dnsConfiguration": {
92 "type": "string"
93 },
94 "vmCloneUsage": {
95 "type": "string",
AviZi280f8012017-06-09 02:39:56 +030096 "maxLength": 300
Michael Landof5f13c42017-02-19 12:35:04 +020097 }
98 },
99 "additionalProperties": false
100 },
101 "compute": {
102 "type": "object",
103 "properties": {
104 "vmSizing": {
105 "type": "object",
106 "properties": {
107 "numOfCPUs": {
108 "type": "number",
109 "minimum": 0,
110 "exclusiveMinimum": true,
111 "maximum": 16,
112 "default": 2
113 },
114 "fileSystemSizeGB": {
115 "type": "number",
116 "minimum": 0,
117 "exclusiveMinimum": true,
118 "default": 5
119 },
120 "persistentStorageVolumeSize": {
121 "type": "number",
122 "minimum": 0,
123 "exclusiveMinimum": true
124 },
125 "IOOperationsPerSec": {
126 "type": "number",
127 "minimum": 0,
128 "exclusiveMinimum": true
129 }
130 },
131 "additionalProperties": false
132 },
133 "numOfVMs": {
134 "type": "object",
135 "properties": {
136 "minimum": {
137 "type": "number",
138 "minimum": 0,
Michael Landof5f13c42017-02-19 12:35:04 +0200139 "maximum": 100
140 },
141 "maximum": {
142 "type": "number",
143 "minimum": <#if (componentQuestionnaireData.compute.numOfVMs.minimum)??
144 && (componentQuestionnaireData.compute.numOfVMs.minimum)?is_number
145 && ((componentQuestionnaireData.compute.numOfVMs.minimum) > 0
146 && (componentQuestionnaireData.compute.numOfVMs.minimum) <= 100)>
147 ${componentQuestionnaireData.compute.numOfVMs.minimum}<#else>
148 0</#if> ,
149 "exclusiveMinimum": true,
150 "maximum": 100
151 },
152 "CpuOverSubscriptionRatio": {
153 "type": "string",
154 "enum": [
155 "1:1",
156 "4:1",
157 "16:1"
158 ],
159 "default": "4:1"
160 },
161 "MemoryRAM": {
162 "type": "string",
163 "enum": [
164 "2 GB",
165 "4 GB",
166 "8 GB"
167 ],
168 "default": "2 GB"
169 }
170 },
171 "additionalProperties": false
172 },
173 "guestOS": {
174 "type": "object",
175 "properties": {
176 "name": {
177 "type": "string",
178 "maxLength": 50
179 },
180 "bitSize": {
181 "type": "number",
182 "enum": [
183 64,
184 32
185 ],
186 "default": 64
187 },
188 "tools": {
189 "type": "string"
190 }
191 },
192 "additionalProperties": false
193 }
194 },
195 "additionalProperties": false
196 },
197 "highAvailabilityAndLoadBalancing": {
198 "type": "object",
199 "properties": {
AviZi280f8012017-06-09 02:39:56 +0300200 "isComponentMandatory": {
201 "type": "string",
202 "enum": ["","YES", "NO"],
203 "default": ""
204 },
205 "highAvailabilityMode": {
206 "type": "string",
207 "enum": ["","geo-activeactive", "geo-activestandby", "local-activeactive", "local-activestandby"],
208 "default": ""
209 },
Michael Landof5f13c42017-02-19 12:35:04 +0200210 "failureLoadDistribution": {
211 "type": "string",
212 "maxLength": 1000
213 },
214 "nkModelImplementation": {
215 "type": "string",
216 "maxLength": 1000
217 },
218 "architectureChoice": {
219 "type": "string",
220 "maxLength": 1000
221 },
222 "slaRequirements": {
223 "type": "string",
224 "maxLength": 1000
225 },
226 "horizontalScaling": {
227 "type": "string",
228 "maxLength": 1000
229 },
230 "loadDistributionMechanism": {
231 "type": "string",
232 "maxLength": 1000
233 }
234 },
235 "additionalProperties": false
236 },
237 "network": {
238 "type": "object",
239 "properties": {
240 "networkCapacity": {
241 "type": "object",
242 "properties": {
243 "protocolWithHighestTrafficProfileAcrossAllNICs": {
244 "type": "string",
245 "enum": [
246 "",
247 "TCP",
248 "UDP",
249 "SCTP",
250 "IPsec"
251 ],
252 "default": ""
253 },
254 "networkTransactionsPerSecond": {
255 "type": "number"
256 }
257 },
258 "additionalProperties": false
259 }
260 },
261 "additionalProperties": false
262 },
263 "storage": {
264 "type": "object",
265 "properties": {
266 "backup": {
267 "type": "object",
268 "properties": {
269 "backupType": {
270 "type": "string",
271 "enum": [
272 "On Site",
273 "Off Site"
274 ],
275 "default": "On Site"
276 },
277 "backupStorageSize": {
278 "type": "number"
279 },
280 "backupSolution": {
281 "type": "string"
282 },
283 "backupNIC": {
284 "type": "string",
285 "enum": [
AviZi280f8012017-06-09 02:39:56 +0300286 ""<#if nicNames??><#list nicNames as nicName>
287 , "${nicName}"</#list></#if>
Michael Landof5f13c42017-02-19 12:35:04 +0200288 ],
289 "default": ""
290 }
291 },
292 "additionalProperties": false
293 },
294 "snapshotBackup": {
295 "type": "object",
296 "properties": {
297 "snapshotFrequency": {
298 "type": "number",
299 "default": 24,
300 "minimum": 1,
301 "exclusiveMinimum": true
302 }
303 },
304 "additionalProperties": false
305 },
306 "logBackup": {
307 "type": "object",
308 "properties": {
309 "sizeOfLogFiles": {
310 "type": "number",
311 "maximum": 5,
312 "exclusiveMaximum": true
313 },
314 "logBackupFrequency": {
315 "type": "number",
316 "maximum": 4,
317 "exclusiveMaximum": true
318 },
319 "logRetentionPeriod": {
320 "type": "number",
321 "maximum": 15,
322 "exclusiveMaximum": true
323 },
324 "logFileLocation": {
325 "type": "string",
326 "maxLength": 300
327 }
328 },
329 "additionalProperties": false
330 }
331 },
332 "additionalProperties": false
333 }
334 },
335 "additionalProperties": false
AviZi280f8012017-06-09 02:39:56 +0300336}