/** * @param \CentreonConfiguration\Events\BrokerModule $event * @throws \Centreon\Internal\Exception */ public static function execute(BrokerModuleEvent $event) { /* Retrieve etc and module path */ $paths = BrokerRepository::getPathsFromPollerId($event->getPollerId()); /* Set modules */ if (isset($paths['directory_cbmod']) && isset($paths['directory_config'])) { $moduleDir = rtrim($paths['directory_cbmod'], '/'); $etcDir = rtrim($paths['directory_config'], '/'); $event->addModule("{$moduleDir}/cbmod.so {$etcDir}/poller-module.xml"); } }
/** * * @param type $formHandler * @param type $defaultValues * @param type $pollerId * @return type */ public static function addPathParams(&$formHandler, &$defaultValues, $pollerId) { $pathOptions = array('broker_etc_directory' => 'directory_config', 'broker_module_directory' => 'directory_modules', 'broker_data_directory' => 'directory_data', 'broker_logs_directory' => 'directory_logs', 'broker_init_script' => 'init_script'); $componentList = array(); foreach (array_keys($pathOptions) as $pOpt) { $componentList[] = $pOpt; $componentLabel = ucwords(str_replace('_', ' ', $pOpt)); $formHandler->addStatic(array('name' => $pOpt, 'type' => 'text', 'label' => $componentLabel, 'mandatory' => '1')); } $currentValues = BrokerRepository::getPathsFromPollerId($pollerId); foreach ($currentValues as $cKey => $cValue) { $defaultValues[array_search($cKey, $pathOptions)] = $cValue; } return $componentList; }
/** * Load macros for replace in default configuration * * @param int $pollerId The poller id */ private function loadMacros($pollerId) { $config = Di::getDefault()->get('config'); /* Load contant values */ $this->baseConfig['broker_central_ip'] = getHostByName(getHostName()); /* Load user value */ $this->baseConfig = array_merge($this->baseConfig, BrokerRepository::loadValues($pollerId)); /* Load paths */ $paths = BrokerRepository::getPathsFromPollerId($pollerId); $pathsValue = array_values($paths); $pathsKeys = array_map(function ($name) { switch ($name) { case 'directory_modules': $str = 'modules_directory'; break; case 'directory_config': $str = 'etc_directory'; break; case 'directory_logs': $str = 'logs_directory'; break; case 'directory_data': $str = 'data_directory'; break; default: $str = ''; break; } return 'global_broker_' . $str; }, array_keys($paths)); $paths = array_combine($pathsKeys, $pathsValue); $this->baseConfig = array_merge($this->baseConfig, $paths); $this->baseConfig['poller_id'] = $this->pollerId; /* Information for database */ $dbInformation = CentreonDb::parseDsn($config->get('db_centreon', 'dsn'), $config->get('db_centreon', 'username'), $config->get('db_centreon', 'password')); $dbKeys = array_map(function ($name) { return 'global_' . $name; }, array_keys($dbInformation)); $dbInformation = array_combine($dbKeys, array_values($dbInformation)); $this->baseConfig = array_merge($dbInformation, $this->baseConfig); /* Load general poller information */ $pollerInformation = Poller::get($pollerId); $this->baseConfig['poller_name'] = $pollerInformation['name']; /* Load configuration information from Centren Engine */ $eventObj = new GenericEvent(array('poller_id' => $pollerId)); Di::getDefault()->get('events')->emit('centreon-broker.poller.configuration', array($eventObj)); $this->baseConfig = array_merge($eventObj->getOutput(), $this->baseConfig); /* get global value in database */ $globalOptions = BrokerRepository::getGlobalValues(); $this->baseConfig = array_merge($globalOptions, $this->baseConfig); /* Add % in begin and end of keys */ $keys = array_keys($this->baseConfig); $values = array_values($this->baseConfig); $keys = array_map(function ($key) { return '%' . $key . '%'; }, $keys); $this->baseConfig = array_combine($keys, $values); }