Skip to content

Commit 73d97e7

Browse files
logic for handling unpause of cluster
1 parent 29213d7 commit 73d97e7

File tree

1 file changed

+31
-1
lines changed

1 file changed

+31
-1
lines changed

cfn-resources/cluster/cmd/resource/resource.go

Lines changed: 31 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -120,9 +120,19 @@ func Update(req handler.Request, prevModel *Model, currentModel *Model) (handler
120120
return updateClusterCallback(client, currentModel, *currentModel.ProjectId)
121121
}
122122
currentModel.validateDefaultLabel()
123+
124+
currentCluster, resp, err := client.Atlas20231115014.ClustersApi.GetCluster(context.Background(), *currentModel.ProjectId, *currentModel.Name).Execute()
125+
if pe := util.HandleClusterError(err, resp); pe != nil {
126+
return *pe, nil
127+
}
128+
129+
// handle unpausing update
130+
if pe, _ := handleUnpausingUpdate(client, currentCluster, currentModel); pe != nil {
131+
return *pe, nil
132+
}
133+
123134
adminCluster, errEvent := setClusterRequest(currentModel)
124135
if len(adminCluster.GetReplicationSpecs()) > 0 {
125-
currentCluster, _, _ := client.Atlas20231115014.ClustersApi.GetCluster(context.Background(), *currentModel.ProjectId, *currentModel.Name).Execute()
126136
if currentCluster != nil {
127137
adminCluster.ReplicationSpecs = AddReplicationSpecIDs(currentCluster.GetReplicationSpecs(), adminCluster.GetReplicationSpecs())
128138
}
@@ -150,6 +160,26 @@ func Update(req handler.Request, prevModel *Model, currentModel *Model) (handler
150160
return event, nil
151161
}
152162

163+
func handleUnpausingUpdate(client *util.MongoDBClient, currentCluster *admin20231115014.AdvancedClusterDescription, currentModel *Model) (*handler.ProgressEvent, error) {
164+
if (currentCluster.Paused != nil && *currentCluster.Paused) && (currentModel.Paused == nil || !*currentModel.Paused) {
165+
cluster, resp, err := client.Atlas20231115014.ClustersApi.UpdateCluster(context.Background(), *currentModel.ProjectId, *currentModel.Name,
166+
&admin20231115014.AdvancedClusterDescription{Paused: admin20231115014.PtrBool(false)}).Execute()
167+
if pe := util.HandleClusterError(err, resp); pe != nil {
168+
return pe, nil
169+
}
170+
// returns InProgress event directly, if any other changes are made they will not be performed as part of this update operation
171+
event := handler.ProgressEvent{
172+
OperationStatus: handler.InProgress,
173+
Message: fmt.Sprintf("Unpausing Cluster %s", *cluster.StateName),
174+
ResourceModel: currentModel,
175+
CallbackDelaySeconds: callBackSeconds,
176+
CallbackContext: callbackContext,
177+
}
178+
return &event, nil
179+
}
180+
return nil, nil
181+
}
182+
153183
// Delete handles the Delete event from the Cloudformation service.
154184
func Delete(req handler.Request, prevModel *Model, currentModel *Model) (handler.ProgressEvent, error) {
155185
client, setupErr := setupRequest(req, currentModel, createReadUpdateDeleteRequiredFields)

0 commit comments

Comments
 (0)