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';
$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;
}
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);
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] : ' ') . '</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] : ' ') . '</td>';
+ echo "</tr>";
+ }
echo "</table>\n";
}
finishPortlet ();