From: Marcin Haba Date: Mon, 27 Nov 2023 09:38:55 +0000 (+0100) Subject: baculum: Add parser for diskperf command output X-Git-Tag: Beta-15.0.1~85 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=c7c52bb1706c028ed192b9b795e751e5c38b41a6;p=thirdparty%2Fbacula.git baculum: Add parser for diskperf command output --- diff --git a/gui/baculum/protected/API/Pages/API/PluginCoreDiskPerf.php b/gui/baculum/protected/API/Pages/API/PluginCoreDiskPerf.php index caad789b4..a40e6eb2d 100644 --- a/gui/baculum/protected/API/Pages/API/PluginCoreDiskPerf.php +++ b/gui/baculum/protected/API/Pages/API/PluginCoreDiskPerf.php @@ -138,19 +138,22 @@ class PluginCoreDiskPerf extends ConsoleOutputQueryPage { * @return array parsed output */ private function getItemRows(array $output) { + $cnt = 0; $out = []; - $pattern = '/^perf (?P.+)? write=(?P[a-zA-Z0-9\/]+) read=(?P[a-zA-Z0-9\/]+) no_cache=(?P[a-z]+)$/i'; + $ret = []; for ($i = 0; $i < count($output); $i++) { - // perf /tmp write=1707MiB/s read=4067MiB/s no_cache=fadvise - if (preg_match($pattern, $output[$i], $match) === 1) { - $out[] = [ - 'path' => $match['path'], - 'write' => $match['write'], - 'read' => $match['read'], - 'no_cache' => $match['no_cache'] - ]; + if ((empty($output[$i]) || $output[$i] == ']') && $cnt < 2) { + $cnt++; + } + if (!empty($output[$i])) { + $item = $this->parseOutputKeyValue([$output[$i]]); + $out = array_merge($out, $item); + } elseif ($cnt == 2 && count($out) > 2) { + $ret[] = $out; + $out = []; + $cnt = 0; } } - return $out; + return $ret; } }