@@ -24,7 +24,7 @@ import (
2424const (
2525 composerEnvironmentEnvVariablesRegexp = "[a-zA-Z_][a-zA-Z0-9_]*."
2626 composerEnvironmentReservedAirflowEnvVarRegexp = "AIRFLOW__[A-Z0-9_]+__[A-Z0-9_]+"
27- composerEnvironmentVersionRegexp = `composer-(([0-9]+)(\.[0-9]+\.[0-9]+(-preview\.[0-9]+)?)?|latest)-airflow-(([0-9]+)((\.[0-9]+)(\.[0-9]+)?)?)`
27+ composerEnvironmentVersionRegexp = `composer-(([0-9]+)(\.[0-9]+\.[0-9]+(-preview\.[0-9]+)?)?|latest)-airflow-(([0-9]+)((\.[0-9]+)(\.[0-9]+)?)?(-build\.[0-9]+)? )`
2828)
2929
3030var composerEnvironmentReservedEnvVar = map [string ]struct {}{
@@ -2766,7 +2766,7 @@ func composerImageVersionDiffSuppress(_, old, new string, _ *schema.ResourceData
27662766 versionRe := regexp .MustCompile (composerEnvironmentVersionRegexp )
27672767 oldVersions := versionRe .FindStringSubmatch (old )
27682768 newVersions := versionRe .FindStringSubmatch (new )
2769- if oldVersions == nil || len (oldVersions ) < 10 {
2769+ if oldVersions == nil || len (oldVersions ) < 11 {
27702770 // Somehow one of the versions didn't match the regexp or didn't
27712771 // have values in the capturing groups. In that case, fall back to
27722772 // an equality check.
@@ -2775,7 +2775,7 @@ func composerImageVersionDiffSuppress(_, old, new string, _ *schema.ResourceData
27752775 }
27762776 return old == new
27772777 }
2778- if newVersions == nil || len (newVersions ) < 10 {
2778+ if newVersions == nil || len (newVersions ) < 11 {
27792779 // Somehow one of the versions didn't match the regexp or didn't
27802780 // have values in the capturing groups. In that case, fall back to
27812781 // an equality check.
@@ -2788,9 +2788,11 @@ func composerImageVersionDiffSuppress(_, old, new string, _ *schema.ResourceData
27882788 oldAirflow := oldVersions [5 ]
27892789 oldAirflowMajor := oldVersions [6 ]
27902790 oldAirflowMajorMinor := oldVersions [6 ] + oldVersions [8 ]
2791+ oldAirflowMajorMinorPatch := oldVersions [6 ] + oldVersions [8 ] + oldVersions [9 ]
27912792 newAirflow := newVersions [5 ]
27922793 newAirflowMajor := newVersions [6 ]
27932794 newAirflowMajorMinor := newVersions [6 ] + newVersions [8 ]
2795+ newAirflowMajorMinorPatch := newVersions [6 ] + newVersions [8 ] + newVersions [9 ]
27942796 // Check Airflow versions.
27952797 if oldAirflow == oldAirflowMajor || newAirflow == newAirflowMajor {
27962798 // If one of the Airflow versions specifies only major version
@@ -2812,8 +2814,18 @@ func composerImageVersionDiffSuppress(_, old, new string, _ *schema.ResourceData
28122814 if ! eq {
28132815 return false
28142816 }
2817+ } else if oldAirflow == oldAirflowMajorMinorPatch || newAirflow == newAirflowMajorMinorPatch {
2818+ // If one of the Airflow versions specifies only major, minor and patch version
2819+ // (like 1.10.15), we can only compare major, minor and patch versions.
2820+ eq , err := versionsEqual (oldAirflowMajorMinorPatch , newAirflowMajorMinorPatch )
2821+ if err != nil {
2822+ log .Printf ("[WARN] Could not parse airflow version, %s" , err )
2823+ }
2824+ if ! eq {
2825+ return false
2826+ }
28152827 } else {
2816- // Otherwise, we compare the full Airflow versions (like 1.10.15).
2828+ // Otherwise, we compare the full Airflow versions (like 1.10.15-build.5 ).
28172829 eq , err := versionsEqual (oldAirflow , newAirflow )
28182830 if err != nil {
28192831 log .Printf ("[WARN] Could not parse airflow version, %s" , err )
0 commit comments