better heuristic to find mount error

This commit is contained in:
Girish Ramakrishnan
2021-05-13 23:03:10 -07:00
parent 938b88d61b
commit c2fc978ffd
+8 -5
View File
@@ -161,17 +161,20 @@ async function getStatus(volume) {
let output = safe.child_process.execSync(`systemctl show --value -p ActiveState $(systemd-escape -p --suffix=mount ${volume.hostPath})`, { encoding: 'utf8' });
let state = output ? output.trim() : '';
let message = 'Mounted';
let message;
if (state !== 'active') { // find why it failed
output = safe.child_process.execSync(`journalctl -u $(systemd-escape -p --suffix=mount ${volume.hostPath}) -n 10 --no-pager -o cat`, { encoding: 'utf8' });
if (!output) {
message = `Could not determine failure reason: ${safe.error.message}`;
} else {
message = output.split('\n').reverse().find(l => l.startsWith('mount.'));
if (output) {
const idx = output.split('\n').reverse().findIndex(l => l.includes('process exited'));
if (idx > 0) message = output[idx-1]; // the line before probably has the error
}
if (!message) message = `Could not determine failure reason: ${safe.error.message}`;
} else {
message = 'Mounted';
}
return { state, message };
}