Skip to content

Commit 5cfe81b

Browse files
RTECO-235 - Fixed the proper handling of deletionStatus (#1142)
1 parent dd3599a commit 5cfe81b

File tree

5 files changed

+48
-12
lines changed

5 files changed

+48
-12
lines changed

README.md

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3081,17 +3081,23 @@ resp, err := serviceManager.DeleteReleaseBundleVersionPromotion(rbDetails, query
30813081
#### Remote Delete Release Bundle
30823082
30833083
```go
3084+
rbDetails := ReleaseBundleDetails{"rbName", "rbVersion"}
3085+
30843086
rules := &distribution.DistributionCommonParams{
3085-
SiteName: "*",
3086-
CityName: "*",
3087-
CountryCodes: []string{"*"},
3087+
SiteName: "*",
3088+
CityName: "*",
3089+
CountryCodes: []string{"*"},
30883090
}
30893091
params := distribution.NewDistributeReleaseBundleParams("rbName", "rbVersion")
30903092
params.DistributionRules = append(params.DistributionRules, rules)
30913093

3092-
dryRun := true
3094+
queryParams := CommonOptionalQueryParams{}
3095+
queryParams.ProjectKey = "project"
3096+
queryParams.Async = true
30933097

3094-
resp, err := serviceManager.RemoteDeleteReleaseBundle(params, dryRun)
3098+
isNewReleaseBundleApiSupported=true
3099+
//From 7.63.2, isNewReleaseBundleApiSupported is true, below that version it should be false.
3100+
resp, err := serviceManager.RemoteDeleteReleaseBundle(rbDetails, params, isNewReleaseBundleApiSupported)
30953101
```
30963102
30973103
#### check-rb-exists

lifecycle/lifecycle_test.go

Lines changed: 18 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -211,15 +211,31 @@ func TestRemoteDeleteReleaseBundle(t *testing.T) {
211211
}
212212
requestNum++
213213
writeMockStatusResponse(t, w, lifecycle.GetDistributionsResponse{{Status: rbStatus}})
214-
case "/" + lifecycle.GetRemoteDeleteReleaseBundleApi(testRb):
214+
case "/" + lifecycle.GetRemoteDeleteReleaseBundleApi(testRb, false):
215215
w.WriteHeader(http.StatusAccepted)
216216
}
217217
}
218218

219219
mockServer, rbService := createMockServer(t, handlerFunc)
220220
defer mockServer.Close()
221221

222-
assert.NoError(t, rbService.RemoteDeleteReleaseBundle(testRb, lifecycle.ReleaseBundleRemoteDeleteParams{MaxWaitMinutes: 2}))
222+
assert.NoError(t, rbService.RemoteDeleteReleaseBundle(testRb, lifecycle.ReleaseBundleRemoteDeleteParams{MaxWaitMinutes: 2}, false))
223+
}
224+
225+
func TestRemoteDeleteReleaseBundleNewApi(t *testing.T) {
226+
lifecycle.SyncSleepInterval = 1 * time.Second
227+
defer func() { lifecycle.SyncSleepInterval = lifecycle.DefaultSyncSleepInterval }()
228+
229+
handlerFunc := func(w http.ResponseWriter, r *http.Request) {
230+
if r.RequestURI == "/"+lifecycle.GetRemoteDeleteReleaseBundleApi(testRb, true) {
231+
w.WriteHeader(http.StatusOK)
232+
}
233+
}
234+
235+
mockServer, rbService := createMockServer(t, handlerFunc)
236+
defer mockServer.Close()
237+
238+
assert.NoError(t, rbService.RemoteDeleteReleaseBundle(testRb, lifecycle.ReleaseBundleRemoteDeleteParams{MaxWaitMinutes: 2}, true))
223239
}
224240

