r1485 + adding a real server to a pool is possible now
authorDenis Ovsienko <infrastation@yandex.ru>
Fri, 11 Jan 2008 14:13:43 +0000 (14:13 +0000)
committerDenis Ovsienko <infrastation@yandex.ru>
Fri, 11 Jan 2008 14:13:43 +0000 (14:13 +0000)
inc/database.php
inc/interface.php
inc/navigation.php
inc/ophandlers.php

index 88e15c4..c70b3dc 100644 (file)
@@ -2109,4 +2109,28 @@ function getRSPoolInfo ($id = 0)
        return $ret;
 }
 
+function addRStoRSPool ($pool_id = 0, $rsip = '', $rsport = 0, $rsconfig = '')
+{
+       if ($pool_id <= 0 or $rsport <= 0)
+       {
+               showError ('Invalid arguments', __FUNCTION__);
+               die;
+       }
+       if (long2ip (ip2long ($rsip)) !== $rsip)
+       {
+               showError ("Invalid IP address '${rsip}'", __FUNCTION__);
+               die;
+       }
+       return useInsertBlade
+       (
+               'IPRealServer',
+               array
+               (
+                       'rsip' => "inet_aton('${rsip}')",
+                       'rsport' => $rsport,
+                       'rspool_id' => $pool_id,
+                       'rsconfig' => (empty ($rsconfig) ? 'NULL' : "'${rsconfig}'"))
+       );
+}
+
 ?>
index a27c133..4193b47 100644 (file)
@@ -3713,40 +3713,46 @@ function renderProgressBar ($percentage = 0)
        echo "</tr></table>";
 }
 
-function renderVSRSPoolForm ($vsid = 0)
+function renderRSPoolServerForm ($pool_id = 0)
 {
        global $root, $pageno, $tabno;
-       if ($vsid <= 0)
+       if ($pool_id <= 0)
        {
-               showError ('Invalid vsid', __FUNCTION__);
+               showError ('Invalid pool_id', __FUNCTION__);
                return;
        }
-       $vsinfo = getVServiceInfo ($vsid);
-       echo '<pre>';
-       print_r ($vsinfo);
-       echo '</pre>';
+       showMessageOrError();
+       $poolInfo = getRSPoolInfo ($pool_id);
 
-       echo "<center><h2>Add New</h2></center>\n";
+       startPortlet ('Add new');
        echo "<table cellspacing=0 cellpadding=5 align=center class=widetable>\n";
        echo "<tr><th>Address</th><th>Port</th><th>&nbsp;</th></tr>\n";
        echo "<form action='${root}process.php'>";
        echo "<input type=hidden name=page value='${pageno}'>\n";
        echo "<input type=hidden name=tab value='${tabno}'>\n";
-       echo "<input type=hidden name=op value=addRealServer>";
-       echo "<input type=hidden name=vsid value='${vsid}'>";
-       echo "<tr><td><input type=text name=vsip tabindex=1></td>";
-       echo "<td><input type=text name=vsport tabindex=2></td>";
+       echo "<input type=hidden name=op value=addRS>";
+       echo "<input type=hidden name=id value='${pool_id}'>";
+       echo "<tr><td><input type=text name=rsip tabindex=1></td>";
+       echo "<td><input type=text name=rsport tabindex=2></td>";
        echo "<td><input type=submit value='OK' tabindex=3></tr>\n";
+       echo "<tr><th colspan=3>configuration</th></tr>";
+       echo "<tr><td colspan=3><textarea name=rsconfig rows=10 cols=80 tabindex=4></textarea></td></tr>";
        echo "</table>\n";
+       finishPortlet();
 
        echo "<center><h2>Manage Existing</h2></center>\n";
        echo "<table cellspacing=0 cellpadding=5 align=center class=widetable>\n";
-       echo "<tr><th>&nbsp;</th><th>Address</th><th>Port</th><th>[Allocation]</th></tr>\n";
-       foreach ($vsinfo['rslist'] as $rs)
+       echo "<tr><th>&nbsp;</th><th>Address</th><th>Port</th><th>configuration</th></tr>\n";
+       foreach ($poolInfo['rslist'] as $rsid => $rs)
        {
-               echo "<tr><td><a href='${root}process.php?op=delRealServer&page=${pageno}&tab=${tabno}&rsid=${rs['rsid']}'>";
+               echo "<tr><td><a href='${root}process.php?op=delRealServer&page=${pageno}&tab=${tabno}&rsid=${rsid}'>";
                printImageHREF ('delete', 'Delete this real server');
-               echo "</td><td>${rs['rsip']}</td><td>${rs['rsport']}</td><td>&nbsp;</td></tr>\n";
+               echo "</td><td>${rs['rsip']}</td><td>${rs['rsport']}</td><td>";
+               if (empty ($rs['rsconfig']))
+                       echo '&nbsp;';
+               else
+                       echo "<pre>${rs['rsconfig']}</pre>";
+               echo "</td></tr>\n";
        }
        echo "</table>\n";
 }
