{"record":{"id":"6c11f99249c081dc","repo":"tailscale/tailscale","slug":"failed-to-get-proxyclass-q-w","errorCode":null,"errorMessage":"failed to get ProxyClass %q: %w","messagePattern":"failed to get ProxyClass %q: %w","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"k8s-operator/reconciler/peerrelay/statefulset.go","lineNumber":103,"sourceCode":"\t})\n\n\treturn tailscaled.ApplyProxyClass(ss, pc, managedLabelKeys, nil)\n}\n\nvar managedLabelKeys = []string{\n\tkubetypes.LabelManaged,\n\treconciler.LabelParentType,\n\treconciler.LabelParentName,\n}\n\nfunc (r *Reconciler) getProxyClass(ctx context.Context, pr *tsapi.PeerRelay) (*tsapi.ProxyClass, error) {\n\tif pr.Spec.ProxyClass == \"\" {\n\t\treturn nil, nil\n\t}\n\n\tvar pc tsapi.ProxyClass\n\tif err := r.Get(ctx, types.NamespacedName{Name: pr.Spec.ProxyClass}, &pc); err != nil {\n\t\treturn nil, fmt.Errorf(\"failed to get ProxyClass %q: %w\", pr.Spec.ProxyClass, err)\n\t}\n\treturn &pc, nil\n}\n","sourceCodeStart":85,"sourceCodeEnd":107,"githubUrl":"https://github.com/tailscale/tailscale/blob/6e0912f97994f927632b34ae9e63b53d6516a6ac/k8s-operator/reconciler/peerrelay/statefulset.go#L85-L107","documentation":"Raised in getProxyClass when the PeerRelay spec names a ProxyClass that cannot be fetched (does not exist, or API error). An empty ProxyClass name is skipped; only a non-empty, unresolvable reference fires this, blocking StatefulSet creation.","triggerScenarios":"Thrown at k8s-operator/reconciler/peerrelay/statefulset.go:103 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Getting the ProxyClass failed; verify the named ProxyClass exists and the operator has get permission on ProxyClasses."],"exampleFix":null,"handlingStrategy":"retry","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"6e0912f97994f927632b34ae9e63b53d6516a6ac","analyzedAt":"2026-08-18T08:17:25.280Z","contentChangedAt":"2026-08-18T08:17:25.280Z","schemaVersion":2},"datasetVersion":"2026-09-14T05:17:10.506Z"}