Skip to content

Commit 4db32e8

Browse files
authored
feat: Adding AutoDefer method to automatically defer any maintenance (#237)
1 parent 34d12ee commit 4db32e8

File tree

2 files changed

+38
-0
lines changed

2 files changed

+38
-0
lines changed

mongodbatlas/maintenance.go

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,7 @@ type MaintenanceWindowsService interface {
4646
Get(context.Context, string) (*MaintenanceWindow, *Response, error)
4747
Update(context.Context, string, *MaintenanceWindow) (*Response, error)
4848
Defer(context.Context, string) (*Response, error)
49+
AutoDefer(context.Context, string) (*Response, error)
4950
Reset(context.Context, string) (*Response, error)
5051
}
5152

@@ -132,6 +133,26 @@ func (s *MaintenanceWindowsServiceOp) Defer(ctx context.Context, groupID string)
132133
return resp, err
133134
}
134135

136+
// AutoDefer any scheduled maintenance for the given project for one week.
137+
//
138+
// See more: https://docs.atlas.mongodb.com/reference/api/maintenance-window-auto-defer/
139+
func (s *MaintenanceWindowsServiceOp) AutoDefer(ctx context.Context, groupID string) (*Response, error) {
140+
if groupID == "" {
141+
return nil, NewArgError("groupID", "cannot be nil")
142+
}
143+
144+
path := fmt.Sprintf(maintenanceWindowsPath+"/autoDefer", groupID)
145+
146+
req, err := s.Client.NewRequest(ctx, http.MethodPost, path, nil)
147+
if err != nil {
148+
return nil, err
149+
}
150+
151+
resp, err := s.Client.Do(ctx, req, nil)
152+
153+
return resp, err
154+
}
155+
135156
// Reset clears the current maintenance window for the given project.
136157
//
137158
// See more: https://docs.atlas.mongodb.com/reference/api/maintenance-window-clear/

mongodbatlas/maintenance_test.go

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -148,6 +148,23 @@ func TestMaintenanceWindows_Defer(t *testing.T) {
148148
}
149149
}
150150

151+
func TestMaintenanceWindows_AutoDefer(t *testing.T) {
152+
client, mux, teardown := setup()
153+
defer teardown()
154+
155+
groupID := "6d2065c687d9d64ae7acdg41"
156+
157+
mux.HandleFunc(fmt.Sprintf("/"+maintenanceWindowsPath+"/autoDefer", groupID), func(w http.ResponseWriter, r *http.Request) {
158+
testMethod(t, r, http.MethodPost)
159+
fmt.Fprint(w, `{}`)
160+
})
161+
162+
_, err := client.MaintenanceWindows.AutoDefer(ctx, groupID)
163+
if err != nil {
164+
t.Errorf("MaintenanceWindows.AutoDefer returned error: %v", err)
165+
}
166+
}
167+
151168
func TestMaintenanceWindows_Delete(t *testing.T) {
152169
client, mux, teardown := setup()
153170
defer teardown()

0 commit comments

Comments
 (0)