Skip to content

Commit 87a9b7e

Browse files
authored
🎨 [Frontend] Show EFS data storage (#6639)
1 parent 5717c97 commit 87a9b7e

File tree

2 files changed

+38
-14
lines changed

2 files changed

+38
-14
lines changed

services/static-webserver/client/source/class/osparc/workbench/DiskUsageController.js

Lines changed: 18 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ qx.Class.define("osparc.workbench.DiskUsageController", {
3434
this.__socket.on("serviceDiskUsage", data => {
3535
if (data["node_id"] && this.__callbacks[data["node_id"]]) {
3636
// notify
37-
this.setDiskUsageNotificationToUI(data);
37+
this.__evaluateDisplayMessage(data);
3838
this.__callbacks[data["node_id"]].forEach(cb => {
3939
cb(data);
4040
})
@@ -65,7 +65,7 @@ qx.Class.define("osparc.workbench.DiskUsageController", {
6565
}
6666
},
6767

68-
getDiskUsage: function(freeSpace) {
68+
__getWarningLevel: function(freeSpace) {
6969
const lowDiskSpacePreferencesSettings = osparc.Preferences.getInstance();
7070
this.__lowDiskThreshold = lowDiskSpacePreferencesSettings.getLowDiskSpaceThreshold();
7171
const warningSize = osparc.utils.Utils.gBToBytes(this.__lowDiskThreshold); // 5 GB Default
@@ -81,13 +81,12 @@ qx.Class.define("osparc.workbench.DiskUsageController", {
8181
return warningLevel
8282
},
8383

84-
setDiskUsageNotificationToUI: function(data) {
84+
__evaluateDisplayMessage: function(data) {
8585
const id = data["node_id"];
8686
if (!this.__callbacks[id]) {
8787
return;
8888
}
8989

90-
const diskUsage = data.usage["HOST"]
9190
function isMatchingNodeId({nodeId}) {
9291
return nodeId === id;
9392
}
@@ -96,31 +95,41 @@ qx.Class.define("osparc.workbench.DiskUsageController", {
9695
}
9796

9897
let prevDiskUsageState = this.__prevDiskUsageStateList.find(isMatchingNodeId);
99-
100-
const warningLevel = this.getDiskUsage(diskUsage.free);
10198
if (prevDiskUsageState === undefined) {
99+
// Initialize it
102100
this.__prevDiskUsageStateList.push({
103101
nodeId: id,
104102
state: "NORMAL"
105103
})
106104
}
107-
const freeSpace = osparc.utils.Utils.bytesToSize(diskUsage.free);
108105

109106
const store = osparc.store.Store.getInstance();
110107
const currentStudy = store.getCurrentStudy();
111108
if (!currentStudy) {
112109
return;
113110
}
114-
const node = currentStudy.getWorkbench().getNode(id);
115111

112+
const node = currentStudy.getWorkbench().getNode(id);
116113
const nodeName = node ? node.getLabel() : null;
117114
if (nodeName === null) {
118115
return;
119116
}
120117

121-
let message;
118+
const diskHostUsage = data.usage["HOST"]
119+
let freeSpace = osparc.utils.Utils.bytesToSize(diskHostUsage.free);
120+
let warningLevel = this.__getWarningLevel(diskHostUsage.free);
121+
122+
if ("STATE_VOLUMES" in data.usage) {
123+
const diskVolsUsage = data.usage["STATE_VOLUMES"];
124+
if (diskVolsUsage["used_percent"] > diskHostUsage["used_percent"]) {
125+
// "STATE_VOLUMES" is more critical so it takes over
126+
freeSpace = osparc.utils.Utils.bytesToSize(diskVolsUsage.free);
127+
warningLevel = this.__getWarningLevel(diskVolsUsage.free);
128+
}
129+
}
122130

123131
const objIndex = this.__prevDiskUsageStateList.findIndex((obj => obj.nodeId === id));
132+
let message;
124133
switch (warningLevel) {
125134
case "CRITICAL":
126135
if (shouldDisplayMessage(prevDiskUsageState, warningLevel)) {

services/static-webserver/client/source/class/osparc/workbench/DiskUsageIndicator.js

Lines changed: 20 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -74,7 +74,6 @@ qx.Class.define("osparc.workbench.DiskUsageIndicator", {
7474
allowShrinkY: false,
7575
allowGrowX: true,
7676
allowGrowY: false,
77-
toolTipText: this.tr("Disk usage")
7877
});
7978
this._add(control)
8079
break;
@@ -156,17 +155,33 @@ qx.Class.define("osparc.workbench.DiskUsageIndicator", {
156155
return;
157156
}
158157

159-
const usage = diskUsage["usage"]["HOST"]
160-
const color1 = this.__getIndicatorColor(usage.free);
161-
const progress = `${usage["used_percent"]}%`;
162-
const labelDiskSize = osparc.utils.Utils.bytesToSize(usage.free);
158+
const diskHostUsage = diskUsage["usage"]["HOST"]
159+
let color1 = this.__getIndicatorColor(diskHostUsage.free);
160+
let progress = `${diskHostUsage["used_percent"]}%`;
161+
let labelDiskSize = osparc.utils.Utils.bytesToSize(diskHostUsage.free);
162+
let toolTipText = this.tr("Disk usage");
163+
if ("STATE_VOLUMES" in diskUsage["usage"]) {
164+
const diskVolsUsage = diskUsage["usage"]["STATE_VOLUMES"];
165+
if (diskVolsUsage["used_percent"] > diskHostUsage["used_percent"]) {
166+
// "STATE_VOLUMES" is more critical so it takes over
167+
color1 = this.__getIndicatorColor(diskVolsUsage.free);
168+
progress = `${diskVolsUsage["used_percent"]}%`;
169+
labelDiskSize = osparc.utils.Utils.bytesToSize(diskVolsUsage.free);
170+
}
171+
toolTipText = this.tr("Disk usage") + "<br>";
172+
toolTipText += this.tr("Data storage: ") + osparc.utils.Utils.bytesToSize(diskVolsUsage.free) + "<br>";
173+
toolTipText += this.tr("I/O storage: ") + osparc.utils.Utils.bytesToSize(diskHostUsage.free) + "<br>";
174+
}
163175
const bgColor = qx.theme.manager.Color.getInstance().resolve("tab_navigation_bar_background_color");
164176
const color2 = qx.theme.manager.Color.getInstance().resolve("progressive-progressbar-background");
165177
indicator.getContentElement().setStyles({
166178
"background-color": bgColor,
167179
"background": `linear-gradient(90deg, ${color1} ${progress}, ${color2} ${progress})`,
168180
"border-color": color1
169181
});
182+
indicator.set({
183+
toolTipText
184+
});
170185

171186
const indicatorLabel = this.getChildControl("disk-indicator-label");
172187
indicatorLabel.setValue(`${labelDiskSize} Free`);

0 commit comments

Comments
 (0)