예제 #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 load()
 {
     parent::load();
     $this->view->rgs = $this->rgs;
     $model = new ResourceGroup();
     $this->view->resource_groups = $model->getindex();
     $service_type_model = new Service();
     $this->view->service_info = $service_type_model->getindex();
     ///////////////////////////////////////////////////////////////////////
     // Load graph inforamtion
     $this->view->services = array();
     foreach ($this->rgs as $rgid => $rg) {
         foreach ($rg as $rid => $resource) {
             //pull A&R history
             $model = new ServiceAR();
             $params["start_time"] = $this->view->start_time;
             $params["end_time"] = $this->view->end_time;
             $params["resource_ids"] = array($rid);
             $this->view->services[$rid] = $model->getgroupby("service_id", $params);
         }
     }
     $this->setpagetitle(self::default_title());
 }
예제 #3
0
 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());
 }
예제 #4
0
 function formatInfo($downtime_recs)
 {
     if ($downtime_recs === null) {
         return array();
     }
     $downtimes = array();
     $resource_model = new Resource();
     $resources = $resource_model->getindex();
     $downtime_service_model = new DowntimeService();
     $downtime_services = $downtime_service_model->get();
     $model = new ResourceGroup();
     $rg_info = $model->getindex();
     $model = new Service();
     $service_info = $model->getindex();
     $model = new DowntimeClass();
     $downtime_class = $model->getindex();
     $model = new DowntimeSeverity();
     $downtime_severity = $model->getindex();
     $model = new DN();
     $dns = $model->getindex();
     //include disabled
     $model = new Contact();
     $contacts = $model->getindex();
     //pull all resource ids that we are interested in
     $resource_ids = array();
     foreach ($this->rgs as $rgid => $rg) {
         foreach ($rg as $rid => $resource) {
             $resource_ids[] = $rid;
         }
     }
     foreach ($downtime_recs as $downtime) {
         if (in_array($downtime->resource_id, $resource_ids)) {
             //only show event that we have pulled resource for
             $resource = $resources[$downtime->resource_id];
             $resource_name = $resource[0]->name;
             $resource_fqdn = $resource[0]->fqdn;
             $rg_id = $resource[0]->resource_group_id;
             $rg_name = $rg_info[$resource[0]->resource_group_id][0]->name;
             if ($resource_name !== null) {
                 $start = date(config()->date_format_full, $downtime->unix_start_time);
                 $end = date(config()->date_format_full, $downtime->unix_end_time);
                 $timestamp = date(config()->date_format_full, $downtime->unix_timestamp);
                 //get affected services
                 $affected_services = array();
                 foreach ($downtime_services as $service) {
                     if ($service->resource_downtime_id == $downtime->id) {
                         $info = $service_info[$service->service_id][0];
                         $affected_services[] = $info;
                     }
                 }
                 $desc = $downtime->downtime_summary;
                 //slog($desc);
                 $severity = $downtime_severity[$downtime->downtime_severity_id][0]->name;
                 $class = $downtime_class[$downtime->downtime_class_id][0]->name;
                 if (isset($dns[$downtime->dn_id])) {
                     $dn = $dns[$downtime->dn_id][0]->dn_string;
                     $contact_id = $dns[$downtime->dn_id][0]->contact_id;
                     $contact_name = $contacts[$contact_id][0]->name;
                 } else {
                     error_log("can't find dn with id " . $downtime->dn_id . " on dns list");
                 }
                 $downtimes[] = array("id" => $downtime->id, "name" => $resource_name, "fqdn" => $resource_fqdn, "rg_name" => $rg_name, "rg_id" => $rg_id, "resource_id" => $downtime->resource_id, "desc" => $desc, "severity" => $severity, "class" => $class, "services" => $affected_services, "unix_start_time" => $downtime->unix_start_time, "unix_end_time" => $downtime->unix_end_time, "start_time" => $start, "dn" => $dn, "timestamp" => $timestamp, "contact_name" => $contact_name, "end_time" => $end);
             }
         }
     }
     return $downtimes;
 }
