Esempio n. 1
0
 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
         }
     }
 }