@@ -95,7 +95,7 @@ export const createTemplateMachine =
95
95
checkParametersAndVariables : {
96
96
data : {
97
97
parameters ?: ParameterSchema [ ]
98
- variables : TemplateVersionVariable [ ]
98
+ variables ? : TemplateVersionVariable [ ]
99
99
}
100
100
}
101
101
createTemplate : {
@@ -216,6 +216,7 @@ export const createTemplateMachine =
216
216
actions : [ "assignError" ] ,
217
217
} ,
218
218
} ,
219
+ tags : [ "submitting" ] ,
219
220
} ,
220
221
promptParametersAndVariables : {
221
222
on : {
@@ -348,6 +349,7 @@ export const createTemplateMachine =
348
349
file_id : version . job . file_id ,
349
350
provisioner : "terraform" ,
350
351
parameter_values : parameterValues ,
352
+ user_variable_values : templateData . user_variable_values ,
351
353
tags : { } ,
352
354
} )
353
355
} ,
@@ -373,18 +375,27 @@ export const createTemplateMachine =
373
375
throw new Error ( "Version not defined" )
374
376
}
375
377
378
+ let promiseParameter : Promise < ParameterSchema [ ] > | undefined =
379
+ undefined
380
+ let promiseVariables : Promise < TemplateVersionVariable [ ] > | undefined =
381
+ undefined
382
+
376
383
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
+ }
381
386
382
- return { parameters, variables }
387
+ if ( isMissingVariables ( version ) ) {
388
+ promiseVariables = getTemplateVersionVariables ( version . id )
383
389
}
384
390
391
+ const [ parameters , variables ] = await Promise . all ( [
392
+ promiseParameter ,
393
+ promiseVariables ,
394
+ ] )
395
+
385
396
return {
386
- parameters : undefined ,
387
- variables : await getTemplateVersionVariables ( version . id ) ,
397
+ parameters,
398
+ variables,
388
399
}
389
400
} ,
390
401
createTemplate : async ( { organizationId, version, templateData } ) => {
@@ -445,10 +456,12 @@ export const createTemplateMachine =
445
456
hasFile : ( { file } ) => Boolean ( file ) ,
446
457
hasFailed : ( _ , { data } ) =>
447
458
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 ) ,
449
462
) ,
450
463
hasNoParametersOrVariables : ( _ , { data } ) =>
451
- data . parameters === undefined && data . variables . length === 0 ,
464
+ data . parameters === undefined && data . variables === undefined ,
452
465
} ,
453
466
} ,
454
467
)
@@ -458,3 +471,10 @@ const isMissingParameter = (version: TemplateVersion) => {
458
471
version . job . error && version . job . error . includes ( "missing parameter" ) ,
459
472
)
460
473
}
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