dbConn = $dbConn; parent::__construct($engine); } abstract function import(); protected function getServiceTemplateNameById($id) { $res = $this->dbConn->query("select template_name from nagios_service_templates where service_template_id = " . $id); if($res) { $row = $res->fetch(); return $row['template_name']; } return false; } protected function getHostTemplateNameById($id) { $res = $this->dbConn->query("select template_name from nagios_host_templates where host_template_id = " . $id); if($res) { $row = $res->fetch(); return $row['template_name']; } return false; } protected function getTimeperiodNameById($id) { $res = $this->dbConn->query("select timeperiod_name from nagios_timeperiods where timeperiod_id = " . $id); if($res) { $row = $res->fetch(); return $row['timeperiod_name']; } return false; } protected function getCommandNameById($id) { $res = $this->dbConn->query("select command_name from nagios_commands where command_id = " . $id); if($res) { $row = $res->fetch(); return $row['command_name']; } return false; } protected function getContactNameById($id) { $res = $this->dbConn->query("select contact_name from nagios_contacts where contact_id = " . $id); if($res) { $row = $res->fetch(); return $row['contact_name']; } return false; } protected function getContactGroupNameById($id) { $res = $this->dbConn->query("select contactgroup_name from nagios_contactgroups where contactgroup_id = " . $id); if($res) { $row = $res->fetch(); return $row['contactgroup_name']; } return false; } protected function getServiceGroupNameById($id) { $res = $this->dbConn->query("select servicegroup_name from nagios_servicegroups where servicegroup_id = " . $id); if($res) { $row = $res->fetch(); return $row['servicegroup_name']; } return false; } protected function getHostNameById($id) { $res = $this->dbConn->query("select host_name from nagios_hosts where host_id = " . $id); if($res) { $row = $res->fetch(); return $row['host_name']; } return false; } protected function getHostGroupNameById($id) { $res = $this->dbConn->query("select hostgroup_name from nagios_hostgroups where hostgroup_id = " . $id); if($res) { $row = $res->fetch(); return $row['hostgroup_name']; } return false; } protected function getLilacServiceById($id) { // Get service info $res = $this->dbConn->query("select * from nagios_services where service_id = " . $id); if($res) { $row = $res->fetch(); // Okay, let's see if(!empty($row['host_id'])) { $hostName = $this->getHostNameById($row['host_id']); return NagiosServicePeer::getByHostAndDescription($hostName, $row['service_description']); } if(!empty($row['host_template_id'])) { $hostTemplateName = $this->getHostTemplateNameById($row['host_template_id']); return NagiosServicePeer::getByHostTemplateAndDescription($hostTemplateName, $row['service_description']); } if(!empty($row['hostgroup_id'])) { $hostgroupName = $this->getHostGroupNameById($row['hostgroup_id']); return NagiosServicePeer::getByHostgroupAndDescription($hostgroupName, $row['service_description']); } } return false; } } class FruityImportEngine extends ImportEngine { private $dbConn; // Our db connection to fruity. public function getDisplayName() { return "Fruity Importer"; } public function getDescription() { return "Imports existing configurations from Fruity 1.0a1"; } public function renderConfig() { ?>

Fruity Importing Notice

Be aware that importing from an existing Fruity installation will clear all data from your lilac installation.

Fruity Connection Parameters

setVar("database_host", $_POST['fruity_database_host']); $config->setVar("database_name", $_POST['fruity_database_name']); $config->setVar("database_user", $_POST['fruity_database_user']); $config->setVar("database_password", $_POST['fruity_database_password']); } public function showJobSupplemental() { // Really nothing to show here. } public function init() { $job = $this->getJob(); $job->addNotice("FruityImportEngine Starting..."); $config = $this->getConfig(); try { $this->dbConn = new PDO("mysql:dbname=" . $config->getVar("database_name") . ";host=" . $config->getVar("database_host"), $config->getVar("database_user"), $config->getVar("database_password")); } catch(PDOException $e) { $job->addError("Failed to connect to Fruity database. Check your connection parameters and try again."); return false; } $job->addNotice("Fruity Database connection made. Finished initializing."); return true; } public function import() { $job = $this->getJob(); $job->addNotice("FruityImportEngine beginning import..."); $config = $this->getConfig(); $job->addNotice("Removing existing Nagios objects."); NagiosTimeperiodPeer::doDeleteAll(); NagiosCommandPeer::doDeleteAll(); NagiosContactPeer::doDeleteAll(); NagiosContactGroupPeer::doDeleteAll(); NagiosHostTemplatePeer::doDeleteAll(); NagiosHostPeer::doDeleteAll(); NagiosHostgroupPeer::doDeleteAll(); NagiosServiceGroupPeer::doDeleteAll(); NagiosServiceTemplatePeer::doDeleteAll(); NagiosServicePeer::doDeleteAll(); NagiosDependencyPeer::doDeleteAll(); NagiosDependencyTargetPeer::doDeleteAll(); NagiosEscalationPeer::doDeleteAll(); NagiosBrokerModulePeer::doDeleteAll(); NagiosMainConfigurationPeer::doDeleteAll(); NagiosCgiConfigurationPeer::doDeleteAll(); $importer = new FruityResourceImporter($this, $this->dbConn); $importer->import(); $importer = new FruityCgiImporter($this, $this->dbConn); $importer->import(); $importer = new FruityCommandImporter($this, $this->dbConn); $importer->import(); $importer = new FruityTimeperiodImporter($this, $this->dbConn); $importer->import(); $importer = new FruityContactImporter($this, $this->dbConn); $importer->import(); $importer = new FruityServiceGroupImporter($this, $this->dbConn); $importer->import(); $importer = new FruityServiceTemplateImporter($this, $this->dbConn); $importer->import(); $importer = new FruityHostTemplateImporter($this, $this->dbConn); $importer->import(); $importer = new FruityHostGroupImporter($this, $this->dbConn); $importer->import(); $importer = new FruityHostImporter($this, $this->dbConn); $importer->import(); $importer = new FruityServiceImporter($this, $this->dbConn); $importer->import(); $importer = new FruityDependencyImporter($this, $this->dbConn); $importer->import(); $importer = new FruityEscalationImporter($this, $this->dbConn); $importer->import(); $importer = new FruityMainImporter($this, $this->dbConn); $importer->import(); $job->addNotice("FruityImportEngine completed job."); return true; } } $path = dirname(__FILE__) . "/../../"; require_once($path . "importers/fruity/FruityResourceImporter.php"); require_once($path . "importers/fruity/FruityCgiImporter.php"); require_once($path . "importers/fruity/FruityCommandImporter.php"); require_once($path . "importers/fruity/FruityTimeperiodImporter.php"); require_once($path . "importers/fruity/FruityContactImporter.php"); require_once($path . "importers/fruity/FruityServiceGroupImporter.php"); require_once($path . "importers/fruity/FruityServiceTemplateImporter.php"); require_once($path . "importers/fruity/FruityHostTemplateImporter.php"); require_once($path . "importers/fruity/FruityHostGroupImporter.php"); require_once($path . "importers/fruity/FruityHostImporter.php"); require_once($path . "importers/fruity/FruityServiceImporter.php"); require_once($path . "importers/fruity/FruityDependencyImporter.php"); require_once($path . "importers/fruity/FruityEscalationImporter.php"); require_once($path . "importers/fruity/FruityMainImporter.php"); ?>