/
ParseCommand.php
54 lines (47 loc) · 2.16 KB
/
ParseCommand.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
<?php
namespace Icinga\Module\Conftool\Clicommands;
use Icinga\Cli\Command;
use Icinga\Module\Conftool\Icinga\IcingaConfig;
use Icinga\Module\Conftool\Icinga2\Icinga2ObjectDefinition;
class ParseCommand extends Command
{
public function v1Action()
{
$configfile = $this->params->shift();
$config = IcingaConfig::parse($configfile);
//objects
foreach ($config->getDefinitions('command') as $object) {
Icinga2ObjectDefinition::fromIcingaObjectDefinition($object, $config)->dump();
}
foreach ($config->getDefinitions('host') as $object) {
Icinga2ObjectDefinition::fromIcingaObjectDefinition($object, $config)->dump();
//direct host->service relation
foreach($object->getServices() as $service) {
Icinga2ObjectDefinition::fromIcingaObjectDefinition($service, $config)->dump();
}
}
foreach ($config->getDefinitions('service') as $object) {
Icinga2ObjectDefinition::fromIcingaObjectDefinition($object, $config)->dump();
}
foreach ($config->getDefinitions('contact') as $object) {
Icinga2ObjectDefinition::fromIcingaObjectDefinition($object, $config)->dump();
}
foreach ($config->getDefinitions('hostgroup') as $object) {
Icinga2ObjectDefinition::fromIcingaObjectDefinition($object, $config)->dump();
//indirect hostgroup->service relation
foreach($object->getServices() as $service) {
Icinga2ObjectDefinition::fromIcingaObjectDefinition($service)->dump();
}
}
foreach ($config->getDefinitions('servicegroup') as $object) {
Icinga2ObjectDefinition::fromIcingaObjectDefinition($object, $config)->dump();
}
foreach ($config->getDefinitions('contactgroup') as $object) { // TODO: Find a better way than hardcoded
Icinga2ObjectDefinition::fromIcingaObjectDefinition($object, $config)->dump();
}
//templates
foreach($config->getTemplates() as $template) {
Icinga2ObjectDefinition::fromIcingaObjectDefinition($template, $config)->dump();
}
}
}