Пример #1
0
 public function import()
 {
     $engine = $this->getEngine();
     $job = $engine->getJob();
     $job->addNotice("FruityHostImporter beginning to import Host Configuration.");
     // Hosts
     foreach ($this->dbConn->query("SELECT * FROM nagios_hosts", PDO::FETCH_ASSOC) as $hostData) {
         $this->importHost($hostData);
     }
     // Host parents
     // go through, check if the host actually exists in our system
     // now, then add the parents, if it's found.
     // First the host table,
     foreach ($this->dbConn->query("SELECT * FROM nagios_hosts", PDO::FETCH_ASSOC) as $hostData) {
         if (empty($hostData['parents'])) {
             continue;
         }
         // Okay, there's actually an parent in here.
         // Get the name.
         $name = $this->getHostNameById($hostData['parents'], $this->dbConn);
         if (!$name) {
             $job->addNotice("Fruity Host Importer: Could not find host with id: " . $hostData['parents'] . " to add as parent.");
         } else {
             // Okay, $name is equal to the parent host name.  Let's get the name
             // of the host this parent belongs to
             $childName = $this->getHostNameById($hostData['host_id'], $this->dbConn);
             // Okay, fetch our host which should have this name.
             $host = NagiosHostPeer::getByName($childName);
             if (!$host) {
                 $job->addWarning("Fruity Host Importer: Could not find host in Lilac with name: " . $childName);
             } else {
                 $host->addParentByName($name);
                 $host->save();
             }
         }
     }
     // then the nagios_host_parents table
     foreach ($this->dbConn->query("SELECT * FROM nagios_host_parents", PDO::FETCH_ASSOC) as $hostData) {
         // Get the name.
         $name = $this->getHostNameById($hostData['parent_id'], $this->dbConn);
         if (!$name) {
             $job->addNotice("Fruity Host Importer: Could not find host with id: " . $hostData['parents'] . " to add as parent.");
         } else {
             // Okay, $name is equal to the parent host name.  Let's get the name
             // of the host this parent belongs to
             $childName = $this->getHostNameById($hostData['child_id'], $this->dbConn);
             // Okay, fetch our host which should have this name.
             $host = NagiosHostPeer::getByName($childName);
             if (!$host) {
                 $job->addWarning("Fruity Host Importer: Could not find host in Lilac with name: " . $childName);
             } else {
                 $host->addParentByName($name);
                 $host->save();
             }
         }
     }
     // Host Check Command Parameters
     foreach ($this->dbConn->query("SELECT * FROM nagios_hosts_check_command_parameters WHERE host_id IS NOT NULL", PDO::FETCH_ASSOC) as $commandParameterInfo) {
         $hostName = $this->getHostNameById($commandParameterInfo['host_id']);
         if (!$hostName) {
             $job->addNotice("Fruity Host Check Command Parameter Importer: Could not find host with id " . $commandParameterInfo['host_id']);
             continue;
         }
         // Get the host
         $host = NagiosHostPeer::getByName($hostName);
         if (!$host) {
             $job->addNotice("Fruity Host Check Command Parameter Importer: Could not find host with name " . $hostTemplateName);
             continue;
         }
         $newParameter = new NagiosHostCheckCommandParameter();
         $newParameter->setHost($host->getId());
         $newParameter->setParameter($commandParameterInfo['parameter']);
         $newParameter->save();
     }
     // Host Contact Groups
     foreach ($this->dbConn->query("SELECT * FROM nagios_host_contactgroups", PDO::FETCH_ASSOC) as $membershipInfo) {
         $hostName = $this->getHostNameById($membershipInfo['host_id']);
         if (!$hostName) {
             $job->addNotice("Fruity Host Contact Group Importer: Could not find host with id " . $membershipInfo['host_id']);
             continue;
         }
         // Get the template
         $host = NagiosHostPeer::getByName($hostName);
         if (!$host) {
             $job->addNotice("Fruity Host Contact Group Importer: Could not find host with name " . $hostName);
             continue;
         }
         // Now get Contact Group Name
         $contactGroupName = $this->getContactGroupNameById($membershipInfo['contactgroup_id']);
         if (!$contactGroupName) {
             $job->addNotice("Fruity Host Contact Group Importer: Could not find contact group with id: " . $membershipInfo['contactgroup_id']);
             continue;
         }
         $contactGroup = NagiosContactGroupPeer::getByName($contactGroupName);
         if (!$contactGroup) {
             $job->addNotice("Fruity Host Contact Group Importer: Could not find contact group with name: " . $contactGroupName);
             continue;
         }
         $membership = new NagiosHostContactGroup();
         $membership->setHost($host->getId());
         $membership->setNagiosContactGroup($contactGroup);
         $membership->save();
     }
     // Host Extended Information
     foreach ($this->dbConn->query("SELECT * FROM nagios_hosts_extended_info", PDO::FETCH_ASSOC) as $extInfo) {
         $hostName = $this->getHostNameById($extInfo['host_id']);
         if (!$hostTemplateName) {
             $job->addNotice("Fruity Host Extended Info Importer: Could not find host with id " . $extInfo['host_id']);
             continue;
         }
         // Get the host
         $host = NagiosHostPeer::getByName($hostName);
         if (!$hostName) {
             $job->addNotice("Fruity Host Extended Info Importer: Could not find host with name " . $hostTemplateName);
             continue;
         }
         // Go through the extended info, and set it on the template.
         $host->setNotes($extInfo['notes']);
         $host->setNotesUrl($extInfo['notes_url']);
         $host->setActionUrl($extInfo['action_url']);
         $host->setIconImage($extInfo['icon_image']);
         $host->setIconImageAlt($extInfo['icon_image_alt']);
         $host->setVrmlImage($extInfo['vrml_image']);
         $host->setStatusmapImage($extInfo['statusmap_image']);
         $host->setTwoDCoords($extInfo['two_d_coords']);
         $host->setThreeDCoords($extInfo['three_d_coords']);
         $host->save();
     }
     // Host group memberships
     foreach ($this->dbConn->query("SELECT * FROM nagios_hostgroup_membership", PDO::FETCH_ASSOC) as $membershipInfo) {
         $hostName = $this->getHostNameById($membershipInfo['host_id']);
         if (!$hostName) {
             $job->addNotice("Fruity Host Host Group Importer: Could not find host with id " . $membershipInfo['host_id']);
             continue;
         }
         // Get the template
         $host = NagiosHostPeer::getByName($hostName);
         if (!$host) {
             $job->addNotice("Fruity Host Host Group Importer: Could not find host with name " . $hostName);
             continue;
         }
         // Now get Host Group Name
         $hostGroupName = $this->getHostGroupNameById($membershipInfo['hostgroup_id']);
         if (!$hostGroupName) {
             $job->addNotice("Fruity Host Host Group Importer: Could not find host group with id: " . $membershipInfo['hostgroup_id']);
             continue;
         }
         $hostGroup = NagiosHostGroupPeer::getByName($hostGroupName);
         if (!$contactGroup) {
             $job->addNotice("Fruity Host Host Group Importer: Could not find host group with name: " . $hostGroupName);
             continue;
         }
         $membership = new NagiosHostgroupMembership();
         $membership->setHost($host->getId());
         $membership->setNagiosHostGroup($hostGroup);
         $membership->save();
     }
     $job->addNotice("FruityHostImported: Finished importing a total of " . $this->totalImported . " hosts.");
 }