diff --git a/src/DIRAC/DataManagementSystem/DB/FileCatalogDB.py b/src/DIRAC/DataManagementSystem/DB/FileCatalogDB.py index 0ee0c01a14c..1248c0cf54d 100755 --- a/src/DIRAC/DataManagementSystem/DB/FileCatalogDB.py +++ b/src/DIRAC/DataManagementSystem/DB/FileCatalogDB.py @@ -1057,11 +1057,16 @@ def getDirectoryMetadata(self, lfns, credDict): return S_OK({"Successful": successful, "Failed": failed}) - def rebuildDirectoryUsage(self): + def rebuildDirectoryUsage(self, credDict={}): """Rebuild DirectoryUsage table from scratch""" - result = self.dtree._rebuildDirectoryUsage() - return result + result = self._checkAdminPermission(credDict) + if not result["OK"]: + return result + if not result["Value"]: + return S_ERROR(errno.EACCES, "Not authorized to rebuild directory usage") + + return self.dtree._rebuildDirectoryUsage() def repairCatalog(self, credDict={}): """Repair catalog inconsistencies""" diff --git a/src/DIRAC/DataManagementSystem/Service/FileCatalogHandler.py b/src/DIRAC/DataManagementSystem/Service/FileCatalogHandler.py index ddd7e1296bf..4d49fd010e8 100644 --- a/src/DIRAC/DataManagementSystem/Service/FileCatalogHandler.py +++ b/src/DIRAC/DataManagementSystem/Service/FileCatalogHandler.py @@ -378,7 +378,7 @@ def export_getCatalogCounters(self): def export_rebuildDirectoryUsage(self): """Rebuild DirectoryUsage table from scratch""" - return self.fileCatalogDB.rebuildDirectoryUsage() + return self.fileCatalogDB.rebuildDirectoryUsage(self.getRemoteCredentials()) types_repairCatalog = []