예제 #5
0
 public function load()
 {
     parent::load();
     $this->view->rgs = $this->rgs;
     $model = new ResourceGroup();
     $this->view->resource_groups = $model->getindex();
     $service_type_model = new Service();
     $this->view->services = $service_type_model->getindex();
     //load AR history
     $model = new ServiceAR();
     $params = array();
     $params["start_time"] = $this->view->start_time;
     $params["end_time"] = $this->view->end_time;
     //get list of resource ids that we are interested in
     $resource_ids = array();
     foreach ($this->rgs as $rgid => $rg) {
         foreach ($rg as $rid => $resource) {
             $resource_ids[] = $rid;
         }
     }
     //group by resource/service_id
     $ar_resource_service = array();
     if (!empty($resource_ids)) {
         $params["resource_ids"] = $resource_ids;
         $ar = $model->get($params);
         foreach ($ar as $a) {
             $r_id = (int) $a->resource_id;
             if (!isset($ar_resource_service[$r_id])) {
                 $ar_resource_service[$r_id] = array();
             }
             $service_id = (int) $a->service_id;
             if (!isset($ar_resource_service[$r_id][$service_id])) {
                 $ar_resource_service[$r_id][$service_id] = array();
             }
             $ar_resource_service[$r_id][$service_id][] = $a;
         }
     }
     $data = array();
     foreach ($ar_resource_service as $rid => $resource) {
         //filter by resource_id
         if (!in_array($rid, $resource_ids)) {
             continue;
         }
         $data[$rid] = array();
         foreach ($resource as $service_id => $service) {
             $count = 0;
             $a_total = 0;
             $r_total = 0;
             foreach ($service as $rec) {
                 $count++;
                 $a_total += (double) $rec->availability;
                 $r_total += (double) $rec->reliability;
             }
             //store data
             if ($count != 0) {
                 $data[$rid][$service_id] = array("availability" => $a_total / $count, "reliability" => $r_total / $count);
             }
         }
     }
     //sort data
     if (isset($_REQUEST["sort"])) {
         $dirty_sort = $_REQUEST["sort"];
         switch ($dirty_sort) {
             case "resource_name":
                 break;
             case "a":
                 uasort($data, "cmp_availability");
                 break;
             case "r":
                 uasort($data, "cmp_reliability");
                 break;
         }
     }
     $this->view->data = $data;
     $this->setpagetitle(self::default_title());
 }
