mirror of
https://github.com/Icinga/icingaweb2-module-businessprocess.git
synced 2026-02-04 01:09:25 -05:00
parent
cc93a1d04a
commit
1e351a7724
2 changed files with 123 additions and 98 deletions
|
|
@ -2,37 +2,15 @@
|
|||
|
||||
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
|
||||
class CheckCommand extends ProcessCommand
|
||||
{
|
||||
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()
|
||||
public function listActions()
|
||||
{
|
||||
$this->storage = new LegacyStorage($this->Config()->getSection('global'));
|
||||
return array('process');
|
||||
}
|
||||
|
||||
/**
|
||||
* Check a specific process
|
||||
* 'check process' is DEPRECATED, please use 'process check' instead
|
||||
*
|
||||
* USAGE
|
||||
*
|
||||
|
|
@ -40,77 +18,6 @@ class CheckCommand extends Command
|
|||
*/
|
||||
public function processAction()
|
||||
{
|
||||
$name = $this->params->get('config');
|
||||
if ($name === null) {
|
||||
$name = $this->getFirstProcessName();
|
||||
}
|
||||
|
||||
$bp = $this->storage->loadProcess($name);
|
||||
|
||||
if (null !== ($stateType = $this->params->get('state-type'))) {
|
||||
if ($stateType === 'soft') {
|
||||
$bp->useSoftStates();
|
||||
}
|
||||
if ($stateType === 'hard') {
|
||||
$bp->useHardStates();
|
||||
}
|
||||
}
|
||||
|
||||
$node = $bp->getNode($this->params->shift());
|
||||
$bp->retrieveStatesFromBackend();
|
||||
if ($bp->hasErrors()) {
|
||||
printf(
|
||||
"Checking Business Process %s failed: %s\n",
|
||||
$node->getAlias(),
|
||||
implode("\n", $bp->getErrors())
|
||||
);
|
||||
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);
|
||||
}
|
||||
|
||||
$output = str_replace("|", "¦", $output);
|
||||
|
||||
return $output;
|
||||
}
|
||||
|
||||
protected function getFirstProcessName()
|
||||
{
|
||||
$list = $this->storage->listProcesses();
|
||||
return key($list);
|
||||
$this->checkAction();
|
||||
}
|
||||
}
|
||||
|
|
|
|||
118
application/clicommands/ProcessCommand.php
Normal file
118
application/clicommands/ProcessCommand.php
Normal file
|
|
@ -0,0 +1,118 @@
|
|||
<?php
|
||||
|
||||
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 ProcessCommand extends Command
|
||||
{
|
||||
/**
|
||||
* @var LegacyStorage
|
||||
*/
|
||||
protected $storage;
|
||||
|
||||
protected $hostColors = array(
|
||||
0 => array('black', 'lightgreen'),
|
||||
1 => array('lightgray', 'lightred'),
|
||||
2 => array('black', 'brown'),
|
||||
99 => array('black', 'lightgray'),
|
||||
);
|
||||
|
||||
protected $serviceColors = array(
|
||||
0 => array('black', 'lightgreen'),
|
||||
1 => array('black', 'yellow'),
|
||||
2 => array('lightgray', 'lightred'),
|
||||
3 => array('black', 'lightpurple'),
|
||||
99 => array('black', 'lightgray'),
|
||||
);
|
||||
|
||||
public function init()
|
||||
{
|
||||
$this->storage = new LegacyStorage($this->Config()->getSection('global'));
|
||||
}
|
||||
|
||||
/**
|
||||
* Check a specific process
|
||||
*
|
||||
* USAGE
|
||||
*
|
||||
* icingacli businessprocess process check [--config <name>] <process>
|
||||
*/
|
||||
public function checkAction()
|
||||
{
|
||||
$name = $this->params->get('config');
|
||||
if ($name === null) {
|
||||
$name = $this->getFirstProcessName();
|
||||
}
|
||||
|
||||
$bp = $this->storage->loadProcess($name);
|
||||
|
||||
if (null !== ($stateType = $this->params->get('state-type'))) {
|
||||
if ($stateType === 'soft') {
|
||||
$bp->useSoftStates();
|
||||
}
|
||||
if ($stateType === 'hard') {
|
||||
$bp->useHardStates();
|
||||
}
|
||||
}
|
||||
|
||||
/** @var BpNode $node */
|
||||
$node = $bp->getNode($this->params->shift());
|
||||
$bp->retrieveStatesFromBackend();
|
||||
if ($bp->hasErrors()) {
|
||||
printf(
|
||||
"Checking Business Process %s failed: %s\n",
|
||||
$node->getAlias(),
|
||||
implode("\n", $bp->getErrors())
|
||||
);
|
||||
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();
|
||||
return key($list);
|
||||
}
|
||||
}
|
||||
Loading…
Reference in a new issue