Skip to content

Commit

Permalink
Rename ReadDataRetentionPolicyV2 to ReadDataRetentionPolicyChoice
Browse files Browse the repository at this point in the history
  • Loading branch information
JarrettSpiker committed Mar 11, 2024
1 parent 2a6723c commit 6870298
Show file tree
Hide file tree
Showing 7 changed files with 40 additions and 40 deletions.
4 changes: 2 additions & 2 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
# Unreleased

## Features
*For Terraform Enterprise users who have data retention policies defined on Organizations or Workspaces: A new DataRetentionPolicyChoice relation has been added to reflect that [data retention policies are polymorphic](https://developer.hashicorp.com/terraform/enterprise/api-docs/data-retention-policies#data-retention-policy-types). Organizations and workspaces may be related to a `DataRetentionPolicyDeleteOlder` or `DataRetentionPolicyDontDelete` record through the `DataRetentionPolicyChoice` struct. Data retention policies can be read using `ReadDataRetentionPolicyV2`, and set or updated (including changing their type) using `SetDataRetentionPolicyDeleteOlder` or `SetDataRetentionPolicyDontDelete` by @JarrettSpiker [#652](https://github.com/hashicorp/go-tfe/pull/844)
*For Terraform Enterprise users who have data retention policies defined on Organizations or Workspaces: A new DataRetentionPolicyChoice relation has been added to reflect that [data retention policies are polymorphic](https://developer.hashicorp.com/terraform/enterprise/api-docs/data-retention-policies#data-retention-policy-types). Organizations and workspaces may be related to a `DataRetentionPolicyDeleteOlder` or `DataRetentionPolicyDontDelete` record through the `DataRetentionPolicyChoice` struct. Data retention policies can be read using `ReadDataRetentionPolicyChoice`, and set or updated (including changing their type) using `SetDataRetentionPolicyDeleteOlder` or `SetDataRetentionPolicyDontDelete` by @JarrettSpiker [#652](https://github.com/hashicorp/go-tfe/pull/844)

## Deprecations
* The `DataRetentionPolicy` type, and the `DataRetentionPolicy` relationship on `Organization` and `Workspace`s have been deprecated. The `DataRetentionPolicy` type is equivalent to the new `DataRetentionPolicyDeleteOlder`. The Data retention policy relationships on `Organization` and `Workspace`s are now [polymorphic](https://developer.hashicorp.com/terraform/enterprise/api-docs/data-retention-policies#data-retention-policy-types), and are represented by the `DataRetentionPolicyChoice` relationship. The existing `DataRetentionPolicy` relationship will continue to be populated when reading an `Organization` or `Workspace`, but it may be removed in a future release. @JarrettSpiker [#652](https://github.com/hashicorp/go-tfe/pull/844)
* The `SetDataRetentionPolicy` function on `Organizations` and `Workspaces` is now deprecated in favour of `SetDataRetentionPolicyDeleteOlder` or `SetDataRetentionPolicyDontDelete`. `SetDataRetentionPolicy` will only update the data retention policy when communicating with TFE versions v202311 and v202312. @JarrettSpiker [#652](https://github.com/hashicorp/go-tfe/pull/844)
* The `ReadDataRetentionPolicy` function on `Organizations` and `Workspaces` is now deprecated in favour of `ReadDataRetentionPolicyV2`. `ReadDataRetentionPolicyV2` may return the different multiple data retention policy types added in TFE 202401-1. `SetDataRetentionPolicy` will only update the data retention policy when communicating with TFE versions v202311 and v202312. @JarrettSpiker [#652](https://github.com/hashicorp/go-tfe/pull/844)
* The `ReadDataRetentionPolicy` function on `Organizations` and `Workspaces` is now deprecated in favour of `ReadDataRetentionPolicyChoice`. `ReadDataRetentionPolicyChoice` may return the different multiple data retention policy types added in TFE 202401-1. `SetDataRetentionPolicy` will only update the data retention policy when communicating with TFE versions v202311 and v202312. @JarrettSpiker [#652](https://github.com/hashicorp/go-tfe/pull/844)


# v1.47.0
Expand Down
12 changes: 6 additions & 6 deletions mocks/organization_mocks.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

12 changes: 6 additions & 6 deletions mocks/workspace_mocks.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

10 changes: 5 additions & 5 deletions organization.go
Original file line number Diff line number Diff line change
Expand Up @@ -49,12 +49,12 @@ type Organizations interface {
// ReadDataRetentionPolicy reads an organization's data retention policy
// **Note: This functionality is only available in Terraform Enterprise versions v202311-1 and v202312-1.**
//
// Deprecated: Use ReadDataRetentionPolicyV2 instead.
// Deprecated: Use ReadDataRetentionPolicyChoice instead.
ReadDataRetentionPolicy(ctx context.Context, organization string) (*DataRetentionPolicy, error)

// ReadDataRetentionPolicyV2 reads an organization's data retention policy
// ReadDataRetentionPolicyChoice reads an organization's data retention policy
// **Note: This functionality is only available in Terraform Enterprise.**
ReadDataRetentionPolicyV2(ctx context.Context, organization string) (*DataRetentionPolicyChoice, error)
ReadDataRetentionPolicyChoice(ctx context.Context, organization string) (*DataRetentionPolicyChoice, error)

// SetDataRetentionPolicy sets an organization's data retention policy
// **Note: This functionality is only available in Terraform Enterprise versions v202311-1 and v202312-1.**
Expand Down Expand Up @@ -479,15 +479,15 @@ func (s *organizations) ReadDataRetentionPolicy(ctx context.Context, organizatio
// try to detect known issue where this function is used with TFE >= 202401,
// and direct user towards the V2 function
if drpUnmarshalEr.MatchString(err.Error()) {
return nil, fmt.Errorf("error reading deprecated DataRetentionPolicy, use ReadDataRetentionPolicyV2 instead")
return nil, fmt.Errorf("error reading deprecated DataRetentionPolicy, use ReadDataRetentionPolicyChoice instead")
}
return nil, err
}

return dataRetentionPolicy, nil
}

func (s *organizations) ReadDataRetentionPolicyV2(ctx context.Context, organization string) (*DataRetentionPolicyChoice, error) {
func (s *organizations) ReadDataRetentionPolicyChoice(ctx context.Context, organization string) (*DataRetentionPolicyChoice, error) {
if !validStringID(&organization) {
return nil, ErrInvalidOrg
}
Expand Down
16 changes: 8 additions & 8 deletions organization_integration_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -686,7 +686,7 @@ func TestOrganization_DataRetentionPolicy(t *testing.T) {
require.Nil(t, organization.DataRetentionPolicy)
require.Nil(t, organization.DataRetentionPolicyChoice)

dataRetentionPolicy, err := client.Organizations.ReadDataRetentionPolicyV2(ctx, orgTest.Name)
dataRetentionPolicy, err := client.Organizations.ReadDataRetentionPolicyChoice(ctx, orgTest.Name)
require.NoError(t, err)
require.Nil(t, dataRetentionPolicy)

Expand All @@ -696,7 +696,7 @@ func TestOrganization_DataRetentionPolicy(t *testing.T) {
require.Equal(t, 33, createdDataRetentionPolicy.DeleteOlderThanNDays)
require.Contains(t, createdDataRetentionPolicy.ID, "drp-")

dataRetentionPolicy, err = client.Organizations.ReadDataRetentionPolicyV2(ctx, orgTest.Name)
dataRetentionPolicy, err = client.Organizations.ReadDataRetentionPolicyChoice(ctx, orgTest.Name)
require.NoError(t, err)
require.NotNil(t, dataRetentionPolicy.DataRetentionPolicyDeleteOlder)

Expand All @@ -717,7 +717,7 @@ func TestOrganization_DataRetentionPolicy(t *testing.T) {
require.NoError(t, err)
require.Equal(t, 1, createdDataRetentionPolicy.DeleteOlderThanNDays)

dataRetentionPolicy, err = client.Organizations.ReadDataRetentionPolicyV2(ctx, orgTest.Name)
dataRetentionPolicy, err = client.Organizations.ReadDataRetentionPolicyChoice(ctx, orgTest.Name)
require.NoError(t, err)
require.NotNil(t, dataRetentionPolicy.DataRetentionPolicyDeleteOlder)
require.Equal(t, 1, dataRetentionPolicy.DataRetentionPolicyDeleteOlder.DeleteOlderThanNDays)
Expand All @@ -729,7 +729,7 @@ func TestOrganization_DataRetentionPolicy(t *testing.T) {
require.NoError(t, err)
require.Contains(t, createdDataRetentionPolicy.ID, "drp-")

dataRetentionPolicy, err = client.Organizations.ReadDataRetentionPolicyV2(ctx, orgTest.Name)
dataRetentionPolicy, err = client.Organizations.ReadDataRetentionPolicyChoice(ctx, orgTest.Name)
require.NoError(t, err)
require.NotNil(t, dataRetentionPolicy.DataRetentionPolicyDontDelete)
require.Equal(t, createdDataRetentionPolicy.ID, dataRetentionPolicy.DataRetentionPolicyDontDelete.ID)
Expand All @@ -744,23 +744,23 @@ func TestOrganization_DataRetentionPolicy(t *testing.T) {
_, err = client.Organizations.SetDataRetentionPolicyDeleteOlder(ctx, orgTest.Name, DataRetentionPolicyDeleteOlderSetOptions{DeleteOlderThanNDays: 45})
require.NoError(t, err)

dataRetentionPolicy, err = client.Organizations.ReadDataRetentionPolicyV2(ctx, orgTest.Name)
dataRetentionPolicy, err = client.Organizations.ReadDataRetentionPolicyChoice(ctx, orgTest.Name)
require.NoError(t, err)
require.NotNil(t, dataRetentionPolicy.DataRetentionPolicyDeleteOlder)
require.Equal(t, 45, dataRetentionPolicy.DataRetentionPolicyDeleteOlder.DeleteOlderThanNDays)
require.Nil(t, dataRetentionPolicy.DataRetentionPolicyDontDelete)

_, err = client.Organizations.SetDataRetentionPolicyDontDelete(ctx, orgTest.Name, DataRetentionPolicyDontDeleteSetOptions{})
require.NoError(t, err)
dataRetentionPolicy, err = client.Organizations.ReadDataRetentionPolicyV2(ctx, orgTest.Name)
dataRetentionPolicy, err = client.Organizations.ReadDataRetentionPolicyChoice(ctx, orgTest.Name)
require.NoError(t, err)
require.Nil(t, dataRetentionPolicy.DataRetentionPolicyDeleteOlder)
require.NotNil(t, dataRetentionPolicy.DataRetentionPolicyDontDelete)

_, err = client.Organizations.SetDataRetentionPolicyDeleteOlder(ctx, orgTest.Name, DataRetentionPolicyDeleteOlderSetOptions{DeleteOlderThanNDays: 20})
require.NoError(t, err)

dataRetentionPolicy, err = client.Organizations.ReadDataRetentionPolicyV2(ctx, orgTest.Name)
dataRetentionPolicy, err = client.Organizations.ReadDataRetentionPolicyChoice(ctx, orgTest.Name)
require.NoError(t, err)
require.NotNil(t, dataRetentionPolicy.DataRetentionPolicyDeleteOlder)
require.Equal(t, 20, dataRetentionPolicy.DataRetentionPolicyDeleteOlder.DeleteOlderThanNDays)
Expand All @@ -771,7 +771,7 @@ func TestOrganization_DataRetentionPolicy(t *testing.T) {
err = client.Organizations.DeleteDataRetentionPolicy(ctx, orgTest.Name)
require.NoError(t, err)

dataRetentionPolicy, err = client.Organizations.ReadDataRetentionPolicyV2(ctx, orgTest.Name)
dataRetentionPolicy, err = client.Organizations.ReadDataRetentionPolicyChoice(ctx, orgTest.Name)
assert.Nil(t, err)
require.Nil(t, dataRetentionPolicy)
})
Expand Down
10 changes: 5 additions & 5 deletions workspace.go
Original file line number Diff line number Diff line change
Expand Up @@ -106,13 +106,13 @@ type Workspaces interface {

// ReadDataRetentionPolicy reads a workspace's data retention policy
//
// Deprecated: Use ReadDataRetentionPolicyV2 instead.
// Deprecated: Use ReadDataRetentionPolicyChoice instead.
// **Note: This functionality is only available in Terraform Enterprise versions v202311-1 and v202312-1.**
ReadDataRetentionPolicy(ctx context.Context, workspaceID string) (*DataRetentionPolicy, error)

// ReadDataRetentionPolicyV2 reads a workspace's data retention policy
// ReadDataRetentionPolicyChoice reads a workspace's data retention policy
// **Note: This functionality is only available in Terraform Enterprise.**
ReadDataRetentionPolicyV2(ctx context.Context, workspaceID string) (*DataRetentionPolicyChoice, error)
ReadDataRetentionPolicyChoice(ctx context.Context, workspaceID string) (*DataRetentionPolicyChoice, error)

// SetDataRetentionPolicy sets a workspace's data retention policy to delete data older than a certain number of days
//
Expand Down Expand Up @@ -1264,15 +1264,15 @@ func (s *workspaces) ReadDataRetentionPolicy(ctx context.Context, workspaceID st
// try to detect known issue where this function is used with TFE >= 202401,
// and direct user towards the V2 function
if drpUnmarshalEr.MatchString(err.Error()) {
return nil, fmt.Errorf("error reading deprecated DataRetentionPolicy, use ReadDataRetentionPolicyV2 instead")
return nil, fmt.Errorf("error reading deprecated DataRetentionPolicy, use ReadDataRetentionPolicyChoice instead")
}
return nil, err
}

return dataRetentionPolicy, nil
}

func (s *workspaces) ReadDataRetentionPolicyV2(ctx context.Context, workspaceID string) (*DataRetentionPolicyChoice, error) {
func (s *workspaces) ReadDataRetentionPolicyChoice(ctx context.Context, workspaceID string) (*DataRetentionPolicyChoice, error) {
if !validStringID(&workspaceID) {
return nil, ErrInvalidWorkspaceID
}
Expand Down
16 changes: 8 additions & 8 deletions workspace_integration_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -2635,7 +2635,7 @@ func TestWorkspace_DataRetentionPolicy(t *testing.T) {
wTest, wTestCleanup := createWorkspace(t, client, nil)
defer wTestCleanup()

dataRetentionPolicy, err := client.Workspaces.ReadDataRetentionPolicyV2(ctx, wTest.ID)
dataRetentionPolicy, err := client.Workspaces.ReadDataRetentionPolicyChoice(ctx, wTest.ID)
assert.Nil(t, err)
require.Nil(t, dataRetentionPolicy)

Expand All @@ -2650,7 +2650,7 @@ func TestWorkspace_DataRetentionPolicy(t *testing.T) {
require.Equal(t, 33, createdDataRetentionPolicy.DeleteOlderThanNDays)
require.Contains(t, createdDataRetentionPolicy.ID, "drp-")

dataRetentionPolicy, err = client.Workspaces.ReadDataRetentionPolicyV2(ctx, wTest.ID)
dataRetentionPolicy, err = client.Workspaces.ReadDataRetentionPolicyChoice(ctx, wTest.ID)
require.NoError(t, err)
require.NotNil(t, dataRetentionPolicy.DataRetentionPolicyDeleteOlder)

Expand All @@ -2671,7 +2671,7 @@ func TestWorkspace_DataRetentionPolicy(t *testing.T) {
require.NoError(t, err)
require.Equal(t, 1, createdDataRetentionPolicy.DeleteOlderThanNDays)

dataRetentionPolicy, err = client.Workspaces.ReadDataRetentionPolicyV2(ctx, wTest.ID)
dataRetentionPolicy, err = client.Workspaces.ReadDataRetentionPolicyChoice(ctx, wTest.ID)
require.NoError(t, err)
require.NotNil(t, dataRetentionPolicy.DataRetentionPolicyDeleteOlder)
require.Equal(t, 1, dataRetentionPolicy.DataRetentionPolicyDeleteOlder.DeleteOlderThanNDays)
Expand All @@ -2683,7 +2683,7 @@ func TestWorkspace_DataRetentionPolicy(t *testing.T) {
require.NoError(t, err)
require.Contains(t, createdDataRetentionPolicy.ID, "drp-")

dataRetentionPolicy, err = client.Workspaces.ReadDataRetentionPolicyV2(ctx, wTest.ID)
dataRetentionPolicy, err = client.Workspaces.ReadDataRetentionPolicyChoice(ctx, wTest.ID)
require.NoError(t, err)
require.NotNil(t, dataRetentionPolicy.DataRetentionPolicyDontDelete)
require.Equal(t, createdDataRetentionPolicy.ID, dataRetentionPolicy.DataRetentionPolicyDontDelete.ID)
Expand All @@ -2698,23 +2698,23 @@ func TestWorkspace_DataRetentionPolicy(t *testing.T) {
_, err = client.Workspaces.SetDataRetentionPolicyDeleteOlder(ctx, wTest.ID, DataRetentionPolicyDeleteOlderSetOptions{DeleteOlderThanNDays: 45})
require.NoError(t, err)

dataRetentionPolicy, err = client.Workspaces.ReadDataRetentionPolicyV2(ctx, wTest.ID)
dataRetentionPolicy, err = client.Workspaces.ReadDataRetentionPolicyChoice(ctx, wTest.ID)
require.NoError(t, err)
require.NotNil(t, dataRetentionPolicy.DataRetentionPolicyDeleteOlder)
require.Equal(t, 45, dataRetentionPolicy.DataRetentionPolicyDeleteOlder.DeleteOlderThanNDays)
require.Nil(t, dataRetentionPolicy.DataRetentionPolicyDontDelete)

_, err = client.Workspaces.SetDataRetentionPolicyDontDelete(ctx, wTest.ID, DataRetentionPolicyDontDeleteSetOptions{})
require.NoError(t, err)
dataRetentionPolicy, err = client.Workspaces.ReadDataRetentionPolicyV2(ctx, wTest.ID)
dataRetentionPolicy, err = client.Workspaces.ReadDataRetentionPolicyChoice(ctx, wTest.ID)
require.NoError(t, err)
require.Nil(t, dataRetentionPolicy.DataRetentionPolicyDeleteOlder)
require.NotNil(t, dataRetentionPolicy.DataRetentionPolicyDontDelete)

_, err = client.Workspaces.SetDataRetentionPolicyDeleteOlder(ctx, wTest.ID, DataRetentionPolicyDeleteOlderSetOptions{DeleteOlderThanNDays: 20})
require.NoError(t, err)

dataRetentionPolicy, err = client.Workspaces.ReadDataRetentionPolicyV2(ctx, wTest.ID)
dataRetentionPolicy, err = client.Workspaces.ReadDataRetentionPolicyChoice(ctx, wTest.ID)
require.NoError(t, err)
require.NotNil(t, dataRetentionPolicy.DataRetentionPolicyDeleteOlder)
require.Equal(t, 20, dataRetentionPolicy.DataRetentionPolicyDeleteOlder.DeleteOlderThanNDays)
Expand All @@ -2725,7 +2725,7 @@ func TestWorkspace_DataRetentionPolicy(t *testing.T) {
err = client.Workspaces.DeleteDataRetentionPolicy(ctx, wTest.ID)
require.NoError(t, err)

dataRetentionPolicy, err = client.Workspaces.ReadDataRetentionPolicyV2(ctx, wTest.ID)
dataRetentionPolicy, err = client.Workspaces.ReadDataRetentionPolicyChoice(ctx, wTest.ID)
assert.Nil(t, err)
require.Nil(t, dataRetentionPolicy)
})
Expand Down

0 comments on commit 6870298

Please sign in to comment.