mirror of
https://github.com/cozystack/cozystack.git
synced 2026-11-09 05:25:14 +09:00
A VMDisk is a standalone object that is populated before any VM consumes it, so on a WaitForFirstConsumer StorageClass CDI needs an explicit signal to schedule its worker and start provisioning. Without it the DataVolume sits in PendingPopulation indefinitely and the disk is never filled -- and nothing says so. This is a consistency fix rather than a new behaviour. The chart default `replicated` is volumeBindingMode: Immediate, so a disk on it already bound and populated at creation; `local`, the cluster's default class, is WaitForFirstConsumer, so the same VMDisk silently did nothing there. The annotation was previously emitted only for source: upload, which is the one source that could not work without it, leaving http, image, disk and blank to differ by class. Two consequences worth knowing. CDI checks the annotation by presence and ignores its value, so "" and "true" are equivalent and this is not a behaviour change on the upload path. And on a node-pinned class each disk now binds at its own creation rather than at VM scheduling, so a multi-disk VM on `local` can find its disks on different nodes -- that is the existing limitation of a node-pinned class, which is why the chart default is not one, but it is reached earlier now. Signed-off-by: Myasnikov Daniil <myasnikovdaniil2001@gmail.com>
Virtual Machine Disk
A Virtual Machine Disk
storageClassandsourceare annotated as immutable in the chart schema — seedocs/storage-immutability.mdfor the contract and which consumers enforce it.DataVolume.specis immutable in CDI, so the chart also fails the release on an attemptedstorageClass/sourceedit of an existing disk rather than silently reusing the old spec; delete and recreate the disk to change either field.
Parameters
Common parameters
| Name | Description | Type | Value |
|---|---|---|---|
source |
The source image location used to create a disk. | object |
{} |
source.image |
Use image by name from default collection. | *object |
null |
source.image.name |
Name of the image to use. | string |
"" |
source.upload |
Upload local image. | *object |
null |
source.http |
Download image from an HTTP source. | *object |
null |
source.http.url |
URL to download the image. | string |
"" |
source.disk |
Clone an existing vm-disk. | *object |
null |
source.disk.name |
Name of the vm-disk to clone. | string |
"" |
optical |
Defines if disk should be considered optical. | bool |
false |
storage |
The size of the disk allocated for the virtual machine. | quantity |
5Gi |
storageClass |
StorageClass used to store the data. | string |
replicated |