Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit533d655

Browse files
f0sselbpmctaslilac
authored
feat: show user-auth provisioners (#14883)
Closes#14867What this changes:- Displays `user-auth` grouped provisioners- Added tags to provisioners in cases where it matters<img width="1378" alt="image"src="https://github.com/user-attachments/assets/ecc8da0a-24b4-469d-99e7-aa1f183046b7">---------Co-authored-by: Ben Potter <ben@coder.com>Co-authored-by: McKayla Washburn <mckayla@hey.com>
1 parent21b92ef commit533d655

File tree

5 files changed

+61
-30
lines changed

5 files changed

+61
-30
lines changed

‎enterprise/coderd/provisionerkeys.go

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -147,9 +147,13 @@ func (api *API) provisionerKeyDaemons(rw http.ResponseWriter, r *http.Request) {
147147

148148
pkDaemons:= []codersdk.ProvisionerKeyDaemons{}
149149
for_,key:=rangesdkKeys {
150-
// currently we exclude user-auth from this list
150+
// The key.OrganizationID for the `user-auth` key is hardcoded to
151+
// the default org in the database and we are overwriting it here
152+
// to be the correct org we used to query the list.
153+
// This will be changed when we update the `user-auth` keys to be
154+
// directly tied to a user ID.
151155
ifkey.ID.String()==codersdk.ProvisionerKeyIDUserAuth {
152-
continue
156+
key.OrganizationID=organization.ID
153157
}
154158
daemons:= []codersdk.ProvisionerDaemon{}
155159
for_,daemon:=rangerecentDaemons {

‎site/src/modules/provisioners/ProvisionerGroup.tsx

Lines changed: 32 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ import { createDayString } from "utils/createDayString";
2727
import{docs}from"utils/docs";
2828
import{ProvisionerTag}from"./ProvisionerTag";
2929

30-
typeProvisionerGroupType="builtin"|"psk"|"key";
30+
typeProvisionerGroupType="builtin"|"userAuth"|"psk"|"key";
3131

3232
interfaceProvisionerGroupProps{
3333
readonlybuildInfo:BuildInfoResponse;
@@ -103,7 +103,8 @@ export const ProvisionerGroup: FC<ProvisionerGroupProps> = ({
103103
:`${provisionersWithWarnings} provisioners`;
104104

105105
consthasMultipleTagVariants=
106-
type==="psk"&&provisioners.some((it)=>!isSimpleTagSet(it.tags));
106+
(type==="psk"||type==="userAuth")&&
107+
provisioners.some((it)=>!isSimpleTagSet(it.tags));
107108

108109
return(
109110
<div
@@ -143,6 +144,8 @@ export const ProvisionerGroup: FC<ProvisionerGroupProps> = ({
143144
</>
144145
)}
145146

147+
{type==="userAuth"&&<UserAuthProvisionerTitle/>}
148+
146149
{type==="psk"&&<PskProvisionerTitle/>}
147150
{type==="key"&&(
148151
<h4css={styles.groupTitle}>Key group &ndash;{keyName}</h4>
@@ -249,7 +252,7 @@ export const ProvisionerGroup: FC<ProvisionerGroupProps> = ({
249252
</span>
250253
</div>
251254
{hasMultipleTagVariants&&(
252-
<PskProvisionerTagstags={provisioner.tags}/>
255+
<InlineProvisionerTagstags={provisioner.tags}/>
253256
)}
254257
</Stack>
255258
</div>
@@ -335,11 +338,11 @@ const ProvisionerVersionPopover: FC<ProvisionerVersionPopoverProps> = ({
335338
);
336339
};
337340

338-
interfacePskProvisionerTagsProps{
341+
interfaceInlineProvisionerTagsProps{
339342
tags:Record<string,string>;
340343
}
341344

342-
constPskProvisionerTags:FC<PskProvisionerTagsProps>=({ tags})=>{
345+
constInlineProvisionerTags:FC<InlineProvisionerTagsProps>=({ tags})=>{
343346
constdaemonScope=tags.scope||"organization";
344347
consticonScope=
345348
daemonScope==="organization" ?<BusinessIcon/> :<PersonIcon/>;
@@ -413,6 +416,30 @@ const BuiltinProvisionerTitle: FC = () => {
413416
);
414417
};
415418

419+
constUserAuthProvisionerTitle:FC=()=>{
420+
return(
421+
<h4css={styles.groupTitle}>
422+
<Stackdirection="row"alignItems="end"spacing={1}>
423+
<span>User-authenticated provisioners</span>
424+
<HelpTooltip>
425+
<HelpTooltipTrigger/>
426+
<HelpTooltipContent>
427+
<HelpTooltipTitle>User-authenticated provisioners</HelpTooltipTitle>
428+
<HelpTooltipText>
429+
These provisioners are connected by users using the{" "}
430+
<code>coder</code> CLI, and are authorized by the users
431+
credentials. They can be tagged to only run provisioner jobs for
432+
that user. User-authenticated provisioners are only available for
433+
the default organization.{" "}
434+
<Linkhref={docs("/")}>Learn more&hellip;</Link>
435+
</HelpTooltipText>
436+
</HelpTooltipContent>
437+
</HelpTooltip>
438+
</Stack>
439+
</h4>
440+
);
441+
};
442+
416443
constPskProvisionerTitle:FC=()=>{
417444
return(
418445
<h4css={styles.groupTitle}>

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

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ import {
77
MockProvisionerBuiltinKey,
88
MockProvisionerKey,
99
MockProvisionerPskKey,
10+
MockProvisionerUserAuthKey,
1011
MockProvisionerWithTags,
1112
MockUserProvisioner,
1213
mockApiError,
@@ -79,6 +80,17 @@ export const Provisioners: Story = {
7980
name:`ケイラ-${i}`,
8081
})),
8182
},
83+
{
84+
key:MockProvisionerUserAuthKey,
85+
daemons:[
86+
MockUserProvisioner,
87+
{
88+
...MockUserProvisioner,
89+
id:"mock-user-provisioner-2",
90+
name:"Test User Provisioner 2",
91+
},
92+
],
93+
},
8294
],
8395
},
8496
play:async({ step})=>{

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

Lines changed: 10 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -110,28 +110,16 @@ const ViewContent: FC<ViewContentProps> = ({ buildInfo, provisioners }) => {
110110
</div>
111111
)}
112112
<Stackspacing={4.5}>
113-
{provisioners.map((group)=>{
114-
consttype=getGroupType(group.key);
115-
116-
// We intentionally hide user-authenticated provisioners for now
117-
// because there are 1. some grouping issues on the backend and 2. we
118-
// should ideally group them by the user who authenticated them, and
119-
// not just lump them all together.
120-
if(type==="userAuth"){
121-
returnnull;
122-
}
123-
124-
return(
125-
<ProvisionerGroup
126-
key={group.key.id}
127-
buildInfo={buildInfo}
128-
keyName={group.key.name}
129-
keyTags={group.key.tags}
130-
type={type}
131-
provisioners={group.daemons}
132-
/>
133-
);
134-
})}
113+
{provisioners.map((group)=>(
114+
<ProvisionerGroup
115+
key={group.key.id}
116+
buildInfo={buildInfo}
117+
keyName={group.key.name}
118+
keyTags={group.key.tags}
119+
type={getGroupType(group.key)}
120+
provisioners={group.daemons}
121+
/>
122+
))}
135123
</Stack>
136124
</>
137125
);

‎site/src/testHelpers/entities.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -610,7 +610,7 @@ export const MockProvisioner2: TypesGen.ProvisionerDaemon = {
610610
};
611611

612612
exportconstMockUserProvisioner:TypesGen.ProvisionerDaemon={
613-
...MockProvisioner,
613+
...MockUserAuthProvisioner,
614614
id:"test-user-provisioner",
615615
name:"Test User Provisioner",
616616
tags:{scope:"user",owner:"12345678-abcd-1234-abcd-1234567890abcd"},

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp