summaryrefslogtreecommitdiff
path: root/schemas/cluster.json-schema
diff options
context:
space:
mode:
Diffstat (limited to 'schemas/cluster.json-schema')
-rw-r--r--schemas/cluster.json-schema64
1 files changed, 64 insertions, 0 deletions
diff --git a/schemas/cluster.json-schema b/schemas/cluster.json-schema
new file mode 100644
index 00000000..1a628c7f
--- /dev/null
+++ b/schemas/cluster.json-schema
@@ -0,0 +1,64 @@
+$schema: http://json-schema.org/draft-04/schema#
+id: http://git.baserock.org/cgi-bin/cgit.cgi/baserock/baserock/definitions.git/tree/schemas/cluster.json-schema
+
+description:
+ This is a JSON-Schema description of a 'cluster' .morph file, which is part
+ of the Baserock definitions YAML representation format.
+
+ This JSON-Schema file is valid for VERSION 7 of the Baserock definitions
+ YAML serialisation format.
+
+ The Baserock definitions format is the recommended way of representing
+ Baserock definitions on disk. The actual data model is described separately.
+ See https://wiki.baserock.org/definitions for more information.
+
+ This schema is represented as YAML, so that it can be edited more easily.
+ You may need to convert to JSON if using a JSON-Schema tool that expects
+ its input to be an actual string containing data serialised as JSON.
+
+definitions:
+ # A reference to a System, plus one or more SystemDeployment for that system.
+ system-deployment-set:
+ type: object
+
+ required: [ 'morph', 'deploy' ]
+ additionalProperties: false
+
+ properties:
+ morph: { type: string }
+ deploy-defaults:
+ type: object
+ additionalProperties: true
+ deploy:
+ patternProperties:
+ ^.*$: { $ref: "#/definitions/system-deployment" }
+ subsystems:
+ type: array
+ items: { $ref: "#/definitions/system-deployment-set" }
+
+ # Corresponds to SystemDeployment in Baserock data model.
+ system-deployment:
+ type: object
+
+ required: [ 'type', 'location' ]
+ additionalProperties: true
+
+ properties:
+ type: { type: string }
+ location: { type: string }
+
+
+# Corresponds to Cluster in Baserock data model.
+type: object
+
+#required: [ 'name', 'kind', 'systems' ]
+additionalProperties: false
+
+properties:
+ name: { type: string }
+ kind: { enum: [ "cluster" ] }
+ description: { type: string }
+
+ systems:
+ type: array
+ items: { $ref: "#/definitions/system-deployment-set" }