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