@@ -18,15 +18,14 @@ package cmd
18
18
19
19
import (
20
20
"context"
21
+ "errors"
21
22
"fmt"
22
23
"os"
23
24
"time"
24
25
26
+ "github.com/deckhouse/deckhouse-cli/internal/utilk8s"
25
27
"github.com/spf13/cobra"
26
28
v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
27
- "k8s.io/client-go/kubernetes"
28
- "k8s.io/client-go/rest"
29
- "k8s.io/client-go/tools/clientcmd"
30
29
cliflag "k8s.io/component-base/cli/flag"
31
30
"k8s.io/component-base/logs"
32
31
kubecmd "k8s.io/kubectl/pkg/cmd"
@@ -38,54 +37,31 @@ const (
38
37
cmImageKey = "image"
39
38
)
40
39
41
- func getKubeConfig (kubeconfigPath string ) (* rest.Config , error ) {
42
- loadingRules := clientcmd .NewDefaultClientConfigLoadingRules ()
43
-
44
- if kubeconfigPath != "" {
45
- loadingRules .ExplicitPath = kubeconfigPath
46
- }
47
-
48
- configOverrides := & clientcmd.ConfigOverrides {}
49
- kubeConfig := clientcmd .NewNonInteractiveDeferredLoadingClientConfig (loadingRules , configOverrides )
50
-
51
- config , err := kubeConfig .ClientConfig ()
52
- if err != nil {
53
- return nil , fmt .Errorf ("failed to load kubernetes config: %w" , err )
54
- }
55
-
56
- return config , nil
57
- }
58
-
59
40
func getDebugImage (cmd * cobra.Command ) (string , error ) {
60
41
kubeconfigPath , err := cmd .Flags ().GetString ("kubeconfig" )
61
42
if err != nil {
62
43
return "" , fmt .Errorf ("failed to get kubeconfig flag: %w" , err )
63
44
}
64
45
65
- config , err := getKubeConfig (kubeconfigPath )
66
- if err != nil {
67
- return "" , fmt .Errorf ("failed to setup Kubernetes client: %w" , err )
68
- }
69
-
70
- kubeCl , err := kubernetes .NewForConfig (config )
46
+ _ , kubeCl , err := utilk8s .SetupK8sClientSet (kubeconfigPath , "" )
71
47
if err != nil {
72
48
return "" , fmt .Errorf ("failed to create Kubernetes client: %w" , err )
73
49
}
74
50
51
+ var ErrGenericImageFetch = errors .New ("An error occurred during execution. Use the '--image' flag to run your image" )
75
52
ctx , cancel := context .WithTimeout (context .Background (), 10 * time .Second )
76
53
defer cancel ()
77
54
configMap , err := kubeCl .CoreV1 ().ConfigMaps (cmNamespace ).Get (ctx , cmName , v1.GetOptions {})
78
55
if err != nil {
79
- return "" , fmt . Errorf ( "failed to get ConfigMap %s/%s: %w" , cmNamespace , cmName , err )
56
+ return "" , ErrGenericImageFetch
80
57
}
81
58
82
59
imageName , ok := configMap .Data [cmImageKey ]
83
60
if ! ok {
84
- return "" , fmt . Errorf ( "key '%s' not found in ConfigMap %s/%s" , cmImageKey , cmNamespace , cmName )
61
+ return "" , ErrGenericImageFetch
85
62
}
86
-
87
63
if imageName == "" {
88
- return "" , fmt . Errorf ( "image name is empty in ConfigMap %s/%s" , cmNamespace , cmName )
64
+ return "" , ErrGenericImageFetch
89
65
}
90
66
91
67
return imageName , nil
@@ -132,7 +108,7 @@ func init() {
132
108
if originalPersistentPreRunE != nil {
133
109
return originalPersistentPreRunE (cmd , args )
134
110
}
135
- return nil
111
+ panic ( "originalPersistentPreRunE is nil, cannot proceed" )
136
112
}
137
113
138
114
// Based on https://github.com/kubernetes/kubernetes/blob/v1.29.3/staging/src/k8s.io/component-base/cli/run.go#L88
0 commit comments