Skip to content

Commit 1704b02

Browse files
committed
Rely on kubeconfig in staticConfig instead of a separate but equal one
1 parent 77e2fca commit 1704b02

File tree

5 files changed

+33
-24
lines changed

5 files changed

+33
-24
lines changed

pkg/kubernetes/configuration.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -24,8 +24,8 @@ var InClusterConfig = func() (*rest.Config, error) {
2424
func resolveKubernetesConfigurations(kubernetes *Manager) error {
2525
// Always set clientCmdConfig
2626
pathOptions := clientcmd.NewDefaultPathOptions()
27-
if kubernetes.Kubeconfig != "" {
28-
pathOptions.LoadingRules.ExplicitPath = kubernetes.Kubeconfig
27+
if kubernetes.staticConfig.KubeConfig != "" {
28+
pathOptions.LoadingRules.ExplicitPath = kubernetes.staticConfig.KubeConfig
2929
}
3030
kubernetes.clientCmdConfig = clientcmd.NewNonInteractiveDeferredLoadingClientConfig(
3131
pathOptions.LoadingRules,
@@ -46,7 +46,7 @@ func resolveKubernetesConfigurations(kubernetes *Manager) error {
4646
}
4747

4848
func (m *Manager) IsInCluster() bool {
49-
if m.Kubeconfig != "" {
49+
if m.staticConfig.KubeConfig != "" {
5050
return false
5151
}
5252
cfg, err := InClusterConfig()

pkg/kubernetes/configuration_test.go

Lines changed: 25 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -2,18 +2,23 @@ package kubernetes
22

33
import (
44
"errors"
5-
"k8s.io/client-go/rest"
65
"os"
76
"path"
87
"runtime"
98
"strings"
109
"testing"
10+
11+
"k8s.io/client-go/rest"
12+
13+
"github.com/manusa/kubernetes-mcp-server/pkg/config"
1114
)
1215

1316
func TestKubernetes_IsInCluster(t *testing.T) {
1417
t.Run("with explicit kubeconfig", func(t *testing.T) {
1518
m := Manager{
16-
Kubeconfig: "kubeconfig",
19+
staticConfig: &config.StaticConfig{
20+
KubeConfig: "kubeconfig",
21+
},
1722
}
1823
if m.IsInCluster() {
1924
t.Errorf("expected not in cluster, got in cluster")
@@ -28,7 +33,9 @@ func TestKubernetes_IsInCluster(t *testing.T) {
2833
InClusterConfig = originalFunction
2934
}()
3035
m := Manager{
31-
Kubeconfig: "",
36+
staticConfig: &config.StaticConfig{
37+
KubeConfig: "",
38+
},
3239
}
3340
if !m.IsInCluster() {
3441
t.Errorf("expected in cluster, got not in cluster")
@@ -43,7 +50,9 @@ func TestKubernetes_IsInCluster(t *testing.T) {
4350
InClusterConfig = originalFunction
4451
}()
4552
m := Manager{
46-
Kubeconfig: "",
53+
staticConfig: &config.StaticConfig{
54+
KubeConfig: "",
55+
},
4756
}
4857
if m.IsInCluster() {
4958
t.Errorf("expected not in cluster, got in cluster")
@@ -58,7 +67,9 @@ func TestKubernetes_IsInCluster(t *testing.T) {
5867
InClusterConfig = originalFunction
5968
}()
6069
m := Manager{
61-
Kubeconfig: "",
70+
staticConfig: &config.StaticConfig{
71+
KubeConfig: "",
72+
},
6273
}
6374
if m.IsInCluster() {
6475
t.Errorf("expected not in cluster, got in cluster")
@@ -72,7 +83,9 @@ func TestKubernetes_ResolveKubernetesConfigurations_Explicit(t *testing.T) {
7283
t.Skip("Skipping test on non-linux platforms")
7384
}
7485
tempDir := t.TempDir()
75-
m := Manager{Kubeconfig: path.Join(tempDir, "config")}
86+
m := Manager{staticConfig: &config.StaticConfig{
87+
KubeConfig: path.Join(tempDir, "config"),
88+
}}
7689
err := resolveKubernetesConfigurations(&m)
7790
if err == nil {
7891
t.Errorf("expected error, got nil")
@@ -90,7 +103,9 @@ func TestKubernetes_ResolveKubernetesConfigurations_Explicit(t *testing.T) {
90103
if err := os.WriteFile(kubeconfigPath, []byte(""), 0644); err != nil {
91104
t.Fatalf("failed to create kubeconfig file: %v", err)
92105
}
93-
m := Manager{Kubeconfig: kubeconfigPath}
106+
m := Manager{staticConfig: &config.StaticConfig{
107+
KubeConfig: kubeconfigPath,
108+
}}
94109
err := resolveKubernetesConfigurations(&m)
95110
if err == nil {
96111
t.Errorf("expected error, got nil")
@@ -123,7 +138,9 @@ users:
123138
if err := os.WriteFile(kubeconfigPath, []byte(kubeconfigContent), 0644); err != nil {
124139
t.Fatalf("failed to create kubeconfig file: %v", err)
125140
}
126-
m := Manager{Kubeconfig: kubeconfigPath}
141+
m := Manager{staticConfig: &config.StaticConfig{
142+
KubeConfig: kubeconfigPath,
143+
}}
127144
err := resolveKubernetesConfigurations(&m)
128145
if err != nil {
129146
t.Fatalf("expected no error, got %v", err)

pkg/kubernetes/kubernetes.go

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -39,8 +39,6 @@ type Kubernetes struct {
3939
}
4040

4141
type Manager struct {
42-
// Kubeconfig path override
43-
Kubeconfig string
4442
cfg *rest.Config
4543
clientCmdConfig clientcmd.ClientConfig
4644
discoveryClient discovery.CachedDiscoveryInterface
@@ -57,9 +55,8 @@ var ParameterCodec = runtime.NewParameterCodec(Scheme)
5755

5856
var _ helm.Kubernetes = &Manager{}
5957

60-
func NewManager(kubeconfig string, config *config.StaticConfig) (*Manager, error) {
58+
func NewManager(config *config.StaticConfig) (*Manager, error) {
6159
k8s := &Manager{
62-
Kubeconfig: kubeconfig,
6360
staticConfig: config,
6461
}
6562
if err := resolveKubernetesConfigurations(k8s); err != nil {
@@ -166,7 +163,6 @@ func (m *Manager) Derived(ctx context.Context) *Kubernetes {
166163
}
167164
clientCmdApiConfig.AuthInfos = make(map[string]*clientcmdapi.AuthInfo)
168165
derived := &Kubernetes{manager: &Manager{
169-
Kubeconfig: m.Kubeconfig,
170166
clientCmdConfig: clientcmd.NewDefaultClientConfig(clientCmdApiConfig, nil),
171167
cfg: derivedCfg,
172168
staticConfig: m.staticConfig,

pkg/kubernetes/kubernetes_test.go

Lines changed: 3 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ users:
4545
},
4646
}
4747

48-
testManager, err := NewManager(kubeconfigPath, testStaticConfig)
48+
testManager, err := NewManager(testStaticConfig)
4949
if err != nil {
5050
t.Fatalf("failed to create manager: %v", err)
5151
}
@@ -67,7 +67,7 @@ users:
6767
},
6868
}
6969

70-
testManager, err := NewManager(kubeconfigPath, testStaticConfig)
70+
testManager, err := NewManager(testStaticConfig)
7171
if err != nil {
7272
t.Fatalf("failed to create manager: %v", err)
7373
}
@@ -89,7 +89,7 @@ users:
8989
},
9090
}
9191

92-
testManager, err := NewManager(kubeconfigPath, testStaticConfig)
92+
testManager, err := NewManager(testStaticConfig)
9393
if err != nil {
9494
t.Fatalf("failed to create manager: %v", err)
9595
}
@@ -106,10 +106,6 @@ users:
106106
t.Errorf("staticConfig not properly wired to derived manager")
107107
}
108108

109-
if derived.manager.Kubeconfig != testManager.Kubeconfig {
110-
t.Errorf("expected Kubeconfig %s, got %s", testManager.Kubeconfig, derived.manager.Kubeconfig)
111-
}
112-
113109
derivedCfg := derived.manager.cfg
114110
if derivedCfg == nil {
115111
t.Fatalf("derived config is nil")

pkg/mcp/mcp.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,7 @@ func NewServer(configuration Configuration) (*Server, error) {
6565
}
6666

6767
func (s *Server) reloadKubernetesClient() error {
68-
k, err := internalk8s.NewManager(s.configuration.StaticConfig.KubeConfig, s.configuration.StaticConfig)
68+
k, err := internalk8s.NewManager(s.configuration.StaticConfig)
6969
if err != nil {
7070
return err
7171
}

0 commit comments

Comments
 (0)