Skip to content

Commit de5fe65

Browse files
authored
Merge pull request #42435 from stefanfreitag/f-aws_sagemaker_mlflow_tracking_server-patchlevel
fix: normalize returned MLflow version
2 parents ceb3b40 + 438456c commit de5fe65

File tree

11 files changed

+169
-70
lines changed

11 files changed

+169
-70
lines changed

.changelog/42435.txt

+3
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
```release-note:bug
2+
aws_sagemaker_mlflow_tracking_server: Fix `ValidationException: The provided MLflow version is not supported` errors
3+
```

go.mod

+1-1
Original file line numberDiff line numberDiff line change
@@ -308,7 +308,6 @@ require (
308308
github.com/pquerna/otp v1.4.0
309309
github.com/shopspring/decimal v1.4.0
310310
golang.org/x/crypto v0.37.0
311-
golang.org/x/mod v0.24.0
312311
golang.org/x/text v0.24.0
313312
golang.org/x/tools v0.32.0
314313
gopkg.in/dnaeon/go-vcr.v3 v3.2.1
@@ -376,6 +375,7 @@ require (
376375
go.opentelemetry.io/otel v1.35.0 // indirect
377376
go.opentelemetry.io/otel/metric v1.35.0 // indirect
378377
go.opentelemetry.io/otel/trace v1.35.0 // indirect
378+
golang.org/x/mod v0.24.0 // indirect
379379
golang.org/x/net v0.39.0 // indirect
380380
golang.org/x/sync v0.13.0 // indirect
381381
golang.org/x/sys v0.32.0 // indirect

internal/semver/semver.go

+13
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,8 @@
44
package semver
55

66
import (
7+
"strconv"
8+
79
gversion "github.com/hashicorp/go-version"
810
)
911

@@ -31,6 +33,17 @@ func GreaterThanOrEqual(s1, s2 string) bool {
3133
return v1.GreaterThanOrEqual(v2)
3234
}
3335

36+
// MajorMinor returns the major and minor version string.
37+
func MajorMinor(s string) (string, error) {
38+
v, err := gversion.NewVersion(s)
39+
40+
if err != nil {
41+
return "", err
42+
}
43+
44+
return strconv.FormatInt(v.Segments64()[0], 10) + `.` + strconv.FormatInt(v.Segments64()[1], 10), nil
45+
}
46+
3447
func parseVersions(s1, s2 string) (*gversion.Version, *gversion.Version, error) {
3548
v1, err := gversion.NewVersion(s1)
3649

internal/semver/semver_test.go

+20
Original file line numberDiff line numberDiff line change
@@ -48,3 +48,23 @@ func TestSemVerGreaterThanOrEqual(t *testing.T) {
4848
}
4949
}
5050
}
51+
52+
func TestSemVerMajorMinor(t *testing.T) {
53+
t.Parallel()
54+
55+
for _, tc := range []struct {
56+
s1 string
57+
s2 string
58+
}{
59+
{"1.0", "1.0"},
60+
{"2.3.4", "2.3"},
61+
{"4", "4.0"},
62+
{"v5.6.7", "5.6"},
63+
{"bloop", ""},
64+
} {
65+
got, _ := MajorMinor(tc.s1)
66+
if got != tc.s2 {
67+
t.Fatalf("MajorMinor(%q) should be: %q", tc.s1, tc.s2)
68+
}
69+
}
70+
}

internal/service/mq/broker.go

+5-6
Original file line numberDiff line numberDiff line change
@@ -31,12 +31,12 @@ import (
3131
"github.com/hashicorp/terraform-provider-aws/internal/errs/sdkdiag"
3232
"github.com/hashicorp/terraform-provider-aws/internal/flex"
3333
"github.com/hashicorp/terraform-provider-aws/internal/sdkv2/types/nullable"
34+
"github.com/hashicorp/terraform-provider-aws/internal/semver"
3435
tftags "github.com/hashicorp/terraform-provider-aws/internal/tags"
3536
"github.com/hashicorp/terraform-provider-aws/internal/tfresource"
3637
"github.com/hashicorp/terraform-provider-aws/internal/verify"
3738
"github.com/hashicorp/terraform-provider-aws/names"
3839
"github.com/mitchellh/copystructure"
39-
"golang.org/x/mod/semver"
4040
)
4141

4242
// @SDKResource("aws_mq_broker", name="Broker")
@@ -929,9 +929,8 @@ func DiffBrokerUsers(bId string, oldUsers, newUsers []any) (cr []*mq.CreateUserI
929929
// version is returned unmodified.
930930
//
931931
// Ref: https://docs.aws.amazon.com/amazon-mq/latest/developer-guide/upgrading-brokers.html
932-
// func normalizeEngineVersion(output *mq.DescribeBrokerOutput) string {
933932
func normalizeEngineVersion(engineType string, engineVersion string, autoMinorVersionUpgrade bool) string {
934-
majorMinor := semver.MajorMinor("v" + engineVersion)
933+
majorMinor, _ := semver.MajorMinor(engineVersion)
935934

936935
// initial versions where `auto_minor_version_upgrade` triggers automatic
937936
// patch updates, and only the major/minor should be supplied to the update API
@@ -942,9 +941,9 @@ func normalizeEngineVersion(engineType string, engineVersion string, autoMinorVe
942941
return engineVersion
943942
}
944943

945-
if (strings.EqualFold(engineType, string(types.EngineTypeRabbitmq)) && semver.Compare(majorMinor, minRabbit) >= 0) ||
946-
(strings.EqualFold(engineType, string(types.EngineTypeActivemq)) && semver.Compare(majorMinor, minActive) >= 0) {
947-
return majorMinor[1:]
944+
if (strings.EqualFold(engineType, string(types.EngineTypeRabbitmq)) && semver.GreaterThanOrEqual(majorMinor, minRabbit)) ||
945+
(strings.EqualFold(engineType, string(types.EngineTypeActivemq)) && semver.GreaterThanOrEqual(majorMinor, minActive)) {
946+
return majorMinor
948947
}
949948

950949
return engineVersion

internal/service/mq/broker_data_source_test.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -93,7 +93,7 @@ resource "aws_mq_broker" "test" {
9393
deployment_mode = "ACTIVE_STANDBY_MULTI_AZ"
9494
engine_type = "ActiveMQ"
9595
engine_version = "5.17.6"
96-
host_instance_type = "mq.t2.micro"
96+
host_instance_type = "mq.t3.micro"
9797
9898
maintenance_window_start_time {
9999
day_of_week = "TUESDAY"

internal/service/mq/broker_test.go

+27-23
Original file line numberDiff line numberDiff line change
@@ -318,9 +318,9 @@ func TestNormalizeEngineVersion(t *testing.T) {
318318
}
319319

320320
const (
321-
testAccBrokerVersionNewer = "5.17.6" // before changing, check b/c must be valid on GovCloud
322-
testAccBrokerVersionOlder = "5.16.7" // before changing, check b/c must be valid on GovCloud
323-
testAccRabbitVersion = "3.11.20" // before changing, check b/c must be valid on GovCloud
321+
testAccBrokerVersionNewer = "5.17.6" // before changing, check b/c must be valid on GovCloud
322+
// testAccBrokerVersionOlder = "5.16.7" // before changing, check b/c must be valid on GovCloud
323+
testAccRabbitVersion = "3.11.20" // before changing, check b/c must be valid on GovCloud
324324

325325
testAccActiveVersionNormalized5_18 = "5.18"
326326
testAccRabbitVersionNormalized3_13 = "3.13"
@@ -362,7 +362,7 @@ func TestAccMQBroker_basic(t *testing.T) {
362362
resource.TestCheckResourceAttr(resourceName, "encryption_options.0.use_aws_owned_key", acctest.CtTrue),
363363
resource.TestCheckResourceAttr(resourceName, "engine_type", "ActiveMQ"),
364364
resource.TestCheckResourceAttr(resourceName, names.AttrEngineVersion, testAccBrokerVersionNewer),
365-
resource.TestCheckResourceAttr(resourceName, "host_instance_type", "mq.t2.micro"),
365+
resource.TestCheckResourceAttr(resourceName, "host_instance_type", "mq.t3.micro"),
366366
resource.TestCheckResourceAttr(resourceName, "instances.#", "1"),
367367
resource.TestMatchResourceAttr(resourceName, "instances.0.console_url",
368368
regexache.MustCompile(`^https://[0-9a-f-]+\.mq.[0-9a-z-]+.amazonaws.com:8162$`)),
@@ -651,7 +651,7 @@ func TestAccMQBroker_AllFields_defaultVPC(t *testing.T) {
651651
resource.TestCheckResourceAttr(resourceName, "engine_type", "ActiveMQ"),
652652
resource.TestCheckResourceAttr(resourceName, names.AttrEngineVersion, testAccBrokerVersionNewer),
653653
resource.TestCheckResourceAttr(resourceName, names.AttrStorageType, "efs"),
654-
resource.TestCheckResourceAttr(resourceName, "host_instance_type", "mq.t2.micro"),
654+
resource.TestCheckResourceAttr(resourceName, "host_instance_type", "mq.t3.micro"),
655655
resource.TestCheckResourceAttr(resourceName, "maintenance_window_start_time.#", "1"),
656656
resource.TestCheckResourceAttr(resourceName, "maintenance_window_start_time.0.day_of_week", "TUESDAY"),
657657
resource.TestCheckResourceAttr(resourceName, "maintenance_window_start_time.0.time_of_day", "02:00"),
@@ -780,7 +780,7 @@ func TestAccMQBroker_AllFields_customVPC(t *testing.T) {
780780
resource.TestCheckResourceAttr(resourceName, "engine_type", "ActiveMQ"),
781781
resource.TestCheckResourceAttr(resourceName, names.AttrEngineVersion, testAccBrokerVersionNewer),
782782
resource.TestCheckResourceAttr(resourceName, names.AttrStorageType, "efs"),
783-
resource.TestCheckResourceAttr(resourceName, "host_instance_type", "mq.t2.micro"),
783+
resource.TestCheckResourceAttr(resourceName, "host_instance_type", "mq.t3.micro"),
784784
resource.TestCheckResourceAttr(resourceName, "maintenance_window_start_time.#", "1"),
785785
resource.TestCheckResourceAttr(resourceName, "maintenance_window_start_time.0.day_of_week", "TUESDAY"),
786786
resource.TestCheckResourceAttr(resourceName, "maintenance_window_start_time.0.time_of_day", "02:00"),
@@ -1119,6 +1119,7 @@ func TestAccMQBroker_Update_securityGroup(t *testing.T) {
11191119
})
11201120
}
11211121

1122+
/*
11221123
func TestAccMQBroker_Update_engineVersion(t *testing.T) {
11231124
ctx := acctest.Context(t)
11241125
if testing.Short() {
@@ -1162,6 +1163,7 @@ func TestAccMQBroker_Update_engineVersion(t *testing.T) {
11621163
},
11631164
})
11641165
}
1166+
*/
11651167

11661168
func TestAccMQBroker_Update_hostInstanceType(t *testing.T) {
11671169
ctx := acctest.Context(t)
@@ -1184,10 +1186,10 @@ func TestAccMQBroker_Update_hostInstanceType(t *testing.T) {
11841186
CheckDestroy: testAccCheckBrokerDestroy(ctx),
11851187
Steps: []resource.TestStep{
11861188
{
1187-
Config: testAccBrokerConfig_instanceType(rName, testAccBrokerVersionNewer, "mq.t2.micro"),
1189+
Config: testAccBrokerConfig_instanceType(rName, testAccBrokerVersionNewer, "mq.t3.micro"),
11881190
Check: resource.ComposeTestCheckFunc(
11891191
testAccCheckBrokerExists(ctx, resourceName, &broker1),
1190-
resource.TestCheckResourceAttr(resourceName, "host_instance_type", "mq.t2.micro"),
1192+
resource.TestCheckResourceAttr(resourceName, "host_instance_type", "mq.t3.micro"),
11911193
),
11921194
},
11931195
{
@@ -1796,7 +1798,7 @@ resource "aws_mq_broker" "test" {
17961798
broker_name = %[1]q
17971799
engine_type = "ActiveMQ"
17981800
engine_version = %[2]q
1799-
host_instance_type = "mq.t2.micro"
1801+
host_instance_type = "mq.t3.micro"
18001802
security_groups = [aws_security_group.test.id]
18011803
authentication_strategy = "simple"
18021804
storage_type = "efs"
@@ -1827,7 +1829,7 @@ resource "aws_mq_broker" "test" {
18271829
broker_name = %[1]q
18281830
engine_type = "ActiveMQ"
18291831
engine_version = %[2]q
1830-
host_instance_type = "mq.t2.micro"
1832+
host_instance_type = "mq.t3.micro"
18311833
security_groups = [aws_security_group.test.id]
18321834
authentication_strategy = "simple"
18331835
storage_type = "efs"
@@ -1875,6 +1877,7 @@ resource "aws_mq_broker" "test" {
18751877
`, rName, version)
18761878
}
18771879

1880+
/*
18781881
func testAccBrokerConfig_engineVersionUpdate(rName, version string) string {
18791882
return fmt.Sprintf(`
18801883
resource "aws_security_group" "test" {
@@ -1890,7 +1893,7 @@ resource "aws_mq_broker" "test" {
18901893
apply_immediately = true
18911894
engine_type = "ActiveMQ"
18921895
engine_version = %[2]q
1893-
host_instance_type = "mq.t2.micro"
1896+
host_instance_type = "mq.t3.micro"
18941897
security_groups = [aws_security_group.test.id]
18951898
18961899
logs {
@@ -1904,6 +1907,7 @@ resource "aws_mq_broker" "test" {
19041907
}
19051908
`, rName, version)
19061909
}
1910+
*/
19071911

19081912
func testAccBrokerConfig_allFieldsDefaultVPC(rName, version, cfgName, cfgBody string) string {
19091913
return fmt.Sprintf(`
@@ -1941,7 +1945,7 @@ resource "aws_mq_broker" "test" {
19411945
engine_type = "ActiveMQ"
19421946
engine_version = %[2]q
19431947
storage_type = "efs"
1944-
host_instance_type = "mq.t2.micro"
1948+
host_instance_type = "mq.t3.micro"
19451949
19461950
maintenance_window_start_time {
19471951
day_of_week = "TUESDAY"
@@ -2036,7 +2040,7 @@ resource "aws_mq_broker" "test" {
20362040
engine_type = "ActiveMQ"
20372041
engine_version = %[2]q
20382042
storage_type = "efs"
2039-
host_instance_type = "mq.t2.micro"
2043+
host_instance_type = "mq.t3.micro"
20402044
20412045
logs {
20422046
general = true
@@ -2089,7 +2093,7 @@ resource "aws_mq_broker" "test" {
20892093
broker_name = %[1]q
20902094
engine_type = "ActiveMQ"
20912095
engine_version = %[2]q
2092-
host_instance_type = "mq.t2.micro"
2096+
host_instance_type = "mq.t3.micro"
20932097
security_groups = [aws_security_group.test.id]
20942098
20952099
encryption_options {
@@ -2123,7 +2127,7 @@ resource "aws_mq_broker" "test" {
21232127
broker_name = %[1]q
21242128
engine_type = "ActiveMQ"
21252129
engine_version = %[2]q
2126-
host_instance_type = "mq.t2.micro"
2130+
host_instance_type = "mq.t3.micro"
21272131
security_groups = [aws_security_group.test.id]
21282132
21292133
encryption_options {
@@ -2157,7 +2161,7 @@ resource "aws_mq_broker" "test" {
21572161
broker_name = %[1]q
21582162
engine_type = "ActiveMQ"
21592163
engine_version = %[2]q
2160-
host_instance_type = "mq.t2.micro"
2164+
host_instance_type = "mq.t3.micro"
21612165
security_groups = [aws_security_group.test.id]
21622166
21632167
user {
@@ -2183,7 +2187,7 @@ resource "aws_mq_broker" "test" {
21832187
broker_name = %[1]q
21842188
engine_type = "ActiveMQ"
21852189
engine_version = %[2]q
2186-
host_instance_type = "mq.t2.micro"
2190+
host_instance_type = "mq.t3.micro"
21872191
security_groups = [aws_security_group.test.id]
21882192
21892193
user {
@@ -2215,7 +2219,7 @@ resource "aws_mq_broker" "test" {
22152219
broker_name = %[1]q
22162220
engine_type = "ActiveMQ"
22172221
engine_version = %[2]q
2218-
host_instance_type = "mq.t2.micro"
2222+
host_instance_type = "mq.t3.micro"
22192223
security_groups = [aws_security_group.test.id]
22202224
22212225
user {
@@ -2242,7 +2246,7 @@ resource "aws_mq_broker" "test" {
22422246
broker_name = %[1]q
22432247
engine_type = "ActiveMQ"
22442248
engine_version = %[2]q
2245-
host_instance_type = "mq.t2.micro"
2249+
host_instance_type = "mq.t3.micro"
22462250
security_groups = [aws_security_group.test.id]
22472251
22482252
user {
@@ -2272,7 +2276,7 @@ resource "aws_mq_broker" "test" {
22722276
broker_name = %[1]q
22732277
engine_type = "ActiveMQ"
22742278
engine_version = %[2]q
2275-
host_instance_type = "mq.t2.micro"
2279+
host_instance_type = "mq.t3.micro"
22762280
security_groups = [aws_security_group.test.id]
22772281
22782282
user {
@@ -2311,7 +2315,7 @@ resource "aws_mq_broker" "test" {
23112315
broker_name = %[1]q
23122316
engine_type = "ActiveMQ"
23132317
engine_version = %[2]q
2314-
host_instance_type = "mq.t2.micro"
2318+
host_instance_type = "mq.t3.micro"
23152319
security_groups = [aws_security_group.test.id, aws_security_group.test2.id]
23162320
23172321
logs {
@@ -2349,7 +2353,7 @@ resource "aws_mq_broker" "test" {
23492353
broker_name = %[1]q
23502354
engine_type = "ActiveMQ"
23512355
engine_version = %[2]q
2352-
host_instance_type = "mq.t2.micro"
2356+
host_instance_type = "mq.t3.micro"
23532357
security_groups = [aws_security_group.test2.id]
23542358
23552359
logs {
@@ -2571,7 +2575,7 @@ resource "aws_mq_broker" "test" {
25712575
broker_name = %[1]q
25722576
engine_type = "ActiveMQ"
25732577
engine_version = %[2]q
2574-
host_instance_type = "mq.t2.micro"
2578+
host_instance_type = "mq.t3.micro"
25752579
security_groups = [aws_security_group.test.id]
25762580
25772581
logs {

0 commit comments

Comments
 (0)