private function process_resource_filter_service() { $resources_to_keep = array(); $model = new Service(); $list = $model->get(); foreach ($list as $item) { if ($this->ison("service", $item->id)) { //if(isset($_REQUEST["service_".$item->id])) { $model = new ResourceServices(); $rs = $model->get(array("service_id" => $item->id)); foreach ($rs as $r) { if (!in_array($r->resource_id, $resources_to_keep)) { $resources_to_keep[] = $r->resource_id; } } } } return $resources_to_keep; }
public function detailAction() { if (isset($_REQUEST["resource_id"]) && isset($_REQUEST["service_id"]) && isset($_REQUEST["time"])) { $resource_id = (int) $_REQUEST["resource_id"]; $service_id = (int) $_REQUEST["service_id"]; $time = (int) $_REQUEST["time"]; $this->view->detail_service_id = $service_id; $this->view->detail_time = $time; //get service information $model = new ResourceServices(); $params = array("resource_id" => $resource_id, "service_id" => $service_id); $this->view->detail_service = $model->get($params); //get statuses at specified timestamp $metricdata_model = new MetricData(); $params = array("resource_id" => $resource_id, "time" => $time); $latest_metrics = $metricdata_model->get($params); //pull metric info $model = new Metric(); $this->view->metric_details = $model->getindex(); //pull all metric for this service $model = new MetricService(); $this->view->detail_critical_metrics = array(); $this->view->detail_noncritical_metrics = array(); foreach ($model->get(array("service_id" => $service_id)) as $metric) { $info = array(); $info["metric_id"] = $metric->metric_id; //find the reported detail (if not, leave it empty) foreach ($latest_metrics as $latest_metric) { if ($latest_metric->metric_id == $metric->metric_id) { $info["detail_id"] = $latest_metric->id; $info["detail"] = $this->fetchMetricDetail($latest_metric->id); $info["status"] = Status::getStatus($latest_metric->metric_status_id); $info["timestamp"] = $latest_metric->timestamp; break; } } if ($metric->critical == 1) { $this->view->detail_critical_metrics[] = $info; } else { $this->view->detail_noncritical_metrics[] = $info; } } //load service status $service_status_model = new ServiceStatusChange(); $params = array(); $params["resource_id"] = $resource_id; $params["service_id"] = $service_id; $params["start_time"] = $time; $params["end_time"] = $time; $service_statuses = $service_status_model->get($params); $this->view->detail_service_status = null; if (isset($service_statuses[0])) { $this->view->detail_service_status = $service_statuses[0]; } //load downtime $downtime_model = new Downtime(); $params = array("resource_id" => $resource_id, "start_time" => $time, "end_time" => $time); $downtimes = $downtime_model->get($params); $downtimes_forservice = $this->getDowntimesForService($downtimes, $service_id); if (count($downtimes_forservice) > 0) { $this->view->downtime = $downtimes_forservice[0]; //grab first one for this service } } }