@@ -10,9 +10,16 @@ import (
1010
1111 "github.com/pkg/errors"
1212 troubleshootv1beta2 "github.com/replicatedhq/troubleshoot/pkg/apis/troubleshoot/v1beta2"
13+ "github.com/replicatedhq/troubleshoot/pkg/k8sutil"
1314 "helm.sh/helm/v3/pkg/action"
15+ "k8s.io/apimachinery/pkg/api/meta"
16+ "k8s.io/cli-runtime/pkg/genericclioptions"
17+ "k8s.io/client-go/discovery"
18+ "k8s.io/client-go/discovery/cached/memory"
1419 "k8s.io/client-go/kubernetes"
1520 "k8s.io/client-go/rest"
21+ "k8s.io/client-go/restmapper"
22+ "k8s.io/client-go/tools/clientcmd"
1623 "k8s.io/klog/v2"
1724)
1825
@@ -45,6 +52,42 @@ type VersionInfo struct {
4552 Values map [string ]interface {} `json:"values,omitempty"`
4653}
4754
55+ type configGetter struct {
56+ restConfig * rest.Config
57+ }
58+
59+ // ToDiscoveryClient implements genericclioptions.RESTClientGetter.
60+ func (c configGetter ) ToDiscoveryClient () (discovery.CachedDiscoveryInterface , error ) {
61+ discoveryClient , err := discovery .NewDiscoveryClientForConfig (c .restConfig )
62+ if err != nil {
63+ return nil , err
64+ }
65+ cached := memory .NewMemCacheClient (discoveryClient )
66+ return cached , nil
67+ }
68+
69+ // ToRESTConfig implements genericclioptions.RESTClientGetter.
70+ func (c configGetter ) ToRESTConfig () (* rest.Config , error ) {
71+ return c .restConfig , nil
72+ }
73+
74+ // ToRESTMapper implements genericclioptions.RESTClientGetter.
75+ func (c configGetter ) ToRESTMapper () (meta.RESTMapper , error ) {
76+ discoveryClient , err := c .ToDiscoveryClient ()
77+ if err != nil {
78+ return nil , err
79+ }
80+ mapper := restmapper .NewDeferredDiscoveryRESTMapper (discoveryClient )
81+ return mapper , nil
82+ }
83+
84+ // ToRawKubeConfigLoader implements genericclioptions.RESTClientGetter.
85+ func (c configGetter ) ToRawKubeConfigLoader () clientcmd.ClientConfig {
86+ return k8sutil .GetKubeconfig ()
87+ }
88+
89+ var _ genericclioptions.RESTClientGetter = configGetter {}
90+
4891func (c * CollectHelm ) Title () string {
4992 return getCollectorName (c )
5093}
@@ -57,7 +100,7 @@ func (c *CollectHelm) Collect(progressChan chan<- interface{}) (CollectorResult,
57100
58101 output := NewResult ()
59102
60- releaseInfos , err := helmReleaseHistoryCollector (c .Collector .ReleaseName , c .Collector .Namespace , c .Collector .CollectValues )
103+ releaseInfos , err := helmReleaseHistoryCollector (c .ClientConfig , c . Collector .ReleaseName , c .Collector .Namespace , c .Collector .CollectValues )
61104 if err != nil {
62105 errsToMarhsal := []string {}
63106 for _ , e := range err {
@@ -88,12 +131,12 @@ func (c *CollectHelm) Collect(progressChan chan<- interface{}) (CollectorResult,
88131 return output , nil
89132}
90133
91- func helmReleaseHistoryCollector (releaseName string , namespace string , collectValues bool ) ([]ReleaseInfo , []error ) {
134+ func helmReleaseHistoryCollector (config * rest. Config , releaseName string , namespace string , collectValues bool ) ([]ReleaseInfo , []error ) {
92135 var results []ReleaseInfo
93136 error_list := []error {}
94137
95138 actionConfig := new (action.Configuration )
96- if err := actionConfig .Init (nil , namespace , "" , klog .V (2 ).Infof ); err != nil {
139+ if err := actionConfig .Init (configGetter { config } , namespace , "" , klog .V (2 ).Infof ); err != nil {
97140 return nil , []error {err }
98141 }
99142
0 commit comments