r1477 + remake SLB summary structure once more for convenient rendering
authorDenis Ovsienko <infrastation@yandex.ru>
Thu, 10 Jan 2008 15:38:03 +0000 (15:38 +0000)
committerDenis Ovsienko <infrastation@yandex.ru>
Thu, 10 Jan 2008 15:38:03 +0000 (15:38 +0000)
inc/database.php
inc/interface.php

index e715edcfcb9d2d6e7ed6ed6c56eac88d79d24591..4caf0385d2271016798f4a0cd128ee6fc7189add 100644 (file)
@@ -1969,13 +1969,13 @@ function getDatabaseVersion ()
        return $ret;
 }
 
-// Return an array of virtual services. For each of them list configured
-// load balancers with real server counter.
+// Return an array of virtual services. For each of them list real server pools
+// with their load balancers and other stats.
 function getSLBSummary ()
 {
        global $dbxlink;
        $query = 'select vs.id as vsid, vip as vip_bin, inet_ntoa(vip) as vip, vport, proto, ' .
-               'vs.name, rsp.name as pool_name, object_id, count(rs.id) as rscount from ' .
+               'vs.name, rsp.id as pool_id, rsp.name as pool_name, object_id, count(rs.id) as rscount from ' .
                'IPVirtualService as vs inner join IPRSPool as rsp on vs.id = rsp.vs_id ' .
                'inner join IPRealServer as rs on rs.rspool_id = rsp.id ' .
                'inner join IPLoadBalancer as lb on rsp.id = lb.rspool_id ' .
@@ -1991,19 +1991,23 @@ function getSLBSummary ()
        while ($row = $result->fetch (PDO::FETCH_ASSOC))
        {
                $vsid = $row['vsid'];
+               $object_id = $row['object_id'];
                if (!isset ($ret[$vsid]))
                {
                        $ret[$vsid] = array();
                        foreach (array ('vip', 'vport', 'proto', 'name') as $cname)
                                $ret[$vsid][$cname] = $row[$cname];
-                       $ret[$vsid]['rspools'] = array();
+                       $ret[$vsid]['lblist'] = array();
                }
-               $ret[$vsid]['rspools'][$row['object_id']] = $row['rscount'];
+               $ret[$vsid]['lblist'][$row['object_id']][$row['pool_id']] = array ('size' => $row['rscount'], 'name' => $row['pool_name']);
        }
        $result->closeCursor();
        return $ret;
 }
 
+// Get the detailed composition of a particular virtual service, namely the list
+// of all pools, each shown with the list of objects servicing it. VS/RS configs
+// will be returned as well.
 function getVServiceInfo ($vsid = 0)
 {
        global $dbxlink;
index 45c1ec9dc68a007f1c3ee47c46dc98e30754b060..bf7c1cf5798e314700d8b5fc6ab83f904f08da3b 100644 (file)
@@ -1646,7 +1646,7 @@ function renderAddressspace ()
        $lblist = array();
        $lbdname = array();
        foreach ($summary as $vipdata)
-               foreach (array_keys ($vipdata['rspools']) as $lb_object_id)
+               foreach (array_keys ($vipdata['lblist']) as $lb_object_id)
                        if (!in_array ($lb_object_id, $lblist))
                        {
                                $oi = getObjectInfo ($lb_object_id);
@@ -1664,12 +1664,20 @@ function renderAddressspace ()
                echo "</tr>\n";
                foreach ($summary as $vsid => $vsdata)
                {
-                       echo "<tr><td class=tdleft><a href='$root?page=vservice&tab=default&id=${vsid}'>";
+                       echo "<tr><td class=tdleft><a href='$root?page=vservice&tab=default&id=${vsid}'>[";
                        echo buildVServiceName ($vsdata);
-                       echo "<td>${vsdata['name']}</td>";
+                       echo "]</td><td>${vsdata['name']}</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 '<td>';
+                               if (!count ($vsdata['lblist']))
+                                       echo '&nbsp;';
+                               else
+                                       foreach ($vsdata['lblist'][$lb_object_id] as $pool_id => $pool_info)
+                                               echo $pool_info['size'] . '@(' . $pool_info['name'] . ')';
+                               echo '</td>';
+                       }
+                       echo "</tr>\n";
                }
                echo "</table>\n";
        }