getNagiosHost()) { return "Host " . $this->getNagiosHost()->getName(); } else { if($this->getNagiosHostTemplate()) { return "Host Template " . $this->getNagiosHostTemplate()->getName(); } else { if($this->getNagiosHostgroup()) { return "Hostgroup " . $this->getNagiosHostgroup()->getName(); } } } return null; } public function getValues($inherited = false) { $values = array(); $c = new Criteria(); $c->add(NagiosServiceTemplateInheritancePeer::SOURCE_SERVICE, $this->getId()); $c->addAscendingOrderByColumn(NagiosServiceTemplateInheritancePeer::ORDER); $inheritanceTemplates = NagiosServiceTemplateInheritancePeer::doSelect($c); if(count($inheritanceTemplates)) { // This template has inherited templates, let's bring their values in foreach($inheritanceTemplates as $inheritanceItem) { $serviceTemplate = $inheritanceItem->getNagiosServiceTemplateRelatedByTargetTemplate(); $templateValues = $serviceTemplate->getValues(true); $values = array_merge($values, $templateValues); } } foreach(NagiosServicePeer::getFieldNames() as $fieldName) { $colName = NagiosServicePeer::translateFieldName($fieldName, BasePeer::TYPE_PHPNAME, BasePeer::TYPE_COLNAME); // At this point, $fieldName is the fieldname for each column in our table record $colName = strtolower(substr($colName, strlen("nagios_service."))); // $colName is now the abbreviated column name. switch($colName) { case 'maximum_check_attempts': $colName = 'max_check_attempts'; break; } $methodName = "get" . $fieldName; if(method_exists($this, $methodName)) { $val = $this->{$methodName}(); if($val !== null) { // Yay, let's populate $values[$colName] = array( 'inherited' => $inherited, 'source' => array('id' => $this->getId(), 'name' => $this->getDescription()), 'value' => $val ); } } } return $values; } function getInheritedCommandParameters($self = true) { $parameterList = array(); $inheritanceTemplates = $this->getNagiosServiceTemplateInheritances(); if(count($inheritanceTemplates)) { // This template has inherited templates, let's bring their values in foreach($inheritanceTemplates as $serviceTemplate) { $parameters = $serviceTemplate->getInheritedCommandParameters(false); $parameterList = array_merge($parameterList, $parameters); } } if(!$self) { $parameters = $this->getNagiosServiceCheckCommandParameters(); array_merge($parameterList, $parameters); } return $parameterList; } function getInheritedDependencies($self = true) { $dependenciesList = array(); $inheritanceTemplates = $this->getNagiosServiceTemplateInheritances(); if(count($inheritanceTemplates)) { // This template has inherited templates, let's bring their values in foreach($inheritanceTemplates as $serviceTemplate) { $dependencies = $serviceTemplate->getInheritedDependencies(false); $dependenciesList = array_merge($dependenciesList, $dependencies); } } if(!$self) { $dependencies = $this->getNagiosDependencys(); $dependenciesList = array_merge($dependenciesList, $dependencies); } return $dependenciesList; } function getInheritedEscalations($self = true) { $escalationsList = array(); $inheritanceTemplates = $this->getNagiosServiceTemplateInheritances(); if(count($inheritanceTemplates)) { // This template has inherited templates, let's bring their values in foreach($inheritanceTemplates as $serviceTemplate) { $escalations = $serviceTemplate->getInheritedEscalations(false); $escalationsList = array_merge($escalationsList, $escalations); } } if(!$self) { $escalations = $this->getNagiosEscalations(); $escalationsList = array_merge($escalationsList, $escalations); } return $escalationsList; } function getInheritedServiceGroups($self = true) { $groupList = array(); $inheritanceTemplates = $this->getNagiosServiceTemplateInheritances(); if(count($inheritanceTemplates)) { // This template has inherited templates, let's bring their values in foreach($inheritanceTemplates as $serviceTemplate) { $servicegroup = $serviceTemplate->getInheritedServiceGroups(false); $groupList = array_merge($groupList, $servicegroup); } } if(!$self) { $servicegroupMemberships = $this->getNagiosServiceGroupMembers(); foreach($servicegroupMemberships as $membership) { $servicegroup = $membership->getNagiosServiceGroup(); $groupList[] = $servicegroup; } } return $groupList; } function getInheritedContacts($self = true) { $contactsList = array(); $inheritanceTemplates = $this->getNagiosServiceTemplateInheritances(); if(count($inheritanceTemplates)) { // This template has inherited templates, let's bring their values in foreach($inheritanceTemplates as $serviceTemplate) { $contacts = $serviceTemplate->getInheritedContacts(false); $contactsList = array_merge($contactsList, $contacts); } } if(!$self) { $contactMemberships = $this->getNagiosServiceContactMembers(); foreach($contactMemberships as $membership) { $contact = $membership->getNagiosContact(); $contactsList[] = $contact; } } return $contactsList; } function getInheritedContactGroups($self = true) { $groupList = array(); $inheritanceTemplates = $this->getNagiosServiceTemplateInheritances(); if(count($inheritanceTemplates)) { // This template has inherited templates, let's bring their values in foreach($inheritanceTemplates as $serviceTemplate) { $contactgroups = $serviceTemplate->getInheritedContactGroups(false); $groupList = array_merge($groupList, $contactgroups); } } if(!$self) { $contatgroupMemberships = $this->getNagiosServiceContactGroupMembers(); foreach($contatgroupMemberships as $membership) { $contactgroup = $membership->getNagiosContactGroup(); $groupList[] = $contactgroup; } } return $groupList; } function addCheckCommandParameter($value) { $parameter = new NagiosServiceCheckCommandParameter(); $parameter->setNagiosService($this); $parameter->setParameter($value); $parameter->save(); return true; } function getInheritedCommandWithParameters($cmdObj = null) { $self = false; if($cmdObj === null) { $self = true; // Initialize array $cmdObj = array( 'command' => null, 'parameters' => array() ); } $inheritedTemplates = $this->getNagiosServiceTemplateInheritances(); // Inheritedtemplates is our collection of templates that we directly inherit from. Let's grab 'em foreach($inheritedTemplates as $template) { $cmdObj = $template->getInheritedCommandWithParameters($cmdObj); } // Okay, let's check ourselves if($this->getNagiosCommandRelatedByCheckCommand()) { $cmdObj['command'] = array('inherited' => ($self ? false : true), 'source' => $this, 'command' => $this->getNagiosCommandRelatedByCheckCommand()); } $parameters = $this->getNagiosServiceCheckCommandParameters(); foreach($parameters as $param) { $cmdObj['parameters'][] = array( 'inherited' => ($self ? false : true), 'source' => $this, 'parameter' => $param ); } return $cmdObj; } function getNagiosServiceTemplateInheritances() { $c = new Criteria(); $c->add(NagiosServiceTemplateInheritancePeer::SOURCE_SERVICE , $this->getId()); $c->addAscendingOrderByColumn(NagiosServiceTemplateInheritancePeer::ORDER); $list = array(); $inheritanceTemplates = NagiosServiceTemplateInheritancePeer::doSelect($c); foreach($inheritanceTemplates as $inheritanceItem) { $list[] = $inheritanceItem->getNagiosServiceTemplateRelatedByTargetTemplate(); } return $list; } function integrityCheck() { // Get NagiosDependencyTargets with Target service being this service $c = new Criteria(); $c->add(NagiosDependencyTargetPeer::TARGET_SERVICE, $this->getId()); $targets = NagiosDependencyTargetPeer::doSelect($c); foreach($targets as $target) { $found = false; // Get host $host = $target->getNagiosHost(); $services = $host->getNagiosServices(); foreach($services as $service) { if($service->getId() == $this->getId()) { $found = true; break; } } if(!$found) { $services = $host->getInheritedServices(); foreach($services as $service) { if($service->getId() == $this->getId()) { $found = true; break; } } } if(!$found) { $target->delete(); } } } function setCheckCommandByName($name) { $c = new Criteria(); $c->add(NagiosCommandPeer::NAME, $name); $c->setIgnoreCase(true); $command = NagiosCommandPeer::doSelectOne($c); if(!$command) return false; $this->setNagiosCommandRelatedByCheckCommand($command); $this->save(); return true; } function setCheckPeriodByName($name) { $c = new Criteria(); $c->add(NagiosTimeperiodPeer::NAME, $name); $c->setIgnoreCase(true); $command = NagiosTimeperiodPeer::doSelectOne($c); if(!$command) return false; $this->setNagiosTimeperiodRelatedByCheckPeriod($command); $this->save(); return true; } function setEventHandlerByName($name) { $c = new Criteria(); $c->add(NagiosCommandPeer::NAME, $name); $c->setIgnoreCase(true); $command = NagiosCommandPeer::doSelectOne($c); if(!$command) return false; $this->setNagiosCommandRelatedByEventHandler($command); $this->save(); return true; } function setNotificationPeriodByName($name) { $c = new Criteria(); $c->add(NagiosTimeperiodPeer::NAME, $name); $c->setIgnoreCase(true); $command = NagiosTimeperiodPeer::doSelectOne($c); if(!$command) return false; $this->setNagiosTimeperiodRelatedByNotificationPeriod($command); $this->save(); return true; } function addServicegroupByName($name) { $c = new Criteria(); $c->add(NagiosServiceGroupPeer::NAME, $name); $c->setIgnoreCase(true); $servicegroup = NagiosServiceGroupPeer::doSelectOne($c); if(!$servicegroup) { return false; } // Okay, servicegroup is valid, check for relationship $id = $this->getId(); if(!empty($id)) { $c = new Criteria(); $c->add(NagiosServiceGroupMemberPeer::SERVICE, $this->getId()); $c->add(NagiosServiceGroupMemberPeer::SERVICE_GROUP, $servicegroup->getId()); $relationship = NagiosServiceGroupMemberPeer::doSelectOne($c); if($relationship) { return false; } } $relationship = new NagiosServiceGroupMember(); $relationship->setNagiosService($this); $relationship->setNagiosServiceGroup($servicegroup); $relationship->save(); return true; } function addContactByName($name) { $c = new Criteria(); $c->add(NagiosContactPeer::NAME, $name); $c->setIgnoreCase(true); $contact = NagiosContactPeer::doSelectOne($c); if(!$contact) return false; // Okay, contact is valid, check for relationship $id = $this->getId(); if(!empty($id)) { $c = new Criteria(); $c->add(NagiosServiceContactMemberPeer::SERVICE, $this->getId()); $c->add(NagiosServiceContactMemberPeer::CONTACT, $contact->getId()); $relationship = NagiosServiceContactMemberPeer::doSelectOne($c); if($relationship) return false; } $relationship = new NagiosServiceContactMember(); $relationship->setNagiosService($this); $relationship->setNagiosContact($contact); $relationship->save(); return true; } function addContactGroupByName($name) { $c = new Criteria(); $c->add(NagiosContactGroupPeer::NAME, $name); $c->setIgnoreCase(true); $contactgroup = NagiosContactGroupPeer::doSelectOne($c); if(!$contactgroup) { return false; } // Okay, contactgroup is valid, check for relationship $id = $this->getId(); if(!empty($id)) { $c = new Criteria(); $c->add(NagiosServiceContactGroupMemberPeer::SERVICE, $this->getId()); $c->add(NagiosServiceContactGroupMemberPeer::CONTACT_GROUP, $contactgroup->getId()); $relationship = NagiosServiceContactGroupMemberPeer::doSelectOne($c); if($relationship) { return false; } } $relationship = new NagiosServiceContactGroupMember(); $relationship->setNagiosService($this); $relationship->setNagiosContactGroup($contactgroup); $relationship->save(); return true; } function addTemplateInheritance($name) { // First get the template by name $template = NagiosServiceTemplatePeer::getByName($name); if(!$template) { return false; } // Check to see if inheritance already exists $id = $this->getId(); if(!empty($id)) { $c = new Criteria(); $c->add(NagiosServiceTemplateInheritancePeer::SOURCE_SERVICE, $this->getId()); $c->add(NagiosServiceTemplateInheritancePeer::TARGET_TEMPLATE, $template->getId()); $relationship = NagiosServiceTemplateInheritancePeer::doSelectOne($c); if($relationship) { return false; } } // Okay, create new one $relationship = new NagiosServiceTemplateInheritance(); $relationship->setNagiosService($this); $relationship->setNagiosServiceTemplateRelatedByTargetTemplate($template); $relationship->save(); return true; } function getNagiosServiceCheckCommandParameters($criteria = null, PropelPDO $con = null) { if($criteria == null) $criteria = new Criteria(); $criteria->addAscendingOrderByColumn(NagiosServiceCheckCommandParameterPeer::ID); return parent::getNagiosServiceCheckCommandParameters($criteria); } } // NagiosService