@@ -301,7 +301,7 @@ func (r *GrafanaFolderReconciler) onFolderCreated(ctx context.Context, grafana *
301
301
}
302
302
303
303
// always update after resync period has elapsed even if cr is unchanged.
304
- if exists && cr .Unchanged () && ! cr .ResyncPeriodHasElapsed () {
304
+ if exists && cr .Unchanged () && ! cr .ResyncPeriodHasElapsed () && ! cr . Moved () {
305
305
return nil
306
306
}
307
307
@@ -327,11 +327,23 @@ func (r *GrafanaFolderReconciler) onFolderCreated(ctx context.Context, grafana *
327
327
return err
328
328
}
329
329
}
330
+
331
+ if cr .Moved () {
332
+ _ , err = grafanaClient .Folders .MoveFolder (remoteUID , & models.MoveFolderCommand { //nolint
333
+ ParentUID : cr .Spec .ParentFolderUID ,
334
+ })
335
+ if err != nil {
336
+ return err
337
+ }
338
+ }
330
339
} else {
331
- folderResp , err := grafanaClient .Folders .CreateFolder (& models.CreateFolderCommand {
332
- Title : title ,
333
- UID : uid ,
334
- })
340
+ body := & models.CreateFolderCommand {
341
+ Title : title ,
342
+ UID : uid ,
343
+ ParentUID : cr .Spec .ParentFolderUID ,
344
+ }
345
+
346
+ folderResp , err := grafanaClient .Folders .CreateFolder (body )
335
347
if err != nil {
336
348
return err
337
349
}
@@ -362,6 +374,7 @@ func (r *GrafanaFolderReconciler) onFolderCreated(ctx context.Context, grafana *
362
374
363
375
func (r * GrafanaFolderReconciler ) UpdateStatus (ctx context.Context , cr * grafanav1beta1.GrafanaFolder ) error {
364
376
cr .Status .Hash = cr .Hash ()
377
+ cr .Status .ParentFolderUID = cr .Spec .ParentFolderUID
365
378
return r .Client .Status ().Update (ctx , cr )
366
379
}
367
380
@@ -372,7 +385,8 @@ func (r *GrafanaFolderReconciler) Exists(client *genapi.GrafanaHTTPAPI, cr *graf
372
385
page := int64 (1 )
373
386
limit := int64 (10000 )
374
387
for {
375
- params := folders .NewGetFoldersParams ().WithPage (& page ).WithLimit (& limit )
388
+ params := folders .NewGetFoldersParams ().WithPage (& page ).WithLimit (& limit ).WithParentUID (& cr .Status .ParentFolderUID )
389
+
376
390
foldersResp , err := client .Folders .GetFolders (params )
377
391
if err != nil {
378
392
return false , "" , err
0 commit comments