Skip to content

Commit 716b257

Browse files
committed
hook up to api
1 parent 401eab3 commit 716b257

File tree

5 files changed

+62
-64
lines changed

5 files changed

+62
-64
lines changed

site/src/modules/provisioners/ProvisionerGroup.tsx

+15-48
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,9 @@ import Business from "@mui/icons-material/Business";
33
import Person from "@mui/icons-material/Person";
44
import Button from "@mui/material/Button";
55
import Tooltip from "@mui/material/Tooltip";
6-
import type { BuildInfoResponse } from "api/typesGenerated";
6+
import type { BuildInfoResponse, ProvisionerDaemon } from "api/typesGenerated";
77
import { DropdownArrow } from "components/DropdownArrow/DropdownArrow";
88
import { Pill } from "components/Pill/Pill";
9-
import type { ProvisionerDaemonWithWarnings } from "pages/ManagementSettingsPage/OrganizationProvisionersPageView";
109
import { type FC, useState } from "react";
1110
import { createDayString } from "utils/createDayString";
1211
import { ProvisionerTag } from "./ProvisionerTag";
@@ -17,7 +16,7 @@ interface ProvisionerGroupProps {
1716
readonly buildInfo?: BuildInfoResponse;
1817
readonly keyName?: string;
1918
readonly type: ProvisionerGroupType;
20-
readonly provisioners: ProvisionerDaemonWithWarnings[];
19+
readonly provisioners: ProvisionerDaemon[];
2120
}
2221

