|
1 | 1 | package cmd |
2 | 2 |
|
3 | 3 | import ( |
4 | | - "strings" |
5 | | - |
6 | | - "github.com/covexo/devspace/pkg/devspace/config/configutil" |
7 | 4 | "github.com/covexo/devspace/pkg/devspace/kubectl" |
| 5 | + "github.com/covexo/devspace/pkg/devspace/services" |
8 | 6 | "github.com/covexo/devspace/pkg/util/log" |
9 | 7 | "github.com/spf13/cobra" |
10 | 8 | "k8s.io/client-go/kubernetes" |
11 | | - kubectlExec "k8s.io/client-go/util/exec" |
12 | 9 | ) |
13 | 10 |
|
14 | 11 | // EnterCmd is a struct that defines a command call for "enter" |
@@ -58,64 +55,5 @@ func (cmd *EnterCmd) Run(cobraCmd *cobra.Command, args []string) { |
58 | 55 | log.Fatalf("Unable to create new kubectl client: %v", err) |
59 | 56 | } |
60 | 57 |
|
61 | | - enterTerminal(cmd.kubectl, cmd.flags.container, args) |
62 | | -} |
63 | | - |
64 | | -func enterTerminal(client *kubernetes.Clientset, containerNameOverride string, args []string) { |
65 | | - var command []string |
66 | | - config := configutil.GetConfig() |
67 | | - |
68 | | - if len(args) == 0 && (config.DevSpace.Terminal.Command == nil || len(*config.DevSpace.Terminal.Command) == 0) { |
69 | | - command = []string{ |
70 | | - "sh", |
71 | | - "-c", |
72 | | - "command -v bash >/dev/null 2>&1 && exec bash || exec sh", |
73 | | - } |
74 | | - } else { |
75 | | - if len(args) > 0 { |
76 | | - command = args |
77 | | - } else { |
78 | | - for _, cmd := range *config.DevSpace.Terminal.Command { |
79 | | - command = append(command, *cmd) |
80 | | - } |
81 | | - } |
82 | | - } |
83 | | - |
84 | | - // Select pods |
85 | | - namespace := "" |
86 | | - if config.DevSpace.Terminal != nil && config.DevSpace.Terminal.Namespace != nil { |
87 | | - namespace = *config.DevSpace.Terminal.Namespace |
88 | | - } |
89 | | - |
90 | | - // Retrieve pod from label selector |
91 | | - labelSelector := "release=" + getNameOfFirstHelmDeployment() |
92 | | - if config.DevSpace.Terminal != nil && config.DevSpace.Terminal.LabelSelector != nil { |
93 | | - labels := make([]string, 0, len(*config.DevSpace.Terminal.LabelSelector)) |
94 | | - for key, value := range *config.DevSpace.Terminal.LabelSelector { |
95 | | - labels = append(labels, key+"="+*value) |
96 | | - } |
97 | | - |
98 | | - labelSelector = strings.Join(labels, ", ") |
99 | | - } |
100 | | - |
101 | | - // Get first running pod |
102 | | - pod, err := kubectl.GetFirstRunningPod(client, labelSelector, namespace) |
103 | | - if err != nil { |
104 | | - log.Fatalf("Cannot find running pod: %v", err) |
105 | | - } |
106 | | - |
107 | | - // Get container name |
108 | | - containerName := pod.Spec.Containers[0].Name |
109 | | - if containerNameOverride != "" { |
110 | | - containerName = containerNameOverride |
111 | | - } else if config.DevSpace.Terminal.ContainerName != nil { |
112 | | - containerName = *config.DevSpace.Terminal.ContainerName |
113 | | - } |
114 | | - |
115 | | - _, _, _, terminalErr := kubectl.Exec(client, pod, containerName, command, true, nil) |
116 | | - if terminalErr != nil { |
117 | | - if _, ok := terminalErr.(kubectlExec.CodeExitError); ok == false { |
118 | | - log.Fatalf("Unable to start terminal session: %v", terminalErr) |
119 | | - } |
120 | | - } |
| 58 | + services.StartTerminal(cmd.kubectl, cmd.flags.container, args) |
121 | 59 | } |
0 commit comments