@@ -623,6 +623,11 @@ func (b *Builder) getParameters() (names, values []string, err error) {
623
623
return nil ,nil ,BuildError {http .StatusBadRequest ,"Unable to build workspace with unsupported parameters" ,err }
624
624
}
625
625
626
+ lastBuildParameterValues := db2sdk .WorkspaceBuildParameters (lastBuildParameters )
627
+ resolver := codersdk.ParameterResolver {
628
+ Rich :lastBuildParameterValues ,
629
+ }
630
+
626
631
// Dynamic parameters skip all parameter validation.
627
632
// Deleting a workspace also should skip parameter validation.
628
633
// Pass the user's input as is.
@@ -632,19 +637,33 @@ func (b *Builder) getParameters() (names, values []string, err error) {
632
637
// conditional parameter existence, the static frame of reference
633
638
// is not sufficient. So assume the user is correct, or pull in the
634
639
// dynamic param code to find the actual parameters.
640
+ latestValues := make (map [string ]string )
641
+ for _ ,latest := range b .richParameterValues {
642
+ latestValues [latest .Name ]= latest .Value
643
+ }
644
+
645
+ // Merge the inputs with values from the previous build.
646
+ for _ ,last := range lastBuildParameterValues {
647
+ // TODO: Ideally we use the resolver here and look at parameter
648
+ // fields such as 'ephemeral'. This requires loading the terraform
649
+ // files. For now, just send the previous inputs as is.
650
+ if _ ,exists := latestValues [last .Name ];exists {
651
+ continue
652
+ }
653
+ names = append (names ,last .Name )
654
+ values = append (values ,last .Value )
655
+ }
656
+
635
657
for _ ,value := range b .richParameterValues {
636
658
names = append (names ,value .Name )
637
659
values = append (values ,value .Value )
638
660
}
661
+
639
662
b .parameterNames = & names
640
663
b .parameterValues = & values
641
664
return names ,values ,nil
642
665
}
643
666
644
- resolver := codersdk.ParameterResolver {
645
- Rich :db2sdk .WorkspaceBuildParameters (lastBuildParameters ),
646
- }
647
-
648
667
for _ ,templateVersionParameter := range templateVersionParameters {
649
668
tvp ,err := db2sdk .TemplateVersionParameter (templateVersionParameter )
650
669
if err != nil {