From a23ce7e6f8b81a2871c6fc9b563b1720e767b5c5 Mon Sep 17 00:00:00 2001 From: jiong Date: Thu, 25 Mar 2021 17:40:49 +0800 Subject: [PATCH] fix: default resource pod logs error --- .../commands/data/KubeResourceType.java | 22 ++++++++++++++----- .../NocalhostConsoleExecuteNotifier.java | 3 +-- .../ui/NocalhostConsoleWindowFactory.java | 10 ++++----- .../ui/action/workload/LogsAction.java | 7 ++---- .../ui/action/workload/TerminalAction.java | 7 ++---- .../ui/console/NocalhostLogWindow.java | 19 ++++++---------- .../ui/console/NocalhostTerminalWindow.java | 12 ++-------- .../intellij/ui/tree/TreeMouseListener.java | 15 +++++-------- 8 files changed, 41 insertions(+), 54 deletions(-) diff --git a/src/main/java/dev/nocalhost/plugin/intellij/commands/data/KubeResourceType.java b/src/main/java/dev/nocalhost/plugin/intellij/commands/data/KubeResourceType.java index 9dd06baf..9b95ceea 100644 --- a/src/main/java/dev/nocalhost/plugin/intellij/commands/data/KubeResourceType.java +++ b/src/main/java/dev/nocalhost/plugin/intellij/commands/data/KubeResourceType.java @@ -1,10 +1,20 @@ package dev.nocalhost.plugin.intellij.commands.data; public enum KubeResourceType { - Deployment, - Daemonset, - Statefulset, - Job, - CronJobs, - Pod; + Deployment("Deployment"), + Daemonset("Daemonset"), + Statefulset("Statefulset"), + Job("Job"), + CronJobs("CronJobs"), + Pod("Pod"); + + private final String val; + + KubeResourceType(String val) { + this.val = val; + } + + public String getVal() { + return val; + } } diff --git a/src/main/java/dev/nocalhost/plugin/intellij/topic/NocalhostConsoleExecuteNotifier.java b/src/main/java/dev/nocalhost/plugin/intellij/topic/NocalhostConsoleExecuteNotifier.java index c6de0a23..15cb2fc6 100644 --- a/src/main/java/dev/nocalhost/plugin/intellij/topic/NocalhostConsoleExecuteNotifier.java +++ b/src/main/java/dev/nocalhost/plugin/intellij/topic/NocalhostConsoleExecuteNotifier.java @@ -2,7 +2,6 @@ import com.intellij.util.messages.Topic; -import dev.nocalhost.plugin.intellij.commands.data.KubeResourceType; import dev.nocalhost.plugin.intellij.ui.console.Action; import dev.nocalhost.plugin.intellij.ui.tree.node.ResourceNode; @@ -10,5 +9,5 @@ public interface NocalhostConsoleExecuteNotifier { Topic NOCALHOST_CONSOLE_EXECUTE_NOTIFIER_TOPIC = Topic.create("Nocalchost Console Execute", NocalhostConsoleExecuteNotifier.class); - void action(ResourceNode workloadNode, KubeResourceType type, Action action); + void action(ResourceNode workloadNode, Action action); } diff --git a/src/main/java/dev/nocalhost/plugin/intellij/ui/NocalhostConsoleWindowFactory.java b/src/main/java/dev/nocalhost/plugin/intellij/ui/NocalhostConsoleWindowFactory.java index 3206656e..7e97fb5f 100644 --- a/src/main/java/dev/nocalhost/plugin/intellij/ui/NocalhostConsoleWindowFactory.java +++ b/src/main/java/dev/nocalhost/plugin/intellij/ui/NocalhostConsoleWindowFactory.java @@ -17,7 +17,6 @@ import dev.nocalhost.plugin.intellij.api.data.Application; import dev.nocalhost.plugin.intellij.api.data.DevSpace; -import dev.nocalhost.plugin.intellij.commands.data.KubeResourceType; import dev.nocalhost.plugin.intellij.topic.NocalhostConsoleExecuteNotifier; import dev.nocalhost.plugin.intellij.topic.NocalhostConsoleTerminalNotifier; import dev.nocalhost.plugin.intellij.topic.NocalhostExceptionPrintNotifier; @@ -74,25 +73,26 @@ private void createOutputWindow() { } private void newTerminal(DevSpace devSpace, Application app, String deploymentName) { - NocalhostConsoleWindow nocalhostConsoleWindow = new NocalhostTerminalWindow(project, toolWindow, devSpace, app, deploymentName); + NocalhostConsoleWindow nocalhostConsoleWindow = new NocalhostTerminalWindow(project, devSpace, app, deploymentName); addContent(nocalhostConsoleWindow); toolWindow.show(); } - private void updateTab(ResourceNode node, KubeResourceType type, Action action) { + private void updateTab(ResourceNode node, Action action) { toolWindow.show(); NocalhostConsoleWindow nocalhostConsoleWindow; switch (action) { case LOGS: - nocalhostConsoleWindow = new NocalhostLogWindow(project, toolWindow, type, node); + nocalhostConsoleWindow = new NocalhostLogWindow(project, node); break; case TERMINAL: - nocalhostConsoleWindow = new NocalhostTerminalWindow(project, toolWindow, type, node); + nocalhostConsoleWindow = new NocalhostTerminalWindow(project, node); break; default: throw new IllegalStateException("Unexpected value: " + action); } addContent(nocalhostConsoleWindow); + toolWindow.show(); } private void addContent(final NocalhostConsoleWindow nocalhostConsoleWindow) { diff --git a/src/main/java/dev/nocalhost/plugin/intellij/ui/action/workload/LogsAction.java b/src/main/java/dev/nocalhost/plugin/intellij/ui/action/workload/LogsAction.java index 0dc25d82..099c69e2 100644 --- a/src/main/java/dev/nocalhost/plugin/intellij/ui/action/workload/LogsAction.java +++ b/src/main/java/dev/nocalhost/plugin/intellij/ui/action/workload/LogsAction.java @@ -6,7 +6,6 @@ import org.jetbrains.annotations.NotNull; -import dev.nocalhost.plugin.intellij.commands.data.KubeResourceType; import dev.nocalhost.plugin.intellij.topic.NocalhostConsoleExecuteNotifier; import dev.nocalhost.plugin.intellij.ui.console.Action; import dev.nocalhost.plugin.intellij.ui.tree.node.ResourceNode; @@ -15,19 +14,17 @@ public class LogsAction extends AnAction { private final Project project; private final ResourceNode node; - private final KubeResourceType type; - public LogsAction(Project project, ResourceNode node, KubeResourceType type) { + public LogsAction(Project project, ResourceNode node) { super("Logs"); this.project = project; this.node = node; - this.type = type; } @Override public void actionPerformed(@NotNull AnActionEvent event) { project.getMessageBus() .syncPublisher(NocalhostConsoleExecuteNotifier.NOCALHOST_CONSOLE_EXECUTE_NOTIFIER_TOPIC) - .action(node, type, Action.LOGS); + .action(node, Action.LOGS); } } diff --git a/src/main/java/dev/nocalhost/plugin/intellij/ui/action/workload/TerminalAction.java b/src/main/java/dev/nocalhost/plugin/intellij/ui/action/workload/TerminalAction.java index e15d6ff7..68bb2db9 100644 --- a/src/main/java/dev/nocalhost/plugin/intellij/ui/action/workload/TerminalAction.java +++ b/src/main/java/dev/nocalhost/plugin/intellij/ui/action/workload/TerminalAction.java @@ -7,7 +7,6 @@ import org.jetbrains.annotations.NotNull; -import dev.nocalhost.plugin.intellij.commands.data.KubeResourceType; import dev.nocalhost.plugin.intellij.topic.NocalhostConsoleExecuteNotifier; import dev.nocalhost.plugin.intellij.ui.console.Action; import dev.nocalhost.plugin.intellij.ui.tree.node.ResourceNode; @@ -18,19 +17,17 @@ public class TerminalAction extends AnAction { private final Project project; private final ResourceNode node; - private final KubeResourceType type; - public TerminalAction(Project project, ResourceNode node, KubeResourceType type) { + public TerminalAction(Project project, ResourceNode node) { super("Terminal", "", TerminalIcons.OpenTerminal_13x13); this.project = project; this.node = node; - this.type = type; } @Override public void actionPerformed(@NotNull AnActionEvent event) { project.getMessageBus() .syncPublisher(NocalhostConsoleExecuteNotifier.NOCALHOST_CONSOLE_EXECUTE_NOTIFIER_TOPIC) - .action(node, type, Action.TERMINAL); + .action(node, Action.TERMINAL); } } diff --git a/src/main/java/dev/nocalhost/plugin/intellij/ui/console/NocalhostLogWindow.java b/src/main/java/dev/nocalhost/plugin/intellij/ui/console/NocalhostLogWindow.java index 46bb6eb1..b45284e8 100644 --- a/src/main/java/dev/nocalhost/plugin/intellij/ui/console/NocalhostLogWindow.java +++ b/src/main/java/dev/nocalhost/plugin/intellij/ui/console/NocalhostLogWindow.java @@ -17,10 +17,10 @@ import com.intellij.openapi.diagnostic.Logger; import com.intellij.openapi.project.DumbAwareAction; import com.intellij.openapi.project.Project; -import com.intellij.openapi.wm.ToolWindow; import org.apache.commons.collections.CollectionUtils; import org.apache.commons.lang3.ArrayUtils; +import org.apache.commons.lang3.EnumUtils; import org.apache.commons.lang3.StringUtils; import org.jetbrains.annotations.NotNull; @@ -44,8 +44,6 @@ public class NocalhostLogWindow extends NocalhostConsoleWindow { private static final Logger LOG = Logger.getInstance(NocalhostLogWindow.class); private final Project project; - private final ToolWindow toolWindow; - private final ResourceNode node; private String title; private ConsoleView consoleView; @@ -59,28 +57,25 @@ public class NocalhostLogWindow extends NocalhostConsoleWindow { private final DevSpace devSpace; private final KubectlCommand kubectlCommand; - public NocalhostLogWindow(Project project, ToolWindow toolWindow, KubeResourceType type, ResourceNode node) { + public NocalhostLogWindow(Project project, ResourceNode node) { this.project = project; - this.toolWindow = toolWindow; - this.node = node; - kubectlCommand = ServiceManager.getService(KubectlCommand.class); - final String workloadName = node.getKubeResource().getSpec().getSelector().getMatchLabels().get("app"); devSpace = node.devSpace(); stop = false; pause = false; - toolWindow.show(); - switch (type) { + String type = node.getKubeResource().getKind(); + + switch (EnumUtils.getEnumIgnoreCase(KubeResourceType.class, type)) { case Deployment: - containerName = workloadName; + containerName = node.getKubeResource().getSpec().getSelector().getMatchLabels().get("app");; KubeResourceList pods = null; try { pods = kubectlCommand.getResourceList("pods", node.getKubeResource().getSpec().getSelector().getMatchLabels(), devSpace); } catch (IOException | InterruptedException | NocalhostExecuteCmdException e) { LOG.error("error occurred while getting workload pods", e); - NocalhostNotifier.getInstance(project).notifyError("Nocalhost log error", String.format("error occurred while getting workload pods workloadName:[%s] devSpace:[%s]", workloadName, devSpace), e.getMessage()); + NocalhostNotifier.getInstance(project).notifyError("Nocalhost log error", String.format("error occurred while getting workload pods containerName:[%s] devSpace:[%s]", containerName, devSpace), e.getMessage()); return; } if (pods != null && CollectionUtils.isNotEmpty(pods.getItems())) { diff --git a/src/main/java/dev/nocalhost/plugin/intellij/ui/console/NocalhostTerminalWindow.java b/src/main/java/dev/nocalhost/plugin/intellij/ui/console/NocalhostTerminalWindow.java index 39eaf3df..11d2d83f 100644 --- a/src/main/java/dev/nocalhost/plugin/intellij/ui/console/NocalhostTerminalWindow.java +++ b/src/main/java/dev/nocalhost/plugin/intellij/ui/console/NocalhostTerminalWindow.java @@ -7,7 +7,6 @@ import com.intellij.openapi.diagnostic.Logger; import com.intellij.openapi.project.Project; import com.intellij.openapi.util.Disposer; -import com.intellij.openapi.wm.ToolWindow; import com.jediterm.pty.PtyProcessTtyConnector; import com.jediterm.terminal.TtyConnector; import com.pty4j.PtyProcess; @@ -31,7 +30,6 @@ import dev.nocalhost.plugin.intellij.commands.NhctlCommand; import dev.nocalhost.plugin.intellij.commands.data.KubeResource; import dev.nocalhost.plugin.intellij.commands.data.KubeResourceList; -import dev.nocalhost.plugin.intellij.commands.data.KubeResourceType; import dev.nocalhost.plugin.intellij.commands.data.NhctlDescribeOptions; import dev.nocalhost.plugin.intellij.commands.data.NhctlTerminalOptions; import dev.nocalhost.plugin.intellij.exception.NocalhostExecuteCmdException; @@ -45,19 +43,15 @@ public class NocalhostTerminalWindow extends NocalhostConsoleWindow { private static final Logger LOG = Logger.getInstance(NocalhostTerminalWindow.class); private final Project project; - private final ToolWindow toolWindow; - private final ResourceNode node; private final DevSpace devSpace; private JComponent panel; private String title; - public NocalhostTerminalWindow(Project project, ToolWindow toolWindow, DevSpace devSpace, Application application, String deploymentName) { + public NocalhostTerminalWindow(Project project, DevSpace devSpace, Application application, String deploymentName) { this.project = project; - this.toolWindow = toolWindow; this.devSpace = devSpace; - this.node = null; final String kubeconfigPath = KubeConfigUtil.kubeConfigPath(devSpace).toString(); @@ -74,10 +68,8 @@ public NocalhostTerminalWindow(Project project, ToolWindow toolWindow, DevSpace toTerminal(cmd); } - public NocalhostTerminalWindow(Project project, ToolWindow toolWindow, KubeResourceType type, ResourceNode node) { + public NocalhostTerminalWindow(Project project, ResourceNode node) { this.project = project; - this.toolWindow = toolWindow; - this.node = node; this.devSpace = node.devSpace(); final String kubeconfigPath = KubeConfigUtil.kubeConfigPath(node.devSpace()).toString(); diff --git a/src/main/java/dev/nocalhost/plugin/intellij/ui/tree/TreeMouseListener.java b/src/main/java/dev/nocalhost/plugin/intellij/ui/tree/TreeMouseListener.java index 3eaeddfe..15f390d8 100644 --- a/src/main/java/dev/nocalhost/plugin/intellij/ui/tree/TreeMouseListener.java +++ b/src/main/java/dev/nocalhost/plugin/intellij/ui/tree/TreeMouseListener.java @@ -195,25 +195,22 @@ private void renderWorkloadAction(MouseEvent event, ResourceNode resourceNode) { actionGroup.add(new Separator()); actionGroup.add(new ClearPersistentDataAction(project, resourceNode)); actionGroup.add(new Separator()); - actionGroup.add(new LogsAction(project, resourceNode, Deployment)); + actionGroup.add(new LogsAction(project, resourceNode)); actionGroup.add(new PortForwardAction(project, resourceNode)); actionGroup.add(new ResetAction(project, resourceNode)); - actionGroup.add(new TerminalAction(project, resourceNode, Deployment)); + actionGroup.add(new TerminalAction(project, resourceNode)); break; case Daemonset: + case Job: + case CronJobs: break; case Statefulset: actionGroup.add(new PortForwardAction(project, resourceNode)); break; - case Job: - actionGroup.add(new PortForwardAction(project, resourceNode)); - break; - case CronJobs: - break; case Pod: - actionGroup.add(new LogsAction(project, resourceNode, Pod)); + actionGroup.add(new LogsAction(project, resourceNode)); actionGroup.add(new PortForwardAction(project, resourceNode)); - actionGroup.add(new TerminalAction(project, resourceNode, Pod)); + actionGroup.add(new TerminalAction(project, resourceNode)); break; default: return;