Skip to content

Commit 123b05e

Browse files
C3 version schema (#9986) (#7000)
* add support for build number in composerEnvironmentVersionRegexp and composerImageVersionDiffSuppress * make build number optional * regroup regex, cleaner comparison of versions * correction [upstream:580624e69b30b3a2fa911f092ff118787521a918] Signed-off-by: Modular Magician <[email protected]>
1 parent 7eb7543 commit 123b05e

File tree

2 files changed

+19
-4
lines changed

2 files changed

+19
-4
lines changed

.changelog/9986.txt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
```release-note:enhancement
2+
composer: support new version schema in composer 3
3+
```

google-beta/services/composer/resource_composer_environment.go

Lines changed: 16 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ import (
2424
const (
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

3030
var 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

Comments
 (0)