@@ -19,6 +19,8 @@ import (
19
19
"github.com/hashicorp/nomad/jobspec2"
20
20
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource"
21
21
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
22
+ "golang.org/x/exp/maps"
23
+
22
24
"github.com/hashicorp/terraform-provider-nomad/nomad/helper"
23
25
)
24
26
@@ -665,21 +667,48 @@ func resourceJobRead(d *schema.ResourceData, meta interface{}) error {
665
667
sub , _ , err := client .Jobs ().Submission (* job .ID , int (* job .Version ), opts )
666
668
if err != nil {
667
669
log .Printf ("[WARN] failed to read job submission: %v" , err )
668
- } else if sub != nil {
669
- if sub .Source != "" {
670
- d .Set ("jobspec" , sub .Source )
670
+ } else {
671
+ err := resourceJobReadSubmission (sub , d , meta )
672
+ if err != nil {
673
+ log .Printf ("[WARN] failed to update job submission: %v" , err )
671
674
}
675
+ }
676
+
677
+ return nil
678
+ }
679
+
680
+ func resourceJobReadSubmission (sub * api.JobSubmission , d * schema.ResourceData , meta any ) error {
681
+ if sub == nil {
682
+ return nil
683
+ }
684
+
685
+ if sub .Source != "" {
686
+ d .Set ("jobspec" , sub .Source )
687
+ }
688
+
689
+ if sub .Format == "hcl2" {
690
+ var err error
691
+ var hcl2Config HCL2JobParserConfig
672
692
673
- // Update HCL2 variables if present.
674
693
hcl2 , ok := d .GetOk ("hcl2" )
675
- if sub . Format == "hcl2" && ok {
676
- hcl2Config , err : = parseHCL2JobParserConfig (hcl2 )
694
+ if ok {
695
+ hcl2Config , err = parseHCL2JobParserConfig (hcl2 )
677
696
if err != nil {
678
- log .Printf ("[WARN] failed to parse HCL2 config: %v" , err )
679
- } else {
680
- hcl2Config .Vars = sub .VariableFlags
681
- d .Set ("hcl2" , flattenHCL2JobParserConfig (hcl2Config ))
697
+ return fmt .Errorf ("failed to parse HCL2 config: %v" , err )
682
698
}
699
+ } else {
700
+ // Use default values if hcl2 is not set.
701
+ hcl2Config = HCL2JobParserConfig {
702
+ AllowFS : false ,
703
+ Enabled : true ,
704
+ }
705
+ }
706
+
707
+ // Only update hcl2 if there are changes to variables to avoid
708
+ // unnecessary updates if hcl2 is not set.
709
+ if ! maps .Equal (sub .VariableFlags , hcl2Config .Vars ) {
710
+ hcl2Config .Vars = sub .VariableFlags
711
+ d .Set ("hcl2" , flattenHCL2JobParserConfig (hcl2Config ))
683
712
}
684
713
}
685
714
0 commit comments