@@ -3814,9 +3820,9 @@ function renderRSPool ($pool_id = 0)
 
        echo "\n";
        echo "</td></tr></table>\n";
-echo '<pre>';
-print_r ($poolInfo);
-echo '</pre>';
+#echo '<pre>';
+#print_r ($poolInfo);
+#echo '</pre>';
 }
 
 ?>
index 386348b..b603fd8 100644 (file)
@@ -156,20 +156,20 @@ $page['vservice']['parent'] = 'ipv4space';
 $page['vservice']['bypass'] = 'id';
 $page['vservice']['bypass_type'] = 'uint';
 $tab['vservice']['default'] = 'View';
-$tab['vservice']['configs'] = '[Configuration]';
-$tab['vservice']['rspool'] = 'RS pools';
+$tab['vservice']['configs'] = '[VS Configuration]';
+$tab['vservice']['rspools'] = '[RS pools]';
 $tabhandler['vservice']['default'] = 'renderVirtualService';
-$tabhandler['vservice']['rspool'] = 'renderVSRSPoolForm';
 
 $page['rspool']['title'] = 'RS pool';
 $page['rspool']['parent'] = 'ipv4space';
 $page['rspool']['bypass'] = 'id';
 $page['rspool']['bypass_type'] = 'uint';
 $tab['rspool']['default'] = 'View';
-$tab['rspool']['editrs'] = '[Real Servers]';
+$tab['rspool']['editrslist'] = 'Real Servers';
 $tab['rspool']['editlb'] = '[Load Balancers]';
 $tabhandler['rspool']['default'] = 'renderRSPool';
-
+$tabhandler['rspool']['editrslist'] = 'renderRSPoolServerForm';
+$ophandler['rspool']['editrslist']['addRS'] = 'addRealServer';
 
 $page['search']['title_handler'] = 'dynamic_title_search';
 $page['search']['handler'] = 'handler_search';
index 2444bc1..d8f3ee8 100644 (file)
@@ -959,4 +959,22 @@ function resetUIConfig()
        return "${root}?page=${pageno}&tab=default&message=" . urlencode ("Reset complete");
 }
 
+function addRealServer ()
+{
+       global $root, $pageno, $tabno;
+
+       assertUIntArg ('id');
+       assertStringArg ('rsip');
+       assertUIntArg ('rsport');
+       assertStringArg ('rsconfig', TRUE);
+       $pool_id = $_REQUEST['id'];
+       $rsip = $_REQUEST['rsip'];
+       $rsport = $_REQUEST['rsport'];
+       $rsconfig = $_REQUEST['rsconfig'];
+       if (!addRStoRSPool ($pool_id, $rsip, $rsport, $rsconfig))
+               return "${root}?page=${pageno}&tab=${tabno}&id=$pool_id&error=" . urlencode ('addRStoRSPool() failed');
+       else
+               return "${root}?page=${pageno}&tab=${tabno}&id=$pool_id&message=" . urlencode ("Real server successfully added");
+}
+
 ?>