{"record":{"id":"89c69afb38075556","repo":"kubernetes/kops","slug":"unknown-cloudprovider-q-89c69a","errorCode":null,"errorMessage":"unknown cloudprovider %q","messagePattern":"unknown cloudprovider %q","errorType":"validation","errorClass":null,"httpStatus":null,"severity":"error","filePath":"upup/pkg/fi/cloudup/apply_cluster.go","lineNumber":735,"sourceCode":"\t\t\t\t&scalewaymodel.DNSModelBuilder{ScwModelContext: scwModelContext, Lifecycle: networkLifecycle},\n\t\t\t\t&scalewaymodel.InstanceModelBuilder{ScwModelContext: scwModelContext, BootstrapScriptBuilder: bootstrapScriptBuilder, Lifecycle: clusterLifecycle},\n\t\t\t\t&scalewaymodel.SSHKeyModelBuilder{ScwModelContext: scwModelContext, Lifecycle: securityLifecycle},\n\t\t\t)\n\n\t\tcase kops.CloudProviderLinode:\n\t\t\tlinodeModelContext := &linodemodel.LinodeModelContext{\n\t\t\t\tKopsModelContext: modelContext,\n\t\t\t}\n\t\t\tl.Builders = append(l.Builders,\n\t\t\t\t&linodemodel.NetworkModelBuilder{LinodeModelContext: linodeModelContext, Lifecycle: networkLifecycle},\n\t\t\t\t&linodemodel.InstanceModelBuilder{LinodeModelContext: linodeModelContext, BootstrapScriptBuilder: bootstrapScriptBuilder, Lifecycle: clusterLifecycle, SSHKeyLifecycle: securityLifecycle},\n\t\t\t)\n\n\t\tcase kops.CloudProviderMetal:\n\t\t\t// No special builders for bare metal (yet)\n\n\t\tdefault:\n\t\t\treturn nil, fmt.Errorf(\"unknown cloudprovider %q\", cluster.GetCloudProvider())\n\t\t}\n\t}\n\tc.TaskMap, err = l.BuildTasks(ctx, c.LifecycleOverrides)\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"error building tasks: %v\", err)\n\t}\n\n\tvar target fi.CloudupTarget\n\tshouldPrecreateDNS := true\n\n\tdeletionProcessingMode := c.DeletionProcessing\n\tswitch c.TargetName {\n\tcase TargetDirect:\n\t\tswitch cluster.GetCloudProvider() {\n\t\tcase kops.CloudProviderGCE:\n\t\t\ttarget = gce.NewGCEAPITarget(cloud.(gce.GCECloud))\n\t\tcase kops.CloudProviderAWS:\n\t\t\ttarget = awsup.NewAWSAPITarget(cloud.(awsup.AWSCloud))","sourceCodeStart":717,"sourceCodeEnd":753,"githubUrl":"https://github.com/kubernetes/kops/blob/4c8573c808a73d578c5eadc86d410646ea0b0d73/upup/pkg/fi/cloudup/apply_cluster.go#L717-L753","documentation":"Later in Run, kOps builds cloud-specific builders in another switch over CloudProvider; an unrecognized provider hits default and returns 'unknown cloudprovider' (lowercase variant). Same root cause as the earlier unknown-CloudProvider check but at the builder-selection stage, so it surfaces when validation earlier in the flow was skipped (e.g. alternate entry points) or a provider has validation but no builders.","triggerScenarios":"Run reaches l.BuildTasks preparation with cluster.GetCloudProvider() not matching any known case — invalid spec value or version mismatch between cluster spec and binary.","commonSituations":"Custom forks adding a provider value in validation but not here; hand-edited specs; running an older binary against newer spec fields.","solutions":["Fix spec.cloudProvider to a supported value and reapply","Use a kOps build matching your cluster spec version","If developing a new provider, add the corresponding case to the builder switch in apply_cluster.go"],"exampleFix":"// spec before\ncloudProvider: mycloud\n// after\ncloudProvider: aws","handlingStrategy":"validation","validationCode":"kops get cluster \"$NAME\" -o jsonpath='{.spec.cloudProvider}' | grep -E '^(aws|gce|openstack|do|hetzner|scaleway|linode|metal|azure)$'","typeGuard":null,"tryCatchPattern":"if err := Run(ctx); err != nil { if strings.Contains(err.Error(), \"unknown cloudprovider\") { return fmt.Errorf(\"unsupported spec.cloudProvider for this kops build: %w\", err) } return err }","preventionTips":["Match kOps binary version to cluster spec version","Add builder cases for any custom provider in forks before enabling applies","Validate specs in CI with the same kOps version used for applies"],"tags":["cloudprovider","builder","configuration"],"backgroundTag":"unknown-cloud-provider","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"}