r1434 + basic SLB summary works now
authorDenis Ovsienko <infrastation@yandex.ru>
Thu, 27 Dec 2007 16:53:31 +0000 (16:53 +0000)
committerDenis Ovsienko <infrastation@yandex.ru>
Thu, 27 Dec 2007 16:53:31 +0000 (16:53 +0000)
inc/database.php
inc/interface.php

index 32acf83ec85422c45dd4e119e1774d4fff0424f0..5a5643b83060ae7f13d0d4e1525f40e6ed0c7bd2 100644 (file)
@@ -1969,14 +1969,33 @@ function getDatabaseVersion ()
        return $ret;
 }
 
        return $ret;
 }
 
+// Return an array of virtual service. For each of them list configured
+// load balancers with real server counter.
 function getSLBSummary ()
 {
 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 ' .
                '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';
        $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 ' .
                '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';
+       $result = $dbxlink->query ($query);
+       if ($result == NULL)
+       {
+               $errorInfo = $dbxlink->errorInfo();
+               showError ("SQL query '${query}' failed with message '${errorInfo[2]}'", __FUNCTION__);
+               return NULL;
+       }
+       $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'];
+       }
+       return $ret;
 }
 
 ?>
 }
 
 ?>
index 13dccf1d151cadff0ed73297115ddb7e3ae58258..e5895fbee1af555b73edfb1cf0969f169a922f2e 100644 (file)
@@ -1634,6 +1634,37 @@ function renderAddressspace ()
        echo "</td>\n<td class=pcright>";
 
        startPortlet ('SLB summary');
        echo "</td>\n<td class=pcright>";
 
        startPortlet ('SLB summary');
+       $summary = getSLBSummary();
+       $lblist = array();
+       $lbdname = array();
+       foreach ($summary as $ports)
+               foreach ($ports as $lbs)
+                       foreach ($lbs as $lb_object_id => $dummy)
+                       if (!in_array ($lb_object_id, $lblist))
+                       {
+                               $oi = getObjectInfo ($lb_object_id);
+                               $lbdname[$lb_object_id] = $oi['dname'];
+                               $lblist[] = $lb_object_id;
+                       }
+       if (!count ($summary))
+               echo 'none configured';
+       else
+       {
+               echo "<table class='widetable' border=0 cellpadding=5 cellspacing=0 align='center'>\n";
+               echo "<tr><th>&nbsp;</th>";
+               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>";
+                       }
+               echo "</table>\n";
+       }
        finishPortlet ();
 
        echo '</td></tr></table>';
        finishPortlet ();
 
        echo '</td></tr></table>';