diff --git a/site/src/modules/provisioners/ProvisionerGroup.tsx b/site/src/modules/provisioners/ProvisionerGroup.tsx index 50dfb329ae0f7..33487199f3f7c 100644 --- a/site/src/modules/provisioners/ProvisionerGroup.tsx +++ b/site/src/modules/provisioners/ProvisionerGroup.tsx @@ -134,13 +134,7 @@ export const ProvisionerGroup: FC = ({ > - - {daemonScope} - + {daemonScope} {type === "key" && @@ -166,67 +160,45 @@ export const ProvisionerGroup: FC = ({ borderRadius: 8, border: `1px solid ${theme.palette.divider}`, fontSize: 14, - padding: "12px 18px", - width: 310, + padding: "14px 18px", + width: 375, }} > -
-

{provisioner.name}

- - {type === "builtin" ? ( - Built-in - ) : ( - <> - - - - {buildInfo - ? provisioner.version === buildInfo.version - ? "Up to date" - : "Out of date" - : provisioner.version} + +
+

+ {provisioner.name} +

+ + {type === "builtin" ? ( + Built-in + ) : ( + <> + {" "} + —{" "} + {provisioner.last_seen_at && ( + + Last seen{" "} + {createDayString(provisioner.last_seen_at)} - - -

- Release version -

-

{provisioner.version}

-

- Protocol version -

-

{provisioner.api_version}

- {provisioner.version !== buildInfo?.version && ( -

- This provisioner is out of date. You may - experience issues when using a provisioner version - that doesn't match your Coder deployment. - Please upgrade to a newer version.{" "} - Learn more… -

- )} -
- {" "} - —{" "} - {provisioner.last_seen_at && ( - - Last seen {createDayString(provisioner.last_seen_at)} - - )} - - )} -
-
+ )} + + )} +
+
+ {type === "psk" && ( + + )} + ))} @@ -263,6 +235,107 @@ export const ProvisionerGroup: FC = ({ ); }; +interface ProvisionerVersionPopoverProps { + buildInfo?: BuildInfoResponse; + provisioner: ProvisionerDaemon; +} + +const ProvisionerVersionPopover: FC = ({ + buildInfo, + provisioner, +}) => { + return ( + + + + {buildInfo + ? provisioner.version === buildInfo.version + ? "Up to date" + : "Out of date" + : provisioner.version} + + + +

Release version

+

{provisioner.version}

+

Protocol version

+

{provisioner.api_version}

+ {provisioner.api_version !== buildInfo?.provisioner_api_version && ( +

+ This provisioner is out of date. You may experience issues when + using a provisioner version that doesn’t match your Coder + deployment. Please upgrade to a newer version.{" "} + Learn more… +

+ )} +
+
+ ); +}; + +interface PskProvisionerTagsProps { + tags: Record; +} + +const PskProvisionerTags: FC = ({ tags }) => { + const daemonScope = tags.scope || "organization"; + const iconScope = daemonScope === "organization" ? : ; + + const extraTags = Object.entries(tags).filter( + ([tag]) => tag !== "scope" && tag !== "owner", + ); + + if (extraTags.length === 0) { + return ( + + {daemonScope} + + ); + } + + return ( + + + + {extraTags.length === 1 ? "+ 1 tag" : `+ ${extraTags.length} tags`} + + + +
+ {extraTags.map(([key, value]) => ( + + ))} +
+
+
+ ); +}; + const BuiltinProvisionerTitle: FC = () => { return (

@@ -283,6 +356,7 @@ const BuiltinProvisionerTitle: FC = () => {

); }; + const PskProvisionerTitle: FC = () => { return (