feat(cli): show workspace health in show (#8548)

This commit is contained in:
Mathias Fredriksson
2023-07-18 11:28:47 +03:00
committed by GitHub
parent 6b978bef71
commit d467160581
2 changed files with 25 additions and 3 deletions
+12 -3
View File
@@ -50,6 +50,7 @@ func WorkspaceResources(writer io.Writer, resources []codersdk.WorkspaceResource
row := table.Row{"Resource"}
if !options.HideAgentState {
row = append(row, "Status")
row = append(row, "Health")
row = append(row, "Version")
}
if !options.HideAccess {
@@ -81,6 +82,7 @@ func WorkspaceResources(writer io.Writer, resources []codersdk.WorkspaceResource
DefaultStyles.Bold.Render(resourceAddress),
"",
"",
"",
})
// Display all agents associated with the resource.
for index, agent := range resource.Agents {
@@ -93,13 +95,13 @@ func WorkspaceResources(writer io.Writer, resources []codersdk.WorkspaceResource
fmt.Sprintf("%s─ %s (%s, %s)", pipe, agent.Name, agent.OperatingSystem, agent.Architecture),
}
if !options.HideAgentState {
var agentStatus string
var agentVersion string
var agentStatus, agentHealth, agentVersion string
if !options.HideAgentState {
agentStatus = renderAgentStatus(agent)
agentHealth = renderAgentHealth(agent)
agentVersion = renderAgentVersion(agent.Version, options.ServerVersion)
}
row = append(row, agentStatus, agentVersion)
row = append(row, agentStatus, agentHealth, agentVersion)
}
if !options.HideAccess {
sshCommand := "coder ssh " + options.WorkspaceName
@@ -141,6 +143,13 @@ func renderAgentStatus(agent codersdk.WorkspaceAgent) string {
}
}
func renderAgentHealth(agent codersdk.WorkspaceAgent) string {
if agent.Health.Healthy {
return DefaultStyles.Keyword.Render("✔ healthy")
}
return DefaultStyles.Error.Render("✘ " + agent.Health.Reason)
}
func renderAgentVersion(agentVersion, serverVersion string) string {
if agentVersion == "" {
agentVersion = "(unknown)"
+13
View File
@@ -29,6 +29,7 @@ func TestWorkspaceResources(t *testing.T) {
LifecycleState: codersdk.WorkspaceAgentLifecycleCreated,
Architecture: "amd64",
OperatingSystem: "linux",
Health: codersdk.WorkspaceAgentHealth{Healthy: true},
}},
}}, cliui.WorkspaceResourcesOptions{
WorkspaceName: "example",
@@ -65,6 +66,7 @@ func TestWorkspaceResources(t *testing.T) {
Name: "dev",
OperatingSystem: "linux",
Architecture: "amd64",
Health: codersdk.WorkspaceAgentHealth{Healthy: true},
}},
}, {
Transition: codersdk.WorkspaceTransitionStart,
@@ -76,6 +78,7 @@ func TestWorkspaceResources(t *testing.T) {
Name: "go",
Architecture: "amd64",
OperatingSystem: "linux",
Health: codersdk.WorkspaceAgentHealth{Healthy: true},
}, {
DisconnectedAt: &disconnected,
Status: codersdk.WorkspaceAgentDisconnected,
@@ -83,6 +86,10 @@ func TestWorkspaceResources(t *testing.T) {
Name: "postgres",
Architecture: "amd64",
OperatingSystem: "linux",
Health: codersdk.WorkspaceAgentHealth{
Healthy: false,
Reason: "agent has lost connection",
},
}},
}}, cliui.WorkspaceResourcesOptions{
WorkspaceName: "dev",
@@ -94,6 +101,12 @@ func TestWorkspaceResources(t *testing.T) {
}()
ptty.ExpectMatch("google_compute_disk.root")
ptty.ExpectMatch("google_compute_instance.dev")
ptty.ExpectMatch("healthy")
ptty.ExpectMatch("coder ssh dev.dev")
ptty.ExpectMatch("kubernetes_pod.dev")
ptty.ExpectMatch("healthy")
ptty.ExpectMatch("coder ssh dev.go")
ptty.ExpectMatch("agent has lost connection")
ptty.ExpectMatch("coder ssh dev.postgres")
<-done
})