public function executeRead(AgaviRequestDataHolder $rd) { $filter = $this->getContext()->getModel("SLA.SLAFilter", "Api"); $params = $rd->getParameters(); foreach ($params as $name => $value) { switch ($name) { case 'starttime': $filter->setStartTime($value); break; case 'endtime': $filter->setEndTime($value); break; case 'hostsonly': $filter->useOnlyHosts(); break; case 'timespan': $filter->setTimespan($value); break; case 'servicesonly': $filter->useOnlyServices(); break; case 'instanceIds': $filter->setInstanceIds($value); break; case 'hostnames': $filter->setHostnamePattern($value); break; case 'servicenames': $filter->setServicenamePattern($value); break; case 'hostgroups': $filter->setHostgroupnames($value); break; case 'servicegroups': $filter->setServicegroupnames($value); break; case 'ids': $filter->setObjectId($value); break; } } $this->addPrincipalsToFilter($filter); $stmt = IcingaSlahistoryTable::getSummary(null, $filter); $this->setAttribute("result", $stmt); return "Success"; }
private function addSLAData(array &$result, $timespan) { $objIds = array(); $map = array(); //hashmap for fast lookup foreach ($result as $idx => &$record) { $id = ""; if (isset($record["HOST_OBJECT_ID"])) { $id = $record["HOST_OBJECT_ID"]; } else { if (isset($record["SERVICE_OBJECT_ID"])) { $id = $record["SERVICE_OBJECT_ID"]; } else { continue; } } $record["SLA_STATE_AVAILABLE"] = 0; $record["SLA_STATE_UNAVAILABLE"] = 0; $record["SLA_STATE_0"] = 0; $record["SLA_STATE_1"] = 0; $record["SLA_STATE_2"] = 0; $record["SLA_STATE_3"] = 0; $map[$id] = $idx; $objIds[] = $id; } $filter = $this->getContext()->getModel("SLA.SLAFilter", "Api"); $filter->setObjectId($objIds); $filter->setTimespan($timespan); $stmt = IcingaSlahistoryTable::getSummary(null, $filter); foreach ($stmt as $sla_entry) { $oid = $sla_entry->object_id; $state = $sla_entry->sla_state; if (!isset($map[$oid])) { continue; } $entry =& $result[$map[$oid]]; if ($state > 0 && $sla_entry->objecttype_id == 1 || $state > 1 && $sla_entry->objecttype_id == 2) { $entry["SLA_STATE_UNAVAILABLE"] += $sla_entry->percentage; } else { $entry["SLA_STATE_AVAILABLE"] += $sla_entry->percentage; } if (isset($entry["SLA_STATE_" . $state])) { $entry["SLA_STATE_" . $state] += $sla_entry->percentage; } } }