{"record":{"id":"6f430c26b6dae67a","repo":"kubernetes/kops","slug":"error-building-complete-spec-v","errorCode":null,"errorMessage":"error building complete spec: %v","messagePattern":"error building complete spec: (.+?)","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"upup/pkg/fi/cloudup/populate_cluster_spec.go","lineNumber":345,"sourceCode":"\t\t\tcodeModels = append(codeModels, &components.AWSOptionsBuilder{OptionsContext: optionsContext})\n\t\t\tcodeModels = append(codeModels, &components.AWSEBSCSIDriverOptionsBuilder{OptionsContext: optionsContext})\n\t\t\tcodeModels = append(codeModels, &components.AWSCloudControllerManagerOptionsBuilder{OptionsContext: optionsContext})\n\t\t\tcodeModels = append(codeModels, &components.GCPCloudControllerManagerOptionsBuilder{OptionsContext: optionsContext})\n\t\t\tcodeModels = append(codeModels, &components.GCPPDCSIDriverOptionsBuilder{OptionsContext: optionsContext})\n\t\t\tcodeModels = append(codeModels, &components.AzureCloudControllerManagerOptionsBuilder{OptionsContext: optionsContext})\n\t\t\tcodeModels = append(codeModels, &components.HetznerCloudControllerManagerOptionsBuilder{OptionsContext: optionsContext})\n\t\t\tcodeModels = append(codeModels, &components.LinodeCloudControllerManagerOptionsBuilder{OptionsContext: optionsContext})\n\t\t\tcodeModels = append(codeModels, &components.KarpenterOptionsBuilder{Context: optionsContext})\n\t\t}\n\t}\n\n\tspecBuilder := &SpecBuilder{\n\t\tOptionsLoader: loader.NewClusterOptionsLoader(codeModels),\n\t}\n\n\tcompleted, err := specBuilder.BuildCompleteSpec(cluster)\n\tif err != nil {\n\t\treturn fmt.Errorf(\"error building complete spec: %v\", err)\n\t}\n\n\t// TODO: This should not be needed...\n\tcompleted.Spec.Networking.Topology = c.InputCluster.Spec.Networking.Topology\n\t// completed.Topology.Bastion = c.InputCluster.Spec.Topology.Bastion\n\n\tif errs := validation.ValidateCluster(completed, true, clientset.VFSContext()); len(errs) != 0 {\n\t\treturn fmt.Errorf(\"completed cluster failed validation: %v\", errs.ToAggregate())\n\t}\n\n\tc.fullCluster = completed\n\treturn nil\n}\n\nfunc (c *populateClusterSpec) assignSubnets(cluster *kopsapi.Cluster) error {\n\tif cluster.Spec.Networking.NonMasqueradeCIDR == \"\" {\n\t\tklog.Warningf(\"NonMasqueradeCIDR not set; can't auto-assign dependent subnets\")\n\t\treturn nil","sourceCodeStart":327,"sourceCodeEnd":363,"githubUrl":"https://github.com/kubernetes/kops/blob/4c8573c808a73d578c5eadc86d410646ea0b0d73/upup/pkg/fi/cloudup/populate_cluster_spec.go#L327-L363","documentation":"Assembling the fully-defaulted cluster spec from the input spec and all component options builders failed. The wrapped error identifies which builder/defaulting step broke; this is a spec-construction failure, not a cloud API failure.","triggerScenarios":"Thrown at upup/pkg/fi/cloudup/populate_cluster_spec.go:345 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Read the wrapped error to find the failing options builder","Fix the corresponding field in the cluster or instance group spec","Retry spec population"],"exampleFix":null,"handlingStrategy":"validation","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"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"}