225241
func TestGetReleaseBundleVersionPromotions(t *testing.T) {

lifecycle/manager.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -137,9 +137,9 @@ func (lcs *LifecycleServicesManager) DistributeReleaseBundle(rbDetails lifecycle
137137
return distributeBundleService.Distribute()
138138
}
139139

140-
func (lcs *LifecycleServicesManager) RemoteDeleteReleaseBundle(rbDetails lifecycle.ReleaseBundleDetails, params lifecycle.ReleaseBundleRemoteDeleteParams) error {
140+
func (lcs *LifecycleServicesManager) RemoteDeleteReleaseBundle(rbDetails lifecycle.ReleaseBundleDetails, params lifecycle.ReleaseBundleRemoteDeleteParams, isNewReleaseBundleApiSupported bool) error {
141141
rbService := lifecycle.NewReleaseBundlesService(lcs.config.GetServiceDetails(), lcs.client)
142-
return rbService.RemoteDeleteReleaseBundle(rbDetails, params)
142+
return rbService.RemoteDeleteReleaseBundle(rbDetails, params, isNewReleaseBundleApiSupported)
143143
}
144144

145145
func (lcs *LifecycleServicesManager) ExportReleaseBundle(rbDetails lifecycle.ReleaseBundleDetails, modifications lifecycle.Modifications, queryParams lifecycle.CommonOptionalQueryParams) (exportResponse lifecycle.ReleaseBundleExportedStatusResponse, err error) {

lifecycle/services/delete.go

Lines changed: 16 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ func (rbs *ReleaseBundlesService) deleteReleaseBundle(params CommonOptionalQuery
4646
return errorutils.CheckResponseStatusWithBody(resp, body, http.StatusNoContent)
4747
}
4848

49-
func (rbs *ReleaseBundlesService) RemoteDeleteReleaseBundle(rbDetails ReleaseBundleDetails, params ReleaseBundleRemoteDeleteParams) error {
49+
func (rbs *ReleaseBundlesService) RemoteDeleteReleaseBundle(rbDetails ReleaseBundleDetails, params ReleaseBundleRemoteDeleteParams, isNewReleaseBundleApiSupported bool) error {
5050
dryRunStr := ""
5151
if params.DryRun {
5252
dryRunStr = "[Dry run] "
@@ -59,20 +59,30 @@ func (rbs *ReleaseBundlesService) RemoteDeleteReleaseBundle(rbDetails ReleaseBun
5959
return errorutils.CheckError(err)
6060
}
6161

62-
restApi := GetRemoteDeleteReleaseBundleApi(rbDetails)
62+
restApi := GetRemoteDeleteReleaseBundleApi(rbDetails, isNewReleaseBundleApiSupported)
6363
requestFullUrl, err := utils.BuildUrl(rbs.GetLifecycleDetails().GetUrl(), restApi, nil)
6464
if err != nil {
6565
return err
6666
}
6767

6868
httpClientDetails := rbs.GetLifecycleDetails().CreateHttpClientDetails()
6969
httpClientDetails.SetContentTypeApplicationJson()
70+
if isNewReleaseBundleApiSupported {
71+
resp, body, err := rbs.client.SendDelete(requestFullUrl, content, &httpClientDetails)
72+
if err != nil {
73+
return err
74+
}
75+
log.Debug("Artifactory response:", resp.Status)
76+
return errorutils.CheckResponseStatusWithBody(resp, body, http.StatusOK)
77+
}
78+
7079
resp, body, err := rbs.client.SendPost(requestFullUrl, content, &httpClientDetails)
7180
if err != nil {
7281
return err
7382
}
7483

7584
log.Debug("Artifactory response:", resp.Status)
85+
7686
err = errorutils.CheckResponseStatusWithBody(resp, body, http.StatusAccepted)
7787
if err != nil || params.Async || params.DryRun {
7888
return err
@@ -81,7 +91,10 @@ func (rbs *ReleaseBundlesService) RemoteDeleteReleaseBundle(rbDetails ReleaseBun
8191
return rbs.waitForRemoteDeletion(rbDetails, params)
8292
}
8393

84-
func GetRemoteDeleteReleaseBundleApi(rbDetails ReleaseBundleDetails) string {
94+
func GetRemoteDeleteReleaseBundleApi(rbDetails ReleaseBundleDetails, isNewReleaseBundleApiSupported bool) string {
95+
if isNewReleaseBundleApiSupported {
96+
return path.Join(releaseBundleNewApi, records, rbDetails.ReleaseBundleName, rbDetails.ReleaseBundleVersion)
97+
}
8598
return path.Join(distributionBaseApi, remoteDeleteEndpoint, rbDetails.ReleaseBundleName, rbDetails.ReleaseBundleVersion)
8699
}
87100

lifecycle/services/distribute.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ import (
1414
)
1515

1616
const (
17+
releaseBundleNewApi = "api/v2/release_bundle"
1718
distributionBaseApi = "api/v2/distribution/"
1819
distribute = "distribute"
1920
trackers = "trackers"

0 commit comments

Comments
 (0)