source: trunk/web/addons/toga/index.php @ 158

Last change on this file since 158 was 158, checked in by bastiaans, 18 years ago

toga/search.php:

  • Removed debug printf

toga/search.php:

  • Will now maintain filter order in header
File size: 8.8 KB
Line 
1<?php
2
3if ( !empty( $_GET ) ) {
4        extract( $_GET );
5}
6
7$my_dir = getcwd();
8
9include_once "./libtoga.php";
10
11global $GANGLIA_PATH;
12chdir( $GANGLIA_PATH );
13
14include_once "./class.TemplatePower.inc.php";
15chdir( $my_dir );
16
17$httpvars = new HTTPVariables( $HTTP_GET_VARS, $_GET );
18$clustername = $httpvars->getClusterName();
19$view = $httpvars->getHttpVar( "view" );
20
21$filter = array();
22
23if( !isset($view) ) $view = "overview";
24if( !isset($sortorder) ) $sortorder = "asc";
25if( !isset($sortby) ) $sortby = "id";
26
27$myfilter_fields = explode( ",", $filterorder );
28
29// Fill filter array in order they were picked by user
30foreach( $myfilter_fields as $myfilter ) {
31
32        switch( $myfilter ) {
33
34                case "queue":
35                        $filter[queue]=$queue;
36                        break;
37                case "state":
38                        $filter[state]=$state;
39                        break;
40                case "user":
41                        $filter[user]=$user;
42                        break;
43                case "id":
44                        $filter[id]=$id;
45                        break;
46        }
47}
48
49//if( isset($queue) && ($queue!='')) $filter[queue]=$queue;
50//if( isset($state) && ($state!='')) $filter[state]=$state;
51//if( isset($user) && ($user!='')) $filter[user]=$user;
52//if( isset($id) && ($id!='')) $filter[id]=$id;
53
54function makeHeader() {
55
56        global $tpl, $grid, $context, $initgrid;
57        global $jobrange, $jobstart, $title;
58        global $page, $gridwalk, $clustername;
59        global $parentgrid, $physical, $hostname;
60        global $self, $filter, $cluster_url, $get_metric_string;
61        global $metrics, $reports, $m, $default_metric;
62        global $default_refresh, $filterorder, $view;
63        global $TARCHD, $period_start, $period_stop, $h, $id;
64       
65        if( isset($default_metric) and !isset($m) )
66                $metricname = $default_metric;
67        else
68                if( isset( $m ) )
69                        $metricname = $m;
70                else
71                        $metricname = "load_one";
72
73        $header = "header";
74
75        # Maintain our path through the grid tree.
76        $me = $self . "@" . $grid[$self][AUTHORITY];
77
78        $gridstack = array();
79        $gridstack[] = $me;
80
81        if ($gridwalk=="fwd") {
82                # push our info on gridstack, format is "name@url>name2@url".
83                if (end($gridstack) != $me) {
84                        $gridstack[] = $me;
85                }
86        } else if ($gridwalk=="back") {
87                # pop a single grid off stack.
88                if (end($gridstack) != $me) {
89                        array_pop($gridstack);
90                }
91        }
92
93        $gridstack_str = join(">", $gridstack);
94        $gridstack_url = rawurlencode($gridstack_str);
95
96        if ($initgrid or $gridwalk) {
97                # Use cookie so we dont have to pass gridstack around within this site.
98                # Cookie values are automatically urlencoded. Expires in a day.
99                setcookie("gs", $gridstack_str, time() + 86400);
100        }
101
102        # Invariant: back pointer is second-to-last element of gridstack. Grid stack never
103        # has duplicate entries.
104        list($parentgrid, $parentlink) = explode("@", $gridstack[count($gridstack)-2]);
105
106        # Setup a redirect to a remote server if you choose a grid from pulldown menu. Tell
107        # destination server that we're walking foward in the grid tree.
108        if (strstr($clustername, "http://")) {
109                $tpl->assign("refresh", "0");
110                $tpl->assign("redirect", ";URL=$clustername?gw=fwd&gs=$gridstack_url");
111                echo "<h2>Redirecting, please wait...</h2>";
112                $tpl->printToScreen();
113                exit;
114        }
115
116        $tpl->assign( "refresh", $default_refresh );
117        $tpl->assign( "date", date("r") );
118        $tpl->assign( "page_title", $title );
119
120        # The page to go to when "Get Fresh Data" is pressed.
121        $tpl->assign("page","./");
122
123        # Templated Logo image
124        $tpl->assign("images","./templates/$template_name/images");
125
126        #
127        # Used when making graphs via graph.php. Included in most URLs
128        #
129        $sort_url=rawurlencode($sort);
130        $get_metric_string = "m=$metric&r=$range&s=$sort_url&hc=$hostcols";
131
132        if ($jobrange and $jobstart)
133                $get_metric_string .= "&jr=$jobrange&js=$jobstart";
134
135        # Set the Alternate view link.
136        $cluster_url=rawurlencode($clustername);
137        $node_url=rawurlencode($hostname);
138
139        # Make some information available to templates.
140        $tpl->assign("cluster_url", $cluster_url);
141        # Build the node_menu
142        $node_menu = "";
143
144        if ($parentgrid) {
145                $node_menu .= "<B>$parentgrid $meta_designator</B> ";
146                $node_menu .= "<B>&gt;</B>\n";
147        }
148
149        # Show grid.
150        $mygrid =  ($self == "unspecified") ? "" : $self;
151        $node_menu .= "<B>$mygrid $meta_designator</B> ";
152        $node_menu .= "<B>&gt;</B>\n";
153
154        if ($physical)
155                $node_menu .= hiddenvar("p", $physical);
156
157        if ( $clustername ) {
158                $url = rawurlencode($clustername);
159                $node_menu .= "<B><A HREF=\"../../?c=".rawurlencode($clustername)."\">$clustername</A></B> ";
160                $node_menu .= "<B>&gt;</B>\n";
161                $node_menu .= hiddenvar("c", $clustername);
162        }
163
164        if (!count($metrics)) {
165                echo "<h4>Cannot find any metrics for selected cluster \"$clustername\", exiting.</h4>\n";       echo "Check ganglia XML tree (telnet $ganglia_ip $ganglia_port)\n";
166                exit;
167        }
168        $firsthost = key($metrics);
169        foreach ($metrics[$firsthost] as $m => $foo)
170                $context_metrics[] = $m;
171
172        foreach ($reports as $r => $foo)
173                $context_metrics[] = $r;
174
175        $node_menu .= "<B><A HREF=\"./?c=".rawurlencode($clustername)."\">Joblist</A></B> ";
176
177        if( count( $filter ) > 0 && $view != "search" ) {
178
179                $my_ct = 1;
180                $filter_nr = count( $filter );
181
182                foreach( $filter as $filtername=>$filterval ) {
183
184                        $node_menu .= "<B>&gt;</B>\n";
185
186                        $href = "<A HREF=\"./?c=".rawurlencode($clustername);
187                        $temp_ct = 0;
188                        $n_filter = $filter;
189                        $my_filterorder = "";
190                        $my_filters = array_keys( $filter );
191
192                        foreach( $n_filter as $n_filtername=>$n_filterval ) {
193
194                                if( $temp_ct < $my_ct ) {
195                                        $href .= "&". $n_filtername . "=" . $n_filterval;
196
197                                        if( $my_filterorder == "" )
198                                                $my_filterorder = $my_filters[$temp_ct];
199                                        else
200                                                $my_filterorder .= "," . $my_filters[$temp_ct];
201                                }
202
203                                $temp_ct++;
204                        }
205                        $href .= "&filterorder=$my_filterorder\">";
206
207                        if( $my_ct < $filter_nr )
208                                $node_menu .= "<B>$href$filtername: $filterval</A></B> ";
209                        else
210                                $node_menu .= "<B>$filtername: $filterval</B> ";
211
212                        $my_ct++;
213                }
214        }
215
216        if( $view == "search" ) {
217
218                $node_menu .= "<B>&gt;</B>\n";
219                $node_menu .= "<B>Jobarchive</B> ";
220                $tpl->assign("view", "search" );
221                $form_name = "archive_search_form";
222                $tpl->assignGlobal("form_name", $form_name );
223
224        } else {
225                $form_name = "toga_form";
226                $tpl->assignGlobal("form_name", $form_name );
227                $tpl->assign("view", "overview" );
228        }
229
230        $tpl->assign("node_menu", $node_menu);
231
232        if( array_key_exists( "id", $filter ) ) {
233
234                if (is_array($context_metrics) ) {
235                        $metric_menu = "<B>Metric</B>&nbsp;&nbsp;"
236                                ."<SELECT NAME=\"m\" OnChange=\"".$form_name.".submit();\">\n";
237
238                        sort($context_metrics);
239                        foreach( $context_metrics as $k ) {
240                                $url = rawurlencode($k);
241                                $metric_menu .= "<OPTION VALUE=\"$url\" ";
242                                if ($k == $metricname )
243                                        $metric_menu .= "SELECTED";
244                                $metric_menu .= ">$k\n";
245                        }
246                        $metric_menu .= "</SELECT>\n";
247
248                }
249
250                $tpl->assign("metric_menu", $metric_menu );
251        }
252        $m = $metricname;
253
254        if( $TARCHD ) {
255                $tpl->newBlock( "search" );
256                $tpl->assignGlobal( "cluster_url", rawurlencode($clustername) );
257                $tpl->assignGlobal( "cluster", $clustername );
258                $tpl->gotoBlock( "_ROOT" );
259        }
260
261        # Make sure that no data is cached..
262        header ("Expires: Mon, 26 Jul 1997 05:00:00 GMT");    # Date in the past
263        header ("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT"); # always modified
264        header ("Cache-Control: no-cache, must-revalidate");  # HTTP/1.1
265        header ("Pragma: no-cache");                          # HTTP/1.0
266}
267
268function makeFooter() {
269        global $tpl, $version, $parsetime;
270
271        $tpl->assign("webfrontend-version",$version["webfrontend"]);
272        $tpl->assign("togaweb-version", "0.1");
273        $tpl->assign("togaarch-version", "0.1");
274        $tpl->assign("togaplug-version", "0.1");
275
276        if ($version["gmetad"]) {
277                $tpl->assign("webbackend-component", "gmetad");
278                $tpl->assign("webbackend-version",$version["gmetad"]);
279        } else if ($version["gmond"]) {
280                $tpl->assign("webbackend-component", "gmond");
281                $tpl->assign("webbackend-version", $version["gmond"]);
282        }
283
284        $tpl->assign("parsetime", sprintf("%.4f", $parsetime) . "s");
285}
286
287function includeSearchpage() {
288        global $tpl;
289
290        $tpl->assignInclude( "main", "templates/search.tpl" );
291
292}
293
294function includeOverview() {
295        global $tpl;
296
297        $tpl->assignInclude( "main", "templates/overview.tpl" );
298}
299
300function includeHostPage() {
301
302        global $tpl;
303
304        $tpl->assignInclude( "main", "templates/host_view.tpl" );
305}
306
307$tpl = new TemplatePower( "templates/index.tpl" );
308
309$tpl->assignInclude( "header", "templates/header.tpl" );
310
311if( isset( $h ) and $h != '' ) {
312        $hostname = $h;
313        $view = "host";
314}
315
316switch( $view ) {
317
318        case "overview":
319
320                includeOverview();
321                break;
322
323        case "search":
324
325                includeSearchPage();
326                break;
327
328        case "host":
329
330                includeHostPage();
331                break;
332
333        default:
334
335                includeOverview();
336                break;
337}
338
339$tpl->assignInclude( "footer", "templates/footer.tpl" );
340$tpl->prepare();
341
342$title = "Torque Report";
343makeHeader();
344$tpl->assign("cluster_url", rawurlencode($clustername) );
345$tpl->assign("cluster", $clustername );
346
347switch( $view ) {
348
349        case "overview":
350
351                include "./overview.php";
352                makeOverview();
353                break;
354
355        case "search":
356
357                include "./search.php";
358                makeSearchPage();
359                break;
360
361        case "host":
362
363                include "./host_view.php";
364                makeHostView();
365                break;
366
367        default:
368
369                makeOverview();
370                break;
371}
372
373makeFooter();
374$tpl->printToScreen();
375?>
Note: See TracBrowser for help on using the repository browser.