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 792bcf50aa0328dbb9390be405380aae80adf9f5..23d486ee42c65a7da2523da9d92fdd9f306d9015 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,40 +362,22 @@ def getFeaturesFromFeatureVector(tr, parameters, tableBuilder): def getDiskSpace(tr, parameters, tableBuilder): storerootDir = getConfigParameterAsString("storeroot-dir") - df = subprocess.check_output(["df", '-h']) - diskSpaceValues = extractDiskSpaceValues(df, [find_mountpoint()]) - return getJsonForData(diskSpaceValues) + df = subprocess.check_output(["df", '-h', storerootDir]) + diskSpaceValues = extractDiskSpaceValues(df) + return getJsonForData([diskSpaceValues]) -def find_mountpoint(): - storerootDir = getConfigParameterAsString("storeroot-dir") - path = os.path.realpath(storerootDir) - while not os.path.ismount(path): - path = os.path.dirname(path) - return path - -def extractDiskSpaceValues(df, diskMountPoints): - diskSpaceValues = [] +def extractDiskSpaceValues(df): + values = {} dfLines = df.splitlines() - columnIdxReversed = {} #reverse because the first column (which we don't need) can contain spaces - header = dfLines[0].replace("Mounted on", "Mounted_on") - columnsReversed = header.split()[::-1] - for i, column in enumerate(columnsReversed): - if column in ["Mounted_on", "Size", "Used", "Avail"]: - columnIdxReversed[column] = i + #reverse because the first column (which we don't need) can contain spaces + headerSplitReversed = dfLines[0].replace("Mounted on", "Mounted_on").split()[::-1] + valuesSplitReversed = dfLines[1].split()[::-1] + for i, column in enumerate(headerSplitReversed): + if column in ["Mounted_on", "Size", "Used", "Avail"]: + values[column] = valuesSplitReversed[i] elif column in ["Capacity", "Use%"]: # Mac OS X or GNU/Linux - columnIdxReversed["UsedPercentage"] = i - for diskMountPoint in diskMountPoints: - diskSpaceValues.append(extractValuesForDiskMountpoint(dfLines, columnIdxReversed, diskMountPoint)) - return diskSpaceValues - -def extractValuesForDiskMountpoint(dfLines, columnIdxReversed, diskMountPoint): - values = {} - for line in dfLines[1:]: - valuesSplitReversed = line.split()[::-1] - if valuesSplitReversed[columnIdxReversed["Mounted_on"]] == diskMountPoint: - for column, i in columnIdxReversed.iteritems(): - values[column] = valuesSplitReversed[i] - return values + values["UsedPercentage"] = valuesSplitReversed[i] + return values def insertSpaceIfMissing(tr, spaceCode): space = tr.getSpace(spaceCode);