@@ -55,7 +55,7 @@ type PubSubMessage struct {
55
55
Data []byte `json:"data"`
56
56
}
57
57
58
- type FolderRecursion func (string , FolderRecursion )
58
+ type FolderRecursion func (* cloudresourcemanager2. Folder , FolderRecursion )
59
59
60
60
func activeProjectFilter (project * cloudresourcemanager.Project ) bool {
61
61
return project .LifecycleState == LifecycleStateActiveRequested
@@ -274,21 +274,41 @@ func invoke(ctx context.Context) {
274
274
}
275
275
}
276
276
277
- getSubFoldersAndRemoveProjectsRecursively := func (folderId string , recursion FolderRecursion ) {
277
+ removeFolder := func (folder * cloudresourcemanager2.Folder ) {
278
+ folderId := folder .Name
279
+ logger .Printf ("Try to delete folder with id [%s]" , folderId )
280
+ _ , err := folderService .Delete (folderId ).Do ()
281
+ if err != nil {
282
+ logger .Printf ("Failed to delete folder [%s], error [%s]" , folderId , err .Error ())
283
+ } else {
284
+ logger .Printf ("Deleted folder [%s]" , folderId )
285
+ }
286
+ }
287
+
288
+ getSubFoldersAndRemoveProjectsFoldersRecursively := func (folder * cloudresourcemanager2.Folder , recursion FolderRecursion ) {
289
+ folderId := folder .Name
278
290
listFoldersRequest := folderService .List ().Parent (folderId ).ShowDeleted (false )
279
291
if err := listFoldersRequest .Pages (ctx , func (foldersResponse * cloudresourcemanager2.ListFoldersResponse ) error {
280
292
for _ , folder := range foldersResponse .Folders {
281
- recursion (folder . Name , recursion )
293
+ recursion (folder , recursion )
282
294
}
283
295
removeProjectsInFolder (folderId )
296
+ if folder .Parent != fmt .Sprintf ("folders/%s" , rootFolderId ) {
297
+ removeFolder (folder )
298
+ }
284
299
return nil
285
300
}); err != nil {
286
301
logger .Fatalf ("Fail to get subfolders for the folder with id [%s], error [%s]" , folderId , err .Error ())
287
302
}
288
303
}
289
304
290
305
rootFolderId := fmt .Sprintf ("folders/%s" , rootFolderId )
291
- getSubFoldersAndRemoveProjectsRecursively (rootFolderId , getSubFoldersAndRemoveProjectsRecursively )
306
+ rootFolder , err := folderService .Get (rootFolderId ).Do ()
307
+ if err != nil {
308
+ logger .Printf ("Fail to get parent folder [%s], error [%s]" , rootFolderId , err .Error ())
309
+ } else {
310
+ getSubFoldersAndRemoveProjectsFoldersRecursively (rootFolder , getSubFoldersAndRemoveProjectsFoldersRecursively )
311
+ }
292
312
}
293
313
294
314
func CleanUpProjects (ctx context.Context , m PubSubMessage ) error {
0 commit comments