public function load()
 {
     parent::load();
     $model = new ResourceGroup();
     $this->view->resource_groups_by_gridtype = $model->getgroupby("osg_grid_type_id");
     $model = new Resource();
     $this->view->resources_by_resource_group = $model->getgroupby("resource_group_id");
     $model = new GridTypes();
     $this->view->grid_types = $model->getindex();
     $model = new Service();
     $this->view->services = $model->getindex();
     $model = new ResourceServices();
     $this->view->services_by_resource = $model->getgroupby("resource_id");
     $this->view->counts = array();
     //filter service groups
     $this->view->service_groups = array();
     $model = new ServiceGroup();
     $service_groups = $model->getindex();
     foreach ($service_groups as $id => $service_group) {
         if (isset($_REQUEST["count_sg_" . $id])) {
             $this->view->service_groups[$id] = $service_group;
         }
     }
     $this->view->resource_counts = array();
     //for each grid type
     foreach ($this->view->resource_groups_by_gridtype as $grid_type_id => $resource_groups) {
         $resource_counts = 0;
         //for each resource groups,
         foreach ($resource_groups as $resource_group) {
             $resources = $this->view->resources_by_resource_group[$resource_group->id];
             //for each resource
             foreach ($resources as $resource) {
                 //apply filter
                 if (isset($_REQUEST["count_active"])) {
                     if ($resource->active == 0) {
                         continue;
                     }
                 }
                 if (isset($_REQUEST["count_enabled"])) {
                     if ($resource->disable == 1) {
                         continue;
                     }
                 }
                 $resource_counts++;
                 //pull counter for current grid type
                 //$services = $this->services_by_resource[$resource->id];
                 if (!isset($this->view->counts[$grid_type_id])) {
                     $this->view->counts[$grid_type_id] = array();
                 }
                 $count_service = $this->view->counts[$grid_type_id];
                 //for each services
                 if (isset($this->view->services_by_resource[$resource->id])) {
                     foreach ($this->view->services_by_resource[$resource->id] as $service) {
                         if (!isset($count_service[$service->id])) {
                             $count_service[$service->id] = 0;
                         }
                         $count_service[$service->id] = $count_service[$service->id] + 1;
                     }
                 }
                 $this->view->counts[$grid_type_id] = $count_service;
             }
         }
         $this->view->resource_counts[$grid_type_id] = $resource_counts;
     }
     $this->setpagetitle(self::default_title());
 }
Example #2
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
         }
     }
 }