mirror of
https://github.com/Icinga/icingaweb2-module-director.git
synced 2025-07-28 16:24:05 +02:00
Merge branch 'feature/icinga1-config-12919'
This commit is contained in:
commit
fb74ac2b39
@ -88,6 +88,7 @@ class SettingsForm extends QuickForm
|
|||||||
array(
|
array(
|
||||||
'v2' => $this->translate('Icinga v2.x'),
|
'v2' => $this->translate('Icinga v2.x'),
|
||||||
'v1' => $this->translate('Icinga v1.x'),
|
'v1' => $this->translate('Icinga v1.x'),
|
||||||
|
// Hiding for now 'v1-masterless' => $this->translate('Icinga v1.x (no master)'),
|
||||||
)
|
)
|
||||||
),
|
),
|
||||||
'description' => $this->translate(
|
'description' => $this->translate(
|
||||||
|
@ -40,8 +40,9 @@ abstract class CustomVariable implements IcingaConfigRenderer
|
|||||||
{
|
{
|
||||||
if ($this->type === null) {
|
if ($this->type === null) {
|
||||||
$parts = explode('\\', get_class($this));
|
$parts = explode('\\', get_class($this));
|
||||||
// strlen('CustomVariable') === 9
|
$class = end($parts);
|
||||||
$this->type = substr(end($parts), 9);
|
// strlen('CustomVariable') === 14
|
||||||
|
$this->type = substr($class, 14);
|
||||||
}
|
}
|
||||||
|
|
||||||
return $this->type;
|
return $this->type;
|
||||||
|
@ -3,6 +3,7 @@
|
|||||||
namespace Icinga\Module\Director\CustomVariable;
|
namespace Icinga\Module\Director\CustomVariable;
|
||||||
|
|
||||||
use Icinga\Module\Director\IcingaConfig\IcingaConfigHelper as c;
|
use Icinga\Module\Director\IcingaConfig\IcingaConfigHelper as c;
|
||||||
|
use Icinga\Module\Director\IcingaConfig\IcingaLegacyConfigHelper as c1;
|
||||||
|
|
||||||
class CustomVariableArray extends CustomVariable
|
class CustomVariableArray extends CustomVariable
|
||||||
{
|
{
|
||||||
@ -79,4 +80,9 @@ class CustomVariableArray extends CustomVariable
|
|||||||
$this->value[$key] = clone($value);
|
$this->value[$key] = clone($value);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function toLegacyConfigString()
|
||||||
|
{
|
||||||
|
return c1::renderArray($this->value);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -45,4 +45,9 @@ class CustomVariableBoolean extends CustomVariable
|
|||||||
{
|
{
|
||||||
return $this->value ? 'true' : 'false';
|
return $this->value ? 'true' : 'false';
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function toLegacyConfigString()
|
||||||
|
{
|
||||||
|
return $this->toConfigString();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -3,6 +3,7 @@
|
|||||||
namespace Icinga\Module\Director\CustomVariable;
|
namespace Icinga\Module\Director\CustomVariable;
|
||||||
|
|
||||||
use Icinga\Module\Director\IcingaConfig\IcingaConfigHelper as c;
|
use Icinga\Module\Director\IcingaConfig\IcingaConfigHelper as c;
|
||||||
|
use Icinga\Module\Director\IcingaConfig\IcingaLegacyConfigHelper as c1;
|
||||||
use Countable;
|
use Countable;
|
||||||
|
|
||||||
class CustomVariableDictionary extends CustomVariable implements Countable
|
class CustomVariableDictionary extends CustomVariable implements Countable
|
||||||
@ -112,4 +113,9 @@ class CustomVariableDictionary extends CustomVariable implements Countable
|
|||||||
{
|
{
|
||||||
return c::renderDictionary($this->value);
|
return c::renderDictionary($this->value);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function toLegacyConfigString()
|
||||||
|
{
|
||||||
|
return c1::renderDictionary($this->value);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -44,4 +44,9 @@ class CustomVariableNull extends CustomVariable
|
|||||||
{
|
{
|
||||||
return 'null';
|
return 'null';
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function toLegacyConfigString()
|
||||||
|
{
|
||||||
|
return $this->toConfigString();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -65,4 +65,9 @@ class CustomVariableNumber extends CustomVariable
|
|||||||
return sprintf(self::PRECISION, $this->value);
|
return sprintf(self::PRECISION, $this->value);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function toLegacyConfigString()
|
||||||
|
{
|
||||||
|
return $this->toConfigString();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -3,6 +3,7 @@
|
|||||||
namespace Icinga\Module\Director\CustomVariable;
|
namespace Icinga\Module\Director\CustomVariable;
|
||||||
|
|
||||||
use Icinga\Module\Director\IcingaConfig\IcingaConfigHelper as c;
|
use Icinga\Module\Director\IcingaConfig\IcingaConfigHelper as c;
|
||||||
|
use Icinga\Module\Director\IcingaConfig\IcingaLegacyConfigHelper as c1;
|
||||||
|
|
||||||
class CustomVariableString extends CustomVariable
|
class CustomVariableString extends CustomVariable
|
||||||
{
|
{
|
||||||
@ -44,4 +45,9 @@ class CustomVariableString extends CustomVariable
|
|||||||
return c::renderString($this->getValue());
|
return c::renderString($this->getValue());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function toLegacyConfigString()
|
||||||
|
{
|
||||||
|
return c1::renderString($this->getValue());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -4,7 +4,9 @@ namespace Icinga\Module\Director\CustomVariable;
|
|||||||
|
|
||||||
use Icinga\Module\Director\Db;
|
use Icinga\Module\Director\Db;
|
||||||
use Icinga\Module\Director\IcingaConfig\IcingaConfigHelper as c;
|
use Icinga\Module\Director\IcingaConfig\IcingaConfigHelper as c;
|
||||||
|
use Icinga\Module\Director\IcingaConfig\IcingaLegacyConfigHelper as c1;
|
||||||
use Icinga\Module\Director\IcingaConfig\IcingaConfigRenderer;
|
use Icinga\Module\Director\IcingaConfig\IcingaConfigRenderer;
|
||||||
|
use Icinga\Module\Director\Objects\IcingaHostVar;
|
||||||
use Icinga\Module\Director\Objects\IcingaObject;
|
use Icinga\Module\Director\Objects\IcingaObject;
|
||||||
use Countable;
|
use Countable;
|
||||||
use Exception;
|
use Exception;
|
||||||
@ -284,6 +286,41 @@ class CustomVariables implements Iterator, Countable, IcingaConfigRenderer
|
|||||||
return $out;
|
return $out;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function toLegacyConfigString()
|
||||||
|
{
|
||||||
|
$out = '';
|
||||||
|
|
||||||
|
ksort($this->vars);
|
||||||
|
foreach ($this->vars as $key => $var) {
|
||||||
|
/** @var CustomVariable $var */
|
||||||
|
// TODO: ctype_alnum + underscore?
|
||||||
|
$value = null;
|
||||||
|
|
||||||
|
// vars with ARGn will be handled by IcingaObject::renderLegacyCheck_command
|
||||||
|
if (substr($key, 0, 3) == 'ARG') {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
switch ($type = $var->getType()) {
|
||||||
|
case 'String':
|
||||||
|
# TODO: Make Prefetchable
|
||||||
|
$value = $var->toLegacyConfigString();
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
$out .= sprintf("# Unsupported var: %s (%s)\n", $key, $type);
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($value !== null) {
|
||||||
|
$out .= c1::renderKeyValue('_' . $key, $value);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if ($out !== '') {
|
||||||
|
$out = "\n".$out;
|
||||||
|
}
|
||||||
|
|
||||||
|
return $out;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param string $key
|
* @param string $key
|
||||||
* @param CustomVariable $var
|
* @param CustomVariable $var
|
||||||
|
@ -90,7 +90,7 @@ class IcingaConfig
|
|||||||
|
|
||||||
public function isLegacy()
|
public function isLegacy()
|
||||||
{
|
{
|
||||||
return $this->configFormat === 'v1';
|
return strpos($this->configFormat, 'v1') === 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
public function getObjectCount()
|
public function getObjectCount()
|
||||||
|
@ -26,4 +26,9 @@ class IcingaConfigRendered implements IcingaConfigRenderer
|
|||||||
{
|
{
|
||||||
return $this->toConfigString();
|
return $this->toConfigString();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function toLegacyConfigString()
|
||||||
|
{
|
||||||
|
return $this->rendered;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -5,5 +5,6 @@ namespace Icinga\Module\Director\IcingaConfig;
|
|||||||
interface IcingaConfigRenderer
|
interface IcingaConfigRenderer
|
||||||
{
|
{
|
||||||
public function toConfigString();
|
public function toConfigString();
|
||||||
|
public function toLegacyConfigString();
|
||||||
public function __toString();
|
public function __toString();
|
||||||
}
|
}
|
||||||
|
@ -43,7 +43,6 @@ class IcingaLegacyConfigHelper
|
|||||||
{
|
{
|
||||||
$special = array(
|
$special = array(
|
||||||
'/\\\/',
|
'/\\\/',
|
||||||
'/"/',
|
|
||||||
'/\$/',
|
'/\$/',
|
||||||
'/\t/',
|
'/\t/',
|
||||||
'/\r/',
|
'/\r/',
|
||||||
@ -54,7 +53,6 @@ class IcingaLegacyConfigHelper
|
|||||||
|
|
||||||
$replace = array(
|
$replace = array(
|
||||||
'\\\\\\',
|
'\\\\\\',
|
||||||
'\\"',
|
|
||||||
'\\$',
|
'\\$',
|
||||||
'\\t',
|
'\\t',
|
||||||
'\\r',
|
'\\r',
|
||||||
|
@ -393,4 +393,9 @@ class IcingaArguments implements Iterator, Countable, IcingaConfigRenderer
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function toLegacyConfigString()
|
||||||
|
{
|
||||||
|
return 'UNSUPPORTED';
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -3,6 +3,7 @@
|
|||||||
namespace Icinga\Module\Director\Objects;
|
namespace Icinga\Module\Director\Objects;
|
||||||
|
|
||||||
use Icinga\Module\Director\IcingaConfig\IcingaConfigHelper as c;
|
use Icinga\Module\Director\IcingaConfig\IcingaConfigHelper as c;
|
||||||
|
use Icinga\Module\Director\IcingaConfig\IcingaLegacyConfigHelper as c1;
|
||||||
|
|
||||||
class IcingaCommand extends IcingaObject
|
class IcingaCommand extends IcingaObject
|
||||||
{
|
{
|
||||||
@ -29,6 +30,8 @@ class IcingaCommand extends IcingaObject
|
|||||||
|
|
||||||
protected $supportsArguments = true;
|
protected $supportsArguments = true;
|
||||||
|
|
||||||
|
protected $supportedInLegacy = true;
|
||||||
|
|
||||||
protected $intervalProperties = array(
|
protected $intervalProperties = array(
|
||||||
'timeout' => 'timeout',
|
'timeout' => 'timeout',
|
||||||
);
|
);
|
||||||
@ -173,4 +176,25 @@ class IcingaCommand extends IcingaObject
|
|||||||
{
|
{
|
||||||
self::$pluginDir = $pluginDir;
|
self::$pluginDir = $pluginDir;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function getLegacyObjectType()
|
||||||
|
{
|
||||||
|
// there is only one type of command in Icinga 1.x
|
||||||
|
return 'command';
|
||||||
|
}
|
||||||
|
|
||||||
|
protected function renderLegacyCommand()
|
||||||
|
{
|
||||||
|
$command = $this->command;
|
||||||
|
if (preg_match('~^(\$USER\d+\$/?)(.+)$~', $command)) {
|
||||||
|
// should be fine, since the user decided to use a macro
|
||||||
|
} elseif (! $this->isAbsolutePath($command)) {
|
||||||
|
$command = '$USER1$/'.$command;
|
||||||
|
}
|
||||||
|
|
||||||
|
return c1::renderKeyValue(
|
||||||
|
$this->getLegacyObjectType().'_line',
|
||||||
|
c1::renderString($command)
|
||||||
|
);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -7,6 +7,7 @@ use Icinga\Exception\NotFoundError;
|
|||||||
use Icinga\Module\Director\Data\PropertiesFilter;
|
use Icinga\Module\Director\Data\PropertiesFilter;
|
||||||
use Icinga\Module\Director\Db;
|
use Icinga\Module\Director\Db;
|
||||||
use Icinga\Module\Director\IcingaConfig\IcingaConfig;
|
use Icinga\Module\Director\IcingaConfig\IcingaConfig;
|
||||||
|
use Icinga\Module\Director\IcingaConfig\IcingaLegacyConfigHelper as c1;
|
||||||
use Icinga\Module\Director\Web\Form\DirectorObjectForm;
|
use Icinga\Module\Director\Web\Form\DirectorObjectForm;
|
||||||
|
|
||||||
class IcingaHost extends IcingaObject
|
class IcingaHost extends IcingaObject
|
||||||
@ -82,6 +83,8 @@ class IcingaHost extends IcingaObject
|
|||||||
|
|
||||||
protected $supportsFields = true;
|
protected $supportsFields = true;
|
||||||
|
|
||||||
|
protected $supportedInLegacy = true;
|
||||||
|
|
||||||
public static function enumProperties(
|
public static function enumProperties(
|
||||||
DbConnection $connection = null,
|
DbConnection $connection = null,
|
||||||
$prefix = '',
|
$prefix = '',
|
||||||
@ -334,6 +337,22 @@ class IcingaHost extends IcingaObject
|
|||||||
return '';
|
return '';
|
||||||
}
|
}
|
||||||
|
|
||||||
|
protected function renderLegacyDisplay_Name()
|
||||||
|
{
|
||||||
|
return c1::renderKeyValue('display_name', $this->display_name);
|
||||||
|
}
|
||||||
|
|
||||||
|
protected function renderLegacyCustomExtensions()
|
||||||
|
{
|
||||||
|
$str = parent::renderLegacyCustomExtensions();
|
||||||
|
|
||||||
|
if (($alias = $this->vars()->get('alias')) !== null) {
|
||||||
|
$str .= c1::renderKeyValue('alias', $alias->getValue());
|
||||||
|
}
|
||||||
|
|
||||||
|
return $str;
|
||||||
|
}
|
||||||
|
|
||||||
public static function loadWithApiKey($key, Db $db)
|
public static function loadWithApiKey($key, Db $db)
|
||||||
{
|
{
|
||||||
$query = $db->getDbAdapter()
|
$query = $db->getDbAdapter()
|
||||||
|
@ -51,6 +51,9 @@ abstract class IcingaObject extends DbObject implements IcingaConfigRenderer
|
|||||||
/** @var bool Whether Sets of object can be defined */
|
/** @var bool Whether Sets of object can be defined */
|
||||||
protected $supportsSets = false;
|
protected $supportsSets = false;
|
||||||
|
|
||||||
|
/** @var bool If the object is rendered in legacy config */
|
||||||
|
protected $supportedInLegacy = false;
|
||||||
|
|
||||||
protected $rangeClass;
|
protected $rangeClass;
|
||||||
|
|
||||||
protected $type;
|
protected $type;
|
||||||
@ -1450,6 +1453,10 @@ abstract class IcingaObject extends DbObject implements IcingaConfigRenderer
|
|||||||
return $config;
|
return $config;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function isSupportedInLegacy()
|
||||||
|
{
|
||||||
|
return $this->supportedInLegacy;
|
||||||
|
}
|
||||||
|
|
||||||
public function renderToLegacyConfig(IcingaConfig $config)
|
public function renderToLegacyConfig(IcingaConfig $config)
|
||||||
{
|
{
|
||||||
@ -1457,40 +1464,39 @@ abstract class IcingaObject extends DbObject implements IcingaConfigRenderer
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (! $this->isSupportedInLegacy()) {
|
||||||
|
$config->configFile(
|
||||||
|
'director/ignored-objects', '.cfg'
|
||||||
|
)->prepend(
|
||||||
|
sprintf(
|
||||||
|
"# Not supported for legacy config: %s object_name=%s\n",
|
||||||
|
get_class($this),
|
||||||
|
$this->getObjectName()
|
||||||
|
)
|
||||||
|
);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
$filename = $this->getRenderingFilename();
|
$filename = $this->getRenderingFilename();
|
||||||
|
|
||||||
if ($config->isLegacy()) {
|
if (
|
||||||
|
$this->getResolvedProperty('zone_id')
|
||||||
|
&& array_key_exists('enable_active_checks', $this->defaultProperties)
|
||||||
|
&& $config->getConfigFormat() !== 'v1-masterless'
|
||||||
|
) {
|
||||||
|
$passive = clone($this);
|
||||||
|
$passive->enable_active_checks = false;
|
||||||
|
|
||||||
if ($this->getResolvedProperty('zone_id')) {
|
|
||||||
|
|
||||||
$a = clone($this);
|
|
||||||
$a->set('enable_active_checks', true);
|
|
||||||
|
|
||||||
$b = clone($this);
|
|
||||||
$a->set('enable_active_checks', false);
|
|
||||||
|
|
||||||
$config->configFile(
|
|
||||||
'director/master/' . $filename,
|
|
||||||
'.cfg'
|
|
||||||
)->addLegacyObject($a);
|
|
||||||
|
|
||||||
$config->configFile(
|
|
||||||
'director/' . $this->getRenderingZone($config) . '/' . $filename,
|
|
||||||
'.cfg'
|
|
||||||
)->addLegacyObject($b);
|
|
||||||
|
|
||||||
} else {
|
|
||||||
$config->configFile(
|
|
||||||
'director/' . $this->getRenderingZone($config) . '/' . $filename,
|
|
||||||
'.cfg'
|
|
||||||
)->addLegacyObject($this);
|
|
||||||
}
|
|
||||||
|
|
||||||
} else {
|
|
||||||
$config->configFile(
|
$config->configFile(
|
||||||
'director/' . $this->getRenderingZone($config) . '/' . $filename
|
'director/master/' . $filename,
|
||||||
)->addObject($this);
|
'.cfg'
|
||||||
|
)->addLegacyObject($passive);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$config->configFile(
|
||||||
|
'director/' . $this->getRenderingZone($config) . '/' . $filename,
|
||||||
|
'.cfg'
|
||||||
|
)->addLegacyObject($this);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function renderToConfig(IcingaConfig $config)
|
public function renderToConfig(IcingaConfig $config)
|
||||||
@ -1605,6 +1611,20 @@ abstract class IcingaObject extends DbObject implements IcingaConfigRenderer
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Display Name only exists for host/service in Icinga 1
|
||||||
|
*
|
||||||
|
* Render it as alias for everything by default.
|
||||||
|
*
|
||||||
|
* Alias does not exist in Icinga 2 currently!
|
||||||
|
*
|
||||||
|
* @return string
|
||||||
|
*/
|
||||||
|
protected function renderLegacyDisplay_Name()
|
||||||
|
{
|
||||||
|
return c1::renderKeyValue('alias', $this->display_name);
|
||||||
|
}
|
||||||
|
|
||||||
protected function renderLegacyTimeout()
|
protected function renderLegacyTimeout()
|
||||||
{
|
{
|
||||||
return '';
|
return '';
|
||||||
@ -1845,6 +1865,18 @@ abstract class IcingaObject extends DbObject implements IcingaConfigRenderer
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return string
|
||||||
|
*/
|
||||||
|
protected function renderLegacyCustomVars()
|
||||||
|
{
|
||||||
|
if ($this->supportsCustomVars()) {
|
||||||
|
return $this->vars()->toLegacyConfigString();
|
||||||
|
} else {
|
||||||
|
return '';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @return string
|
* @return string
|
||||||
*/
|
*/
|
||||||
@ -1857,6 +1889,18 @@ abstract class IcingaObject extends DbObject implements IcingaConfigRenderer
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return string
|
||||||
|
*/
|
||||||
|
protected function renderLegacyGroups()
|
||||||
|
{
|
||||||
|
if ($this->supportsGroups()) {
|
||||||
|
return $this->groups()->toLegacyConfigString();
|
||||||
|
} else {
|
||||||
|
return '';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @return string
|
* @return string
|
||||||
*/
|
*/
|
||||||
@ -1882,6 +1926,17 @@ abstract class IcingaObject extends DbObject implements IcingaConfigRenderer
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return string
|
||||||
|
*/
|
||||||
|
protected function renderLegacyRanges()
|
||||||
|
{
|
||||||
|
if ($this->supportsRanges()) {
|
||||||
|
return $this->ranges()->toLegacyConfigString();
|
||||||
|
} else {
|
||||||
|
return '';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @return string
|
* @return string
|
||||||
@ -1920,6 +1975,19 @@ abstract class IcingaObject extends DbObject implements IcingaConfigRenderer
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
protected function renderLegacyCheck_command($value)
|
||||||
|
{
|
||||||
|
$args = array();
|
||||||
|
foreach($this->vars() as $k => $v) {
|
||||||
|
if (substr($k, 0, 3) == 'ARG') {
|
||||||
|
$args[] = $v->getValue();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
array_unshift($args, $value);
|
||||||
|
return c1::renderKeyValue('check_command', join('!', $args));
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* We do not render zone properties, objects are stored to zone dirs
|
* We do not render zone properties, objects are stored to zone dirs
|
||||||
*
|
*
|
||||||
@ -1939,6 +2007,24 @@ abstract class IcingaObject extends DbObject implements IcingaConfigRenderer
|
|||||||
return '';
|
return '';
|
||||||
}
|
}
|
||||||
|
|
||||||
|
protected function renderLegacyCustomExtensions()
|
||||||
|
{
|
||||||
|
$str = '';
|
||||||
|
|
||||||
|
// force rendering of check_command when ARG1 is set
|
||||||
|
if ($this->supportsCustomVars() && array_key_exists('check_command_id', $this->defaultProperties)) {
|
||||||
|
if (
|
||||||
|
$this->vars()->get('ARG1') !== null
|
||||||
|
&& $this->get('check_command') === null
|
||||||
|
) {
|
||||||
|
$command = $this->getResolvedRelated('check_command');
|
||||||
|
$str .= $this->renderLegacyCheck_command($command->getObjectName());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return $str;
|
||||||
|
}
|
||||||
|
|
||||||
protected function renderObjectHeader()
|
protected function renderObjectHeader()
|
||||||
{
|
{
|
||||||
return sprintf(
|
return sprintf(
|
||||||
@ -1949,9 +2035,14 @@ abstract class IcingaObject extends DbObject implements IcingaConfigRenderer
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function getLegacyObjectType()
|
||||||
|
{
|
||||||
|
return strtolower($this->getType());
|
||||||
|
}
|
||||||
|
|
||||||
protected function renderLegacyObjectHeader()
|
protected function renderLegacyObjectHeader()
|
||||||
{
|
{
|
||||||
$type = strtolower($this->getType());
|
$type = $this->getLegacyObjectType();
|
||||||
|
|
||||||
if ($this->isTemplate()) {
|
if ($this->isTemplate()) {
|
||||||
$name = c1::renderKeyValue(
|
$name = c1::renderKeyValue(
|
||||||
@ -1995,21 +2086,23 @@ abstract class IcingaObject extends DbObject implements IcingaConfigRenderer
|
|||||||
$this->renderLegacyObjectHeader(),
|
$this->renderLegacyObjectHeader(),
|
||||||
$this->renderLegacyImports(),
|
$this->renderLegacyImports(),
|
||||||
$this->renderLegacyProperties(),
|
$this->renderLegacyProperties(),
|
||||||
//$this->renderRanges(),
|
$this->renderLegacyRanges(),
|
||||||
//$this->renderArguments(),
|
//$this->renderArguments(),
|
||||||
//$this->renderRelatedSets(),
|
//$this->renderRelatedSets(),
|
||||||
//$this->renderGroups(),
|
$this->renderLegacyGroups(),
|
||||||
//$this->renderMultiRelations(),
|
//$this->renderMultiRelations(),
|
||||||
//$this->renderCustomExtensions(),
|
$this->renderLegacyCustomExtensions(),
|
||||||
//$this->renderCustomVars(),
|
$this->renderLegacyCustomVars(),
|
||||||
$this->renderLegacySuffix()
|
$this->renderLegacySuffix()
|
||||||
));
|
));
|
||||||
|
|
||||||
$str = $this->alignLegacyProperties($str);
|
$str = $this->alignLegacyProperties($str);
|
||||||
|
|
||||||
if ($this->isDisabled()) {
|
if ($this->isDisabled()) {
|
||||||
return "/* --- This object has been disabled ---\n"
|
return
|
||||||
. $str . "*/\n";
|
"# --- This object has been disabled ---\n"
|
||||||
|
. preg_replace('~^~m', '# ', trim($str))
|
||||||
|
. "\n";
|
||||||
} else {
|
} else {
|
||||||
return $str;
|
return $str;
|
||||||
}
|
}
|
||||||
@ -2023,11 +2116,13 @@ abstract class IcingaObject extends DbObject implements IcingaConfigRenderer
|
|||||||
foreach ($lines as &$line) {
|
foreach ($lines as &$line) {
|
||||||
if (preg_match('/^\s{4}([^\t]+)\t+(.+)$/', $line, $m)) {
|
if (preg_match('/^\s{4}([^\t]+)\t+(.+)$/', $line, $m)) {
|
||||||
if ($len - strlen($m[1]) < 0) {
|
if ($len - strlen($m[1]) < 0) {
|
||||||
var_dump($m);
|
$fill = ' ';
|
||||||
exit;
|
}
|
||||||
|
else {
|
||||||
|
$fill = str_repeat(' ', $len - strlen($m[1]));
|
||||||
}
|
}
|
||||||
|
|
||||||
$line = ' ' . $m[1] . str_repeat(' ', $len - strlen($m[1])) . $m[2];
|
$line = ' ' . $m[1] . $fill . $m[2];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -11,6 +11,8 @@ abstract class IcingaObjectGroup extends IcingaObject
|
|||||||
{
|
{
|
||||||
protected $supportsImports = true;
|
protected $supportsImports = true;
|
||||||
|
|
||||||
|
protected $supportedInLegacy = true;
|
||||||
|
|
||||||
protected $defaultProperties = array(
|
protected $defaultProperties = array(
|
||||||
'id' => null,
|
'id' => null,
|
||||||
'object_name' => null,
|
'object_name' => null,
|
||||||
|
@ -9,6 +9,7 @@ use Countable;
|
|||||||
use Icinga\Module\Director\Db\Cache\PrefetchCache;
|
use Icinga\Module\Director\Db\Cache\PrefetchCache;
|
||||||
use Icinga\Module\Director\IcingaConfig\IcingaConfigRenderer;
|
use Icinga\Module\Director\IcingaConfig\IcingaConfigRenderer;
|
||||||
use Icinga\Module\Director\IcingaConfig\IcingaConfigHelper as c;
|
use Icinga\Module\Director\IcingaConfig\IcingaConfigHelper as c;
|
||||||
|
use Icinga\Module\Director\IcingaConfig\IcingaLegacyConfigHelper as c1;
|
||||||
|
|
||||||
class IcingaObjectGroups implements Iterator, Countable, IcingaConfigRenderer
|
class IcingaObjectGroups implements Iterator, Countable, IcingaConfigRenderer
|
||||||
{
|
{
|
||||||
@ -344,6 +345,18 @@ class IcingaObjectGroups implements Iterator, Countable, IcingaConfigRenderer
|
|||||||
return c::renderKeyValue('groups', c::renderArray($groups));
|
return c::renderKeyValue('groups', c::renderArray($groups));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function toLegacyConfigString()
|
||||||
|
{
|
||||||
|
$groups = array_keys($this->groups);
|
||||||
|
|
||||||
|
if (empty($groups)) {
|
||||||
|
return '';
|
||||||
|
}
|
||||||
|
|
||||||
|
$type = $this->object->getLegacyObjectType();
|
||||||
|
return c1::renderKeyValue($type.'groups', c1::renderArray($groups));
|
||||||
|
}
|
||||||
|
|
||||||
public function __toString()
|
public function __toString()
|
||||||
{
|
{
|
||||||
try {
|
try {
|
||||||
|
@ -8,6 +8,7 @@ use Iterator;
|
|||||||
use Countable;
|
use Countable;
|
||||||
use Icinga\Module\Director\IcingaConfig\IcingaConfigRenderer;
|
use Icinga\Module\Director\IcingaConfig\IcingaConfigRenderer;
|
||||||
use Icinga\Module\Director\IcingaConfig\IcingaConfigHelper as c;
|
use Icinga\Module\Director\IcingaConfig\IcingaConfigHelper as c;
|
||||||
|
use Icinga\Module\Director\IcingaConfig\IcingaLegacyConfigHelper as c1;
|
||||||
|
|
||||||
class IcingaObjectMultiRelations implements Iterator, Countable, IcingaConfigRenderer
|
class IcingaObjectMultiRelations implements Iterator, Countable, IcingaConfigRenderer
|
||||||
{
|
{
|
||||||
@ -414,4 +415,15 @@ class IcingaObjectMultiRelations implements Iterator, Countable, IcingaConfigRen
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function toLegacyConfigString()
|
||||||
|
{
|
||||||
|
$relations = array_keys($this->relations);
|
||||||
|
|
||||||
|
if (empty($relations)) {
|
||||||
|
return '';
|
||||||
|
}
|
||||||
|
|
||||||
|
return c1::renderKeyValue($this->propertyName, c1::renderArray($relations));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -6,6 +6,7 @@ use Icinga\Data\Filter\Filter;
|
|||||||
use Icinga\Exception\ProgrammingError;
|
use Icinga\Exception\ProgrammingError;
|
||||||
use Icinga\Module\Director\IcingaConfig\IcingaConfig;
|
use Icinga\Module\Director\IcingaConfig\IcingaConfig;
|
||||||
use Icinga\Module\Director\IcingaConfig\IcingaConfigHelper as c;
|
use Icinga\Module\Director\IcingaConfig\IcingaConfigHelper as c;
|
||||||
|
use Icinga\Module\Director\IcingaConfig\IcingaLegacyConfigHelper as c1;
|
||||||
|
|
||||||
class IcingaService extends IcingaObject
|
class IcingaService extends IcingaObject
|
||||||
{
|
{
|
||||||
@ -85,6 +86,8 @@ class IcingaService extends IcingaObject
|
|||||||
|
|
||||||
protected $supportsSets = true;
|
protected $supportsSets = true;
|
||||||
|
|
||||||
|
protected $supportedInLegacy = true;
|
||||||
|
|
||||||
protected $keyName = array('host_id', 'service_set_id', 'object_name');
|
protected $keyName = array('host_id', 'service_set_id', 'object_name');
|
||||||
|
|
||||||
protected $prioritizedProperties = array('host_id');
|
protected $prioritizedProperties = array('host_id');
|
||||||
@ -280,10 +283,15 @@ class IcingaService extends IcingaObject
|
|||||||
|
|
||||||
public function renderUse_var_overrides()
|
public function renderUse_var_overrides()
|
||||||
{
|
{
|
||||||
// @codingStandardsIgnoreEnd
|
|
||||||
return '';
|
return '';
|
||||||
}
|
}
|
||||||
|
|
||||||
|
protected function renderLegacyDisplay_Name()
|
||||||
|
{
|
||||||
|
// @codingStandardsIgnoreEnd
|
||||||
|
return c1::renderKeyValue('display_name', $this->display_name);
|
||||||
|
}
|
||||||
|
|
||||||
public function hasCheckCommand()
|
public function hasCheckCommand()
|
||||||
{
|
{
|
||||||
return $this->getResolvedProperty('check_command_id') !== null;
|
return $this->getResolvedProperty('check_command_id') !== null;
|
||||||
|
@ -28,6 +28,8 @@ class IcingaServiceSet extends IcingaObject
|
|||||||
|
|
||||||
protected $supportsApplyRules = true;
|
protected $supportsApplyRules = true;
|
||||||
|
|
||||||
|
protected $supportedInLegacy = true;
|
||||||
|
|
||||||
protected $relations = array(
|
protected $relations = array(
|
||||||
'host' => 'IcingaHost',
|
'host' => 'IcingaHost',
|
||||||
);
|
);
|
||||||
|
@ -22,6 +22,8 @@ class IcingaTimePeriod extends IcingaObject
|
|||||||
|
|
||||||
protected $supportsRanges = true;
|
protected $supportsRanges = true;
|
||||||
|
|
||||||
|
protected $supportedInLegacy = true;
|
||||||
|
|
||||||
protected $relations = array(
|
protected $relations = array(
|
||||||
'zone' => 'IcingaZone',
|
'zone' => 'IcingaZone',
|
||||||
);
|
);
|
||||||
|
@ -7,6 +7,7 @@ use Iterator;
|
|||||||
use Countable;
|
use Countable;
|
||||||
use Icinga\Module\Director\IcingaConfig\IcingaConfigRenderer;
|
use Icinga\Module\Director\IcingaConfig\IcingaConfigRenderer;
|
||||||
use Icinga\Module\Director\IcingaConfig\IcingaConfigHelper as c;
|
use Icinga\Module\Director\IcingaConfig\IcingaConfigHelper as c;
|
||||||
|
use Icinga\Module\Director\IcingaConfig\IcingaLegacyConfigHelper as c1;
|
||||||
|
|
||||||
class IcingaTimePeriodRanges implements Iterator, Countable, IcingaConfigRenderer
|
class IcingaTimePeriodRanges implements Iterator, Countable, IcingaConfigRenderer
|
||||||
{
|
{
|
||||||
@ -286,4 +287,25 @@ class IcingaTimePeriodRanges implements Iterator, Countable, IcingaConfigRendere
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function toLegacyConfigString()
|
||||||
|
{
|
||||||
|
if (empty($this->ranges) && $this->object->object_type === 'template') {
|
||||||
|
return '';
|
||||||
|
}
|
||||||
|
|
||||||
|
$out = '';
|
||||||
|
|
||||||
|
foreach ($this->ranges as $range) {
|
||||||
|
$out .= c1::renderKeyValue(
|
||||||
|
$range->range_key,
|
||||||
|
$range->range_value
|
||||||
|
);
|
||||||
|
}
|
||||||
|
if ($out !== '') {
|
||||||
|
$out = "\n".$out;
|
||||||
|
}
|
||||||
|
|
||||||
|
return $out;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -8,6 +8,7 @@ use Icinga\Exception\ConfigurationError;
|
|||||||
use Icinga\Exception\NotFoundError;
|
use Icinga\Exception\NotFoundError;
|
||||||
use Icinga\Module\Director\Core\CoreApi;
|
use Icinga\Module\Director\Core\CoreApi;
|
||||||
use Icinga\Module\Director\Db;
|
use Icinga\Module\Director\Db;
|
||||||
|
use Icinga\Module\Director\IcingaConfig\IcingaConfig;
|
||||||
use Icinga\Module\Director\Monitoring;
|
use Icinga\Module\Director\Monitoring;
|
||||||
use Icinga\Module\Director\Objects\IcingaEndpoint;
|
use Icinga\Module\Director\Objects\IcingaEndpoint;
|
||||||
use Icinga\Module\Director\Web\Form\FormLoader;
|
use Icinga\Module\Director\Web\Form\FormLoader;
|
||||||
@ -31,6 +32,8 @@ abstract class ActionController extends Controller
|
|||||||
/** @var Monitoring */
|
/** @var Monitoring */
|
||||||
private $monitoring;
|
private $monitoring;
|
||||||
|
|
||||||
|
protected $icingaConfig;
|
||||||
|
|
||||||
public function init()
|
public function init()
|
||||||
{
|
{
|
||||||
if ($this->getRequest()->isApiRequest()) {
|
if ($this->getRequest()->isApiRequest()) {
|
||||||
@ -305,4 +308,12 @@ abstract class ActionController extends Controller
|
|||||||
|
|
||||||
return $this->monitoring;
|
return $this->monitoring;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
protected function IcingaConfig() {
|
||||||
|
if ($this->icingaConfig === null) {
|
||||||
|
$this->icingaConfig = new IcingaConfig($this->db);
|
||||||
|
}
|
||||||
|
|
||||||
|
return $this->icingaConfig;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user