--- /dev/null
+[
+ {
+ "schema": {
+ "id": "http://some.site.somewhere/entry-schema#",
+ "$schema": "http://json-schema.org/draft-04/schema#",
+ "description": "schema for an fstab entry",
+ "type": "object",
+ "required": [ "storage" ],
+ "properties": {
+ "storage": {
+ "type": "object",
+ "oneOf": [
+ { "$ref": "#/definitions/diskDevice" },
+ { "$ref": "#/definitions/diskUUID" },
+ { "$ref": "#/definitions/nfs" },
+ { "$ref": "#/definitions/tmpfs" }
+ ]
+ },
+ "fstype": {
+ "enum": [ "ext3", "ext4", "btrfs" ],
+ "default": "ext3"
+ },
+ "options": {
+ "type": "array",
+ "minItems": 1,
+ "items": { "type": "string" },
+ "uniqueItems": true
+ },
+ "readonly": { "type": "boolean" }
+ },
+ "definitions": {
+ "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": "host-name" },
+ { "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
+ }
+ }
+ }
+ }]