{"record":{"id":"cbc4b9307d974adc","repo":"kubernetes/kops","slug":"scaleway-currently-only-supports-clusters-in-the-s","errorCode":null,"errorMessage":"scaleway currently only supports clusters in the same zone","messagePattern":"scaleway currently only supports clusters in the same zone","errorType":"validation","errorClass":null,"httpStatus":null,"severity":"error","filePath":"upup/pkg/fi/cloudup/scaleway/utils.go","lineNumber":54,"sourceCode":"\tif errors.As(err, &responseError) && responseError.StatusCode == statusCode {\n\t\treturn true\n\t}\n\treturn false\n}\n\n// is404Error returns true if err is an HTTP 404 error\nfunc is404Error(err error) bool {\n\tnotFoundError := &scw.ResourceNotFoundError{}\n\treturn isHTTPCodeError(err, http.StatusNotFound) || errors.As(err, &notFoundError)\n}\n\nfunc ParseZoneFromClusterSpec(clusterSpec kops.ClusterSpec) (scw.Zone, error) {\n\tzone := \"\"\n\tfor _, subnet := range clusterSpec.Networking.Subnets {\n\t\tif zone == \"\" {\n\t\t\tzone = subnet.Zone\n\t\t} else if zone != subnet.Zone {\n\t\t\treturn \"\", fmt.Errorf(\"scaleway currently only supports clusters in the same zone\")\n\t\t}\n\t}\n\treturn scw.Zone(zone), nil\n}\n\nfunc ParseRegionFromZone(zone scw.Zone) (region scw.Region, err error) {\n\tregion, err = scw.ParseRegion(strings.TrimRight(string(zone), \"-123\"))\n\tif err != nil {\n\t\treturn \"\", fmt.Errorf(\"could not determine region from zone %s: %w\", zone, err)\n\t}\n\treturn region, nil\n}\n\nfunc ClusterNameFromTags(tags []string) string {\n\tfor _, tag := range tags {\n\t\tif strings.HasPrefix(tag, TagClusterName) {\n\t\t\treturn strings.TrimPrefix(tag, TagClusterName+\"=\")\n\t\t}","sourceCodeStart":36,"sourceCodeEnd":72,"githubUrl":"https://github.com/kubernetes/kops/blob/4c8573c808a73d578c5eadc86d410646ea0b0d73/upup/pkg/fi/cloudup/scaleway/utils.go#L36-L72","documentation":"Hard validation limit in ParseZoneFromClusterSpec: the cluster's subnets span more than one Scaleway zone, which the Scaleway provider does not support — kOps requires every subnet (hence the whole cluster) to live in a single availability zone. The first subnet's zone is taken as the reference; any different subnet zone triggers this.","triggerScenarios":"Thrown at upup/pkg/fi/cloudup/scaleway/utils.go:54 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Edit the cluster spec so all subnets use the same zone","Re-create the cluster with a single-zone network layout","Track multi-zone support in the Scaleway provider upstream if needed"],"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-12T12:17:11.808Z"}