{"record":{"id":"17e22590204a7226","repo":"kubernetes/kops","slug":"providerid-q-not-recognized-for-node-s-17e225","errorCode":null,"errorMessage":"providerID %q not recognized for node %s","messagePattern":"providerID %q not recognized for node (.+?)","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"pkg/nodeidentity/scaleway/identify.go","lineNumber":78,"sourceCode":"\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"creating client for Scaleway NodeIdentifier: %w\", err)\n\t}\n\n\treturn &nodeIdentifier{\n\t\tclient:       scwClient,\n\t\tcache:        expirationcache.NewTTLStore(stringKeyFunc, cacheTTL),\n\t\tcacheEnabled: cacheNodeidentityInfo,\n\t}, nil\n}\n\n// IdentifyNode queries Scaleway for the node identify information\nfunc (i *nodeIdentifier) IdentifyNode(ctx context.Context, node *corev1.Node) (*nodeidentity.Info, error) {\n\tproviderID := node.Spec.ProviderID\n\tif providerID == \"\" {\n\t\treturn nil, fmt.Errorf(\"providerID not set for node %s\", node.Name)\n\t}\n\tif !strings.HasPrefix(providerID, \"scaleway://\") {\n\t\treturn nil, fmt.Errorf(\"providerID %q not recognized for node %s\", providerID, node.Name)\n\t}\n\n\tserverID := strings.TrimPrefix(providerID, \"scaleway://\")\n\n\t// If caching is enabled try pulling nodeidentity.Info from cache before doing a Scaleway API call.\n\tif i.cacheEnabled {\n\t\tobj, exists, err := i.cache.GetByKey(serverID)\n\t\tif err != nil {\n\t\t\tklog.Warningf(\"Nodeidentity info cache lookup failure: %v\", err)\n\t\t}\n\t\tif exists {\n\t\t\treturn obj.(*nodeidentity.Info), nil\n\t\t}\n\t}\n\n\tserver, err := i.getServer(ctx, serverID)\n\tif err != nil {\n\t\treturn nil, err","sourceCodeStart":60,"sourceCodeEnd":96,"githubUrl":"https://github.com/kubernetes/kops/blob/4c8573c808a73d578c5eadc86d410646ea0b0d73/pkg/nodeidentity/scaleway/identify.go#L60-L96","documentation":"IdentifyNode only recognizes providerIDs with the 'scaleway://' prefix, extracting the server ID from the remainder. This error is thrown when a node has a providerID in some other scheme, so it cannot be mapped to a Scaleway server.","triggerScenarios":"node.Spec.ProviderID is non-empty but doesn't start with 'scaleway://' — e.g. a bare server UUID, or a providerID from another cloud ('aws://...', 'linode://...') on a node fed to the Scaleway identifier.","commonSituations":"Mixed/foreign nodes in the cluster, custom tooling writing providerIDs without the scheme prefix, or a node provisioned by a different cloud provider being processed by the Scaleway identifier.","solutions":["Check the node's providerID starts with 'scaleway://' (kubectl get node <name> -o jsonpath='{.spec.providerID}')","Ensure only Scaleway nodes are routed to the Scaleway nodeidentifier; handle other clouds with their own identifier","Fix whatever component writes the providerID so it emits 'scaleway://<zone>/<server-id>'"],"exampleFix":"// before\nspec.providerID: \"11111111-2222-3333-4444-555555555555\"\n// after\nspec.providerID: \"scaleway://fr-par-1/11111111-2222-3333-4444-555555555555\"","handlingStrategy":"validation","validationCode":"if !strings.HasPrefix(node.Spec.ProviderID, \"scaleway://\") {\n    return fmt.Errorf(\"node %s providerID %q is not a scaleway providerID\", node.Name, node.Spec.ProviderID)\n}","typeGuard":"func isScalewayProviderID(pid string) bool {\n    return strings.HasPrefix(pid, \"scaleway://\") && len(strings.TrimPrefix(pid, \"scaleway://\")) > 0\n}","tryCatchPattern":"info, err := identifier.IdentifyNode(ctx, node)\nif err != nil && strings.Contains(err.Error(), \"not recognized\") {\n    return dispatchByIdProviderPrefix(ctx, node) // route to the right identifier\n}","preventionTips":["Route nodes to identifiers based on their providerID scheme prefix","Write providerIDs in the canonical 'scaleway://<zone>/<server-id>' form","In multi-cloud setups, verify node-to-identifier mapping before identification"],"tags":["scaleway","node-identity","providerid"],"backgroundTag":"invalid-providerid-format","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"}