From a7489276a143bbfeee6a93e21f0d8c68b2fb7bd8 Mon Sep 17 00:00:00 2001 From: Steven Masley Date: Thu, 30 Mar 2023 15:32:47 -0500 Subject: [PATCH 1/3] fix: Push correct ssh prefix to FE --- site/src/components/Resources/AgentRow.tsx | 3 ++ site/src/components/SSHButton/SSHButton.tsx | 4 +- site/src/components/Workspace/Workspace.tsx | 3 ++ .../WorkspacePage/WorkspaceReadyPage.tsx | 2 + .../xServices/workspace/workspaceXService.ts | 43 +++++++++++++++++++ 5 files changed, 54 insertions(+), 1 deletion(-) diff --git a/site/src/components/Resources/AgentRow.tsx b/site/src/components/Resources/AgentRow.tsx index fd9dd4c146baa..00d84793fb2d4 100644 --- a/site/src/components/Resources/AgentRow.tsx +++ b/site/src/components/Resources/AgentRow.tsx @@ -44,6 +44,7 @@ export interface AgentRowProps { applicationsHost: string | undefined showApps: boolean hideSSHButton?: boolean + sshPrefix?: string hideVSCodeDesktopButton?: boolean serverVersion: string onUpdateAgent: () => void @@ -61,6 +62,7 @@ export const AgentRow: FC = ({ serverVersion, onUpdateAgent, storybookStartupLogs, + sshPrefix, }) => { const styles = useStyles() const { t } = useTranslation("agent") @@ -308,6 +310,7 @@ export const AgentRow: FC = ({ )} {!hideVSCodeDesktopButton && ( diff --git a/site/src/components/SSHButton/SSHButton.tsx b/site/src/components/SSHButton/SSHButton.tsx index a26774b031121..8ea10c8bb84b3 100644 --- a/site/src/components/SSHButton/SSHButton.tsx +++ b/site/src/components/SSHButton/SSHButton.tsx @@ -15,12 +15,14 @@ export interface SSHButtonProps { workspaceName: string agentName: string defaultIsOpen?: boolean + sshPrefix?: string } export const SSHButton: React.FC> = ({ workspaceName, agentName, defaultIsOpen = false, + sshPrefix, }) => { const anchorRef = useRef(null) const [isOpen, setIsOpen] = useState(defaultIsOpen) @@ -79,7 +81,7 @@ export const SSHButton: React.FC> = ({ Connect to the agent: - + diff --git a/site/src/components/Workspace/Workspace.tsx b/site/src/components/Workspace/Workspace.tsx index d2161fd17cb6a..126b4146a4b06 100644 --- a/site/src/components/Workspace/Workspace.tsx +++ b/site/src/components/Workspace/Workspace.tsx @@ -53,6 +53,7 @@ export interface WorkspaceProps { workspaceErrors: Partial> buildInfo?: TypesGen.BuildInfoResponse applicationsHost?: string + sshPrefix?: string template?: TypesGen.Template quota_budget?: number } @@ -78,6 +79,7 @@ export const Workspace: FC> = ({ hideVSCodeDesktopButton, buildInfo, applicationsHost, + sshPrefix, template, quota_budget, }) => { @@ -193,6 +195,7 @@ export const Workspace: FC> = ({ agent={agent} workspace={workspace} applicationsHost={applicationsHost} + sshPrefix={sshPrefix} showApps={canUpdateWorkspace} hideSSHButton={hideSSHButton} hideVSCodeDesktopButton={hideVSCodeDesktopButton} diff --git a/site/src/pages/WorkspacePage/WorkspaceReadyPage.tsx b/site/src/pages/WorkspacePage/WorkspaceReadyPage.tsx index 88a614df0b234..3858821ef7b3d 100644 --- a/site/src/pages/WorkspacePage/WorkspaceReadyPage.tsx +++ b/site/src/pages/WorkspacePage/WorkspaceReadyPage.tsx @@ -51,6 +51,7 @@ export const WorkspaceReadyPage = ({ buildError, cancellationError, applicationsHost, + sshPrefix, permissions, missedParameters, } = workspaceState.context @@ -124,6 +125,7 @@ export const WorkspaceReadyPage = ({ }} buildInfo={buildInfo} applicationsHost={applicationsHost} + sshPrefix={sshPrefix} template={template} quota_budget={quotaState.context.quota?.budget} /> diff --git a/site/src/xServices/workspace/workspaceXService.ts b/site/src/xServices/workspace/workspaceXService.ts index 1fc1c543fd78e..c83e57b19a361 100644 --- a/site/src/xServices/workspace/workspaceXService.ts +++ b/site/src/xServices/workspace/workspaceXService.ts @@ -72,6 +72,8 @@ export interface WorkspaceContext { checkPermissionsError?: Error | unknown // applications applicationsHost?: string + // SSH Config + sshPrefix?: string } export type WorkspaceEvent = @@ -162,6 +164,9 @@ export const workspaceMachine = createMachine( getApplicationsHost: { data: TypesGen.AppHostResponse } + getSSHPrefix: { + data: TypesGen.SSHConfigResponse + } }, }, initial: "idle", @@ -456,6 +461,30 @@ export const workspaceMachine = createMachine( }, }, }, + sshConfig: { + initial: "gettingSshConfig", + states: { + gettingSshConfig: { + invoke: { + src: "getSSHPrefix", + onDone: { + target: "success", + actions: ["assignSSHPrefix"], + }, + onError: { + target: "error", + actions: ["displaySSHPrefixError"], + }, + }, + }, + error: { + type: "final", + }, + success: { + type: "final", + }, + }, + }, schedule: { invoke: { id: "scheduleBannerMachine", @@ -579,6 +608,17 @@ export const workspaceMachine = createMachine( ) displayError(message) }, + // SSH + assignSSHPrefix: assign({ + sshPrefix: (_, { data }) => data.hostname_prefix, + }), + displaySSHPrefixError: (_, { data }) => { + const message = getErrorMessage( + data, + "Error getting the deployment ssh configuration.", + ) + displayError(message) + }, // Optimistically update. So when the user clicks on stop, we can show // the "pending" state right away without having to wait 0.5s ~ 2s to // display the visual feedback to the user. @@ -736,6 +776,9 @@ export const workspaceMachine = createMachine( getApplicationsHost: async () => { return API.getApplicationsHost() }, + getSSHPrefix: async () => { + return API.getDeploymentSSHConfig() + }, }, }, ) From 2ec66f3c3c1ee52b3ef1f4f06441944cb68ffc03 Mon Sep 17 00:00:00 2001 From: Steven Masley Date: Thu, 30 Mar 2023 15:33:55 -0500 Subject: [PATCH 2/3] Fix story --- site/src/components/SSHButton/SSHButton.stories.tsx | 2 ++ 1 file changed, 2 insertions(+) diff --git a/site/src/components/SSHButton/SSHButton.stories.tsx b/site/src/components/SSHButton/SSHButton.stories.tsx index e841b95355e3c..626292069b7d6 100644 --- a/site/src/components/SSHButton/SSHButton.stories.tsx +++ b/site/src/components/SSHButton/SSHButton.stories.tsx @@ -13,6 +13,7 @@ export const Closed = Template.bind({}) Closed.args = { workspaceName: MockWorkspace.name, agentName: MockWorkspaceAgent.name, + sshPrefix: "coder.", } export const Opened = Template.bind({}) @@ -20,4 +21,5 @@ Opened.args = { workspaceName: MockWorkspace.name, agentName: MockWorkspaceAgent.name, defaultIsOpen: true, + sshPrefix: "coder.", } From cff9655e12a09731d204f32b51e6ac32b498e856 Mon Sep 17 00:00:00 2001 From: Steven Masley Date: Thu, 30 Mar 2023 21:51:13 +0000 Subject: [PATCH 3/3] Make fmt --- site/src/components/SSHButton/SSHButton.tsx | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/site/src/components/SSHButton/SSHButton.tsx b/site/src/components/SSHButton/SSHButton.tsx index 8ea10c8bb84b3..fbf772eb2c878 100644 --- a/site/src/components/SSHButton/SSHButton.tsx +++ b/site/src/components/SSHButton/SSHButton.tsx @@ -81,7 +81,9 @@ export const SSHButton: React.FC> = ({ Connect to the agent: - + pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy