From f78df884fcf603151c807fb25f78ad952c3808b2 Mon Sep 17 00:00:00 2001 From: Ryan Cragun Date: Mon, 8 Jun 2026 12:58:53 -0600 Subject: [PATCH 1/2] exit status: always consider operation generate diagnostics when determining exit status Currently our system for determining an overall status for an operation has to consider the status of each child operation. We missed the "generate" child operation for check, launch, run, and destroy. This fixes that so we always exit 1 if generate fails regardless of the desired operation. We also bump our dependencies as we intend to release this fix immediately. Signed-off-by: Ryan Cragun --- acceptance/acceptance_test.go | 8 +- .../scenario_step_missing_module/enos.hcl | 23 +++ .../modules/foo/main.tf | 20 +++ acceptance/scenario_check_test.go | 65 ++++++++ acceptance/scenario_destroy_test.go | 65 ++++++++ acceptance/scenario_generate_test.go | 63 +++++++ acceptance/scenario_launch_test.go | 65 ++++++++ acceptance/scenario_run_test.go | 65 ++++++++ go.mod | 67 ++++---- go.sum | 157 +++++++++--------- internal/diagnostics/operation.go | 4 + 11 files changed, 490 insertions(+), 112 deletions(-) create mode 100644 acceptance/invalid_scenarios/scenario_step_missing_module/enos.hcl create mode 100644 acceptance/invalid_scenarios/scenario_step_missing_module/modules/foo/main.tf diff --git a/acceptance/acceptance_test.go b/acceptance/acceptance_test.go index a70d324..b1d0b4d 100644 --- a/acceptance/acceptance_test.go +++ b/acceptance/acceptance_test.go @@ -254,7 +254,11 @@ func requireEqualOperationResponses(t *testing.T, expected *pb.OperationResponse got := &pb.OperationResponses{} require.NoErrorf(t, protojson.Unmarshal(out, got), string(out)) - require.Len(t, expected.GetResponses(), len(got.GetResponses())) + require.Lenf( + t, got.GetResponses(), len(expected.GetResponses()), + "expected %d operation responses, got %d, raw response %s", + len(expected.GetResponses()), len(got.GetResponses()), string(out), + ) expectedResponses := expected.GetResponses() gotResponses := got.GetResponses() sortResponses(expectedResponses) @@ -320,6 +324,8 @@ func requireEqualOperationResponses(t *testing.T, expected *pb.OperationResponse func requireEqualGenerateResponse(t *testing.T, expected, got *pb.Operation_Response_Generate) { t.Helper() + require.Len(t, expected.GetDiagnostics(), len(got.GetDiagnostics()), "expected equal generate diagnostics") + if expected.GetTerraformModule().GetModulePath() != "" { require.Equal( t, expected.GetTerraformModule().GetModulePath(), diff --git a/acceptance/invalid_scenarios/scenario_step_missing_module/enos.hcl b/acceptance/invalid_scenarios/scenario_step_missing_module/enos.hcl new file mode 100644 index 0000000..72efe2c --- /dev/null +++ b/acceptance/invalid_scenarios/scenario_step_missing_module/enos.hcl @@ -0,0 +1,23 @@ +# Copyright IBM Corp. 2021, 2026 +# SPDX-License-Identifier: MPL-2.0 + +module "foo" { + source = "./modules/foo" + + input = "fooinput" + anotherinput = ["anotherfoo"] +} + +module "bar" { + source = "./modules/does_not_exist" +} + +scenario "test" { + step "foo" { + module = module.foo + } + + step "bar" { + module = module.bar + } +} diff --git a/acceptance/invalid_scenarios/scenario_step_missing_module/modules/foo/main.tf b/acceptance/invalid_scenarios/scenario_step_missing_module/modules/foo/main.tf new file mode 100644 index 0000000..0f6b58f --- /dev/null +++ b/acceptance/invalid_scenarios/scenario_step_missing_module/modules/foo/main.tf @@ -0,0 +1,20 @@ +# Copyright IBM Corp. 2021, 2026 +# SPDX-License-Identifier: MPL-2.0 + +output "input" { + value = var.input +} + +output "anotherinput" { + value = var.input +} + +variable "input" { + type = string + default = "notset" +} + +variable "anotherinput" { + type = list(string) + default = ["one"] +} diff --git a/acceptance/scenario_check_test.go b/acceptance/scenario_check_test.go index 52b9444..c510a37 100644 --- a/acceptance/scenario_check_test.go +++ b/acceptance/scenario_check_test.go @@ -218,3 +218,68 @@ func TestAcc_Cmd_Scenario_Check_WithWarnings(t *testing.T) { }) } } + +func TestAcc_Cmd_Scenario_Check_InvalidScenario(t *testing.T) { + t.Parallel() + + for dir, test := range map[string]struct { + name string + uid string + }{ + "scenario_step_missing_module": { + "test", + fmt.Sprintf("%x", sha256.Sum256([]byte("test"))), + }, + } { + t.Run(fmt.Sprintf("%s %s", dir, test.name), func(t *testing.T) { + t.Parallel() + + enos := newAcceptanceRunner(t) + + tmpDir := t.TempDir() + outDir := filepath.Join(tmpDir, dir) + err := os.MkdirAll(outDir, 0o755) + require.NoError(t, err) + outDir, err = filepath.EvalSymlinks(outDir) + require.NoError(t, err) + path, err := filepath.Abs(filepath.Join("./invalid_scenarios", dir)) + require.NoError(t, err) + + filter := test.name + scenarioRef := &pb.Ref_Scenario{ + Id: &pb.Scenario_ID{ + Name: test.name, + Filter: filter, + Uid: test.uid, + }, + } + + cmd := fmt.Sprintf("scenario check --chdir %s --out %s %s --format json", path, outDir, filter) + out, _, err := enos.run(context.Background(), cmd) + require.Error(t, err) + expected := &pb.OperationResponses{ + Responses: []*pb.Operation_Response{ + { + Op: &pb.Ref_Operation{ + Scenario: scenarioRef, + }, + Status: pb.Operation_STATUS_FAILED, + Value: &pb.Operation_Response_Check_{ + Check: &pb.Operation_Response_Check{ + Generate: &pb.Operation_Response_Generate{ + Diagnostics: []*pb.Diagnostic{ + { + Summary: fmt.Sprintf("lstat %s/modules/does_not_exist: no such file or directory", path), + }, + }, + }, + }, + }, + }, + }, + } + + requireEqualOperationResponses(t, expected, out) + }) + } +} diff --git a/acceptance/scenario_destroy_test.go b/acceptance/scenario_destroy_test.go index 5ae98b0..90c8f8a 100644 --- a/acceptance/scenario_destroy_test.go +++ b/acceptance/scenario_destroy_test.go @@ -114,3 +114,68 @@ func TestAcc_Cmd_Scenario_Destroy(t *testing.T) { }) } } + +func TestAcc_Cmd_Scenario_Destroy_InvalidScenario(t *testing.T) { + t.Parallel() + + for dir, test := range map[string]struct { + name string + uid string + }{ + "scenario_step_missing_module": { + "test", + fmt.Sprintf("%x", sha256.Sum256([]byte("test"))), + }, + } { + t.Run(fmt.Sprintf("%s %s", dir, test.name), func(t *testing.T) { + t.Parallel() + + enos := newAcceptanceRunner(t) + + tmpDir := t.TempDir() + outDir := filepath.Join(tmpDir, dir) + err := os.MkdirAll(outDir, 0o755) + require.NoError(t, err) + outDir, err = filepath.EvalSymlinks(outDir) + require.NoError(t, err) + path, err := filepath.Abs(filepath.Join("./invalid_scenarios", dir)) + require.NoError(t, err) + + filter := test.name + scenarioRef := &pb.Ref_Scenario{ + Id: &pb.Scenario_ID{ + Name: test.name, + Filter: filter, + Uid: test.uid, + }, + } + + cmd := fmt.Sprintf("scenario destroy --chdir %s --out %s %s --format json", path, outDir, filter) + out, _, err := enos.run(context.Background(), cmd) + require.Error(t, err) + expected := &pb.OperationResponses{ + Responses: []*pb.Operation_Response{ + { + Op: &pb.Ref_Operation{ + Scenario: scenarioRef, + }, + Status: pb.Operation_STATUS_FAILED, + Value: &pb.Operation_Response_Destroy_{ + Destroy: &pb.Operation_Response_Destroy{ + Generate: &pb.Operation_Response_Generate{ + Diagnostics: []*pb.Diagnostic{ + { + Summary: fmt.Sprintf("lstat %s/modules/does_not_exist: no such file or directory", path), + }, + }, + }, + }, + }, + }, + }, + } + + requireEqualOperationResponses(t, expected, out) + }) + } +} diff --git a/acceptance/scenario_generate_test.go b/acceptance/scenario_generate_test.go index 454c95e..fba08cb 100644 --- a/acceptance/scenario_generate_test.go +++ b/acceptance/scenario_generate_test.go @@ -139,3 +139,66 @@ func TestAcc_Cmd_Scenario_Generate(t *testing.T) { }) } } + +func TestAcc_Cmd_Scenario_Generate_InvalidScenario(t *testing.T) { + t.Parallel() + + for dir, test := range map[string]struct { + name string + uid string + }{ + "scenario_step_missing_module": { + "test", + fmt.Sprintf("%x", sha256.Sum256([]byte("test"))), + }, + } { + t.Run(fmt.Sprintf("%s %s", dir, test.name), func(t *testing.T) { + t.Parallel() + + enos := newAcceptanceRunner(t) + + tmpDir := t.TempDir() + outDir := filepath.Join(tmpDir, dir) + err := os.MkdirAll(outDir, 0o755) + require.NoError(t, err) + outDir, err = filepath.EvalSymlinks(outDir) + require.NoError(t, err) + path, err := filepath.Abs(filepath.Join("./invalid_scenarios", dir)) + require.NoError(t, err) + + filter := test.name + scenarioRef := &pb.Ref_Scenario{ + Id: &pb.Scenario_ID{ + Name: test.name, + Filter: filter, + Uid: test.uid, + }, + } + + cmd := fmt.Sprintf("scenario generate --chdir %s --out %s %s --format json", path, outDir, filter) + out, _, err := enos.run(context.Background(), cmd) + require.Error(t, err) + expected := &pb.OperationResponses{ + Responses: []*pb.Operation_Response{ + { + Op: &pb.Ref_Operation{ + Scenario: scenarioRef, + }, + Status: pb.Operation_STATUS_FAILED, + Value: &pb.Operation_Response_Generate_{ + Generate: &pb.Operation_Response_Generate{ + Diagnostics: []*pb.Diagnostic{ + { + Summary: fmt.Sprintf("lstat %s/modules/does_not_exist: no such file or directory", path), + }, + }, + }, + }, + }, + }, + } + + requireEqualOperationResponses(t, expected, out) + }) + } +} diff --git a/acceptance/scenario_launch_test.go b/acceptance/scenario_launch_test.go index d563db7..e27da51 100644 --- a/acceptance/scenario_launch_test.go +++ b/acceptance/scenario_launch_test.go @@ -113,3 +113,68 @@ func TestAcc_Cmd_Scenario_Launch(t *testing.T) { }) } } + +func TestAcc_Cmd_Scenario_Launch_InvalidScenario(t *testing.T) { + t.Parallel() + + for dir, test := range map[string]struct { + name string + uid string + }{ + "scenario_step_missing_module": { + "test", + fmt.Sprintf("%x", sha256.Sum256([]byte("test"))), + }, + } { + t.Run(fmt.Sprintf("%s %s", dir, test.name), func(t *testing.T) { + t.Parallel() + + enos := newAcceptanceRunner(t) + + tmpDir := t.TempDir() + outDir := filepath.Join(tmpDir, dir) + err := os.MkdirAll(outDir, 0o755) + require.NoError(t, err) + outDir, err = filepath.EvalSymlinks(outDir) + require.NoError(t, err) + path, err := filepath.Abs(filepath.Join("./invalid_scenarios", dir)) + require.NoError(t, err) + + filter := test.name + scenarioRef := &pb.Ref_Scenario{ + Id: &pb.Scenario_ID{ + Name: test.name, + Filter: filter, + Uid: test.uid, + }, + } + + cmd := fmt.Sprintf("scenario launch --chdir %s --out %s %s --format json", path, outDir, filter) + out, _, err := enos.run(context.Background(), cmd) + require.Error(t, err) + expected := &pb.OperationResponses{ + Responses: []*pb.Operation_Response{ + { + Op: &pb.Ref_Operation{ + Scenario: scenarioRef, + }, + Status: pb.Operation_STATUS_FAILED, + Value: &pb.Operation_Response_Launch_{ + Launch: &pb.Operation_Response_Launch{ + Generate: &pb.Operation_Response_Generate{ + Diagnostics: []*pb.Diagnostic{ + { + Summary: fmt.Sprintf("lstat %s/modules/does_not_exist: no such file or directory", path), + }, + }, + }, + }, + }, + }, + }, + } + + requireEqualOperationResponses(t, expected, out) + }) + } +} diff --git a/acceptance/scenario_run_test.go b/acceptance/scenario_run_test.go index 18e6dbb..9a64815 100644 --- a/acceptance/scenario_run_test.go +++ b/acceptance/scenario_run_test.go @@ -149,3 +149,68 @@ func TestAcc_Cmd_Scenario_Run_Timeout(t *testing.T) { }) } } + +func TestAcc_Cmd_Scenario_Run_InvalidScenario(t *testing.T) { + t.Parallel() + + for dir, test := range map[string]struct { + name string + uid string + }{ + "scenario_step_missing_module": { + "test", + fmt.Sprintf("%x", sha256.Sum256([]byte("test"))), + }, + } { + t.Run(fmt.Sprintf("%s %s", dir, test.name), func(t *testing.T) { + t.Parallel() + + enos := newAcceptanceRunner(t) + + tmpDir := t.TempDir() + outDir := filepath.Join(tmpDir, dir) + err := os.MkdirAll(outDir, 0o755) + require.NoError(t, err) + outDir, err = filepath.EvalSymlinks(outDir) + require.NoError(t, err) + path, err := filepath.Abs(filepath.Join("./invalid_scenarios", dir)) + require.NoError(t, err) + + filter := test.name + scenarioRef := &pb.Ref_Scenario{ + Id: &pb.Scenario_ID{ + Name: test.name, + Filter: filter, + Uid: test.uid, + }, + } + + cmd := fmt.Sprintf("scenario run --chdir %s --out %s %s --format json", path, outDir, filter) + out, _, err := enos.run(context.Background(), cmd) + require.Error(t, err) + expected := &pb.OperationResponses{ + Responses: []*pb.Operation_Response{ + { + Op: &pb.Ref_Operation{ + Scenario: scenarioRef, + }, + Status: pb.Operation_STATUS_FAILED, + Value: &pb.Operation_Response_Run_{ + Run: &pb.Operation_Response_Run{ + Generate: &pb.Operation_Response_Generate{ + Diagnostics: []*pb.Diagnostic{ + { + Summary: fmt.Sprintf("lstat %s/modules/does_not_exist: no such file or directory", path), + }, + }, + }, + }, + }, + }, + }, + } + + requireEqualOperationResponses(t, expected, out) + }) + } +} diff --git a/go.mod b/go.mod index 0f963e4..5aaa2ea 100644 --- a/go.mod +++ b/go.mod @@ -5,28 +5,32 @@ go 1.26 // https://github.com/ryancragun/go-cty/commit/fe11e2e2dc2e25104c2915b2c8e5b463bbf412bd replace github.com/zclconf/go-cty => github.com/ryancragun/go-cty v0.0.0-20251030155132-fe11e2e2dc2e +// Pin to 0.0.5 because the interface changes +replace github.com/olekukonko/tablewriter => github.com/olekukonko/tablewriter v0.0.5 + require ( - github.com/Masterminds/semver/v3 v3.4.0 - github.com/aws/aws-sdk-go-v2/config v1.32.14 + github.com/Masterminds/semver/v3 v3.5.0 + github.com/aws/aws-sdk-go-v2/config v1.32.23 + github.com/davecgh/go-spew v1.1.1 github.com/google/uuid v1.6.0 github.com/hashicorp/cli v1.1.7 github.com/hashicorp/go-hclog v1.6.3 github.com/hashicorp/go-multierror v1.1.1 github.com/hashicorp/hcl/v2 v2.24.0 - github.com/hashicorp/terraform-exec v0.25.0 + github.com/hashicorp/terraform-exec v0.25.2 github.com/hashicorp/terraform-json v0.27.2 github.com/hexops/gotextdiff v1.0.3 github.com/mitchellh/colorstring v0.0.0-20190213212951-d06e56a500db github.com/mitchellh/go-wordwrap v1.0.1 - github.com/olekukonko/tablewriter v0.0.5 + github.com/olekukonko/tablewriter v1.1.4 github.com/spf13/cobra v1.10.2 github.com/stretchr/testify v1.11.1 - github.com/zclconf/go-cty v1.18.0 + github.com/zclconf/go-cty v1.18.1 github.com/zclconf/go-cty-yaml v1.2.0 - golang.org/x/sys v0.42.0 - golang.org/x/term v0.41.0 - golang.org/x/text v0.35.0 - google.golang.org/grpc v1.80.0 + golang.org/x/sys v0.46.0 + golang.org/x/term v0.44.0 + golang.org/x/text v0.38.0 + google.golang.org/grpc v1.81.1 google.golang.org/protobuf v1.36.11 ) @@ -37,31 +41,30 @@ require ( github.com/agext/levenshtein v1.2.3 // indirect github.com/apparentlymart/go-textseg/v15 v15.0.0 // indirect github.com/armon/go-radix v1.0.0 // indirect - github.com/aws/aws-sdk-go-v2 v1.41.5 // indirect - github.com/aws/aws-sdk-go-v2/credentials v1.19.14 // indirect - github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.18.21 // indirect - github.com/aws/aws-sdk-go-v2/internal/configsources v1.4.21 // indirect - github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.7.21 // indirect - github.com/aws/aws-sdk-go-v2/internal/ini v1.8.6 // indirect - github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.13.7 // indirect - github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.13.21 // indirect - github.com/aws/aws-sdk-go-v2/service/signin v1.0.9 // indirect - github.com/aws/aws-sdk-go-v2/service/sso v1.30.15 // indirect - github.com/aws/aws-sdk-go-v2/service/ssooidc v1.35.19 // indirect - github.com/aws/aws-sdk-go-v2/service/sts v1.41.10 // indirect - github.com/aws/smithy-go v1.24.3 // indirect + github.com/aws/aws-sdk-go-v2 v1.41.12 // indirect + github.com/aws/aws-sdk-go-v2/credentials v1.19.22 // indirect + github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.18.28 // indirect + github.com/aws/aws-sdk-go-v2/internal/configsources v1.4.28 // indirect + github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.7.28 // indirect + github.com/aws/aws-sdk-go-v2/internal/v4a v1.4.29 // indirect + github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.13.12 // indirect + github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.13.28 // indirect + github.com/aws/aws-sdk-go-v2/service/signin v1.1.4 // indirect + github.com/aws/aws-sdk-go-v2/service/sso v1.31.2 // indirect + github.com/aws/aws-sdk-go-v2/service/ssooidc v1.36.5 // indirect + github.com/aws/aws-sdk-go-v2/service/sts v1.43.2 // indirect + github.com/aws/smithy-go v1.27.2 // indirect github.com/bgentry/speakeasy v0.2.0 // indirect github.com/clipperhouse/uax29/v2 v2.7.0 // indirect - github.com/davecgh/go-spew v1.1.1 // indirect github.com/fatih/color v1.19.0 // indirect github.com/google/go-cmp v0.7.0 // indirect github.com/hashicorp/errwrap v1.1.0 // indirect github.com/hashicorp/go-version v1.9.0 // indirect github.com/huandu/xstrings v1.5.0 // indirect github.com/inconshreveable/mousetrap v1.1.0 // indirect - github.com/mattn/go-colorable v0.1.14 // indirect - github.com/mattn/go-isatty v0.0.20 // indirect - github.com/mattn/go-runewidth v0.0.22 // indirect + github.com/mattn/go-colorable v0.1.15 // indirect + github.com/mattn/go-isatty v0.0.22 // indirect + github.com/mattn/go-runewidth v0.0.24 // indirect github.com/mitchellh/copystructure v1.2.0 // indirect github.com/mitchellh/reflectwalk v1.0.2 // indirect github.com/pmezard/go-difflib v1.0.0 // indirect @@ -69,11 +72,11 @@ require ( github.com/shopspring/decimal v1.4.0 // indirect github.com/spf13/cast v1.10.0 // indirect github.com/spf13/pflag v1.0.10 // indirect - golang.org/x/crypto v0.49.0 // indirect - golang.org/x/mod v0.34.0 // indirect - golang.org/x/net v0.52.0 // indirect - golang.org/x/sync v0.20.0 // indirect - golang.org/x/tools v0.43.0 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20260406154035-8fb7ec149431 // indirect + golang.org/x/crypto v0.53.0 // indirect + golang.org/x/mod v0.37.0 // indirect + golang.org/x/net v0.55.0 // indirect + golang.org/x/sync v0.21.0 // indirect + golang.org/x/tools v0.45.0 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20260526163538-3dc84a4a5aaa // indirect gopkg.in/yaml.v3 v3.0.1 // indirect ) diff --git a/go.sum b/go.sum index f7d22d7..9320115 100644 --- a/go.sum +++ b/go.sum @@ -2,56 +2,56 @@ dario.cat/mergo v1.0.2 h1:85+piFYR1tMbRrLcDwR18y4UKJ3aH1Tbzi24VRW1TK8= dario.cat/mergo v1.0.2/go.mod h1:E/hbnu0NxMFBjpMIE34DRGLWqDy0g5FuKDhCb31ngxA= github.com/Masterminds/goutils v1.1.1 h1:5nUrii3FMTL5diU80unEVvNevw1nH4+ZV4DSLVJLSYI= github.com/Masterminds/goutils v1.1.1/go.mod h1:8cTjp+g8YejhMuvIA5y2vz3BpJxksy863GQaJW2MFNU= -github.com/Masterminds/semver/v3 v3.4.0 h1:Zog+i5UMtVoCU8oKka5P7i9q9HgrJeGzI9SA1Xbatp0= -github.com/Masterminds/semver/v3 v3.4.0/go.mod h1:4V+yj/TJE1HU9XfppCwVMZq3I84lprf4nC11bSS5beM= +github.com/Masterminds/semver/v3 v3.5.0 h1:kQceYJfbupGfZOKZQg0kou0DgAKhzDg2NZPAwZ/2OOE= +github.com/Masterminds/semver/v3 v3.5.0/go.mod h1:4V+yj/TJE1HU9XfppCwVMZq3I84lprf4nC11bSS5beM= github.com/Masterminds/sprig/v3 v3.3.0 h1:mQh0Yrg1XPo6vjYXgtf5OtijNAKJRNcTdOOGZe3tPhs= github.com/Masterminds/sprig/v3 v3.3.0/go.mod h1:Zy1iXRYNqNLUolqCpL4uhk6SHUMAOSCzdgBfDb35Lz0= github.com/Microsoft/go-winio v0.6.2 h1:F2VQgta7ecxGYO8k3ZZz3RS8fVIXVxONVUPlNERoyfY= github.com/Microsoft/go-winio v0.6.2/go.mod h1:yd8OoFMLzJbo9gZq8j5qaps8bJ9aShtEA8Ipt1oGCvU= -github.com/ProtonMail/go-crypto v1.3.0 h1:ILq8+Sf5If5DCpHQp4PbZdS1J7HDFRXz/+xKBiRGFrw= -github.com/ProtonMail/go-crypto v1.3.0/go.mod h1:9whxjD8Rbs29b4XWbB8irEcE8KHMqaR2e7GWU1R+/PE= +github.com/ProtonMail/go-crypto v1.4.1 h1:9RfcZHqEQUvP8RzecWEUafnZVtEvrBVL9BiF67IQOfM= +github.com/ProtonMail/go-crypto v1.4.1/go.mod h1:e1OaTyu5SYVrO9gKOEhTc+5UcXtTUa+P3uLudwcgPqo= github.com/agext/levenshtein v1.2.3 h1:YB2fHEn0UJagG8T1rrWknE3ZQzWM06O8AMAatNn7lmo= github.com/agext/levenshtein v1.2.3/go.mod h1:JEDfjyjHDjOF/1e4FlBE/PkbqA9OfWu2ki2W0IB5558= github.com/apparentlymart/go-textseg/v15 v15.0.0 h1:uYvfpb3DyLSCGWnctWKGj857c6ew1u1fNQOlOtuGxQY= github.com/apparentlymart/go-textseg/v15 v15.0.0/go.mod h1:K8XmNZdhEBkdlyDdvbmmsvpAG721bKi0joRfFdHIWJ4= github.com/armon/go-radix v1.0.0 h1:F4z6KzEeeQIMeLFa97iZU6vupzoecKdU5TX24SNppXI= github.com/armon/go-radix v1.0.0/go.mod h1:ufUuZ+zHj4x4TnLV4JWEpy2hxWSpsRywHrMgIH9cCH8= -github.com/aws/aws-sdk-go-v2 v1.41.5 h1:dj5kopbwUsVUVFgO4Fi5BIT3t4WyqIDjGKCangnV/yY= -github.com/aws/aws-sdk-go-v2 v1.41.5/go.mod h1:mwsPRE8ceUUpiTgF7QmQIJ7lgsKUPQOUl3o72QBrE1o= -github.com/aws/aws-sdk-go-v2/config v1.32.14 h1:opVIRo/ZbbI8OIqSOKmpFaY7IwfFUOCCXBsUpJOwDdI= -github.com/aws/aws-sdk-go-v2/config v1.32.14/go.mod h1:U4/V0uKxh0Tl5sxmCBZ3AecYny4UNlVmObYjKuuaiOo= -github.com/aws/aws-sdk-go-v2/credentials v1.19.14 h1:n+UcGWAIZHkXzYt87uMFBv/l8THYELoX6gVcUvgl6fI= -github.com/aws/aws-sdk-go-v2/credentials v1.19.14/go.mod h1:cJKuyWB59Mqi0jM3nFYQRmnHVQIcgoxjEMAbLkpr62w= -github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.18.21 h1:NUS3K4BTDArQqNu2ih7yeDLaS3bmHD0YndtA6UP884g= -github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.18.21/go.mod h1:YWNWJQNjKigKY1RHVJCuupeWDrrHjRqHm0N9rdrWzYI= -github.com/aws/aws-sdk-go-v2/internal/configsources v1.4.21 h1:Rgg6wvjjtX8bNHcvi9OnXWwcE0a2vGpbwmtICOsvcf4= -github.com/aws/aws-sdk-go-v2/internal/configsources v1.4.21/go.mod h1:A/kJFst/nm//cyqonihbdpQZwiUhhzpqTsdbhDdRF9c= -github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.7.21 h1:PEgGVtPoB6NTpPrBgqSE5hE/o47Ij9qk/SEZFbUOe9A= -github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.7.21/go.mod h1:p+hz+PRAYlY3zcpJhPwXlLC4C+kqn70WIHwnzAfs6ps= -github.com/aws/aws-sdk-go-v2/internal/ini v1.8.6 h1:qYQ4pzQ2Oz6WpQ8T3HvGHnZydA72MnLuFK9tJwmrbHw= -github.com/aws/aws-sdk-go-v2/internal/ini v1.8.6/go.mod h1:O3h0IK87yXci+kg6flUKzJnWeziQUKciKrLjcatSNcY= -github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.13.7 h1:5EniKhLZe4xzL7a+fU3C2tfUN4nWIqlLesfrjkuPFTY= -github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.13.7/go.mod h1:x0nZssQ3qZSnIcePWLvcoFisRXJzcTVvYpAAdYX8+GI= -github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.13.21 h1:c31//R3xgIJMSC8S6hEVq+38DcvUlgFY0FM6mSI5oto= -github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.13.21/go.mod h1:r6+pf23ouCB718FUxaqzZdbpYFyDtehyZcmP5KL9FkA= -github.com/aws/aws-sdk-go-v2/service/signin v1.0.9 h1:QKZH0S178gCmFEgst8hN0mCX1KxLgHBKKY/CLqwP8lg= -github.com/aws/aws-sdk-go-v2/service/signin v1.0.9/go.mod h1:7yuQJoT+OoH8aqIxw9vwF+8KpvLZ8AWmvmUWHsGQZvI= -github.com/aws/aws-sdk-go-v2/service/sso v1.30.15 h1:lFd1+ZSEYJZYvv9d6kXzhkZu07si3f+GQ1AaYwa2LUM= -github.com/aws/aws-sdk-go-v2/service/sso v1.30.15/go.mod h1:WSvS1NLr7JaPunCXqpJnWk1Bjo7IxzZXrZi1QQCkuqM= -github.com/aws/aws-sdk-go-v2/service/ssooidc v1.35.19 h1:dzztQ1YmfPrxdrOiuZRMF6fuOwWlWpD2StNLTceKpys= -github.com/aws/aws-sdk-go-v2/service/ssooidc v1.35.19/go.mod h1:YO8TrYtFdl5w/4vmjL8zaBSsiNp3w0L1FfKVKenZT7w= -github.com/aws/aws-sdk-go-v2/service/sts v1.41.10 h1:p8ogvvLugcR/zLBXTXrTkj0RYBUdErbMnAFFp12Lm/U= -github.com/aws/aws-sdk-go-v2/service/sts v1.41.10/go.mod h1:60dv0eZJfeVXfbT1tFJinbHrDfSJ2GZl4Q//OSSNAVw= -github.com/aws/smithy-go v1.24.3 h1:XgOAaUgx+HhVBoP4v8n6HCQoTRDhoMghKqw4LNHsDNg= -github.com/aws/smithy-go v1.24.3/go.mod h1:YE2RhdIuDbA5E5bTdciG9KrW3+TiEONeUWCqxX9i1Fc= +github.com/aws/aws-sdk-go-v2 v1.41.12 h1:DIKX2c31ekm9RA2D9FBj1EWXx++9AdAqRw+e78Tq2Ck= +github.com/aws/aws-sdk-go-v2 v1.41.12/go.mod h1:27+ACypSLljLAEKsCYOmrjKh83vuTRkuAe9Uv/3A4bg= +github.com/aws/aws-sdk-go-v2/config v1.32.23 h1:PYDobtcsJXK6bQe9I8RQk6s19Bz3xa3xRU08Hy1Em3Y= +github.com/aws/aws-sdk-go-v2/config v1.32.23/go.mod h1:QID4dqUQVgEOYPKsPWd1sNWCCR2c5g7o3jeEtIXPOZU= +github.com/aws/aws-sdk-go-v2/credentials v1.19.22 h1:SHfH6wyPsEgG7fVsi5rQxWEt7tuIcN2PGhb1mTFv6tE= +github.com/aws/aws-sdk-go-v2/credentials v1.19.22/go.mod h1:54nO8lKD4aQPOntM/VTWjnR+DYzTwx0YkSMZMhAgewQ= +github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.18.28 h1:b+kcDejJrXc30zU/w8Tc9klISwaO5wh+6T0sMBdDoHM= +github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.18.28/go.mod h1:LnI62O9GnSv6GcuLXxOYqlq0C8EmxMcgnF6m7LdYuOY= +github.com/aws/aws-sdk-go-v2/internal/configsources v1.4.28 h1:Xf2j7NdVcUKomlZ4iihOP4AZ3Fzlr8h4yKpXeP+OFPg= +github.com/aws/aws-sdk-go-v2/internal/configsources v1.4.28/go.mod h1:O8cDo1dW63jU7ki//kRe1z+tLGcpnD1jrouitsQddDw= +github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.7.28 h1:KqIfN9kpkKkcBqBbNpNGTIrXO6ExTUvFKvXkC+YAzVo= +github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.7.28/go.mod h1:uxtQiKvLtNS4iXVsH2McVD/ls8FKN/uUhe1hGxPjrw0= +github.com/aws/aws-sdk-go-v2/internal/v4a v1.4.29 h1:VkE9FuzTQVjBBrnj4+oCdxCLFIz7aqLYKUCjtvxVcOs= +github.com/aws/aws-sdk-go-v2/internal/v4a v1.4.29/go.mod h1:H32Z2Qth9b+9LqjyBsCnozMQ8H2N7YBUDVXwbs0iggg= +github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.13.12 h1:ZD2+BSw9vFsNlKYIasSNt3uDbjqqXIBcM13UJv/Lx2k= +github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.13.12/go.mod h1:Ms4zlcVBbXbiP7EVLhl+lgjvA/a7YphqQ3Ih3174EmI= +github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.13.28 h1:axj4mEDletwKmTm/9jR+DkIMmCfcn5vE4jBMAAN+3Vg= +github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.13.28/go.mod h1:3Aaz69M0jqfSHLKqxgolgUBFT4hpwSNc7DzC95orEi8= +github.com/aws/aws-sdk-go-v2/service/signin v1.1.4 h1:YcpVyIPLCbiypN6KSphijN5fC7DDjX114SqA7prnnxg= +github.com/aws/aws-sdk-go-v2/service/signin v1.1.4/go.mod h1:5ZICS++oFTRPfa1GsBqFDWX/8WamZ/QQOcCzIuU/zLw= +github.com/aws/aws-sdk-go-v2/service/sso v1.31.2 h1:ySNWu7TPmj5fKFIa1GYvX+Ddxd5ccruqC20aMNuyWDM= +github.com/aws/aws-sdk-go-v2/service/sso v1.31.2/go.mod h1:A+U9luAOwFeB1kseyWCITVg7/NntoPebCFR9pQ4ch9A= +github.com/aws/aws-sdk-go-v2/service/ssooidc v1.36.5 h1:KSzGGqfk39O+WU3OEyYbx6F7sLDQCqxlOJ+2IksfK6U= +github.com/aws/aws-sdk-go-v2/service/ssooidc v1.36.5/go.mod h1:ATs88lXDeQB6CZOgQ5BIl9JbYS+EsCWUSDyff6L/oVo= +github.com/aws/aws-sdk-go-v2/service/sts v1.43.2 h1:RTO7mmGyedgnNmcPh3yQizNfc6GKoV5iqfdJavuf9vw= +github.com/aws/aws-sdk-go-v2/service/sts v1.43.2/go.mod h1:fBhUZXDin9YYqhcpOMjIcpdik25rVwWyxLdPH1RZd9s= +github.com/aws/smithy-go v1.27.2 h1:y9NPmSE6am6LjEFPfqHqG/jJk7AauQvhCJONKh7kpzk= +github.com/aws/smithy-go v1.27.2/go.mod h1:YE2RhdIuDbA5E5bTdciG9KrW3+TiEONeUWCqxX9i1Fc= github.com/bgentry/speakeasy v0.2.0 h1:tgObeVOf8WAvtuAX6DhJ4xks4CFNwPDZiqzGqIHE51E= github.com/bgentry/speakeasy v0.2.0/go.mod h1:+zsyZBPWlz7T6j88CTgSN5bM796AkVf0kBD4zp0CCIs= github.com/cespare/xxhash/v2 v2.3.0 h1:UL815xU9SqsFlibzuggzjXhog7bL6oX9BbNZnL2UFvs= github.com/cespare/xxhash/v2 v2.3.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= github.com/clipperhouse/uax29/v2 v2.7.0 h1:+gs4oBZ2gPfVrKPthwbMzWZDaAFPGYK72F0NJv2v7Vk= github.com/clipperhouse/uax29/v2 v2.7.0/go.mod h1:EFJ2TJMRUaplDxHKj1qAEhCtQPW2tJSwu5BF98AuoVM= -github.com/cloudflare/circl v1.6.1 h1:zqIqSPIndyBh1bjLVVDHMPpVKqp8Su/V+6MeDzzQBQ0= -github.com/cloudflare/circl v1.6.1/go.mod h1:uddAzsPgqdMAYatqJ0lsjX1oECcQLIlRpzZh3pJrofs= +github.com/cloudflare/circl v1.6.3 h1:9GPOhQGF9MCYUeXyMYlqTR6a5gTrgR/fBLXvUgtVcg8= +github.com/cloudflare/circl v1.6.3/go.mod h1:2eXP6Qfat4O/Yhh8BznvKnJ+uzEoTQ6jVKJRn81BiS4= github.com/cpuguy83/go-md2man/v2 v2.0.6/go.mod h1:oOW0eioCTA6cOiMLiUPZOpcVxMig6NIQQ7OS05n1F4g= github.com/cyphar/filepath-securejoin v0.4.1 h1:JyxxyPEaktOD+GAnqIqTf9A8tHyAG22rowi7HkoSU1s= github.com/cyphar/filepath-securejoin v0.4.1/go.mod h1:Sdj7gXlvMcPZsbhwhQ33GguGLDGQL7h7bg04C/+u9jI= @@ -67,10 +67,10 @@ github.com/frankban/quicktest v1.14.6 h1:7Xjx+VpznH+oBnejlPUj8oUpdxnVs4f8XU8WnHk github.com/frankban/quicktest v1.14.6/go.mod h1:4ptaffx2x8+WTWXmUCuVU6aPUX1/Mz7zb5vbUoiM6w0= github.com/go-git/gcfg v1.5.1-0.20230307220236-3a3c6141e376 h1:+zs/tPmkDkHx3U66DAb0lQFJrpS6731Oaa12ikc+DiI= github.com/go-git/gcfg v1.5.1-0.20230307220236-3a3c6141e376/go.mod h1:an3vInlBmSxCcxctByoQdvwPiA7DTK7jaaFDBTtu0ic= -github.com/go-git/go-billy/v5 v5.6.2 h1:6Q86EsPXMa7c3YZ3aLAQsMA0VlWmy43r6FHqa/UNbRM= -github.com/go-git/go-billy/v5 v5.6.2/go.mod h1:rcFC2rAsp/erv7CMz9GczHcuD0D32fWzH+MJAU+jaUU= -github.com/go-git/go-git/v5 v5.16.5 h1:mdkuqblwr57kVfXri5TTH+nMFLNUxIj9Z7F5ykFbw5s= -github.com/go-git/go-git/v5 v5.16.5/go.mod h1:QOMLpNf1qxuSY4StA/ArOdfFR2TrKEjJiye2kel2m+M= +github.com/go-git/go-billy/v5 v5.8.0 h1:I8hjc3LbBlXTtVuFNJuwYuMiHvQJDq1AT6u4DwDzZG0= +github.com/go-git/go-billy/v5 v5.8.0/go.mod h1:RpvI/rw4Vr5QA+Z60c6d6LXH0rYJo0uD5SqfmrrheCY= +github.com/go-git/go-git/v5 v5.18.0 h1:O831KI+0PR51hM2kep6T8k+w0/LIAD490gvqMCvL5hM= +github.com/go-git/go-git/v5 v5.18.0/go.mod h1:pW/VmeqkanRFqR6AljLcs7EA7FbZaN5MQqO7oZADXpo= github.com/go-logr/logr v1.4.3 h1:CjnDlHq8ikf6E492q6eKboGOC0T8CDaOvkHCIg8idEI= github.com/go-logr/logr v1.4.3/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag= @@ -101,12 +101,12 @@ github.com/hashicorp/go-retryablehttp v0.7.8 h1:ylXZWnqa7Lhqpk0L1P1LzDtGcCR0rPVU github.com/hashicorp/go-retryablehttp v0.7.8/go.mod h1:rjiScheydd+CxvumBsIrFKlx3iS0jrZ7LvzFGFmuKbw= github.com/hashicorp/go-version v1.9.0 h1:CeOIz6k+LoN3qX9Z0tyQrPtiB1DFYRPfCIBtaXPSCnA= github.com/hashicorp/go-version v1.9.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= -github.com/hashicorp/hc-install v0.9.3 h1:1H4dgmgzxEVwT6E/d/vIL5ORGVKz9twRwDw+qA5Hyho= -github.com/hashicorp/hc-install v0.9.3/go.mod h1:FQlQ5I3I/X409N/J1U4pPeQQz1R3BoV0IysB7aiaQE0= +github.com/hashicorp/hc-install v0.9.5 h1:XHCjcMn2563ysuaQ9v9ec2FNc7c2PJOIEEGobAFeIx4= +github.com/hashicorp/hc-install v0.9.5/go.mod h1:ihEW4LshrNkxq2bU/MpVbKyn+yt1is2hYqUTHDGhG84= github.com/hashicorp/hcl/v2 v2.24.0 h1:2QJdZ454DSsYGoaE6QheQZjtKZSUs9Nh2izTWiwQxvE= github.com/hashicorp/hcl/v2 v2.24.0/go.mod h1:oGoO1FIQYfn/AgyOhlg9qLC6/nOJPX3qGbkZpYAcqfM= -github.com/hashicorp/terraform-exec v0.25.0 h1:Bkt6m3VkJqYh+laFMrWIpy9KHYFITpOyzRMNI35rNaY= -github.com/hashicorp/terraform-exec v0.25.0/go.mod h1:dl9IwsCfklDU6I4wq9/StFDp7dNbH/h5AnfS1RmiUl8= +github.com/hashicorp/terraform-exec v0.25.2 h1:fFLAVEtAjKdGfawGUXDnKooCnqJi+TuohT3W99AGbhk= +github.com/hashicorp/terraform-exec v0.25.2/go.mod h1:uaQV2oqVLqM4cixJryk6qIWS1qji3GtuwPG5pjGXYfc= github.com/hashicorp/terraform-json v0.27.2 h1:BwGuzM6iUPqf9JYM/Z4AF1OJ5VVJEEzoKST/tRDBJKU= github.com/hashicorp/terraform-json v0.27.2/go.mod h1:GzPLJ1PLdUG5xL6xn1OXWIjteQRT2CNT9o/6A9mi9hE= github.com/hexops/gotextdiff v1.0.3 h1:gitA9+qJrrTCsiCl7+kh75nPqQt1cx4ZkudSTLoUqJM= @@ -125,15 +125,15 @@ github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= github.com/mattn/go-colorable v0.1.9/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc= github.com/mattn/go-colorable v0.1.12/go.mod h1:u5H1YNBxpqRaxsYJYSkiCWKzEfiAb1Gb520KVy5xxl4= -github.com/mattn/go-colorable v0.1.14 h1:9A9LHSqF/7dyVVX6g0U9cwm9pG3kP9gSzcuIPHPsaIE= -github.com/mattn/go-colorable v0.1.14/go.mod h1:6LmQG8QLFO4G5z1gPvYEzlUgJ2wF+stgPZH1UqBm1s8= +github.com/mattn/go-colorable v0.1.15 h1:+u9SLTRGnXv73cEsnsmoZBom+dMU88B2M0aDcWy0/jY= +github.com/mattn/go-colorable v0.1.15/go.mod h1:6LmQG8QLFO4G5z1gPvYEzlUgJ2wF+stgPZH1UqBm1s8= github.com/mattn/go-isatty v0.0.12/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Kysco4FUpU= github.com/mattn/go-isatty v0.0.14/go.mod h1:7GGIvUiUoEMVVmxf/4nioHXj79iQHKdU27kJ6hsGG94= -github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWEY= -github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y= +github.com/mattn/go-isatty v0.0.22 h1:j8l17JJ9i6VGPUFUYoTUKPSgKe/83EYU2zBC7YNKMw4= +github.com/mattn/go-isatty v0.0.22/go.mod h1:ZXfXG4SQHsB/w3ZeOYbR0PrPwLy+n6xiMrJlRFqopa4= github.com/mattn/go-runewidth v0.0.9/go.mod h1:H031xJmbD/WCDINGzjvQ9THkh0rPKHF+m2gUSrubnMI= -github.com/mattn/go-runewidth v0.0.22 h1:76lXsPn6FyHtTY+jt2fTTvsMUCZq1k0qwRsAMuxzKAk= -github.com/mattn/go-runewidth v0.0.22/go.mod h1:XBkDxAl56ILZc9knddidhrOlY5R/pDhgLpndooCuJAs= +github.com/mattn/go-runewidth v0.0.24 h1:cpokDiIn0MGnhdHwuWnJBITySJ20QyNGnY2kR/ay2DU= +github.com/mattn/go-runewidth v0.0.24/go.mod h1:XBkDxAl56ILZc9knddidhrOlY5R/pDhgLpndooCuJAs= github.com/mitchellh/colorstring v0.0.0-20190213212951-d06e56a500db h1:62I3jR2EmQ4l5rM/4FEfDWcRD+abF5XlKShorW5LRoQ= github.com/mitchellh/colorstring v0.0.0-20190213212951-d06e56a500db/go.mod h1:l0dey0ia/Uv7NcFFVbCLtqEBQbrT4OCwCSKTEv6enCw= github.com/mitchellh/copystructure v1.2.0 h1:vpKXTN4ewci03Vljg/q9QvCGUDttBOGBIa15WveJJGw= @@ -181,45 +181,44 @@ github.com/zclconf/go-cty-yaml v1.2.0 h1:GDyL4+e/Qe/S0B7YaecMLbVvAR/Mp21CXMOSiCT github.com/zclconf/go-cty-yaml v1.2.0/go.mod h1:9YLUH4g7lOhVWqUbctnVlZ5KLpg7JAprQNgxSZ1Gyxs= go.opentelemetry.io/auto/sdk v1.2.1 h1:jXsnJ4Lmnqd11kwkBV2LgLoFMZKizbCi5fNZ/ipaZ64= go.opentelemetry.io/auto/sdk v1.2.1/go.mod h1:KRTj+aOaElaLi+wW1kO/DZRXwkF4C5xPbEe3ZiIhN7Y= -go.opentelemetry.io/otel v1.39.0 h1:8yPrr/S0ND9QEfTfdP9V+SiwT4E0G7Y5MO7p85nis48= -go.opentelemetry.io/otel v1.39.0/go.mod h1:kLlFTywNWrFyEdH0oj2xK0bFYZtHRYUdv1NklR/tgc8= -go.opentelemetry.io/otel/metric v1.39.0 h1:d1UzonvEZriVfpNKEVmHXbdf909uGTOQjA0HF0Ls5Q0= -go.opentelemetry.io/otel/metric v1.39.0/go.mod h1:jrZSWL33sD7bBxg1xjrqyDjnuzTUB0x1nBERXd7Ftcs= -go.opentelemetry.io/otel/sdk v1.39.0 h1:nMLYcjVsvdui1B/4FRkwjzoRVsMK8uL/cj0OyhKzt18= -go.opentelemetry.io/otel/sdk v1.39.0/go.mod h1:vDojkC4/jsTJsE+kh+LXYQlbL8CgrEcwmt1ENZszdJE= -go.opentelemetry.io/otel/sdk/metric v1.39.0 h1:cXMVVFVgsIf2YL6QkRF4Urbr/aMInf+2WKg+sEJTtB8= -go.opentelemetry.io/otel/sdk/metric v1.39.0/go.mod h1:xq9HEVH7qeX69/JnwEfp6fVq5wosJsY1mt4lLfYdVew= -go.opentelemetry.io/otel/trace v1.39.0 h1:2d2vfpEDmCJ5zVYz7ijaJdOF59xLomrvj7bjt6/qCJI= -go.opentelemetry.io/otel/trace v1.39.0/go.mod h1:88w4/PnZSazkGzz/w84VHpQafiU4EtqqlVdxWy+rNOA= +go.opentelemetry.io/otel v1.43.0 h1:mYIM03dnh5zfN7HautFE4ieIig9amkNANT+xcVxAj9I= +go.opentelemetry.io/otel v1.43.0/go.mod h1:JuG+u74mvjvcm8vj8pI5XiHy1zDeoCS2LB1spIq7Ay0= +go.opentelemetry.io/otel/metric v1.43.0 h1:d7638QeInOnuwOONPp4JAOGfbCEpYb+K6DVWvdxGzgM= +go.opentelemetry.io/otel/metric v1.43.0/go.mod h1:RDnPtIxvqlgO8GRW18W6Z/4P462ldprJtfxHxyKd2PY= +go.opentelemetry.io/otel/sdk v1.43.0 h1:pi5mE86i5rTeLXqoF/hhiBtUNcrAGHLKQdhg4h4V9Dg= +go.opentelemetry.io/otel/sdk v1.43.0/go.mod h1:P+IkVU3iWukmiit/Yf9AWvpyRDlUeBaRg6Y+C58QHzg= +go.opentelemetry.io/otel/sdk/metric v1.43.0 h1:S88dyqXjJkuBNLeMcVPRFXpRw2fuwdvfCGLEo89fDkw= +go.opentelemetry.io/otel/sdk/metric v1.43.0/go.mod h1:C/RJtwSEJ5hzTiUz5pXF1kILHStzb9zFlIEe85bhj6A= +go.opentelemetry.io/otel/trace v1.43.0 h1:BkNrHpup+4k4w+ZZ86CZoHHEkohws8AY+WTX09nk+3A= +go.opentelemetry.io/otel/trace v1.43.0/go.mod h1:/QJhyVBUUswCphDVxq+8mld+AvhXZLhe+8WVFxiFff0= go.yaml.in/yaml/v3 v3.0.4/go.mod h1:DhzuOOF2ATzADvBadXxruRBLzYTpT36CKvDb3+aBEFg= -golang.org/x/crypto v0.49.0 h1:+Ng2ULVvLHnJ/ZFEq4KdcDd/cfjrrjjNSXNzxg0Y4U4= -golang.org/x/crypto v0.49.0/go.mod h1:ErX4dUh2UM+CFYiXZRTcMpEcN8b/1gxEuv3nODoYtCA= -golang.org/x/mod v0.34.0 h1:xIHgNUUnW6sYkcM5Jleh05DvLOtwc6RitGHbDk4akRI= -golang.org/x/mod v0.34.0/go.mod h1:ykgH52iCZe79kzLLMhyCUzhMci+nQj+0XkbXpNYtVjY= -golang.org/x/net v0.52.0 h1:He/TN1l0e4mmR3QqHMT2Xab3Aj3L9qjbhRm78/6jrW0= -golang.org/x/net v0.52.0/go.mod h1:R1MAz7uMZxVMualyPXb+VaqGSa3LIaUqk0eEt3w36Sw= -golang.org/x/sync v0.20.0 h1:e0PTpb7pjO8GAtTs2dQ6jYa5BWYlMuX047Dco/pItO4= -golang.org/x/sync v0.20.0/go.mod h1:9xrNwdLfx4jkKbNva9FpL6vEN7evnE43NNNJQ2LF3+0= +golang.org/x/crypto v0.53.0 h1:QZ4Muo8THX6CizN2vPPd5fBGHyogrdK9fG4wLPFUsto= +golang.org/x/crypto v0.53.0/go.mod h1:DNLU434OwVakk9PzuwV8w62mAJpRJL3vsgcfp4Qnsio= +golang.org/x/mod v0.37.0 h1:vF1DjpVEshcIqoEaauuHebaLk1O1forxjxBaVn884JQ= +golang.org/x/mod v0.37.0/go.mod h1:m8S8VeM9r4dzDwjrKO0a1sZP3YjeMamRRlD+fmR2Q/0= +golang.org/x/net v0.55.0 h1:bcvxaJn3e1U6InsFWt1JUq1aSjnRxLzT2rtD2KfkDF8= +golang.org/x/net v0.55.0/go.mod h1:L5U2KuzuOe1lY7Z+aWVIKK6qEeJXnXV9yzGA+WCHJww= +golang.org/x/sync v0.21.0 h1:HLII4xRRTtCRkxYp4HNFF0Js/Og6q2i++KXbg0gHCwM= +golang.org/x/sync v0.21.0/go.mod h1:9xrNwdLfx4jkKbNva9FpL6vEN7evnE43NNNJQ2LF3+0= golang.org/x/sys v0.0.0-20200116001909-b77594299b42/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200223170610-d5e6a3e2c0ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210927094055-39ccf1dd6fa6/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220503163025-988cb79eb6c6/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.42.0 h1:omrd2nAlyT5ESRdCLYdm3+fMfNFE/+Rf4bDIQImRJeo= -golang.org/x/sys v0.42.0/go.mod h1:4GL1E5IUh+htKOUEOaiffhrAeqysfVGipDYzABqnCmw= -golang.org/x/term v0.41.0 h1:QCgPso/Q3RTJx2Th4bDLqML4W6iJiaXFq2/ftQF13YU= -golang.org/x/term v0.41.0/go.mod h1:3pfBgksrReYfZ5lvYM0kSO0LIkAl4Yl2bXOkKP7Ec2A= -golang.org/x/text v0.35.0 h1:JOVx6vVDFokkpaq1AEptVzLTpDe9KGpj5tR4/X+ybL8= -golang.org/x/text v0.35.0/go.mod h1:khi/HExzZJ2pGnjenulevKNX1W67CUy0AsXcNubPGCA= -golang.org/x/tools v0.43.0 h1:12BdW9CeB3Z+J/I/wj34VMl8X+fEXBxVR90JeMX5E7s= -golang.org/x/tools v0.43.0/go.mod h1:uHkMso649BX2cZK6+RpuIPXS3ho2hZo4FVwfoy1vIk0= +golang.org/x/sys v0.46.0 h1:noSf2Fq6F8DBgS+LysIkx7rIExoNHJsxOAtPp4rthXw= +golang.org/x/sys v0.46.0/go.mod h1:4GL1E5IUh+htKOUEOaiffhrAeqysfVGipDYzABqnCmw= +golang.org/x/term v0.44.0 h1:0rLvDRCtNj0gZkyIXhCyOb2OAzEhLVqc4B+hrsBhrmc= +golang.org/x/term v0.44.0/go.mod h1:7ze4MdzUzLXpSAoFP1H0bOI9aXDqveSvatT5vKcFh2Y= +golang.org/x/text v0.38.0 h1:sXmwo9DwP3OK9EZ7PqAdaooSGozfl/3a6/xJcbzPRhE= +golang.org/x/text v0.38.0/go.mod h1:YXZt3QhHUKYT53r2lLKFIVi6Ao1jdzrTR/KQ09qyxF4= +golang.org/x/tools v0.45.0 h1:18qN3FAooORvApf5XjCXgsuayZOEtXf6JK18I3+ONa8= +golang.org/x/tools v0.45.0/go.mod h1:LuUGqqaXcXMEFEruIVJVm5mgDD8vww/z/SR1gQ4uE/0= gonum.org/v1/gonum v0.17.0 h1:VbpOemQlsSMrYmn7T2OUvQ4dqxQXU+ouZFQsZOx50z4= gonum.org/v1/gonum v0.17.0/go.mod h1:El3tOrEuMpv2UdMrbNlKEh9vd86bmQ6vqIcDwxEOc1E= -google.golang.org/genproto/googleapis/rpc v0.0.0-20260406154035-8fb7ec149431 h1:wQMYGlvOe8JeVtFx06GzMMMCG4q7iDa3Ijr5P6kk96U= -google.golang.org/genproto/googleapis/rpc v0.0.0-20260406154035-8fb7ec149431/go.mod h1:4Hqkh8ycfw05ld/3BWL7rJOSfebL2Q+DVDeRgYgxUU8= -google.golang.org/grpc v1.80.0 h1:Xr6m2WmWZLETvUNvIUmeD5OAagMw3FiKmMlTdViWsHM= -google.golang.org/grpc v1.80.0/go.mod h1:ho/dLnxwi3EDJA4Zghp7k2Ec1+c2jqup0bFkw07bwF4= +google.golang.org/genproto/googleapis/rpc v0.0.0-20260526163538-3dc84a4a5aaa h1:mZHHdPZl0dbGHCflZgAq/Q468DWVFcU2whhB2KAo8fk= +google.golang.org/genproto/googleapis/rpc v0.0.0-20260526163538-3dc84a4a5aaa/go.mod h1:4Hqkh8ycfw05ld/3BWL7rJOSfebL2Q+DVDeRgYgxUU8= +google.golang.org/grpc v1.81.1 h1:VnnIIZ88UzOOKLukQi+ImGz8O1Wdp8nAGGnvOfEIWQQ= +google.golang.org/grpc v1.81.1/go.mod h1:xGH9GfzOyMTGIOXBJmXt+BX/V0kcdQbdcuwQ/zNw42I= google.golang.org/protobuf v1.36.11 h1:fV6ZwhNocDyBLK0dj+fg8ektcVegBBuEolpbTQyBNVE= google.golang.org/protobuf v1.36.11/go.mod h1:HTf+CrKn2C3g5S8VImy6tdcUvCska2kB7j23XfzDpco= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+SDo693bJlVdllGtEeKM= diff --git a/internal/diagnostics/operation.go b/internal/diagnostics/operation.go index a30efb1..51a75b5 100644 --- a/internal/diagnostics/operation.go +++ b/internal/diagnostics/operation.go @@ -59,15 +59,18 @@ func resDiags(res *pb.Operation_Response) []*pb.Diagnostic { return Concat( res.GetDiagnostics(), res.GetGenerate().GetDiagnostics(), + res.GetCheck().GetGenerate().GetDiagnostics(), res.GetCheck().GetInit().GetDiagnostics(), res.GetCheck().GetValidate().GetDiagnostics(), res.GetCheck().GetPlan().GetDiagnostics(), res.GetLaunch().GetDiagnostics(), + res.GetLaunch().GetGenerate().GetDiagnostics(), res.GetLaunch().GetInit().GetDiagnostics(), res.GetLaunch().GetValidate().GetDiagnostics(), res.GetLaunch().GetPlan().GetDiagnostics(), res.GetLaunch().GetApply().GetDiagnostics(), res.GetRun().GetDiagnostics(), + res.GetRun().GetGenerate().GetDiagnostics(), res.GetRun().GetInit().GetDiagnostics(), res.GetRun().GetValidate().GetDiagnostics(), res.GetRun().GetPlan().GetDiagnostics(), @@ -75,6 +78,7 @@ func resDiags(res *pb.Operation_Response) []*pb.Diagnostic { res.GetRun().GetPriorStateShow().GetDiagnostics(), res.GetRun().GetDestroy().GetDiagnostics(), res.GetDestroy().GetDiagnostics(), + res.GetDestroy().GetGenerate().GetDiagnostics(), res.GetDestroy().GetInit().GetDiagnostics(), res.GetDestroy().GetPriorStateShow().GetDiagnostics(), res.GetDestroy().GetDestroy().GetDiagnostics(), From 1b353b66f201f2e8eac34e0386d5c07bac49aacd Mon Sep 17 00:00:00 2001 From: Ryan Cragun Date: Mon, 8 Jun 2026 13:25:51 -0600 Subject: [PATCH 2/2] handle v6 of the security group module Signed-off-by: Ryan Cragun --- .../scenario_e2e_aws/modules/target/module.tf | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/acceptance/scenarios/scenario_e2e_aws/modules/target/module.tf b/acceptance/scenarios/scenario_e2e_aws/modules/target/module.tf index 9c5ca99..42cf4d4 100644 --- a/acceptance/scenarios/scenario_e2e_aws/modules/target/module.tf +++ b/acceptance/scenarios/scenario_e2e_aws/modules/target/module.tf @@ -4,8 +4,7 @@ terraform { required_providers { enos = { - source = "hashicorp-forge/enos" - version = "0.6.2" + source = "hashicorp-forge/enos" } aws = { @@ -19,7 +18,7 @@ data "aws_ami" "ubuntu" { filter { name = "name" - values = ["ubuntu/images/hvm-ssd-gp3/ubuntu-noble-24.04-*-server-*"] + values = ["ubuntu/images/hvm-ssd-gp3/ubuntu-resolute-26.04-*-server-*"] } filter { @@ -40,7 +39,7 @@ data "aws_ami" "rhel" { filter { name = "name" - values = ["RHEL-10.0*HVM-20*"] + values = ["RHEL-10.1*HVM_GA-20*"] } filter { @@ -166,7 +165,9 @@ module "target_sg" { vpc_id = aws_vpc.vpc.id tags = local.tags - ingress_cidr_blocks = ["${data.enos_environment.localhost.public_ipv4_addresses[0]}/32"] + ingress_cidr_ipv4 = { + target = "${data.enos_environment.localhost.public_ipv4_addresses[0]}/32", + } } resource "aws_instance" "target" { @@ -175,7 +176,7 @@ resource "aws_instance" "target" { key_name = "enos-ci-ssh-key" associate_public_ip_address = true tags = local.tags - vpc_security_group_ids = [module.target_sg.security_group_id] + vpc_security_group_ids = [module.target_sg.id] subnet_id = aws_subnet.subnet[0].id }