Skip to content

Commit 6ec3ef5

Browse files
committed
add async to rollback
1 parent c854144 commit 6ec3ef5

File tree

5 files changed

+21
-12
lines changed

5 files changed

+21
-12
lines changed

apptrust/commands/flags.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -133,6 +133,7 @@ var commandFlags = map[string][]string{
133133
user,
134134
accessToken,
135135
serverId,
136+
SyncFlag,
136137
},
137138
VersionUpdate: {
138139
url,

apptrust/commands/version/rollback_app_version_cmd.go

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ type rollbackAppVersionCommand struct {
2323
version string
2424
requestPayload *model.RollbackAppVersionRequest
2525
fromStage string
26+
sync bool
2627
}
2728

2829
func (rv *rollbackAppVersionCommand) Run() error {
@@ -31,7 +32,7 @@ func (rv *rollbackAppVersionCommand) Run() error {
3132
return err
3233
}
3334

34-
return rv.versionService.RollbackAppVersion(ctx, rv.applicationKey, rv.version, rv.requestPayload)
35+
return rv.versionService.RollbackAppVersion(ctx, rv.applicationKey, rv.version, rv.requestPayload, rv.sync)
3536
}
3637

3738
func (rv *rollbackAppVersionCommand) ServerDetails() (*coreConfig.ServerDetails, error) {
@@ -51,6 +52,9 @@ func (rv *rollbackAppVersionCommand) prepareAndRunCommand(ctx *components.Contex
5152
rv.version = ctx.Arguments[1]
5253
rv.fromStage = ctx.Arguments[2]
5354

55+
// Extract sync flag value
56+
rv.sync = ctx.GetBoolFlagValue(commands.SyncFlag)
57+
5458
serverDetails, err := utils.ServerDetailsByFlags(ctx)
5559
if err != nil {
5660
return err

apptrust/commands/version/rollback_app_version_cmd_test.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ func TestRollbackAppVersionCommand_Run(t *testing.T) {
2424
}
2525

2626
mockVersionService := mockversions.NewMockVersionService(ctrl)
27-
mockVersionService.EXPECT().RollbackAppVersion(gomock.Any(), applicationKey, version, requestPayload).
27+
mockVersionService.EXPECT().RollbackAppVersion(gomock.Any(), applicationKey, version, requestPayload, false).
2828
Return(nil).Times(1)
2929

3030
cmd := &rollbackAppVersionCommand{
@@ -52,7 +52,7 @@ func TestRollbackAppVersionCommand_Run_Error(t *testing.T) {
5252
expectedError := errors.New("rollback service error occurred")
5353

5454
mockVersionService := mockversions.NewMockVersionService(ctrl)
55-
mockVersionService.EXPECT().RollbackAppVersion(gomock.Any(), applicationKey, version, requestPayload).
55+
mockVersionService.EXPECT().RollbackAppVersion(gomock.Any(), applicationKey, version, requestPayload, false).
5656
Return(expectedError).Times(1)
5757

5858
cmd := &rollbackAppVersionCommand{

apptrust/service/versions/version_service.go

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ type VersionService interface {
1717
CreateAppVersion(ctx service.Context, request *model.CreateAppVersionRequest) error
1818
PromoteAppVersion(ctx service.Context, applicationKey string, version string, payload *model.PromoteAppVersionRequest, sync bool) error
1919
ReleaseAppVersion(ctx service.Context, applicationKey string, version string, request *model.ReleaseAppVersionRequest, sync bool) error
20-
RollbackAppVersion(ctx service.Context, applicationKey string, version string, request *model.RollbackAppVersionRequest) error
20+
RollbackAppVersion(ctx service.Context, applicationKey string, version string, request *model.RollbackAppVersionRequest, sync bool) error
2121
DeleteAppVersion(ctx service.Context, applicationKey string, version string) error
2222
UpdateAppVersion(ctx service.Context, applicationKey string, version string, request *model.UpdateAppVersionRequest) error
2323
}
@@ -76,19 +76,19 @@ func (vs *versionService) ReleaseAppVersion(ctx service.Context, applicationKey,
7676
return nil
7777
}
7878

79-
func (vs *versionService) RollbackAppVersion(ctx service.Context, applicationKey, version string, request *model.RollbackAppVersionRequest) error {
79+
func (vs *versionService) RollbackAppVersion(ctx service.Context, applicationKey, version string, request *model.RollbackAppVersionRequest, sync bool) error {
8080
endpoint := fmt.Sprintf("/v1/applications/%s/versions/%s/rollback", applicationKey, version)
81-
response, responseBody, err := ctx.GetHttpClient().Post(endpoint, request, map[string]string{})
81+
response, responseBody, err := ctx.GetHttpClient().Post(endpoint, request, map[string]string{"async": strconv.FormatBool(!sync)})
8282
if err != nil {
8383
return err
8484
}
8585

86-
if response.StatusCode != http.StatusOK && response.StatusCode != http.StatusAccepted {
86+
if response.StatusCode >= http.StatusBadRequest {
8787
return fmt.Errorf("failed to rollback app version. Status code: %d. \n%s",
8888
response.StatusCode, responseBody)
8989
}
9090

91-
log.Output("Application version deleted successfully")
91+
log.Output(string(responseBody))
9292
return nil
9393
}
9494

apptrust/service/versions/version_service_test.go

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -422,26 +422,29 @@ func TestRollbackAppVersion(t *testing.T) {
422422
applicationKey string
423423
version string
424424
payload *model.RollbackAppVersionRequest
425+
sync bool
425426
expectedStatus int
426427
expectedError bool
427428
}{
428429
{
429-
name: "successful rollback with 200",
430+
name: "successful rollback with sync=true",
430431
applicationKey: "video-encoder",
431432
version: "1.5.0",
432433
payload: &model.RollbackAppVersionRequest{
433434
FromStage: "qa",
434435
},
436+
sync: true,
435437
expectedStatus: http.StatusOK,
436438
expectedError: false,
437439
},
438440
{
439-
name: "successful rollback with 204",
441+
name: "successful rollback with sync=false",
440442
applicationKey: "video-encoder",
441443
version: "1.5.0",
442444
payload: &model.RollbackAppVersionRequest{
443445
FromStage: "prod",
444446
},
447+
sync: false,
445448
expectedStatus: http.StatusAccepted,
446449
expectedError: false,
447450
},
@@ -452,6 +455,7 @@ func TestRollbackAppVersion(t *testing.T) {
452455
payload: &model.RollbackAppVersionRequest{
453456
FromStage: "nonexistent",
454457
},
458+
sync: true,
455459
expectedStatus: http.StatusBadRequest,
456460
expectedError: true,
457461
},
@@ -467,11 +471,11 @@ func TestRollbackAppVersion(t *testing.T) {
467471
mockCtx.EXPECT().GetHttpClient().Return(mockClient)
468472

469473
expectedEndpoint := "/v1/applications/" + tt.applicationKey + "/versions/" + tt.version + "/rollback"
470-
mockClient.EXPECT().Post(expectedEndpoint, tt.payload, map[string]string{}).
474+
mockClient.EXPECT().Post(expectedEndpoint, tt.payload, map[string]string{"async": strconv.FormatBool(!tt.sync)}).
471475
Return(&http.Response{StatusCode: tt.expectedStatus}, []byte(""), nil)
472476

473477
service := NewVersionService()
474-
err := service.RollbackAppVersion(mockCtx, tt.applicationKey, tt.version, tt.payload)
478+
err := service.RollbackAppVersion(mockCtx, tt.applicationKey, tt.version, tt.payload, tt.sync)
475479

476480
if tt.expectedError {
477481
assert.Error(t, err)

0 commit comments

Comments
 (0)