forked from gardener/landscaper
-
Notifications
You must be signed in to change notification settings - Fork 0
/
core-v1alpha1-Blueprint.json
executable file
·495 lines (495 loc) · 18.7 KB
/
core-v1alpha1-Blueprint.json
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
{
"$schema": "https://json-schema.org/draft-07/schema#",
"definitions": {
"core-v1alpha1-AnyJSON": {
"description": "AnyJSON enhances the json.RawMessages with a dedicated openapi definition so that all it is correctly generated",
"type": [
"object",
"string",
"number",
"array",
"boolean"
]
},
"core-v1alpha1-DataExport": {
"description": "DataExport is a data object export.",
"type": "object",
"required": [
"name",
"dataRef"
],
"properties": {
"dataRef": {
"description": "DataRef is the name of the in-cluster data object.",
"type": "string",
"default": ""
},
"name": {
"description": "Name the internal name of the imported/exported data.",
"type": "string",
"default": ""
}
}
},
"core-v1alpha1-DataImport": {
"description": "DataImport is a data object import.",
"type": "object",
"required": [
"name"
],
"properties": {
"configMapRef": {
"description": "ConfigMapRef defines a data reference from a configmap. This method is not allowed in installation templates.",
"$ref": "#/definitions/core-v1alpha1-LocalConfigMapReference"
},
"dataRef": {
"description": "DataRef is the name of the in-cluster data object. The reference can also be a namespaces name. E.g. \"default/mydataref\"",
"type": "string"
},
"name": {
"description": "Name the internal name of the imported/exported data.",
"type": "string",
"default": ""
},
"secretRef": {
"description": "SecretRef defines a data reference from a secret. This method is not allowed in installation templates.",
"$ref": "#/definitions/core-v1alpha1-LocalSecretReference"
},
"version": {
"description": "Version specifies the imported data version. defaults to \"v1\"",
"type": "string"
}
}
},
"core-v1alpha1-Default": {
"description": "Default defines a default value (future idea: also reference?).",
"type": "object",
"required": [
"value"
],
"properties": {
"value": {
"$ref": "#/definitions/core-v1alpha1-AnyJSON"
}
}
},
"core-v1alpha1-ExportDefinition": {
"description": "ExportDefinition defines a exported value",
"type": "object",
"required": [
"name"
],
"properties": {
"name": {
"description": "Name defines the field name to search for the value and map to exports. Ref: https://github.com/kubernetes/community/blob/master/contributors/devel/sig-architecture/api-conventions.md#selecting-fields",
"type": "string",
"default": ""
},
"schema": {
"description": "Schema defines the imported value as jsonschema.",
"$ref": "#/definitions/core-v1alpha1-JSONSchemaDefinition"
},
"targetType": {
"description": "TargetType defines the type of the imported target.",
"type": "string"
},
"type": {
"description": "Type specifies which kind of object is being exported. This field should be set and will likely be mandatory in future.",
"type": "string"
}
}
},
"core-v1alpha1-ImportDefinition": {
"description": "ImportDefinition defines a imported value",
"type": "object",
"required": [
"name"
],
"properties": {
"default": {
"description": "Default sets a default value for the current import that is used if the key is not set.",
"default": {},
"$ref": "#/definitions/core-v1alpha1-Default"
},
"imports": {
"description": "ConditionalImports are Imports that are only valid if this imports is satisfied. Does only make sense for optional imports.",
"type": "array",
"items": {
"default": {},
"$ref": "#/definitions/core-v1alpha1-ImportDefinition"
}
},
"name": {
"description": "Name defines the field name to search for the value and map to exports. Ref: https://github.com/kubernetes/community/blob/master/contributors/devel/sig-architecture/api-conventions.md#selecting-fields",
"type": "string",
"default": ""
},
"required": {
"description": "Required specifies whether the import is required for the component to run. Defaults to true.",
"type": "boolean"
},
"schema": {
"description": "Schema defines the imported value as jsonschema.",
"$ref": "#/definitions/core-v1alpha1-JSONSchemaDefinition"
},
"targetType": {
"description": "TargetType defines the type of the imported target.",
"type": "string"
},
"type": {
"description": "Type specifies which kind of object is being imported. This field should be set and will likely be mandatory in future.",
"type": "string"
}
}
},
"core-v1alpha1-InstallationExports": {
"description": "InstallationExports defines exports of data objects and targets.",
"type": "object",
"properties": {
"data": {
"description": "Data defines all data object exports.",
"type": "array",
"items": {
"default": {},
"$ref": "#/definitions/core-v1alpha1-DataExport"
}
},
"targets": {
"description": "Targets defines all target exports.",
"type": "array",
"items": {
"default": {},
"$ref": "#/definitions/core-v1alpha1-TargetExport"
}
}
}
},
"core-v1alpha1-InstallationImports": {
"description": "InstallationImports defines import of data objects and targets.",
"type": "object",
"properties": {
"data": {
"description": "Data defines all data object imports.",
"type": "array",
"items": {
"default": {},
"$ref": "#/definitions/core-v1alpha1-DataImport"
}
},
"targets": {
"description": "Targets defines all target imports.",
"type": "array",
"items": {
"default": {},
"$ref": "#/definitions/core-v1alpha1-TargetImport"
}
}
}
},
"core-v1alpha1-InstallationTemplateBlueprintDefinition": {
"description": "InstallationTemplateBlueprintDefinition contains either a reference to a blueprint or an inline definition.",
"type": "object",
"properties": {
"filesystem": {
"description": "Filesystem defines a virtual filesystem with all files needed for a blueprint. The filesystem must be a YAML filesystem.",
"$ref": "#/definitions/core-v1alpha1-AnyJSON"
},
"ref": {
"description": "Ref is a reference to a blueprint. Only blueprints that are defined by the component descriptor of the current blueprint can be referenced here. Example: cd://componentReference/dns/resources/blueprint",
"type": "string"
}
}
},
"core-v1alpha1-JSONSchemaDefinition": {
"description": "JSONSchemaDefinition defines a jsonschema.",
"type": "object"
},
"core-v1alpha1-LocalConfigMapReference": {
"description": "LocalConfigMapReference is a reference to data in a configmap.",
"type": "object",
"required": [
"name"
],
"properties": {
"key": {
"description": "Key is the name of the key in the configmap that holds the data.",
"type": "string",
"default": ""
},
"name": {
"description": "Name is the name of the configmap",
"type": "string",
"default": ""
}
}
},
"core-v1alpha1-LocalSecretReference": {
"description": "LocalSecretReference is a reference to data in a secret.",
"type": "object",
"required": [
"name"
],
"properties": {
"key": {
"description": "Key is the name of the key in the secret that holds the data.",
"type": "string",
"default": ""
},
"name": {
"description": "Name is the name of the secret",
"type": "string",
"default": ""
}
}
},
"core-v1alpha1-Optimization": {
"description": "Optimization contains settings to improve execution preformance",
"type": "object",
"properties": {
"hasNoSiblingExports": {
"description": "set this on true if the installation does not export data to its siblings or has no siblings at all",
"type": "boolean"
},
"hasNoSiblingImports": {
"description": "set this on true if the installation does not import data from its siblings or has no siblings at all",
"type": "boolean"
}
}
},
"core-v1alpha1-SubinstallationTemplate": {
"description": "SubinstallationTemplate defines a subinstallation template.",
"type": "object",
"required": [
"name",
"blueprint"
],
"properties": {
"apiVersion": {
"description": "APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources",
"type": "string"
},
"blueprint": {
"description": "Reference defines a reference to a Blueprint. The blueprint can reside in an OCI or other supported location.",
"default": {},
"$ref": "#/definitions/core-v1alpha1-InstallationTemplateBlueprintDefinition"
},
"exportDataMappings": {
"description": "ExportDataMappings contains a template for restructuring exports. It is expected to contain a key for every blueprint-defined data export. Missing keys will be defaulted to their respective data export. Example: namespace: (( blueprint.exports.namespace ))",
"type": "object",
"additionalProperties": {
"$ref": "#/definitions/core-v1alpha1-AnyJSON"
}
},
"exports": {
"description": "Exports define the exported data objects and targets.",
"default": {},
"$ref": "#/definitions/core-v1alpha1-InstallationExports"
},
"file": {
"description": "File references a subinstallation template stored in another file.",
"type": "string"
},
"importDataMappings": {
"description": "ImportDataMappings contains a template for restructuring imports. It is expected to contain a key for every blueprint-defined data import. Missing keys will be defaulted to their respective data import. Example: namespace: (( installation.imports.namespace ))",
"type": "object",
"additionalProperties": {
"$ref": "#/definitions/core-v1alpha1-AnyJSON"
}
},
"imports": {
"description": "Imports define the imported data objects and targets.",
"default": {},
"$ref": "#/definitions/core-v1alpha1-InstallationImports"
},
"kind": {
"description": "Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds",
"type": "string"
},
"name": {
"description": "Name is the unique name of the step",
"type": "string",
"default": ""
},
"optimization": {
"description": "Optimization contains settings to improve execution performance.",
"$ref": "#/definitions/core-v1alpha1-Optimization"
}
}
},
"core-v1alpha1-TargetExport": {
"description": "TargetExport is a single target export.",
"type": "object",
"required": [
"name"
],
"properties": {
"name": {
"description": "Name the internal name of the exported target.",
"type": "string",
"default": ""
},
"target": {
"description": "Target is the name of the in-cluster target object.",
"type": "string"
}
}
},
"core-v1alpha1-TargetImport": {
"description": "TargetImport is either a single target or a target list import.",
"type": "object",
"required": [
"name"
],
"properties": {
"name": {
"description": "Name the internal name of the imported target.",
"type": "string",
"default": ""
},
"target": {
"description": "Target is the name of the in-cluster target object. Exactly one of Target, Targets, and TargetListReference has to be specified.",
"type": "string"
},
"targetListRef": {
"description": "TargetListReference can (only) be used to import a targetlist that has been imported by the parent installation. Exactly one of Target, Targets, and TargetListReference has to be specified.",
"type": "string"
},
"targetMap": {
"type": "object",
"additionalProperties": {
"type": "string",
"default": ""
}
},
"targetMapRef": {
"type": "string"
},
"targets": {
"description": "Targets is a list of in-cluster target objects. Exactly one of Target, Targets, and TargetListReference has to be specified.",
"type": "array",
"items": {
"type": "string",
"default": ""
}
}
}
},
"core-v1alpha1-TemplateExecutor": {
"description": "TemplateExecutor describes a templating mechanism and configuration.",
"type": "object",
"required": [
"name",
"type"
],
"properties": {
"file": {
"description": "File is the path to the template in the blueprint's content.",
"type": "string"
},
"name": {
"description": "Name is the unique name of the template",
"type": "string",
"default": ""
},
"template": {
"description": "Template contains an optional inline template. The template has to be of string for go template and either a string or valid yaml/json for spiff.",
"$ref": "#/definitions/core-v1alpha1-AnyJSON"
},
"type": {
"description": "Type describes the templating mechanism.",
"type": "string",
"default": ""
}
}
}
},
"description": "Blueprint contains the configuration of a component",
"properties": {
"annotations": {
"additionalProperties": {
"default": "",
"type": "string"
},
"description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata.",
"type": "object"
},
"apiVersion": {
"description": "APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources",
"type": "string"
},
"deployExecutions": {
"description": "DeployExecutions defines the templating executors that are sequentially executed by the landscaper. The templates must return a list of deploy item templates.",
"items": {
"$ref": "#/definitions/core-v1alpha1-TemplateExecutor",
"default": {}
},
"type": "array"
},
"exportExecutions": {
"description": "ExportExecutions defines the templating executors that are used to generate the exports.",
"items": {
"$ref": "#/definitions/core-v1alpha1-TemplateExecutor",
"default": {}
},
"type": "array"
},
"exports": {
"description": "Exports define the exported values of the definition and its sub-definitions",
"items": {
"$ref": "#/definitions/core-v1alpha1-ExportDefinition",
"default": {}
},
"type": "array"
},
"importExecutions": {
"description": "ImportExecutions defines the templating executors that are sequentially executed by the landscaper. The templates must return a list of errors",
"items": {
"$ref": "#/definitions/core-v1alpha1-TemplateExecutor",
"default": {}
},
"type": "array"
},
"imports": {
"description": "Imports define the import values that are needed for the definition and its sub-definitions.",
"items": {
"$ref": "#/definitions/core-v1alpha1-ImportDefinition",
"default": {}
},
"type": "array"
},
"jsonSchemaVersion": {
"default": "",
"description": "JSONSchemaVersion defines the default jsonschema version of the blueprint. e.g. \"https://json-schema.org/draft/2019-09/schema\"",
"type": "string"
},
"kind": {
"description": "Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds",
"type": "string"
},
"localTypes": {
"additionalProperties": {
"$ref": "#/definitions/core-v1alpha1-JSONSchemaDefinition"
},
"description": "LocalTypes defines additional blueprint local schemas",
"type": "object"
},
"subinstallationExecutions": {
"description": "SubinstallationExecutions defines the templating executors that are sequentially executed by the landscaper. The templates must return a list of installation templates. Both subinstallations and SubinstallationExecutions are valid options and will be merged.",
"items": {
"$ref": "#/definitions/core-v1alpha1-TemplateExecutor",
"default": {}
},
"type": "array"
},
"subinstallations": {
"description": "Subinstallations defines an optional list of subinstallations (for aggregating blueprints).",
"items": {
"$ref": "#/definitions/core-v1alpha1-SubinstallationTemplate",
"default": {}
},
"type": "array"
}
},
"title": "core-v1alpha1-Blueprint",
"type": "object"
}