Skip to content

Commit 5b5c864

Browse files
aslilacpull[bot]
authored andcommitted
feat: show more detailed provisioner version info (#14593)
1 parent 6871930 commit 5b5c864

File tree

4 files changed

+79
-6
lines changed

4 files changed

+79
-6
lines changed

site/src/modules/dashboard/Navbar/UserDropdown/UserDropdown.stories.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ const Example: Story = {
3131
await step("click to open", async () => {
3232
await userEvent.click(canvas.getByRole("button"));
3333
await waitFor(() =>
34-
expect(screen.getByText(/v99\.999\.9999/i)).toBeInTheDocument(),
34+
expect(screen.getByText(/v2\.99\.99/i)).toBeInTheDocument(),
3535
);
3636
});
3737
},

site/src/modules/provisioners/ProvisionerGroup.tsx

Lines changed: 64 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,20 @@
1-
import { useTheme } from "@emotion/react";
1+
import { type Interpolation, type Theme, useTheme } from "@emotion/react";
22
import Business from "@mui/icons-material/Business";
33
import Person from "@mui/icons-material/Person";
44
import Button from "@mui/material/Button";
5+
import Link from "@mui/material/Link";
56
import Tooltip from "@mui/material/Tooltip";
67
import type { BuildInfoResponse, ProvisionerDaemon } from "api/typesGenerated";
78
import { DropdownArrow } from "components/DropdownArrow/DropdownArrow";
89
import { Pill } from "components/Pill/Pill";
10+
import {
11+
Popover,
12+
PopoverContent,
13+
PopoverTrigger,
14+
} from "components/Popover/Popover";
915
import { type FC, useState } from "react";
1016
import { createDayString } from "utils/createDayString";
17+
import { docs } from "utils/docs";
1118
import { ProvisionerTag } from "./ProvisionerTag";
1219

1320
type ProvisionerGroupType = "builtin" | "psk" | "key";
@@ -159,14 +166,51 @@ export const ProvisionerGroup: FC<ProvisionerGroupProps> = ({
159166
width: 310,
160167
}}
161168
>
162-
<div css={{ lineHeight: "160%" }}>
169+
<div css={{ lineHeight: 1.6 }}>
163170
<h4 css={{ fontWeight: 500, margin: 0 }}>{provisioner.name}</h4>
164-
<span css={{ color: theme.palette.text.secondary }}>
171+
<span
172+
css={{ color: theme.palette.text.secondary, fontSize: 13 }}
173+
>
165174
{type === "builtin" ? (
166175
<span>Built-in</span>
167176
) : (
168177
<>
169-
{upToDate ? "Up to date" : provisioner.version} &mdash;{" "}
178+
<Popover mode="hover">
179+
<PopoverTrigger>
180+
<span>
181+
{buildInfo
182+
? provisioner.version === buildInfo.version
183+
? "Up to date"
184+
: "Out of date"
185+
: provisioner.version}
186+
</span>
187+
</PopoverTrigger>
188+
<PopoverContent
189+
transformOrigin={{ vertical: -8, horizontal: 0 }}
190+
css={{
191+
"& .MuiPaper-root": {
192+
padding: "20px 20px 8px",
193+
maxWidth: 340,
194+
},
195+
}}
196+
>
197+
<h4 css={styles.title}>Release version</h4>
198+
<p css={styles.text}>{provisioner.version}</p>
199+
<h4 css={styles.title}>Protocol version</h4>
200+
<p css={styles.text}>{provisioner.api_version}</p>
201+
{provisioner.api_version !==
202+
buildInfo?.provisioner_api_version && (
203+
<p css={[styles.text, { fontSize: 13 }]}>
204+
This provisioner is out of date. You may
205+
experience issues when using a provisioner version
206+
that doesn’t match your Coder deployment. Please
207+
upgrade to a newer version.{" "}
208+
<Link href={docs("/")}>Learn more…</Link>
209+
</p>
210+
)}
211+
</PopoverContent>
212+
</Popover>{" "}
213+
&mdash;{" "}
170214
{provisioner.last_seen_at && (
171215
<span data-chromatic="ignore">
172216
Last seen {createDayString(provisioner.last_seen_at)}
@@ -211,3 +255,19 @@ export const ProvisionerGroup: FC<ProvisionerGroupProps> = ({
211255
</div>
212256
);
213257
};
258+
259+
const styles = {
260+
title: (theme) => ({
261+
marginTop: 0,
262+
marginBottom: 0,
263+
color: theme.palette.text.primary,
264+
fontSize: 14,
265+
lineHeight: "150%",
266+
fontWeight: 600,
267+
}),
268+
269+
text: (theme) => ({
270+
marginTop: 0,
271+
marginBottom: 12,
272+
}),
273+
} satisfies Record<string, Interpolation<Theme>>;

site/src/pages/ManagementSettingsPage/OrganizationProvisionersPageView.stories.tsx

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,19 @@ export const Provisioners: Story = {
2626
psk: [MockProvisioner, MockUserProvisioner, MockProvisionerWithTags],
2727
userAuth: [],
2828
keys: new Map([
29+
[
30+
"ベン",
31+
[
32+
MockProvisioner,
33+
{
34+
...MockProvisioner2,
35+
version: "2.0.0",
36+
api_version: "1.0",
37+
warnings: [{ code: "EUNKNOWN", message: "私は時代遅れです" }],
38+
},
39+
],
40+
],
41+
["ジャイデン", [MockProvisioner, MockProvisioner2]],
2942
[
3043
"ケイラ",
3144
[

site/src/testHelpers/entities.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -217,7 +217,7 @@ export const MockBuildInfo: TypesGen.BuildInfoResponse = {
217217
agent_api_version: "1.0",
218218
provisioner_api_version: "1.1",
219219
external_url: "file:///mock-url",
220-
version: "v99.999.9999+c9cdf14",
220+
version: "v2.99.99",
221221
dashboard_url: "https:///mock-url",
222222
workspace_proxy: false,
223223
upgrade_message: "My custom upgrade message",

0 commit comments

Comments
 (0)