From a9340e64c4f9f033b31ab019c9db687601bcf9ab Mon Sep 17 00:00:00 2001 From: Yves Noirjean <yves.noirjean@id.ethz.ch> Date: Fri, 23 Feb 2018 18:36:36 +0100 Subject: [PATCH] SSDM-6073: looking for symlinks in storeroot-dir and listing their mount points in ELN admin page --- .../reporting-plugins/eln-lims-api/script.py | 20 ++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) diff --git a/openbis_standard_technologies/dist/core-plugins/eln-lims/1/dss/reporting-plugins/eln-lims-api/script.py b/openbis_standard_technologies/dist/core-plugins/eln-lims/1/dss/reporting-plugins/eln-lims-api/script.py index 23d486ee42c..cb427d19f40 100644 --- a/openbis_standard_technologies/dist/core-plugins/eln-lims/1/dss/reporting-plugins/eln-lims-api/script.py +++ b/openbis_standard_technologies/dist/core-plugins/eln-lims/1/dss/reporting-plugins/eln-lims-api/script.py @@ -362,9 +362,23 @@ def getFeaturesFromFeatureVector(tr, parameters, tableBuilder): def getDiskSpace(tr, parameters, tableBuilder): storerootDir = getConfigParameterAsString("storeroot-dir") - df = subprocess.check_output(["df", '-h', storerootDir]) - diskSpaceValues = extractDiskSpaceValues(df) - return getJsonForData([diskSpaceValues]) + diskSpaceValues = [] + diskSpaceValues.append(getDiskSpaceForDirectory(storerootDir)) + # The storeroot-dir might contain symlinks to different volumes. + # So we want to resolve them and show all relevant mount points. + findLinks = subprocess.check_output(["find", storerootDir, "-type", "l"]) + mountPoints = [] + for symlink in findLinks.splitlines(): + linkPath = os.path.realpath(symlink) + if os.path.exists(linkPath): + diskSpaceForDir = getDiskSpaceForDirectory(linkPath) + if diskSpaceForDir not in diskSpaceValues: + diskSpaceValues.append(diskSpaceForDir) + return getJsonForData(diskSpaceValues) + +def getDiskSpaceForDirectory(dir): + df = subprocess.check_output(["df", '-h', dir]) + return extractDiskSpaceValues(df) def extractDiskSpaceValues(df): values = {} -- GitLab