Skip to content

Commit 62a5501

Browse files
authored
Merge pull request #60 from aifoundry-org/kubeconfig-handle-nothing
handle lack of kubeconfig
2 parents ef28150 + 11c3eb5 commit 62a5501

File tree

3 files changed

+12
-11
lines changed

3 files changed

+12
-11
lines changed

cmd/root.go

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -116,7 +116,11 @@ func rootCmd() (*cobra.Command, error) {
116116
if err != nil {
117117
return fmt.Errorf("failed to get kubeconfig: %w", err)
118118
}
119-
logentry.Debugf("Cluster authentication source: %v", restConfig.Source)
119+
if restConfig == nil {
120+
logentry.Debug("No valid kubeconfig found at startup")
121+
} else {
122+
logentry.Debugf("Cluster authentication source: %v", restConfig.Source)
123+
}
120124

121125
// scenarios for oxide:
122126
// 1- oxideAPIURL and oxideToken are provided, use them
@@ -139,7 +143,7 @@ func rootCmd() (*cobra.Command, error) {
139143
}
140144
oxideAPIURL = profileHost
141145
oxideToken = profileToken
142-
case restConfig.Source == cluster.ConfigSourceInCluster:
146+
case restConfig != nil && restConfig.Source == cluster.ConfigSourceInCluster:
143147
// we are in-cluster, try to load the oxide profile from the secret
144148
logentry.Debugf("Loading oxide profile from in-cluster secret")
145149
ctx := context.Background()

pkg/cluster/client.go

Lines changed: 5 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,6 @@
11
package cluster
22

33
import (
4-
"fmt"
5-
64
"k8s.io/client-go/kubernetes"
75
"k8s.io/client-go/rest"
86
"k8s.io/client-go/tools/clientcmd"
@@ -35,7 +33,6 @@ func getClientset(config *rest.Config) (*kubernetes.Clientset, error) {
3533

3634
func GetRestConfig(kubeconfigRaw []byte) (*Config, error) {
3735
if len(kubeconfigRaw) > 0 {
38-
fmt.Println("Using provided kubeconfig")
3936
configAPI, err := clientcmd.Load(kubeconfigRaw)
4037
if err != nil {
4138
return nil, err
@@ -46,20 +43,20 @@ func GetRestConfig(kubeconfigRaw []byte) (*Config, error) {
4643
}
4744
// try in-cluster
4845
conf, err := rest.InClusterConfig()
49-
fmt.Printf("Using in-cluster err: %v\n", err)
50-
fmt.Printf("Using in-cluster config: %+v\n", conf)
5146
if err == nil {
5247
return &Config{Config: conf, Source: ConfigSourceInCluster}, err
5348
}
5449

5550
// fall back to default config
56-
fmt.Println("Trying default kubeconfig")
5751
kubeconfig := clientcmd.NewNonInteractiveDeferredLoadingClientConfig(
5852
clientcmd.NewDefaultClientConfigLoadingRules(),
5953
&clientcmd.ConfigOverrides{},
6054
)
6155
config, err := kubeconfig.ClientConfig()
62-
fmt.Printf("Using default kubeconfig err: %v\n", err)
63-
fmt.Printf("Using default kubeconfig config: %+v\n", config)
56+
// if we did not find one, return an error, but indicate that we could not find any,
57+
// rather than an error in the config itself
58+
if err != nil && clientcmd.IsEmptyConfig(err) {
59+
return nil, nil
60+
}
6461
return &Config{Config: config, Source: ConfigSourceDefaultKubeconfig}, err
6562
}

pkg/cluster/cluster.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -294,7 +294,7 @@ func (c *Cluster) ensureClusterExists(ctx context.Context) (newKubeconfig []byte
294294

295295
// get a Kubernetes client
296296
apiConfig, err := GetRestConfig(newKubeconfig)
297-
if err != nil {
297+
if err != nil || apiConfig == nil {
298298
return nil, fmt.Errorf("failed to get rest config: %w", err)
299299
}
300300
c.apiConfig = apiConfig

0 commit comments

Comments
 (0)