{"record":{"id":"5477017a72f480d5","repo":"portainer/portainer","slug":"must-provide-either-a-kubeconfig-path-or-a-server","errorCode":null,"errorMessage":"must provide either a kubeconfig path or a server","messagePattern":"must provide either a kubeconfig path or a server","errorType":"validation","errorClass":null,"httpStatus":null,"severity":"error","filePath":"pkg/libkubectl/client.go","lineNumber":46,"sourceCode":"\t\treturn nil, err\n\t}\n\n\tstreams, _, out, _ := genericiooptions.NewTestIOStreams()\n\n\treturn &Client{\n\t\tfactory: util.NewFactory(configFlags),\n\t\tstreams: streams,\n\t\tout:     out,\n\t}, nil\n}\n\n// generateConfigFlags generates the config flags for the kubectl client\n// If kubeconfigPath is provided, it will be used instead of server and token\n// If server and token are provided, they will be used to connect to the cluster\n// If neither kubeconfigPath or server and token are provided, an error will be returned\nfunc generateConfigFlags(token, server, namespace, kubeconfigPath string, insecure bool) (*genericclioptions.ConfigFlags, error) {\n\tif kubeconfigPath == \"\" && server == \"\" {\n\t\treturn nil, errors.New(\"must provide either a kubeconfig path or a server\")\n\t}\n\n\t// Pass 'false' to usePersistentConfig to prevent memory leaks.\n\tconfigFlags := genericclioptions.NewConfigFlags(false)\n\tif namespace != \"\" {\n\t\tconfigFlags.Namespace = &namespace\n\t}\n\n\tif kubeconfigPath != \"\" {\n\t\tconfigFlags.KubeConfig = &kubeconfigPath\n\t} else {\n\t\tconfigFlags.APIServer = &server\n\t\tconfigFlags.BearerToken = &token\n\t}\n\n\tconfigFlags.Insecure = &insecure\n\n\treturn configFlags, nil","sourceCodeStart":28,"sourceCodeEnd":64,"githubUrl":"https://github.com/portainer/portainer/blob/17e74456ff6e794b9d5439ec3fa06922aa18a3f8/pkg/libkubectl/client.go#L28-L64","documentation":"Error \"must provide either a kubeconfig path or a server\" thrown in portainer/portainer.","triggerScenarios":"Thrown at pkg/libkubectl/client.go:46 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":[],"exampleFix":null,"handlingStrategy":null,"validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"17e74456ff6e794b9d5439ec3fa06922aa18a3f8","analyzedAt":"2026-08-26T23:09:01.915Z","schemaVersion":2},"datasetVersion":"2026-08-27T03:17:27.898Z"}