Skip to content

Commit 772a0aa

Browse files
committed
Send right variable values
1 parent ea9690c commit 772a0aa

File tree

2 files changed

+42
-11
lines changed

2 files changed

+42
-11
lines changed

site/src/pages/CreateTemplatePage/VariableInput.tsx

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,10 @@ const VariableLabel: React.FC<{ variable: TemplateVersionVariable }> = ({
1818

1919
return (
2020
<label htmlFor={variable.name}>
21-
<span className={styles.labelName}>var.{variable.name}</span>
21+
<span className={styles.labelName}>
22+
var.{variable.name}
23+
{!variable.required && " (optional)"}
24+
</span>
2225
<span className={styles.labelDescription}>{variable.description}</span>
2326
</label>
2427
)
@@ -91,12 +94,20 @@ const VariableField: React.FC<VariableInputProps> = ({
9194
size="small"
9295
disabled={disabled}
9396
placeholder={variable.sensitive ? "" : variable.default_value}
97+
required={variable.required}
9498
defaultValue={
9599
variable.sensitive ? "" : defaultValue ?? variable.default_value
96100
}
97101
onChange={(event) => {
98102
onChange(event.target.value)
99103
}}
104+
type={
105+
variable.type === "number"
106+
? "number"
107+
: variable.sensitive
108+
? "password"
109+
: "string"
110+
}
100111
/>
101112
)
102113
}

site/src/xServices/createTemplate/createTemplateXService.ts

Lines changed: 30 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -95,7 +95,7 @@ export const createTemplateMachine =
9595
checkParametersAndVariables: {
9696
data: {
9797
parameters?: ParameterSchema[]
98-
variables: TemplateVersionVariable[]
98+
variables?: TemplateVersionVariable[]
9999
}
100100
}
101101
createTemplate: {
@@ -216,6 +216,7 @@ export const createTemplateMachine =
216216
actions: ["assignError"],
217217
},
218218
},
219+
tags: ["submitting"],
219220
},
220221
promptParametersAndVariables: {
221222
on: {
@@ -348,6 +349,7 @@ export const createTemplateMachine =
348349
file_id: version.job.file_id,
349350
provisioner: "terraform",
350351
parameter_values: parameterValues,
352+
user_variable_values: templateData.user_variable_values,
351353
tags: {},
352354
})
353355
},
@@ -373,18 +375,27 @@ export const createTemplateMachine =
373375
throw new Error("Version not defined")
374376
}
375377

378+
let promiseParameter: Promise<ParameterSchema[]> | undefined =
379+
undefined
380+
let promiseVariables: Promise<TemplateVersionVariable[]> | undefined =
381+
undefined
382+
376383
if (isMissingParameter(version)) {
377-
const [parameters, variables] = await Promise.all([
378-
getTemplateVersionSchema(version.id),
379-
getTemplateVersionVariables(version.id),
380-
])
384+
promiseParameter = getTemplateVersionSchema(version.id)
385+
}
381386

382-
return { parameters, variables }
387+
if (isMissingVariables(version)) {
388+
promiseVariables = getTemplateVersionVariables(version.id)
383389
}
384390

391+
const [parameters, variables] = await Promise.all([
392+
promiseParameter,
393+
promiseVariables,
394+
])
395+
385396
return {
386-
parameters: undefined,
387-
variables: await getTemplateVersionVariables(version.id),
397+
parameters,
398+
variables,
388399
}
389400
},
390401
createTemplate: async ({ organizationId, version, templateData }) => {
@@ -445,10 +456,12 @@ export const createTemplateMachine =
445456
hasFile: ({ file }) => Boolean(file),
446457
hasFailed: (_, { data }) =>
447458
Boolean(
448-
data.job.status === "failed" && !isMissingParameter(data), // This should not be considered as a "hard" failure
459+
data.job.status === "failed" &&
460+
!isMissingParameter(data) &&
461+
!isMissingVariables(data),
449462
),
450463
hasNoParametersOrVariables: (_, { data }) =>
451-
data.parameters === undefined && data.variables.length === 0,
464+
data.parameters === undefined && data.variables === undefined,
452465
},
453466
},
454467
)
@@ -458,3 +471,10 @@ const isMissingParameter = (version: TemplateVersion) => {
458471
version.job.error && version.job.error.includes("missing parameter"),
459472
)
460473
}
474+
475+
const isMissingVariables = (version: TemplateVersion) => {
476+
return Boolean(
477+
version.job.error &&
478+
version.job.error.includes("required template variables"),
479+
)
480+
}

0 commit comments

Comments
 (0)