Files
cozystack/packages/apps/vm-disk/values.schema.json
Andrei KvapilandClaude c2f3e1f379 feat(apps): annotate schema fields with x-cozystack-options
Mark fields that reference cluster resources with the x-cozystack-options
vendor keyword so the dashboard renders them as dynamic dropdowns:
GPU, instanceType, instanceProfile, network (vm-instance), GPU/
instanceType (kubernetes nodeGroups), image (vm-disk), storagePool
(bucket), storageClass (all apps) and disks[].name (vm-instance). Drop
the stale static instanceProfile enum.

Co-Authored-By: Claude <noreply@anthropic.com>
Signed-off-by: Andrei Kvapil <andrei.kvapil@aenix.io>
2026-06-02 16:33:57 +03:00

93 lines
2.3 KiB
JSON

{
"title": "Chart Values",
"type": "object",
"properties": {
"source": {
"description": "The source image location used to create a disk.",
"type": "object",
"default": {},
"properties": {
"disk": {
"description": "Clone an existing vm-disk.",
"type": "object",
"required": [
"name"
],
"properties": {
"name": {
"description": "Name of the vm-disk to clone.",
"type": "string"
}
}
},
"http": {
"description": "Download image from an HTTP source.",
"type": "object",
"required": [
"url"
],
"properties": {
"url": {
"description": "URL to download the image.",
"type": "string"
}
}
},
"image": {
"description": "Use image by name from default collection.",
"type": "object",
"required": [
"name"
],
"properties": {
"name": {
"description": "Name of the image to use.",
"type": "string",
"x-cozystack-options": {
"source": "image"
}
}
}
},
"upload": {
"description": "Upload local image.",
"type": "object"
}
}
},
"optical": {
"description": "Defines if disk should be considered optical.",
"type": "boolean",
"default": false
},
"storage": {
"description": "The size of the disk allocated for the virtual machine.",
"default": "5Gi",
"pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$",
"anyOf": [
{
"type": "integer"
},
{
"type": "string"
}
],
"x-kubernetes-int-or-string": true
},
"storageClass": {
"description": "StorageClass used to store the data.",
"type": "string",
"default": "replicated",
"x-kubernetes-validations": [
{
"rule": "self == oldSelf",
"message": "storageClass is immutable"
}
],
"x-cozystack-options": {
"source": "storageclass"
}
}
}
}