{"record":{"id":"a8b23cb2fc6f0385","repo":"kubernetes/kops","slug":"sizegb-must-be-at-least-10-gb","errorCode":null,"errorMessage":"SizeGB must be at least 10 GB","messagePattern":"SizeGB must be at least 10 GB","errorType":"validation","errorClass":null,"httpStatus":null,"severity":"error","filePath":"upup/pkg/fi/cloudup/linodetasks/volume.go","lineNumber":118,"sourceCode":"\t\t\tif fi.ValueOf(expected.SizeGB) < fi.ValueOf(actual.SizeGB) {\n\t\t\t\treturn fmt.Errorf(\"SizeGB cannot be decreased\")\n\t\t\t}\n\t\t}\n\t\tif changes.Tags != nil {\n\t\t\treturn fi.CannotChangeField(\"Tags\")\n\t\t}\n\t} else {\n\t\tif expected.Name == nil {\n\t\t\treturn fi.RequiredField(\"Name\")\n\t\t}\n\t\tif expected.Region == nil {\n\t\t\treturn fi.RequiredField(\"Region\")\n\t\t}\n\t\tif expected.SizeGB == nil {\n\t\t\treturn fi.RequiredField(\"SizeGB\")\n\t\t}\n\t\tif fi.ValueOf(expected.SizeGB) < 10 {\n\t\t\treturn fmt.Errorf(\"SizeGB must be at least 10 GB\")\n\t\t}\n\t}\n\n\treturn nil\n}\n\nfunc (*Volume) RenderLinode(t *linode.APITarget, actual, expected, changes *Volume) error {\n\tif actual != nil {\n\t\texpected.ID = actual.ID\n\t\tif changes.SizeGB == nil {\n\t\t\treturn nil\n\t\t}\n\t\tif err := t.Cloud.Client().ResizeVolume(context.Background(), fi.ValueOf(actual.ID), linodego.VolumeResizeOptions{Size: fi.ValueOf(expected.SizeGB)}); err != nil {\n\t\t\treturn fmt.Errorf(\"error resizing Akamai (Linode) volume %q: %w\", fi.ValueOf(actual.Name), err)\n\t\t}\n\t\tklog.V(2).Infof(\"Resized Akamai (Linode) volume %q (id=%d) to %d GB\", fi.ValueOf(actual.Name), fi.ValueOf(actual.ID), fi.ValueOf(expected.SizeGB))\n\t\treturn nil\n\t}","sourceCodeStart":100,"sourceCodeEnd":136,"githubUrl":"https://github.com/kubernetes/kops/blob/4c8573c808a73d578c5eadc86d410646ea0b0d73/upup/pkg/fi/cloudup/linodetasks/volume.go#L100-L136","documentation":"Volume.CheckChanges enforces the Linode platform minimum volume size of 10 GB when a new volume is created (no existing volume found). If the spec requests a SizeGB below 10, the task fails fast before calling the API.","triggerScenarios":"In the create path of CheckChanges, expected.SizeGB is non-nil and fi.ValueOf(expected.SizeGB) < 10.","commonSituations":"A cluster spec or template was written with a small test value like 5 GB; a unit misinterpreted GiB vs GB; a variable default resolved to a too-small number.","solutions":["Set volumeSize (SizeGB) to 10 or greater in the spec","If a variable feeds SizeGB, clamp it: max(10, size) before rendering the task","Document/validate the minimum in your templates so it fails at validation time with a clearer message"],"exampleFix":"// before\nvolumeSize: 5\n// after\nvolumeSize: 10  # Linode minimum is 10 GB","handlingStrategy":"validation","validationCode":"const minLinodeVolumeGB = 10\nif volumeSizeGB < minLinodeVolumeGB {\n  return fmt.Errorf(\"volumeSize must be at least %d GB\", minLinodeVolumeGB)\n}","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Clamp volume size in templates: max(10, requestedSize)","Add CI linting on cluster specs enforcing Linode's 10 GB minimum","Don't confuse GiB with GB when sizing volumes","Document the Linode minimum in your platform defaults/config schema"],"tags":["linode","volume","validation","minimum-size"],"backgroundTag":"volume-size-below-minimum","analyzedSha":"4c8573c808a73d578c5eadc86d410646ea0b0d73","analyzedAt":"2026-09-05T04:13:19.212Z","contentChangedAt":"2026-09-05T04:13:19.212Z","schemaVersion":2},"datasetVersion":"2026-09-12T07:17:12.445Z"}