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()); }
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 } } }