Skip to content

Commit bfeb5e1

Browse files
added check to prevent dupicate experiment name (#4208)
Signed-off-by: Sarthak Jain <[email protected]> Co-authored-by: Saranya Jena <[email protected]>
1 parent ca926e1 commit bfeb5e1

File tree

1 file changed

+26
-27
lines changed
  • chaoscenter/graphql/server/pkg/chaos_experiment/handler

1 file changed

+26
-27
lines changed

chaoscenter/graphql/server/pkg/chaos_experiment/handler/handler.go

Lines changed: 26 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -106,18 +106,10 @@ func (c *ChaosExperimentHandler) SaveChaosExperiment(ctx context.Context, reques
106106
if wfDetails.ExperimentID == request.ID {
107107
logrus.WithFields(logFields).Info("request received to update k8s chaos experiment")
108108
if wfDetails.Name != request.Name {
109-
filterQuery := bson.D{
110-
{"project_id", request.ID},
111-
{"name", request.Name},
112-
{"is_removed", false},
113-
}
114-
experimentCount, err := c.chaosExperimentOperator.CountChaosExperiments(ctx, filterQuery)
109+
err = c.validateDuplicateExperimentName(ctx, request.ID, request.Name)
115110
if err != nil {
116111
return "", err
117112
}
118-
if experimentCount > 0 {
119-
return "", errors.New("experiment name should be unique, duplicate experiment found with name: " + request.Name)
120-
}
121113
}
122114

123115
err = c.chaosExperimentService.ProcessExperimentUpdate(newRequest, username, wfType, revID, false, projectID, nil)
@@ -128,6 +120,11 @@ func (c *ChaosExperimentHandler) SaveChaosExperiment(ctx context.Context, reques
128120
return "experiment updated successfully", nil
129121
}
130122

123+
err = c.validateDuplicateExperimentName(ctx, request.ID, request.Name)
124+
if err != nil {
125+
return "", err
126+
}
127+
131128
// Saving chaos experiment in the DB
132129
logrus.WithFields(logFields).Info("request received to save k8s chaos experiment")
133130

@@ -144,18 +141,10 @@ func (c *ChaosExperimentHandler) CreateChaosExperiment(ctx context.Context, requ
144141
var revID = uuid.New().String()
145142

146143
// Check if the experiment_name exists under same project
147-
filterQuery := bson.D{
148-
{"project_id", projectID},
149-
{"name", request.ExperimentName},
150-
{"is_removed", false},
151-
}
152-
experimentCount, err := c.chaosExperimentOperator.CountChaosExperiments(ctx, filterQuery)
144+
err := c.validateDuplicateExperimentName(ctx, projectID, request.ExperimentName)
153145
if err != nil {
154146
return nil, err
155147
}
156-
if experimentCount > 0 {
157-
return nil, errors.New("experiment name should be unique, duplicate experiment found with name: " + request.ExperimentName)
158-
}
159148

160149
newRequest, wfType, err := c.chaosExperimentService.ProcessExperiment(request, projectID, revID)
161150
if err != nil {
@@ -240,18 +229,10 @@ func (c *ChaosExperimentHandler) UpdateChaosExperiment(ctx context.Context, requ
240229
)
241230

242231
// Check if the experiment_name exists under same project
243-
filterQuery := bson.D{
244-
{"project_id", projectID},
245-
{"name", request.ExperimentName},
246-
{"is_removed", false},
247-
}
248-
experimentCount, err := c.chaosExperimentOperator.CountChaosExperiments(ctx, filterQuery)
232+
err := c.validateDuplicateExperimentName(ctx, projectID, request.ExperimentName)
249233
if err != nil {
250234
return nil, err
251235
}
252-
if experimentCount > 0 {
253-
return nil, errors.New("experiment name should be unique, duplicate experiment found with name: " + request.ExperimentName)
254-
}
255236

256237
newRequest, wfType, err := c.chaosExperimentService.ProcessExperiment(request, projectID, revID)
257238
if err != nil {
@@ -1317,3 +1298,21 @@ func (c *ChaosExperimentHandler) GetProbesInExperimentRun(ctx context.Context, p
13171298

13181299
return probeDetails, nil
13191300
}
1301+
1302+
// validateDuplicateExperimentName validates if the name of experiment is duplicate
1303+
func (c *ChaosExperimentHandler) validateDuplicateExperimentName(ctx context.Context, projectID, name string) error {
1304+
filterQuery := bson.D{
1305+
{"project_id", projectID},
1306+
{"name", name},
1307+
{"is_removed", false},
1308+
}
1309+
experimentCount, err := c.chaosExperimentOperator.CountChaosExperiments(ctx, filterQuery)
1310+
if err != nil {
1311+
return err
1312+
}
1313+
if experimentCount > 0 {
1314+
return errors.New("experiment name should be unique, duplicate experiment found with name: " + name)
1315+
}
1316+
1317+
return nil
1318+
}

0 commit comments

Comments
 (0)