예제 #6
0
 public function load()
 {
     parent::load();
     $this->view->rgs = $this->rgs;
     //pull commonly needed information
     $gridtype_model = new GridTypes();
     $this->view->gridtypes = $gridtype_model->getindex();
     $model = new ResourceGroup();
     $this->view->resourcegroups = $model->getgroupby("id");
     ///////////////////////////////////////////////////////////////////////////////////////////
     //pull other optional stuff
     if (isset($_REQUEST["summary_attrs_showservice"])) {
         $servicetype_model = new Service();
         $this->view->servicetypes = $servicetype_model->getindex();
         $resourceservice_model = new ServiceByResourceID();
         $this->view->resource_services = $resourceservice_model->getindex();
         //load details (all of them for now..) and attach it to resource_services
         $detail_model = new ResourceServiceDetail();
         $resource_service_details = $detail_model->get();
         foreach ($this->view->resource_services as $rid => $services) {
             foreach ($services as $service) {
                 $service->details = array();
                 //search for details for this service
                 foreach ($resource_service_details as $detail) {
                     if ($detail->resource_id == $rid && $detail->service_id == $service->service_id) {
                         $service->details[$detail->key] = $detail->value;
                     }
                 }
             }
         }
     }
     if (isset($_REQUEST["summary_attrs_showrsvstatus"])) {
         $model = new LatestResourceStatus();
         $this->view->resource_status = $model->getgroupby("resource_id");
         $downtime_model = new Downtime();
         $this->view->downtime = $downtime_model->getindex(array("start_time" => time(), "end_time" => time()));
     }
     if (isset($_REQUEST["summary_attrs_showgipstatus"])) {
         $model = new LDIF();
         $this->view->gipstatus = $model->getValidationSummary();
     }
     if (isset($_REQUEST["summary_attrs_showvomembership"])) {
         $cache_filename = config()->vomatrix_xml_cache;
         $cache_xml = file_get_contents($cache_filename);
         $vocache = new SimpleXMLElement($cache_xml);
         $resourcegrouped = $vocache->ResourceGrouped[0];
         $this->view->vos_supported = array();
         $this->view->vos_errors = array();
         foreach ($resourcegrouped as $resource) {
             $attr = $resource->attributes();
             $resource_id = (int) $attr->id;
             $this->view->vos_supported[$resource_id] = $resource->Members[0];
             $this->view->vos_errors[$resource_id] = $resource->ErrorMessage[0];
         }
     }
     if (isset($_REQUEST["summary_attrs_showvoownership"])) {
         $model = new ResourceOwnership();
         $this->view->resource_ownerships = $model->getindex();
     }
     if (isset($_REQUEST["summary_attrs_showwlcg"])) {
         $model = new ResourceWLCG();
         $this->view->resource_wlcg = $model->getindex();
         //append bdii link
         foreach ($this->rgs as $rg_id => $rg) {
             foreach ($rg as $resource_id => $resource) {
                 //get resource group name
                 $rgroup = $this->view->resourcegroups[$rg_id][0];
                 $rgname = $rgroup->name;
                 if (isset($this->view->resource_wlcg[$resource_id][0])) {
                     $this->view->resource_wlcg[$resource_id][0]->ldap_url = "ldap://is.grid.iu.edu:2180/mds-vo-name={$rgname},o=grid";
                 }
             }
         }
     }
     if (isset($_REQUEST["summary_attrs_showenv"])) {
         $model = new ResourceEnv();
         $details = $model->getindex(array("metric_id" => 0));
         $this->view->envs = array();
         //convert to XML String to SimpleXMLElement object
         foreach ($this->rgs as $rg) {
             foreach ($rg as $resource_id => $resource) {
                 if (isset($details[$resource_id])) {
                     $rec = $details[$resource_id][0];
                     $env = null;
                     if ($rec !== null) {
                         try {
                             $env = new SimpleXMLElement($rec->xml);
                         } catch (exception $e) {
                             elog((string) $e);
                             elog($rec->xml);
                         }
                     }
                     $this->view->envs[$resource_id] = $env;
                 }
             }
         }
     }
     if (isset($_REQUEST["summary_attrs_showcontact"])) {
         $model = new ResourceContact();
         $contacts = $model->getindex();
         //group by contact_type_id
         $this->view->contacts = array();
         foreach ($this->rgs as $rg) {
             foreach ($rg as $resource_id => $resource) {
                 $types = array();
                 if (isset($contacts[$resource_id])) {
                     foreach ($contacts[$resource_id] as $contact) {
                         if (!isset($types[$contact->contact_type])) {
                             $types[$contact->contact_type] = array();
                         }
                         //group by contact name
                         $types[$contact->contact_type][] = $contact;
                     }
                     $this->view->contacts[$resource_id] = $types;
                 }
             }
         }
     }
     if (isset($_REQUEST["summary_attrs_showfqdn"])) {
         $amodel = new ResourceAlias();
         $this->view->aliases = $amodel->getindex();
     }
     if (isset($_REQUEST["summary_attrs_showhierarchy"])) {
         $this->view->hierarchy = array();
         $model = new Facilities();
         $facilities = $model->getgroupby("id", array("filter_disabled" => false));
         $model = new Site();
         $sites = $model->getgroupby("id", array("filter_disabled" => false));
         $this->view->sites = $sites;
         $model = new SupportCenters();
         $scs = $model->getgroupby("id");
         foreach ($this->rgs as $rgid => $rg) {
             $rginfo = $this->view->resourcegroups[$rgid][0];
             $siteinfo = $sites[$rginfo->site_id][0];
             $facilityinfo = $facilities[$siteinfo->facility_id][0];
             $scinfo = $scs[$siteinfo->sc_id][0];
             $this->view->hierarchy[$rgid] = array("facility" => $facilityinfo, "site" => $siteinfo, "sc" => $scinfo);
         }
     }
     if (isset($_REQUEST["summary_attrs_showticket"])) {
         $ticketmodel = new OpenTickets();
         $this->view->tickets = $ticketmodel->getGroupByRID();
     }
     $this->setpagetitle(self::default_title());
 }