Skip to content

Commit

Permalink
cli/check: add --details and --colors
Browse files Browse the repository at this point in the history
  • Loading branch information
Thomas-Gelf committed Nov 19, 2015
1 parent 1e45dab commit e52037b
Showing 1 changed file with 53 additions and 0 deletions.
53 changes: 53 additions & 0 deletions application/clicommands/CheckCommand.php
Original file line number Diff line number Diff line change
Expand Up @@ -4,11 +4,28 @@

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'));
Expand Down Expand Up @@ -49,10 +66,46 @@ public function processAction()
);
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();
Expand Down

0 comments on commit e52037b

Please sign in to comment.