formidable/misc/schema/filesystem.json

136 lines
3.4 KiB
JSON

{
"$id": "https://example.com/entry-schema",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"description": "JSON Schema for an fstab entry",
"type": "object",
"required": [
"storage"
],
"properties": {
"storage": {
"type": "object",
"oneOf": [
{
"$ref": "#/$defs/diskDevice"
},
{
"$ref": "#/$defs/diskUUID"
},
{
"$ref": "#/$defs/nfs"
},
{
"$ref": "#/$defs/tmpfs"
}
]
},
"fstype": {
"enum": [
"ext3",
"ext4",
"btrfs"
]
},
"options": {
"type": "array",
"minItems": 1,
"items": {
"type": "string"
},
"uniqueItems": true
},
"readonly": {
"type": "boolean"
}
},
"$defs": {
"diskDevice": {
"properties": {
"type": {
"enum": [
"disk"
]
},
"device": {
"type": "string",
"pattern": "^/dev/[^/]+(/[^/]+)*$"
}
},
"required": [
"type",
"device"
],
"additionalProperties": false
},
"diskUUID": {
"properties": {
"type": {
"enum": [
"disk"
]
},
"label": {
"type": "string",
"pattern": "^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$"
}
},
"required": [
"type",
"label"
],
"additionalProperties": false
},
"nfs": {
"properties": {
"type": {
"enum": [
"nfs"
]
},
"remotePath": {
"type": "string",
"pattern": "^(/[^/]+)+$"
},
"server": {
"type": "string",
"oneOf": [
{
"format": "hostname"
},
{
"format": "ipv4"
},
{
"format": "ipv6"
}
]
}
},
"required": [
"type",
"server",
"remotePath"
],
"additionalProperties": false
},
"tmpfs": {
"properties": {
"type": {
"enum": [
"tmpfs"
]
},
"sizeInMB": {
"type": "integer",
"minimum": 16,
"maximum": 512
}
},
"required": [
"type",
"sizeInMB"
],
"additionalProperties": false
}
}
}