2322
export const ProvisionerGroup: FC<ProvisionerGroupProps> = ({
@@ -40,39 +39,22 @@ export const ProvisionerGroup: FC<ProvisionerGroupProps> = ({
4039
);
4140
const upToDate =
4241
allProvisionersAreSameVersion && buildInfo?.version === provisioner.version;
43-
const protocolUpToDate =
44-
allProvisionersAreSameVersion &&
45-
buildInfo?.provisioner_api_version === provisioner.api_version;
4642
const provisionerCount =
4743
provisioners.length === 1
4844
? "1 provisioner"
4945
: `${provisioners.length} provisioners`;
5046

51-
// Count how many total warnings there are in this group, and how many
52-
// provisioners they come from.
53-
let warningCount = 0;
54-
let warningProvisionerCount = 0;
55-
for (const provisioner of provisioners) {
56-
const provisionerWarningCount = provisioner.warnings?.length ?? 0;
57-
warningCount += provisionerWarningCount;
58-
warningProvisionerCount += provisionerWarningCount > 0 ? 1 : 0;
59-
}
60-
6147
const extraTags = Object.entries(provisioner.tags).filter(
6248
([key]) => key !== "scope" && key !== "owner",
6349
);
64-
const isWarning = warningCount > 0;
6550

6651
return (
6752
<div
68-
css={[
69-
{
70-
borderRadius: 8,
71-
border: `1px solid ${theme.palette.divider}`,
72-
fontSize: 14,
73-
},
74-
isWarning && { borderColor: theme.roles.warning.fill.outline },
75-
]}
53+
css={{
54+
borderRadius: 8,
55+
border: `1px solid ${theme.palette.divider}`,
56+
fontSize: 14,
57+
}}
7658
>
7759
<header
7860
css={{
@@ -169,19 +151,13 @@ export const ProvisionerGroup: FC<ProvisionerGroupProps> = ({
169151
{provisioners.map((provisioner) => (
170152
<div
171153
key={provisioner.id}
172-
css={[
173-
{
174-
borderRadius: 8,
175-
border: `1px solid ${theme.palette.divider}`,
176-
fontSize: 14,
177-
padding: "12px 18px",
178-
width: 310,
179-
},
180-
provisioner.warnings &&
181-
provisioner.warnings.length > 0 && {
182-
borderColor: theme.roles.warning.fill.outline,
183-
},
184-
]}
154+
css={{
155+
borderRadius: 8,
156+
border: `1px solid ${theme.palette.divider}`,
157+
fontSize: 14,
158+
padding: "12px 18px",
159+
width: 310,
160+
}}
185161
>
186162
<div css={{ lineHeight: "160%" }}>
187163
<h4 css={{ fontWeight: 500, margin: 0 }}>{provisioner.name}</h4>
@@ -216,16 +192,7 @@ export const ProvisionerGroup: FC<ProvisionerGroupProps> = ({
216192
color: theme.palette.text.secondary,
217193
}}
218194
>
219-
{warningCount > 0 ? (
220-
<span>
221-
{warningCount === 1 ? "1 warning" : `${warningCount} warnings`} from{" "}
222-
{warningProvisionerCount === 1
223-
? "1 provisioner"
224-
: `${warningProvisionerCount} provisioners`}
225-
</span>
226-
) : (
227-
<span>No warnings from {provisionerCount}</span>
228-
)}
195+
<span>No warnings from {provisionerCount}</span>
229196
<Button
230197
variant="text"
231198
css={{

site/src/pages/ManagementSettingsPage/OrganizationProvisionersPage.tsx

+16-4
Original file line numberDiff line numberDiff line change
@@ -18,22 +18,34 @@ import {
1818
type ProvisionersByGroup,
1919
} from "./OrganizationProvisionersPageView";
2020

21+
const ProvisionerKeyIDBuiltIn = "00000000-0000-0000-0000-000000000001";
22+
const ProvisionerKeyIDUserAuth = "00000000-0000-0000-0000-000000000002";
23+
const ProvisionerKeyIDPSK = "00000000-0000-0000-0000-000000000003";
24+
2125
function groupProvisioners(
2226
provisioners: readonly ProvisionerDaemon[],
2327
): ProvisionersByGroup {
24-
const groups: ProvisionersByGroup = { builtin: [], psk: [], keys: new Map() };
25-
const type = "builtin";
28+
const groups: ProvisionersByGroup = {
29+
builtin: [],
30+
psk: [],
31+
userAuth: [],
32+
keys: new Map(),
33+
};
2634
const keyName = "TODO";
2735

2836
for (const it of provisioners) {
29-
if (type === "builtin") {
37+
if (it.key_id === ProvisionerKeyIDBuiltIn) {
3038
groups.builtin.push(it);
3139
continue;
3240
}
33-
if (type === "psk") {
41+
if (it.key_id === ProvisionerKeyIDPSK) {
3442
groups.psk.push(it);
3543
continue;
3644
}
45+
if (it.key_id === ProvisionerKeyIDUserAuth) {
46+
groups.userAuth.push(it);
47+
continue;
48+
}
3749

3850
const keyGroup = groups.keys.get(keyName) ?? [];
3951
if (!groups.keys.has(keyName)) {

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

+1
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ export const Provisioners: Story = {
2424
provisioners: {
2525
builtin: [MockProvisioner, MockProvisioner2],
2626
psk: [MockProvisioner, MockUserProvisioner, MockProvisionerWithTags],
27+
userAuth: [],
2728
keys: new Map([
2829
[
2930
"ケイラ",

site/src/pages/ManagementSettingsPage/OrganizationProvisionersPageView.tsx

+5-12
Original file line numberDiff line numberDiff line change
@@ -1,24 +1,17 @@
11
import OpenInNewIcon from "@mui/icons-material/OpenInNew";
22
import Button from "@mui/material/Button";
3-
import type {
4-
BuildInfoResponse,
5-
HealthMessage,
6-
ProvisionerDaemon,
7-
} from "api/typesGenerated";
3+
import type { BuildInfoResponse, ProvisionerDaemon } from "api/typesGenerated";
84
import { PageHeader, PageHeaderTitle } from "components/PageHeader/PageHeader";
95
import { Stack } from "components/Stack/Stack";
106
import { ProvisionerGroup } from "modules/provisioners/ProvisionerGroup";
117
import type { FC } from "react";
128
import { docs } from "utils/docs";
139

14-
export interface ProvisionerDaemonWithWarnings extends ProvisionerDaemon {
15-
readonly warnings?: readonly HealthMessage[];
16-
}
17-
1810
export interface ProvisionersByGroup {
19-
builtin: ProvisionerDaemonWithWarnings[];
20-
psk: ProvisionerDaemonWithWarnings[];
21-
keys: Map<string, ProvisionerDaemonWithWarnings[]>;
11+
builtin: ProvisionerDaemon[];
12+
psk: ProvisionerDaemon[];
13+
userAuth: ProvisionerDaemon[];
14+
keys: Map<string, ProvisionerDaemon[]>;
2215
}
2316

2417
interface OrganizationProvisionersPageViewProps {

site/src/testHelpers/entities.ts

+25
Original file line numberDiff line numberDiff line change
@@ -578,6 +578,7 @@ export const MockProvisionerKey: TypesGen.ProvisionerKey = {
578578
export const MockProvisioner: TypesGen.ProvisionerDaemon = {
579579
created_at: "2022-05-17T17:39:01.382927298Z",
580580
id: "test-provisioner",
581+
key_id: "00000000-0000-0000-0000-000000000001",
581582
organization_id: MockOrganization.id,
582583
name: "Test Provisioner",
583584
provisioners: ["echo"],
@@ -587,6 +588,30 @@ export const MockProvisioner: TypesGen.ProvisionerDaemon = {
587588
last_seen_at: new Date().toISOString(),
588589
};
589590

591+
export const MockUserAuthProvisioner: TypesGen.ProvisionerDaemon = {
592+
...MockProvisioner,
593+
id: "test-user-auth-provisioner",
594+
key_id: "00000000-0000-0000-0000-000000000002",
595+
name: `${MockUser.name}'s provisioner`,
596+
tags: { scope: "user" },
597+
};
598+
599+
export const MockPskProvisioner: TypesGen.ProvisionerDaemon = {
600+
...MockProvisioner,
601+
id: "test-psk-provisioner",
602+
key_id: "00000000-0000-0000-0000-000000000003",
603+
name: "Test psk provisioner",
604+
};
605+
606+
export const MockKeyProvisioner: TypesGen.ProvisionerDaemon = {
607+
...MockProvisioner,
608+
id: "test-key-provisioner",
609+
key_id: MockProvisionerKey.id,
610+
organization_id: MockProvisionerKey.organization,
611+
name: "Test key provisioner",
612+
tags: MockProvisionerKey.tags,
613+
};
614+
590615
export const MockProvisioner2: TypesGen.ProvisionerDaemon = {
591616
...MockProvisioner,
592617
id: "test-provisioner-2",

0 commit comments

Comments
 (0)