Skip to content

Commit fb19966

Browse files
ybelMekksindrerh2Reasonable-Solutions
committed
chore(debug): refactor
Co-authored-by: Sindre Rødseth Hansen <[email protected]> Co-authored-by: Carl Hedgren <[email protected]>
1 parent eba39a6 commit fb19966

File tree

2 files changed

+82
-93
lines changed

2 files changed

+82
-93
lines changed

pkg/debug/debug.go

+17-93
Original file line numberDiff line numberDiff line change
@@ -5,11 +5,9 @@ import (
55
"fmt"
66
"os"
77
"os/exec"
8-
"strings"
98

109
"github.com/manifoldco/promptui"
1110

12-
v1 "k8s.io/api/apps/v1"
1311
core_v1 "k8s.io/api/core/v1"
1412
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
1513
"k8s.io/client-go/kubernetes"
@@ -36,23 +34,15 @@ func Setup(client kubernetes.Interface, cfg Config) *Debug {
3634
}
3735
}
3836

39-
func (d *Debug) getApp() (*v1.Deployment, error) {
40-
app, err := d.client.AppsV1().Deployments(d.cfg.Namespace).Get(d.ctx, d.cfg.AppName, metav1.GetOptions{})
41-
if err != nil {
42-
return nil, fmt.Errorf("failed to get application in namespace \"%s\": %w", d.cfg.Namespace, err)
43-
}
44-
return app, nil
45-
}
46-
47-
func (d *Debug) getPods(app *v1.Deployment) (*core_v1.PodList, error) {
37+
func (d *Debug) getPods() (*core_v1.PodList, error) {
4838
var podList *core_v1.PodList
4939
var err error
5040
podList, err = d.client.CoreV1().Pods(d.cfg.Namespace).List(d.ctx, metav1.ListOptions{
51-
LabelSelector: fmt.Sprintf("app.kubernetes.io/name=%s", app.Name),
41+
LabelSelector: fmt.Sprintf("app.kubernetes.io/name=%s", d.cfg.AppName),
5242
})
5343
if len(podList.Items) == 0 {
5444
podList, err = d.client.CoreV1().Pods(d.cfg.Namespace).List(d.ctx, metav1.ListOptions{
55-
LabelSelector: fmt.Sprintf("app=%s", app.Name),
45+
LabelSelector: fmt.Sprintf("app=%s", d.cfg.AppName),
5646
})
5747
}
5848
if err != nil {
@@ -61,45 +51,6 @@ func (d *Debug) getPods(app *v1.Deployment) (*core_v1.PodList, error) {
6151
return podList, nil
6252
}
6353

64-
func (d *Debug) Debug() error {
65-
app, err := d.getApp()
66-
if err != nil {
67-
return err
68-
}
69-
70-
pods, err := d.getPods(app)
71-
if err != nil {
72-
return err
73-
}
74-
75-
var podNames []string
76-
for _, pod := range pods.Items {
77-
podNames = append(podNames, pod.Name)
78-
}
79-
80-
if len(podNames) == 0 {
81-
fmt.Println("No pods found.")
82-
return nil
83-
}
84-
85-
prompt := promptui.Select{
86-
Label: "Select pod to Debug",
87-
Items: podNames,
88-
}
89-
90-
_, podName, err := prompt.Run()
91-
if err != nil {
92-
fmt.Printf("prompt failed %v\n", err)
93-
return err
94-
}
95-
96-
if err := d.debugPod(podName); err != nil {
97-
fmt.Printf("failed to debug pod %s: %v\n", podName, err)
98-
}
99-
100-
return nil
101-
}
102-
10354
func (d *Debug) debugPod(podName string) error {
10455
cmd := exec.Command(
10556
"kubectl",
@@ -128,13 +79,8 @@ func (d *Debug) debugPod(podName string) error {
12879
return nil
12980
}
13081

131-
func (d *Debug) Tidy() error {
132-
app, err := d.getApp()
133-
if err != nil {
134-
return err
135-
}
136-
137-
pods, err := d.getPods(app)
82+
func (d *Debug) Debug() error {
83+
pods, err := d.getPods()
13884
if err != nil {
13985
return err
14086
}
@@ -149,42 +95,20 @@ func (d *Debug) Tidy() error {
14995
return nil
15096
}
15197

152-
deleted := 0
153-
for _, pod := range pods.Items {
154-
if len(pod.Spec.EphemeralContainers) == 0 {
155-
continue
156-
}
157-
158-
prompt := promptui.Prompt{
159-
Label: fmt.Sprintf("Do you want to delete pod %s", pod.Name),
160-
IsConfirm: true,
161-
}
162-
163-
answer, err := prompt.Run()
164-
if err != nil {
165-
if err == promptui.ErrAbort {
166-
fmt.Printf("Skipping deletion for pod: %s\n", pod.Name)
167-
continue
168-
}
169-
fmt.Printf("Error reading input for pod %s: %v\n", pod.Name, err)
170-
return err
171-
}
172-
173-
// Delete pod if user confirms with "y" or "yes"
174-
if strings.ToLower(answer) == "y" || strings.ToLower(answer) == "yes" {
175-
if err := d.client.CoreV1().Pods(d.cfg.Namespace).Delete(d.ctx, pod.Name, metav1.DeleteOptions{}); err != nil {
176-
fmt.Printf("Failed to delete pod %s: %v\n", pod.Name, err)
177-
} else {
178-
deleted++
179-
fmt.Println("Deleted pod:", pod.Name)
180-
}
181-
} else {
182-
fmt.Println("Skipped pod:", pod.Name)
183-
}
98+
prompt := promptui.Select{
99+
Label: "Select pod to Debug",
100+
Items: podNames,
101+
}
102+
103+
_, podName, err := prompt.Run()
104+
if err != nil {
105+
fmt.Printf("prompt failed %v\n", err)
106+
return err
184107
}
185108

186-
if deleted == 0 {
187-
fmt.Println("No pods with ephemeral containers found.")
109+
if err := d.debugPod(podName); err != nil {
110+
fmt.Printf("failed to debug pod %s: %v\n", podName, err)
188111
}
112+
189113
return nil
190114
}

pkg/debug/tidy.go

+65
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,65 @@
1+
package debug
2+
3+
import (
4+
"fmt"
5+
"strings"
6+
7+
"github.com/manifoldco/promptui"
8+
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
9+
)
10+
11+
func (d *Debug) Tidy() error {
12+
pods, err := d.getPods()
13+
if err != nil {
14+
return err
15+
}
16+
17+
var podNames []string
18+
for _, pod := range pods.Items {
19+
podNames = append(podNames, pod.Name)
20+
}
21+
22+
if len(podNames) == 0 {
23+
fmt.Println("No pods found.")
24+
return nil
25+
}
26+
27+
deleted := 0
28+
for _, pod := range pods.Items {
29+
if len(pod.Spec.EphemeralContainers) == 0 {
30+
continue
31+
}
32+
33+
prompt := promptui.Prompt{
34+
Label: fmt.Sprintf("Do you want to delete pod %s", pod.Name),
35+
IsConfirm: true,
36+
}
37+
38+
answer, err := prompt.Run()
39+
if err != nil {
40+
if err == promptui.ErrAbort {
41+
fmt.Printf("Skipping deletion for pod: %s\n", pod.Name)
42+
continue
43+
}
44+
fmt.Printf("Error reading input for pod %s: %v\n", pod.Name, err)
45+
return err
46+
}
47+
48+
// Delete pod if user confirms with "y" or "yes"
49+
if strings.ToLower(answer) == "y" || strings.ToLower(answer) == "yes" {
50+
if err := d.client.CoreV1().Pods(d.cfg.Namespace).Delete(d.ctx, pod.Name, metav1.DeleteOptions{}); err != nil {
51+
fmt.Printf("Failed to delete pod %s: %v\n", pod.Name, err)
52+
} else {
53+
deleted++
54+
fmt.Println("Deleted pod:", pod.Name)
55+
}
56+
} else {
57+
fmt.Println("Skipped pod:", pod.Name)
58+
}
59+
}
60+
61+
if deleted == 0 {
62+
fmt.Println("No pods with ephemeral containers found.")
63+
}
64+
return nil
65+
}

0 commit comments

Comments
 (0)