public function import() { $engine = $this->getEngine(); $job = $engine->getJob(); $job->addNotice("FruityHostTemplateImporter beginning to import Host Template Configuration."); // Host templates $queuedHostTemplates = array(); foreach ($this->dbConn->query("SELECT * FROM nagios_host_templates", PDO::FETCH_ASSOC) as $hostTemplate) { if (!$this->importHostTemplate($hostTemplate)) { $queuedHostTemplates[] = $hostTemplate; } } while (count($queuedHostTemplates)) { for ($counter = 0; $counter < count($queuedHostTemplates); $counter++) { if ($this->importHostTemplate($queuedHostTemplates[$counter])) { unset($queuedHostTemplates[$counter]); } } } // Host Template Check Command Parameters foreach ($this->dbConn->query("SELECT * FROM nagios_hosts_check_command_parameters WHERE host_template_id IS NOT NULL", PDO::FETCH_ASSOC) as $commandParameterInfo) { $hostTemplateName = $this->getHostTemplateNameById($commandParameterInfo['host_template_id']); if (!$hostTemplateName) { $job->addNotice("Fruity Host Template Check Command Parameter Importer: Could not find host template with id " . $commandParameterInfo['host_template_id']); continue; } // Get the template $hostTemplate = NagiosHostTemplatePeer::getByName($hostTemplateName); if (!$hostTemplate) { $job->addNotice("Fruity Host Template Check Command Parameter Importer: Could not find host template with name " . $hostTemplateName); continue; } $newParameter = new NagiosHostCheckCommandParameter(); $newParameter->setTemplate($hostTemplate->getId()); $newParameter->setParameter($commandParameterInfo['parameter']); $newParameter->save(); } // Host Template Contact Groups foreach ($this->dbConn->query("SELECT * FROM nagios_host_template_contactgroups", PDO::FETCH_ASSOC) as $membershipInfo) { $hostTemplateName = $this->getHostTemplateNameById($membershipInfo['host_template_id']); if (!$hostTemplateName) { $job->addNotice("Fruity Host Template Contact Group Importer: Could not find host template with id " . $membershipInfo['host_template_id']); continue; } // Get the template $hostTemplate = NagiosHostTemplatePeer::getByName($hostTemplateName); if (!$hostTemplate) { $job->addNotice("Fruity Host Template Contact Group Importer: Could not find host template with name " . $hostTemplateName); continue; } // Now get Contact Group Name $contactGroupName = $this->getContactGroupNameById($membershipInfo['contactgroup_id']); if (!$contactGroupName) { $job->addNotice("Fruity Host Template Contact Group Importer: Could not find contact group with id: " . $membershipInfo['contactgroup_id']); continue; } $contactGroup = NagiosContactGroupPeer::getByName($contactGroupName); if (!$contactGroup) { $job->addNotice("Fruity Host Template Contact Group Importer: Could not find contact group with name: " . $contactGroupName); continue; } $membership = new NagiosHostContactGroup(); $membership->setHostTemplate($hostTemplate->getId()); $membership->setNagiosContactGroup($contactGroup); $membership->save(); } // Host Template Extended Information foreach ($this->dbConn->query("SELECT * FROM nagios_host_template_extended_info", PDO::FETCH_ASSOC) as $extInfo) { $hostTemplateName = $this->getHostTemplateNameById($extInfo['host_template_id']); if (!$hostTemplateName) { $job->addNotice("Fruity Host Template Extended Info Importer: Could not find host template with id " . $extInfo['host_template_id']); continue; } // Get the template $hostTemplate = NagiosHostTemplatePeer::getByName($hostTemplateName); if (!$hostTemplate) { $job->addNotice("Fruity Host Template Extended Info Importer: Could not find host template with name " . $hostTemplateName); continue; } // Go through the extended info, and set it on the template. $hostTemplate->setNotes($extInfo['notes']); $hostTemplate->setNotesUrl($extInfo['notes_url']); $hostTemplate->setActionUrl($extInfo['action_url']); $hostTemplate->setIconImage($extInfo['icon_image']); $hostTemplate->setIconImageAlt($extInfo['icon_image_alt']); $hostTemplate->setVrmlImage($extInfo['vrml_image']); $hostTemplate->setStatusmapImage($extInfo['statusmap_image']); $hostTemplate->setTwoDCoords($extInfo['two_d_coords']); $hostTemplate->setThreeDCoords($extInfo['three_d_coords']); $hostTemplate->save(); } // Host group template memberships foreach ($this->dbConn->query("SELECT * FROM nagios_hostgroup_template_membership", PDO::FETCH_ASSOC) as $membershipInfo) { $hostTemplateName = $this->getHostTemplateNameById($membershipInfo['host_template_id']); if (!$hostTemplateName) { $job->addNotice("Fruity Host Template Host Group Importer: Could not find host template with id " . $membershipInfo['host_template_id']); continue; } // Get the template $hostTemplate = NagiosHostTemplatePeer::getByName($hostTemplateName); if (!$hostTemplate) { $job->addNotice("Fruity Host Template Host Group Importer: Could not find host template with name " . $hostTemplateName); continue; } // Now get Contact Group Name $hostGroupName = $this->getHostGroupNameById($membershipInfo['hostgroup_id']); if (!$hostGroupName) { $job->addNotice("Fruity Host Template Host Group Importer: Could not find host group with id: " . $membershipInfo['hostgroup_id']); continue; } $hostGroup = NagiosHostgroupPeer::getByName($hostGroupName); if (!$hostGroup) { $job->addNotice("Fruity Host Template Host Group Importer: Could not find host group with name: " . $hostGroupName); continue; } $membership = new NagiosHostgroupMembership(); $membership->setHostTemplate($hostTemplate->getId()); $membership->setNagiosHostgroup($hostGroup); $membership->save(); } $job->addNotice("FruityHostTemplateImporter finished importing Host Template Configuration."); $job->addNotice("FruityHostTemplateImporter: Finished importing a total of " . $this->totalImported . " host templates."); }
function addHostgroupByName($name) { $c = new Criteria(); $c->add(NagiosHostgroupPeer::NAME, $name); $c->setIgnoreCase(true); $hostgroup = NagiosHostgroupPeer::doSelectOne($c); if (!$hostgroup) { return false; } // Okay, hostgroup is valid, check for relationship $id = $this->getId(); if (!empty($id)) { $c = new Criteria(); $c->add(NagiosHostgroupMembershipPeer::HOST_TEMPLATE, $this->getId()); $c->add(NagiosHostgroupMembershipPeer::HOSTGROUP, $hostgroup->getId()); $relationship = NagiosHostgroupMembershipPeer::doSelectOne($c); if ($relationship) { return false; } } $relationship = new NagiosHostgroupMembership(); $relationship->setNagiosHostTemplate($this); $relationship->setNagiosHostgroup($hostgroup); $relationship->save(); return true; }
public function addMemberByName($name) { // Support for adding ALL hosts if ($name == "*") { $hosts = NagiosHostPeer::doSelect(new Criteria()); foreach ($hosts as $host) { $this->addMemberByName($host->getName()); } return true; } $host = NagiosHostPeer::getByName($name); if (!$host) { return false; } $id = $this->getId(); if (!empty($id)) { $c = new Criteria(); $c->add(NagiosHostgroupMembershipPeer::HOSTGROUP, $this->getId()); $c->add(NagiosHostgroupMembershipPeer::HOST, $host->getId()); $relationship = NagiosHostgroupMembershipPeer::doSelectOne($c); if ($relationship) { return true; } // Already exists. } // Create new relationship $relationship = new NagiosHostgroupMembership(); $relationship->setNagiosHost($host); $relationship->setNagiosHostgroup($this); $relationship->save(); return true; }