From 707c806ed689560851660d44720ebd5128e61199 Mon Sep 17 00:00:00 2001 From: Mutahhir Hayat Date: Tue, 2 Sep 2025 18:35:45 +0200 Subject: [PATCH 1/3] Add invoke-action-addrs to CreateRun --- run.go | 4 ++++ run_integration_test.go | 29 ++++++++++++++++++++++++----- 2 files changed, 28 insertions(+), 5 deletions(-) diff --git a/run.go b/run.go index 875cbd764..4f763d006 100644 --- a/run.go +++ b/run.go @@ -140,6 +140,7 @@ type Run struct { ForceCancelAvailableAt time.Time `jsonapi:"attr,force-cancel-available-at,iso8601"` HasChanges bool `jsonapi:"attr,has-changes"` IsDestroy bool `jsonapi:"attr,is-destroy"` + InvokeActionAddrs []string `jsonapi:"attr,invoke-action-addrs,omitempty"` Message string `jsonapi:"attr,message"` Permissions *RunPermissions `jsonapi:"attr,permissions"` PolicyPaths []string `jsonapi:"attr,policy-paths,omitempty"` @@ -403,6 +404,9 @@ type RunCreateOptions struct { // Variables allows you to specify terraform input variables for // a particular run, prioritized over variables defined on the workspace. Variables []*RunVariable `jsonapi:"attr,variables,omitempty"` + + // Action Addresses to invoke. + InvokeActionAddrs []string `jsonapi:"attr,invoke-action-addrs,omitempty"` } // RunApplyOptions represents the options for applying a run. diff --git a/run_integration_test.go b/run_integration_test.go index 52d75e97d..074dfaacf 100644 --- a/run_integration_test.go +++ b/run_integration_test.go @@ -304,11 +304,12 @@ func TestRunsCreate(t *testing.T) { t.Run("with additional attributes", func(t *testing.T) { options := RunCreateOptions{ - Message: String("yo"), - Workspace: wTest, - Refresh: Bool(false), - ReplaceAddrs: []string{"null_resource.example"}, - TargetAddrs: []string{"null_resource.example"}, + Message: String("yo"), + Workspace: wTest, + Refresh: Bool(false), + ReplaceAddrs: []string{"null_resource.example"}, + TargetAddrs: []string{"null_resource.example"}, + InvokeActionAddrs: []string{"actions.foo.bar"}, } r, err := client.Runs.Create(ctx, options) @@ -317,6 +318,7 @@ func TestRunsCreate(t *testing.T) { assert.Equal(t, *options.Refresh, r.Refresh) assert.Equal(t, options.ReplaceAddrs, r.ReplaceAddrs) assert.Equal(t, options.TargetAddrs, r.TargetAddrs) + assert.Equal(t, options.InvokeActionAddrs, r.InvokeActionAddrs) assert.Nil(t, r.Variables) }) @@ -371,6 +373,23 @@ func TestRunsCreate(t *testing.T) { assert.Contains(t, r.PolicyPaths, "./path/to/dir1") assert.Contains(t, r.PolicyPaths, "./path/to/dir2") }) + + t.Run("with action invocations", func(t *testing.T) { + skipUnlessBeta(t) + + opts := RunCreateOptions{ + Message: String("creating with policy paths"), + Workspace: wTest, + InvokeActionAddrs: []string{"actions.foo.bar"}, + } + + r, err := client.Runs.Create(ctx, opts) + require.NoError(t, err) + require.NotEmpty(t, r.InvokeActionAddrs) + + assert.Len(t, r.InvokeActionAddrs, 1) + assert.Contains(t, r.InvokeActionAddrs, "actions.foo.bar") + }) } func TestRunsRead_CostEstimate(t *testing.T) { From d50ed13776ab906195f789ab776cd7df4d266b70 Mon Sep 17 00:00:00 2001 From: Mutahhir Hayat Date: Tue, 2 Sep 2025 18:39:30 +0200 Subject: [PATCH 2/3] Add changelog entry --- CHANGELOG.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 0cad7ecd2..2785ce6a0 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,7 @@ # Unreleased +* Add `invoke-action-addrs` to `CreateRunOptions` by @mutahhir [#1206](https://github.com/hashicorp/go-tfe/pull/1206) + # v1.91.1 ## Bug Fixes From acc12fe609343e5a137596480051128fed4ee668 Mon Sep 17 00:00:00 2001 From: Mutahhir Hayat Date: Wed, 3 Sep 2025 00:23:59 +0200 Subject: [PATCH 3/3] remove broken test --- run_integration_test.go | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/run_integration_test.go b/run_integration_test.go index 074dfaacf..c3067628e 100644 --- a/run_integration_test.go +++ b/run_integration_test.go @@ -304,12 +304,11 @@ func TestRunsCreate(t *testing.T) { t.Run("with additional attributes", func(t *testing.T) { options := RunCreateOptions{ - Message: String("yo"), - Workspace: wTest, - Refresh: Bool(false), - ReplaceAddrs: []string{"null_resource.example"}, - TargetAddrs: []string{"null_resource.example"}, - InvokeActionAddrs: []string{"actions.foo.bar"}, + Message: String("yo"), + Workspace: wTest, + Refresh: Bool(false), + ReplaceAddrs: []string{"null_resource.example"}, + TargetAddrs: []string{"null_resource.example"}, } r, err := client.Runs.Create(ctx, options) @@ -318,7 +317,6 @@ func TestRunsCreate(t *testing.T) { assert.Equal(t, *options.Refresh, r.Refresh) assert.Equal(t, options.ReplaceAddrs, r.ReplaceAddrs) assert.Equal(t, options.TargetAddrs, r.TargetAddrs) - assert.Equal(t, options.InvokeActionAddrs, r.InvokeActionAddrs) assert.Nil(t, r.Variables) })