Ejemplo n.º 1
0
 public function load()
 {
     parent::load();
     $model = new Metric();
     $this->view->metrics = $model->getindex();
     //additional info
     if (isset($_REQUEST["metric_attrs_showservices"])) {
         $model = new MetricService();
         $this->view->metricservices = $model->getgroupby("metric_id");
         $model = new Service();
         $this->view->services = $model->getindex();
     }
     $this->setpagetitle(self::default_title());
 }
 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
         }
     }
 }