diff --git a/src/renderer/api/endpoints/pods.api.ts b/src/renderer/api/endpoints/pods.api.ts index c1394ab6db..e1545f09c7 100644 --- a/src/renderer/api/endpoints/pods.api.ts +++ b/src/renderer/api/endpoints/pods.api.ts @@ -47,6 +47,7 @@ export interface IPodLogsQuery { tailLines?: number; timestamps?: boolean; sinceTime?: string; // Date.toISOString()-format + follow?: boolean; } export enum PodStatus { diff --git a/src/renderer/components/+workloads-pods/pod-menu.tsx b/src/renderer/components/+workloads-pods/pod-menu.tsx index cf6fcd360f..77a5fb7d65 100644 --- a/src/renderer/components/+workloads-pods/pod-menu.tsx +++ b/src/renderer/components/+workloads-pods/pod-menu.tsx @@ -12,6 +12,7 @@ import { cssNames, prevDefault } from "../../utils"; import { terminalStore, createTerminalTab } from "../dock/terminal.store"; import { _i18n } from "../../i18n"; import { hideDetails } from "../../navigation"; +import { createPodLogsTab } from "../dock/pod-logs.store"; interface Props extends KubeObjectMenuProps { } @@ -42,7 +43,10 @@ export class PodMenu extends React.Component { } showLogs(container: IPodContainer) { - PodLogsDialog.open(this.props.object, container); + createPodLogsTab({ + pod: this.props.object, + container + }); } renderShellMenu() { diff --git a/src/renderer/components/dock/dock.store.ts b/src/renderer/components/dock/dock.store.ts index 2fed511e75..2ec01df8de 100644 --- a/src/renderer/components/dock/dock.store.ts +++ b/src/renderer/components/dock/dock.store.ts @@ -11,6 +11,7 @@ export enum TabKind { EDIT_RESOURCE = "edit-resource", INSTALL_CHART = "install-chart", UPGRADE_CHART = "upgrade-chart", + POD_LOGS = "pod-logs", } export interface IDockTab { diff --git a/src/renderer/components/dock/dock.tsx b/src/renderer/components/dock/dock.tsx index c020d20672..f4936417e6 100644 --- a/src/renderer/components/dock/dock.tsx +++ b/src/renderer/components/dock/dock.tsx @@ -22,6 +22,8 @@ import { createResourceTab, isCreateResourceTab } from "./create-resource.store" import { isEditResourceTab } from "./edit-resource.store"; import { isInstallChartTab } from "./install-chart.store"; import { isUpgradeChartTab } from "./upgrade-chart.store"; +import { PodLogs } from "./pod-logs"; +import { isPodLogsTab } from "./pod-logs.store"; interface Props { className?: string; @@ -59,6 +61,9 @@ export class Dock extends React.Component { if (isInstallChartTab(tab) || isUpgradeChartTab(tab)) { return } /> } + if (isPodLogsTab(tab)) { + return + } } renderTabContent() { @@ -71,6 +76,7 @@ export class Dock extends React.Component { {isInstallChartTab(tab) && } {isUpgradeChartTab(tab) && } {isTerminalTab(tab) && } + {isPodLogsTab(tab) && } ) } diff --git a/src/renderer/components/dock/info-panel.tsx b/src/renderer/components/dock/info-panel.tsx index 122fea6d9f..01dc7d3c2a 100644 --- a/src/renderer/components/dock/info-panel.tsx +++ b/src/renderer/components/dock/info-panel.tsx @@ -13,7 +13,7 @@ import { Notifications } from "../notifications"; interface Props extends OptionalProps { tabId: TabId; - submit: () => Promise; + submit?: () => Promise; } interface OptionalProps { @@ -23,6 +23,7 @@ interface OptionalProps { submitLabel?: ReactNode; submittingMessage?: ReactNode; disableSubmit?: boolean; + showSubmit?: boolean; showSubmitClose?: boolean; showInlineInfo?: boolean; showNotifications?: boolean; @@ -33,6 +34,7 @@ export class InfoPanel extends Component { static defaultProps: OptionalProps = { submitLabel: Submit, submittingMessage: Submitting.., + showSubmit: true, showSubmitClose: true, showInlineInfo: true, showNotifications: true, @@ -87,7 +89,7 @@ export class InfoPanel extends Component { } render() { - const { className, controls, submitLabel, disableSubmit, error, submittingMessage, showSubmitClose } = this.props; + const { className, controls, submitLabel, disableSubmit, error, submittingMessage, showSubmit, showSubmitClose } = this.props; const { submit, close, submitAndClose, waiting } = this; const isDisabled = !!(disableSubmit || waiting || error); return ( @@ -99,14 +101,16 @@ export class InfoPanel extends Component { {waiting ? <> {submittingMessage} : this.renderErrorIcon()}