r1438 + redid SLB summary to use vsid as the key
authorDenis Ovsienko <infrastation@yandex.ru>
Thu, 27 Dec 2007 19:36:00 +0000 (19:36 +0000)
committerDenis Ovsienko <infrastation@yandex.ru>
Thu, 27 Dec 2007 19:36:00 +0000 (19:36 +0000)
inc/database.php
inc/interface.php

index 5a5643b83060ae7f13d0d4e1525f40e6ed0c7bd2..705181e203bcf51227184e9fe37c3d7683c1f2a4 100644 (file)
@@ -1976,7 +1976,8 @@ function getSLBSummary ()
        global $dbxlink;
        $query = 'select IPRealServer.vsid, IPVirtualService.vip as vip_bin, ' .
                'inet_ntoa(IPVirtualService.vip) as vip, IPVirtualService.vport, ro.id as object_id, ' .
-               'count(rsid) as rscount from IPLBConfig inner join RackObject as ro on ro.id = object_id ' .
+               'count(rsid) as rscount, proto, IPVirtualService.vsid as vsid ' .
+               'from IPLBConfig inner join RackObject as ro on ro.id = object_id ' .
                'inner join IPRealServer on IPLBConfig.rsid = IPRealServer.id ' .
                'inner join IPVirtualService on IPRealServer.vsid = IPVirtualService.vsid ' .
                'group by ro.id, IPVirtualService.vsid order by vip_bin, object_id';
@@ -1990,10 +1991,15 @@ function getSLBSummary ()
        $ret = array();
        while ($row = $result->fetch (PDO::FETCH_ASSOC))
        {
-               $object_id = $row['object_id'];
-               if (!isset ($ret[$row['vip']][$row['vport']]))
-                       $ret[$row['vip']][$row['vport']] = array();
-               $ret[$row['vip']][$row['vport']][$object_id] = $row['rscount'];
+               $vsid = $row['vsid'];
+               if (!isset ($ret[$vsid]))
+               {
+                       $ret[$vsid] = array();
+                       foreach (array ('vip', 'vport', 'proto') as $cname)
+                               $ret[$vsid][$cname] = $row[$cname];
+                       $ret[$vsid]['rspools'] = array();
+               }
+               $ret[$vsid]['rspools'][$row['object_id']] = $row['rscount'];
        }
        return $ret;
 }
index d632c68fb9c267325e267f7fa863ddca1103cd19..de0a7c682965cf8d7d8a0074555d189a76a476d6 100644 (file)
@@ -1635,11 +1635,15 @@ function renderAddressspace ()
 
        startPortlet ('SLB summary');
        $summary = getSLBSummary();
+#echo '<pre>';
+#print_r ($summary);
+#echo '</pre>';
+       // A single id-keyed array isn't used here to preserve existing
+       // order of LBs returned by getSLBSummary()
        $lblist = array();
        $lbdname = array();
-       foreach ($summary as $ports)
-               foreach ($ports as $lbs)
-                       foreach ($lbs as $lb_object_id => $dummy)
+       foreach ($summary as $vipdata)
+               foreach (array_keys ($vipdata['rspools']) as $lb_object_id)
                        if (!in_array ($lb_object_id, $lblist))
                        {
                                $oi = getObjectInfo ($lb_object_id);
@@ -1655,14 +1659,14 @@ function renderAddressspace ()
                foreach ($lblist as $lb_object_id)
                        echo "<th><a href='$root?page=object&tab=default&object_id=${lb_object_id}'>" . $lbdname[$lb_object_id]  . "</a></th>";
                echo "</tr>\n";
-               foreach ($summary as $vip => $ports)
-                       foreach ($ports as $vport => $lbs)
-                       {
-                               echo "<tr><td class=tdleft><a href='$root?page=ipaddress&tab=default&ip=${vip}'>${vip}</a>:${vport}</th>";
-                               foreach ($lblist as $lb_object_id)
-                                       echo '<td>' . (isset ($lbs[$lb_object_id]) ? $lbs[$lb_object_id] : '&nbsp;') . '</td>';
-                               echo "</tr>";
-                       }
+               foreach ($summary as $vsid => $vsdata)
+               {
+                       echo "<tr><td class=tdleft><a href='$root?page=vservice&tab=default&id=${vsid}'>";
+                       echo $vsdata['vip'] . ':' . $vsdata['vport'] . '/' . $vsdata['proto'] . '</a></td>';
+                       foreach ($lblist as $lb_object_id)
+                               echo '<td>' . (isset ($vsdata['rspools'][$lb_object_id]) ? $vsdata['rspools'][$lb_object_id] : '&nbsp;') . '</td>';
+                       echo "</tr>";
+               }
                echo "</table>\n";
        }
        finishPortlet ();