Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions pkg/retention/retention_policy.go
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ type RetentionType string
const (
LifecycleReleaseRetentionType = RetentionType("LifecycleRelease")
LifecycleTentacleRetentionType = RetentionType("LifecycleTentacle")
RunbookRetentionType = RetentionType("RunbookRetention")
)

const (
Expand Down
40 changes: 40 additions & 0 deletions pkg/retention/space_default_runbook_retention_policy.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
package retention

import "github.com/OctopusDeploy/go-octopusdeploy/v2/pkg/resources"

type RunbookRetentionPolicy struct {
QuantityToKeep int `json:"QuantityToKeep"`
Strategy string `json:"Strategy"`
Unit string `json:"Unit"`
SpaceDefaultRetentionPolicy
}

func NewCountBasedRunbookRetentionPolicy(quantityToKeep int, unit string, spaceId string, policyId string) *RunbookRetentionPolicy {
return &RunbookRetentionPolicy{
QuantityToKeep: quantityToKeep,
Strategy: RetentionStrategyCount,
Unit: unit,
SpaceDefaultRetentionPolicy: SpaceDefaultRetentionPolicy{
SpaceId: spaceId,
RetentionType: RunbookRetentionType,
Resource: resources.Resource{
ID: policyId,
},
},
}
}

func NewKeepForeverRunbookRetentionPolicy(spaceId string, policyId string) *RunbookRetentionPolicy {
return &RunbookRetentionPolicy{
QuantityToKeep: 0,
Strategy: RetentionStrategyForever,
Unit: RetentionUnitItems,
SpaceDefaultRetentionPolicy: SpaceDefaultRetentionPolicy{
SpaceId: spaceId,
RetentionType: RunbookRetentionType,
Resource: resources.Resource{
ID: policyId,
},
},
}
}
62 changes: 61 additions & 1 deletion test/e2e/space_default_retention_policy_service_test.go
Original file line number Diff line number Diff line change
@@ -1,10 +1,11 @@
package e2e

import (
"testing"

"github.com/OctopusDeploy/go-octopusdeploy/v2/pkg/retention"
"github.com/OctopusDeploy/go-octopusdeploy/v2/pkg/spaces"
"github.com/stretchr/testify/require"
"testing"
)

func TestReadLifecycleReleaseRetentionDefaultPolicy(t *testing.T) {
Expand Down Expand Up @@ -39,6 +40,22 @@ func TestReadLifecycleTentacleRetentionDefaultPolicy(t *testing.T) {
require.Equal(t, res.RetentionType, retention.LifecycleTentacleRetentionType)
}

func TestReadRunbookRetentionDefaultPolicy(t *testing.T) {
client := getOctopusClient()
require.NotNil(t, client)

defaultSpace, _ := spaces.GetDefaultSpace(client)
query := retention.SpaceDefaultRetentionPolicyQuery{
RetentionType: retention.RunbookRetentionType,
SpaceID: defaultSpace.ID,
}
res, err := retention.Get(client, query)

require.NoError(t, err)
require.NotNil(t, res)
require.Equal(t, res.RetentionType, retention.RunbookRetentionType)
}

func TestModifyLifecycleReleaseRetentionDefaultPolicy(t *testing.T) {
client := getOctopusClient()
require.NotNil(t, client)
Expand Down Expand Up @@ -83,3 +100,46 @@ func TestModifyLifecycleTentacleRetentionDefaultPolicy(t *testing.T) {
require.Equal(t, res.Strategy, retention.RetentionStrategyCount)
require.Equal(t, res.Unit, retention.RetentionUnitDays)
}

func TestModifyRunbookRetentionDefaultPolicyUsingCount(t *testing.T) {
client := getOctopusClient()
require.NotNil(t, client)
defaultSpace, _ := spaces.GetDefaultSpace(client)
query := retention.SpaceDefaultRetentionPolicyQuery{
RetentionType: retention.RunbookRetentionType,
SpaceID: defaultSpace.ID,
}
defaultSpaceRunbookPolicy, err := retention.Get(client, query)
if err != nil {
t.Fatal(err)
}

policy := retention.NewCountBasedRunbookRetentionPolicy(3, retention.RetentionUnitDays, defaultSpace.ID, defaultSpaceRunbookPolicy.ID)
res, err := retention.Update(client, policy)
require.NoError(t, err)
require.NotNil(t, res)
require.Equal(t, res.QuantityToKeep, 3)
require.Equal(t, res.Strategy, retention.RetentionStrategyCount)
require.Equal(t, res.Unit, retention.RetentionUnitDays)
}

func TestModifyRunbookRetentionDefaultPolicyUsingForever(t *testing.T) {
client := getOctopusClient()
require.NotNil(t, client)
defaultSpace, _ := spaces.GetDefaultSpace(client)
query := retention.SpaceDefaultRetentionPolicyQuery{
RetentionType: retention.RunbookRetentionType,
SpaceID: defaultSpace.ID,
}
defaultSpaceRunbookPolicy, err := retention.Get(client, query)
if err != nil {
t.Fatal(err)
}

policy := retention.NewKeepForeverRunbookRetentionPolicy(defaultSpace.ID, defaultSpaceRunbookPolicy.ID)
res, err := retention.Update(client, policy)
require.NoError(t, err)
require.NotNil(t, res)
require.Equal(t, res.QuantityToKeep, 0)
require.Equal(t, res.Strategy, retention.RetentionStrategyForever)
}
Loading