11package kubernetes
22
33import (
4+ "k8s.io/apimachinery/pkg/api/meta"
45 "k8s.io/apimachinery/pkg/runtime"
6+ "k8s.io/client-go/discovery"
57 "k8s.io/client-go/kubernetes/scheme"
68 _ "k8s.io/client-go/plugin/pkg/client/auth/oidc"
9+ "k8s.io/client-go/rest"
10+ "k8s.io/client-go/tools/clientcmd"
711
812 "github.com/containers/kubernetes-mcp-server/pkg/helm"
913 "github.com/containers/kubernetes-mcp-server/pkg/kiali"
@@ -20,26 +24,52 @@ const (
2024
2125type CloseWatchKubeConfig func () error
2226
27+ var Scheme = scheme .Scheme
28+ var ParameterCodec = runtime .NewParameterCodec (Scheme )
29+
2330type Kubernetes struct {
24- manager * Manager
31+ accessControlClientSet * AccessControlClientset
2532}
2633
34+ var _ helm.Kubernetes = (* Kubernetes )(nil )
35+
2736// AccessControlClientset returns the access-controlled clientset
2837// This ensures that any denied resources configured in the system are properly enforced
2938func (k * Kubernetes ) AccessControlClientset () * AccessControlClientset {
30- return k .manager . accessControlClientSet
39+ return k .accessControlClientSet
3140}
3241
33- var Scheme = scheme .Scheme
34- var ParameterCodec = runtime .NewParameterCodec (Scheme )
35-
3642func (k * Kubernetes ) NewHelm () * helm.Helm {
3743 // This is a derived Kubernetes, so it already has the Helm initialized
38- return helm .NewHelm (k . manager )
44+ return helm .NewHelm (k )
3945}
4046
4147// NewKiali returns a Kiali client initialized with the same StaticConfig and bearer token
4248// as the underlying derived Kubernetes manager.
4349func (k * Kubernetes ) NewKiali () * kiali.Kiali {
44- return kiali .NewKiali (k .manager .staticConfig , k .AccessControlClientset ().cfg )
50+ return kiali .NewKiali (k .AccessControlClientset ().staticConfig , k .AccessControlClientset ().cfg )
51+ }
52+
53+ func (k * Kubernetes ) configuredNamespace () string {
54+ if ns , _ , nsErr := k .AccessControlClientset ().ToRawKubeConfigLoader ().Namespace (); nsErr == nil {
55+ return ns
56+ }
57+ return ""
58+ }
59+
60+ func (k * Kubernetes ) ToDiscoveryClient () (discovery.CachedDiscoveryInterface , error ) {
61+ return k .AccessControlClientset ().DiscoveryClient (), nil
62+ }
63+
64+ func (k * Kubernetes ) ToRESTMapper () (meta.RESTMapper , error ) {
65+ return k .AccessControlClientset ().RESTMapper (), nil
66+ }
67+
68+ // ToRESTConfig returns the rest.Config object (genericclioptions.RESTClientGetter)
69+ func (k * Kubernetes ) ToRESTConfig () (* rest.Config , error ) {
70+ return k .AccessControlClientset ().cfg , nil
71+ }
72+
73+ func (k * Kubernetes ) ToRawKubeConfigLoader () clientcmd.ClientConfig {
74+ return k .AccessControlClientset ().ToRawKubeConfigLoader ()
4575}
0 commit comments