Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit 67db36b

Browse files
authored
feat: Add form to modify managed Template variables (#6257)
1 parent 8cf292f commit 67db36b

19 files changed

+1303
-16
lines changed

coderd/apidoc/docs.go

+70-1
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

coderd/apidoc/swagger.json

+58-1
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

coderd/templateversions.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -1179,7 +1179,7 @@ func (api *API) patchActiveTemplateVersion(rw http.ResponseWriter, r *http.Reque
11791179
// @Produce json
11801180
// @Tags Templates
11811181
// @Param organization path string true "Organization ID" format(uuid)
1182-
// @Param request body codersdk.CreateTemplateVersionDryRunRequest true "Create template version request"
1182+
// @Param request body codersdk.CreateTemplateVersionRequest true "Create template version request"
11831183
// @Success 201 {object} codersdk.TemplateVersion
11841184
// @Router /organizations/{organization}/templateversions [post]
11851185
func (api *API) postTemplateVersionsByOrganization(rw http.ResponseWriter, r *http.Request) {

docs/api/schemas.md

+69
Original file line numberDiff line numberDiff line change
@@ -1027,6 +1027,61 @@ CreateParameterRequest is a structure used to create a new parameter value for a
10271027
| `user_variable_values` | array of [codersdk.VariableValue](#codersdkvariablevalue) | false | | |
10281028
| `workspace_name` | string | false | | |
10291029

1030+
## codersdk.CreateTemplateVersionRequest
1031+
1032+
```json
1033+
{
1034+
"example_id": "string",
1035+
"file_id": "8a0cfb4f-ddc9-436d-91bb-75133c583767",
1036+
"name": "string",
1037+
"parameter_values": [
1038+
{
1039+
"copy_from_parameter": "000e07d6-021d-446c-be14-48a9c20bca0b",
1040+
"destination_scheme": "none",
1041+
"name": "string",
1042+
"source_scheme": "none",
1043+
"source_value": "string"
1044+
}
1045+
],
1046+
"provisioner": "terraform",
1047+
"storage_method": "file",
1048+
"tags": {
1049+
"property1": "string",
1050+
"property2": "string"
1051+
},
1052+
"template_id": "c6d67e98-83ea-49f0-8812-e4abae2b68bc",
1053+
"user_variable_values": [
1054+
{
1055+
"name": "string",
1056+
"value": "string"
1057+
}
1058+
]
1059+
}
1060+
```
1061+
1062+
### Properties
1063+
1064+
| Name | Type | Required | Restrictions | Description |
1065+
| ---------------------- | --------------------------------------------------------------------------- | -------- | ------------ | ---------------------------------------------------------------------------------------------------- |
1066+
| `example_id` | string | false | | |
1067+
| `file_id` | string | false | | |
1068+
| `name` | string | false | | |
1069+
| `parameter_values` | array of [codersdk.CreateParameterRequest](#codersdkcreateparameterrequest) | false | | Parameter values allows for additional parameters to be provided during the dry-run provision stage. |
1070+
| `provisioner` | string | true | | |
1071+
| `storage_method` | [codersdk.ProvisionerStorageMethod](#codersdkprovisionerstoragemethod) | true | | |
1072+
| `tags` | object | false | | |
1073+
| » `[any property]` | string | false | | |
1074+
| `template_id` | string | false | | Template ID optionally associates a version with a template. |
1075+
| `user_variable_values` | array of [codersdk.VariableValue](#codersdkvariablevalue) | false | | |
1076+
1077+
#### Enumerated Values
1078+
1079+
| Property | Value |
1080+
| ---------------- | ----------- |
1081+
| `provisioner` | `terraform` |
1082+
| `provisioner` | `echo` |
1083+
| `storage_method` | `file` |
1084+
10301085
## codersdk.CreateTestAuditLogRequest
10311086

10321087
```json
@@ -4076,6 +4131,20 @@ Parameter represents a set value for the scope.
40764131
| `canceled` |
40774132
| `failed` |
40784133

4134+
## codersdk.ProvisionerStorageMethod
4135+
4136+
```json
4137+
"file"
4138+
```
4139+
4140+
### Properties
4141+
4142+
#### Enumerated Values
4143+
4144+
| Value |
4145+
| ------ |
4146+
| `file` |
4147+
40794148
## codersdk.PutExtendWorkspaceRequest
40804149

40814150
```json

docs/api/templates.md

+15-12
Original file line numberDiff line numberDiff line change
@@ -545,6 +545,9 @@ curl -X POST http://coder-server:8080/api/v2/organizations/{organization}/templa
545545
546546
```json
547547
{
548+
"example_id": "string",
549+
"file_id": "8a0cfb4f-ddc9-436d-91bb-75133c583767",
550+
"name": "string",
548551
"parameter_values": [
549552
{
550553
"copy_from_parameter": "000e07d6-021d-446c-be14-48a9c20bca0b",
@@ -554,28 +557,28 @@ curl -X POST http://coder-server:8080/api/v2/organizations/{organization}/templa
554557
"source_value": "string"
555558
}
556559
],
557-
"rich_parameter_values": [
558-
{
559-
"name": "string",
560-
"value": "string"
561-
}
562-
],
560+
"provisioner": "terraform",
561+
"storage_method": "file",
562+
"tags": {
563+
"property1": "string",
564+
"property2": "string"
565+
},
566+
"template_id": "c6d67e98-83ea-49f0-8812-e4abae2b68bc",
563567
"user_variable_values": [
564568
{
565569
"name": "string",
566570
"value": "string"
567571
}
568-
],
569-
"workspace_name": "string"
572+
]
570573
}
571574
```
572575

573576
### Parameters
574577

575-
| Name | In | Type | Required | Description |
576-
| -------------- | ---- | ---------------------------------------------------------------------------------------------------- | -------- | ------------------------------- |
577-
| `organization` | path | string(uuid) | true | Organization ID |
578-
| `body` | body | [codersdk.CreateTemplateVersionDryRunRequest](schemas.md#codersdkcreatetemplateversiondryrunrequest) | true | Create template version request |
578+
| Name | In | Type | Required | Description |
579+
| -------------- | ---- | ---------------------------------------------------------------------------------------- | -------- | ------------------------------- |
580+
| `organization` | path | string(uuid) | true | Organization ID |
581+
| `body` | body | [codersdk.CreateTemplateVersionRequest](schemas.md#codersdkcreatetemplateversionrequest) | true | Create template version request |
579582

580583
### Example responses
581584

site/src/AppRouter.tsx

+4
Original file line numberDiff line numberDiff line change
@@ -123,6 +123,9 @@ const StarterTemplatePage = lazy(
123123
const CreateTemplatePage = lazy(
124124
() => import("./pages/CreateTemplatePage/CreateTemplatePage"),
125125
)
126+
const TemplateVariablesPage = lazy(
127+
() => import("./pages/TemplateVariablesPage/TemplateVariablesPage"),
128+
)
126129

127130
export const AppRouter: FC = () => {
128131
return (
@@ -160,6 +163,7 @@ export const AppRouter: FC = () => {
160163

161164
<Route path="workspace" element={<CreateWorkspacePage />} />
162165
<Route path="settings" element={<TemplateSettingsPage />} />
166+
<Route path="variables" element={<TemplateVariablesPage />} />
163167
<Route path="versions">
164168
<Route path=":version">
165169
<Route index element={<TemplateVersionPage />} />

site/src/api/api.ts

+9
Original file line numberDiff line numberDiff line change
@@ -235,6 +235,15 @@ export const getTemplateVersionResources = async (
235235
return response.data
236236
}
237237

238+
export const getTemplateVersionVariables = async (
239+
versionId: string,
240+
): Promise<TypesGen.TemplateVersionVariable[]> => {
241+
const response = await axios.get<TypesGen.TemplateVersionVariable[]>(
242+
`/api/v2/templateversions/${versionId}/variables`,
243+
)
244+
return response.data
245+
}
246+
238247
export const getTemplateVersions = async (
239248
templateId: string,
240249
): Promise<TypesGen.TemplateVersion[]> => {

site/src/components/TemplateLayout/TemplatePageHeader.tsx

+16
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ import Button from "@material-ui/core/Button"
22
import DeleteOutlined from "@material-ui/icons/DeleteOutlined"
33
import AddCircleOutline from "@material-ui/icons/AddCircleOutline"
44
import SettingsOutlined from "@material-ui/icons/SettingsOutlined"
5+
import CodeOutlined from "@material-ui/icons/CodeOutlined"
56
import { AuthorizationResponse, Template } from "api/typesGenerated"
67
import { Avatar } from "components/Avatar/Avatar"
78
import { Maybe } from "components/Conditionals/Maybe"
@@ -19,6 +20,7 @@ import { Margins } from "components/Margins/Margins"
1920

2021
const Language = {
2122
editButton: "Edit",
23+
variablesButton: "Variables",
2224
settingsButton: "Settings",
2325
createButton: "Create workspace",
2426
deleteButton: "Delete",
@@ -37,6 +39,19 @@ const TemplateSettingsButton: FC<{ templateName: string }> = ({
3739
</Button>
3840
)
3941

42+
const TemplateVariablesButton: FC<{ templateName: string }> = ({
43+
templateName,
44+
}) => (
45+
<Button
46+
variant="outlined"
47+
component={RouterLink}
48+
to={`/templates/${templateName}/variables`}
49+
startIcon={<CodeOutlined />}
50+
>
51+
{Language.variablesButton}
52+
</Button>
53+
)
54+
4055
const CreateWorkspaceButton: FC<{
4156
templateName: string
4257
className?: string
@@ -80,6 +95,7 @@ export const TemplatePageHeader: FC<TemplatePageHeaderProps> = ({
8095
onClick={deleteTemplate.openDeleteConfirmation}
8196
/>
8297
<TemplateSettingsButton templateName={template.name} />
98+
<TemplateVariablesButton templateName={template.name} />
8399
</Maybe>
84100
<CreateWorkspaceButton templateName={template.name} />
85101
</>

0 commit comments

Comments
 (0)