{"record":{"id":"8a39e7350a0042c8","repo":"kubernetes/kops","slug":"failed-to-get-info-for-server-v-w","errorCode":null,"errorMessage":"failed to get info for server %v: %w","messagePattern":"failed to get info for server (.+?): %w","errorType":"error_code","errorClass":null,"httpStatus":null,"severity":"error","filePath":"upup/pkg/fi/cloudup/do/verifier.go","lineNumber":72,"sourceCode":"\treturn &digitalOceanVerifier{\n\t\tdoClient: doClient,\n\t}, nil\n}\n\nfunc (o digitalOceanVerifier) VerifyToken(ctx context.Context, rawRequest *http.Request, token string, body []byte) (*bootstrap.VerifyResult, error) {\n\tif !strings.HasPrefix(token, dometadata.DOAuthenticationTokenPrefix) {\n\t\treturn nil, bootstrap.ErrNotThisVerifier\n\t}\n\tserverIDString := strings.TrimPrefix(token, dometadata.DOAuthenticationTokenPrefix)\n\n\tserverID, err := strconv.Atoi(serverIDString)\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"invalid authorization token\")\n\t}\n\n\tdroplet, _, err := o.doClient.Droplets.Get(ctx, serverID)\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"failed to get info for server %v: %w\", token, err)\n\t}\n\n\tvar addresses []string\n\tvar challengeEndpoints []string\n\tif droplet.Networks != nil {\n\t\tfor _, nic := range droplet.Networks.V4 {\n\t\t\tif nic.Type == \"private\" {\n\t\t\t\taddresses = append(addresses, nic.IPAddress)\n\t\t\t\tchallengeEndpoints = append(challengeEndpoints, net.JoinHostPort(nic.IPAddress, strconv.Itoa(wellknownports.NodeupChallenge)))\n\t\t\t}\n\t\t}\n\t\tfor _, nic := range droplet.Networks.V6 {\n\t\t\tif nic.Type == \"private\" {\n\t\t\t\taddresses = append(addresses, nic.IPAddress)\n\t\t\t\tchallengeEndpoints = append(challengeEndpoints, net.JoinHostPort(nic.IPAddress, strconv.Itoa(wellknownports.NodeupChallenge)))\n\t\t\t}\n\t\t}\n\t}","sourceCodeStart":54,"sourceCodeEnd":90,"githubUrl":"https://github.com/kubernetes/kops/blob/4c8573c808a73d578c5eadc86d410646ea0b0d73/upup/pkg/fi/cloudup/do/verifier.go#L54-L90","documentation":"Wraps the DigitalOcean Droplets.Get failure during bootstrap token verification: the droplet ID from the token could not be fetched from the DO API (auth, rate limit, nonexistent ID), so the node identity cannot be confirmed.","triggerScenarios":"Thrown at upup/pkg/fi/cloudup/do/verifier.go:72 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Verify the verifier's DO API token and permissions","Confirm the droplet still exists","Check the wrapped error for the DO API status and retry transient failures"],"exampleFix":null,"handlingStrategy":"try-catch","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"}