agama/rust/agama-lib/share/storage.model.schema.json
2024-11-21 09:22:06 +00:00

113 lines
2.9 KiB
JSON

{
"title": "Config",
"description": "Config model",
"type": "object",
"additionalProperties": false,
"properties": {
"drives": {
"type": "array",
"items": { "$ref": "#/$defs/drive" }
},
"volumeGroups": {
"type": "array",
"items": { "$ref": "#/$defs/volumeGroup" }
}
},
"$defs": {
"drive": {
"type": "object",
"additionalProperties": false,
"required": ["name"],
"properties": {
"name": { "type": "string" },
"alias": { "type": "string" },
"boot": { "enum": ["implicit", "explicit"] },
"mountPath": { "type": "string" },
"filesystem": { "$ref": "#/$defs/filesystem" },
"spacePolicy": { "$ref": "#/$defs/spacePolicy" },
"ptableType": { "$ref": "#/$defs/ptableType" },
"volumeGroups": {
"type": "array",
"items": { "type": "string" }
},
"partitions": {
"type": "array",
"items": { "$ref": "#/$defs/partition" }
}
}
},
"partition": {
"type": "object",
"additionalProperties": false,
"properties": {
"name": { "type": "string" },
"alias": { "type": "string" },
"id": { "$ref": "#/$defs/partitionId" },
"mountPath": { "type": "string" },
"filesystem": { "$ref": "#/$defs/filesystem" },
"size": { "$ref": "#/$defs/size" },
"delete": { "type": "boolean" },
"deleteIfNeeded": { "type": "boolean" },
"resize": { "type": "boolean" },
"resizeIfNeeded": { "type": "boolean" }
}
},
"volumeGroup": {
"type": "object",
"additionalProperties": false,
"required": ["name"],
"properties": {
"name": { "type": "string" }
}
},
"spacePolicy": {
"enum": ["delete", "resize", "keep", "custom"]
},
"ptableType": {
"enum": ["gpt", "msdos", "dasd"]
},
"partitionId": {
"enum": ["linux", "swap", "lvm", "raid", "esp", "prep", "bios_boot"]
},
"filesystem": {
"type": "object",
"additionalProperties": false,
"required": ["default"],
"properties": {
"default": { "type": "boolean" },
"type": { "$ref": "#/$defs/filesystemType" },
"snapshots": { "type": "boolean" }
}
},
"filesystemType": {
"enum": [
"bcachefs",
"btrfs",
"exfat",
"ext2",
"ext3",
"ext4",
"f2fs",
"jfs",
"nfs",
"nilfs2",
"ntfs",
"reiserfs",
"swap",
"tmpfs",
"vfat",
"xfs"
]
},
"size": {
"type": "object",
"additionalProperties": false,
"required": ["default", "min"],
"properties": {
"default": { "type": "boolean" },
"min": { "type": "integer", "minimum": 0 },
"max": { "type": "integer", "minimum": 0 }
}
}
}
}