r1871 + implement IPv4 VS tag filtering
authorDenis Ovsienko <infrastation@yandex.ru>
Fri, 11 Apr 2008 14:17:01 +0000 (14:17 +0000)
committerDenis Ovsienko <infrastation@yandex.ru>
Fri, 11 Apr 2008 14:17:01 +0000 (14:17 +0000)
inc/database.php
inc/interface.php

index c4a5622..aff3704 100644 (file)
@@ -2203,11 +2203,24 @@ function commitUpdateVS ($vsid = 0, $vip = '', $vport = 0, $proto = '', $name =
 
 // Return the list of virtual services, indexed by vs_id.
 // Each record will be shown with its basic info plus RS pools counter.
-function getVSList ()
+function getVSList ($tagfilter = array())
 {
+       if (!count ($tagfilter))
+               $whereclause = '';
+       else
+       {
+               $whereclause = 'where ';
+               $orclause = '';
+               foreach ($tagfilter as $tag_id)
+               {
+                       $whereclause .= $orclause . 'tag_id = ' . $tag_id;
+                       $orclause = ' or ';
+               }
+       }
        $query = "select vs.id, inet_ntoa(vip) as vip, vport, proto, vs.name, vs.vsconfig, vs.rsconfig, count(rspool_id) as poolcount " .
                "from IPVirtualService as vs left join IPLoadBalancer as lb on vs.id = lb.vs_id " .
-               "group by vs.id order by vs.vip, proto, vport";
+               "left join TagStorage on vs.id = TagStorage.target_id and target_realm = 'ipv4vs' " . 
+               "${whereclause} group by vs.id order by vs.vip, proto, vport";
        $result = useSelectBlade ($query);
        $ret = array ();
        while ($row = $result->fetch (PDO::FETCH_ASSOC))
index 487c834..8f028d3 100644 (file)
@@ -4555,13 +4555,19 @@ function renderRSPool ($pool_id = 0)
 function renderVSList ()
 {
        global $root, $nextorder;
-       $vslist = getVSList();
+       $tagfilter = isset ($_REQUEST['tagfilter']) ? $_REQUEST['tagfilter'] : array();
+       $tagfilter = complementByKids ($tagfilter);
+       $vslist = getVSList ($tagfilter);
+       echo "<table border=0 class=objectview>\n";
+       echo "<tr><td class=pcleft>";
+
+       startPortlet ('Virtual services');
        echo "<table class=widetable border=0 cellpadding=10 cellspacing=0 align=center>\n";
        echo "<tr><th>endpoint</th><th>name</th><th>VS configuration</th><th>RS configuration</th></tr>";
        $order = 'odd';
        foreach ($vslist as $vsid => $vsinfo)
        {
-               echo "<tr valign=top class=row_${order}><td class=tdleft><a href='${root}?page=vservice&id=${vsid}'>" . buildVServiceName ($vsinfo);
+               echo "<tr align=left valign=top class=row_${order}><td class=tdleft><a href='${root}?page=vservice&id=${vsid}'>" . buildVServiceName ($vsinfo);
                echo "</a></td>";
                echo "<td class=tdleft>${vsinfo['name']}</td>";
                echo "<td><pre>${vsinfo['vsconfig']}</pre></td>";
@@ -4570,6 +4576,10 @@ function renderVSList ()
                $order = $nextorder[$order];
        }
        echo "</table>";
+       finishPortlet();
+       echo '</td><td class=pcright>';
+       renderTagFilterPortlet ($tagfilter, 'ipv4vs');
+       echo '</td></tr></table>';
 }
 
 function renderVSListEditForm ()