@@ -83,10 +83,10 @@ func (c *ChaosExperimentHandler) SaveChaosExperiment(ctx context.Context, reques
8383 "experimentId" : request .ID ,
8484 }
8585
86- // Check if the workflow_name exists under same project
86+ // Check if the experiment exists under same project
8787 wfDetails , err := c .chaosExperimentOperator .GetExperiment (ctx , bson.D {
8888 {"experiment_id" , request .ID },
89- {"tags " , request . Tags },
89+ {"project_id " , projectID },
9090 {"is_removed" , false },
9191 })
9292 if err != nil && err != mongo .ErrNoDocuments {
@@ -160,12 +160,25 @@ func (c *ChaosExperimentHandler) CreateChaosExperiment(ctx context.Context, requ
160160
161161 var revID = uuid .New ().String ()
162162
163- // Check if the experiment_name exists under same project
164- err := c .validateDuplicateExperimentName (ctx , projectID , request .ExperimentName )
163+ // Fetch the existing experiment to check if name has changed
164+ existingExperiment , err := c .chaosExperimentOperator .GetExperiment (ctx , bson.D {
165+ {"experiment_id" , * request .ExperimentID },
166+ {"project_id" , projectID },
167+ {"is_removed" , false },
168+ })
169+
165170 if err != nil {
166171 return nil , err
167172 }
168173
174+ // Check if the experiment_name exists under same project only if name has changed
175+ if existingExperiment .Name != request .ExperimentName {
176+ err = c .validateDuplicateExperimentName (ctx , projectID , request .ExperimentName )
177+ if err != nil {
178+ return nil , err
179+ }
180+ }
181+
169182 newRequest , wfType , err := c .chaosExperimentService .ProcessExperiment (ctx , request , projectID , revID )
170183 if err != nil {
171184 return nil , err
0 commit comments