mirror of
https://github.com/Icinga/icingaweb2-module-businessprocess.git
synced 2026-02-04 01:09:25 -05:00
cli/check: add --details and --colors
This commit is contained in:
parent
1e45dabe02
commit
e52037b84f
1 changed files with 53 additions and 0 deletions
|
|
@ -4,11 +4,28 @@ namespace Icinga\Module\Businessprocess\Clicommands;
|
|||
|
||||
use Icinga\Cli\Command;
|
||||
use Icinga\Module\Businessprocess\Storage\LegacyStorage;
|
||||
use Icinga\Module\Businessprocess\BpNode;
|
||||
use Icinga\Module\Businessprocess\HostNode;
|
||||
|
||||
class CheckCommand extends Command
|
||||
{
|
||||
protected $storage;
|
||||
|
||||
protected $hostColors = array(
|
||||
0 => array('black', 'lightgreen'),
|
||||
1 => array('black', 'lightred'),
|
||||
2 => array('black', 'brown'),
|
||||
99 => array('black', 'lightgray'),
|
||||
);
|
||||
|
||||
protected $serviceColors = array(
|
||||
0 => array('black', 'lightgreen'),
|
||||
1 => array('black', 'yellow'),
|
||||
2 => array('black', 'lightred'),
|
||||
3 => array('black', 'lightpurple'),
|
||||
99 => array('black', 'lightgray'),
|
||||
);
|
||||
|
||||
public function init()
|
||||
{
|
||||
$this->storage = new LegacyStorage($this->Config()->getSection('global'));
|
||||
|
|
@ -49,10 +66,46 @@ class CheckCommand extends Command
|
|||
);
|
||||
exit(3);
|
||||
}
|
||||
|
||||
printf("Business Process %s: %s\n", $node->getStateName(), $node->getAlias());
|
||||
if ($this->params->shift('details')) {
|
||||
echo $this->renderProblemTree($node->getProblemTree(), $this->params->shift('colors'));
|
||||
}
|
||||
|
||||
exit($node->getState());
|
||||
}
|
||||
|
||||
protected function renderProblemTree($tree, $useColors = false, $depth = 0)
|
||||
{
|
||||
$output = '';
|
||||
|
||||
foreach ($tree as $name => $subtree) {
|
||||
$node = $subtree['node'];
|
||||
|
||||
if ($node instanceof HostNode) {
|
||||
$colors = $this->hostColors[$node->getState()];
|
||||
} else {
|
||||
$colors = $this->serviceColors[$node->getState()];
|
||||
}
|
||||
|
||||
$state = sprintf('[%s]', $node->getStateName());
|
||||
if ($useColors) {
|
||||
$state = $this->screen->colorize($state, $colors[0], $colors[1]);
|
||||
}
|
||||
|
||||
$output .= sprintf(
|
||||
"%s%s %s %s\n",
|
||||
str_repeat(' ', $depth),
|
||||
$node instanceof BpNode ? $node->getOperator() : '-',
|
||||
$state,
|
||||
$node->getAlias()
|
||||
);
|
||||
$output .= $this->renderProblemTree($subtree['children'], $useColors, $depth + 1);
|
||||
}
|
||||
|
||||
return $output;
|
||||
}
|
||||
|
||||
protected function getFirstProcessName()
|
||||
{
|
||||
$list = $this->storage->listProcesses();
|
||||
|
|
|
|||
Loading…
Reference in a new issue