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
Original file line number Diff line number Diff line change
Expand Up @@ -29,11 +29,16 @@ type CreateEnvironmentCommand struct {
ProjectID string `uri:"projectId"`
}

type DeprovisionEphemeralEnvironmentProjectCommand struct {
}
type DeprovisionEphemeralEnvironmentProjectCommand struct{}

type DeprovisionEphemeralEnvironmentProjectResponse struct {
DeprovisioningRun DeprovisioningRunbookRun `json:"DeprovisioningRunbookRuns"`
DeprovisioningRun DeprovisioningRunbookRun `json:"DeprovisioningRun"`
}

type DeprovisionEphemeralEnvironmentCommand struct{}

type DeprovisionEphemeralEnvironmentResponse struct {
DeprovisioningRuns []DeprovisioningRunbookRun `json:"DeprovisioningRuns"`
}

type DeprovisioningRunbookRun struct {
Expand Down Expand Up @@ -75,3 +80,18 @@ func DeprovisionForProject(client newclient.Client, spaceID string, environmentI

return newclient.Add[DeprovisionEphemeralEnvironmentProjectResponse](client, path, spaceID, body)
}

func Deprovision(client newclient.Client, spaceID string, environmentId string) (*DeprovisionEphemeralEnvironmentResponse, error) {
body := &DeprovisionEphemeralEnvironmentCommand{}

path, err := client.URITemplateCache().Expand(v2.DeprovisionEphemeralEnvironmentTemplate, map[string]any{
"id": environmentId,
"spaceId": spaceID,
})

if err != nil {
return nil, err
}

return newclient.Add[DeprovisionEphemeralEnvironmentResponse](client, path, spaceID, body)
}
1 change: 1 addition & 0 deletions pkg/environments/v2/route.go
Original file line number Diff line number Diff line change
Expand Up @@ -3,3 +3,4 @@ package v2
const Template = "/api/{spaceId}/environments/v2{/id}{?name,skip,ids,take,partialName,type}"
const CreateEphemeralEnvironmentTemplate = "/api/{spaceId}/projects/{projectId}/environments/ephemeral"
const DeprovisionEphemeralEnvironmentForProjectTemplate = "/api/{spaceId}/projects/{projectId}/environments/ephemeral/{id}/deprovision"
const DeprovisionEphemeralEnvironmentTemplate = "/api/{spaceId}/environments/ephemeral/{id}/deprovision"
55 changes: 54 additions & 1 deletion test/e2e/ephemeral_environment_service_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@ func TestEnvironmentServiceCreateEphemeralEnvironment(t *testing.T) {
defer DeleteTestChannel(t, client, ephemeralChannel)

createdEnvironmentId := CreateEphemeralEnvironment(t, client, project)
// defer DeleteTestEnvironment_NewClient(t, client, createdEnvironment)
defer DeprovisionEphemeralEnvironment(t, client, &createdEnvironmentId)

environments, err := ephemeralenvironments.GetAll(client, client.GetSpaceID())
require.NoError(t, err)
Expand All @@ -48,6 +48,46 @@ func TestEnvironmentServiceCreateEphemeralEnvironment(t *testing.T) {
require.Equal(t, createdEnvironmentId, environments.Items[0].ID)
}

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

space := GetDefaultSpace(t, client)
require.NotNil(t, space)

lifecycle := CreateTestLifecycle(t, client)
require.NotNil(t, lifecycle)
defer DeleteTestLifecycle(t, client, lifecycle)

projectGroup := CreateTestProjectGroup(t, client)
require.NotNil(t, projectGroup)
defer DeleteTestProjectGroup(t, client, projectGroup)

project := CreateTestProject(t, client, space, lifecycle, projectGroup)
require.NotNil(t, project)
defer DeleteTestProject(t, client, project)

runbook := CreateTestRunbook(t, client, lifecycle, projectGroup, project)
require.NotNil(t, runbook)
defer DeleteTestRunbook(t, client, runbook)

parentEnvironment := CreateParentEnvironment(t, client)
require.NotNil(t, parentEnvironment)
defer DeleteParentEnvironment(t, client, parentEnvironment)

ephemeralChannel := CreateEphemeralTestChannel(t, client, project, parentEnvironment)
require.NotNil(t, ephemeralChannel)
defer DeleteTestChannel(t, client, ephemeralChannel)

createdEnvironmentId := CreateEphemeralEnvironment(t, client, project)

DeprovisionEphemeralEnvironment(t, client, &createdEnvironmentId)

environments, err := ephemeralenvironments.GetAll(client, client.GetSpaceID())
require.NoError(t, err)
require.NotNil(t, environments)
}

func TestEnvironmentServiceDeprovisionEphemeralEnvironmentForProject(t *testing.T) {
client := getOctopusClient()
require.NotNil(t, client)
Expand Down Expand Up @@ -115,3 +155,16 @@ func DeprovisionEphemeralEnvironmentForProject(t *testing.T, client *client.Clie

return deprovisionResponse.DeprovisioningRun
}

func DeprovisionEphemeralEnvironment(t *testing.T, client *client.Client, environmentId *string) []ephemeralenvironments.DeprovisioningRunbookRun {
if client == nil {
client = getOctopusClient()
}
require.NotNil(t, client)

deprovisionResponse, err := ephemeralenvironments.Deprovision(client, client.GetSpaceID(), *environmentId)
require.NoError(t, err)
require.NotNil(t, deprovisionResponse)

return deprovisionResponse.DeprovisioningRuns
}
Loading