r4822 new interface feature: cloning of RS pools
authorAlexey Andriyanov <alan@al-an.info>
Tue, 11 Oct 2011 08:18:17 +0000 (08:18 +0000)
committerAlexey Andriyanov <alan@al-an.info>
Tue, 11 Oct 2011 08:18:17 +0000 (08:18 +0000)
cloneRSPool: new ophandler
renderEditRSPool: clone button added
commitCreateRSPool: now returns the ID of newly created pool

wwwroot/inc/navigation.php
wwwroot/inc/ophandlers.php
wwwroot/inc/slb-interface.php
wwwroot/inc/slb.php

index dded8b7..7d5ebbc 100644 (file)
@@ -383,6 +383,7 @@ $tabhandler['ipv4rspool']['editlblist'] = 'renderSLBEditTab';
 $tabhandler['ipv4rspool']['tags'] = 'renderEntityTags';
 $tabhandler['ipv4rspool']['files'] = 'renderFilesForEntity';
 $ophandler['ipv4rspool']['edit']['updIPv4RSP'] = 'tableHandler';
+$ophandler['ipv4rspool']['edit']['cloneIPv4RSP'] = 'cloneRSPool';
 $ophandler['ipv4rspool']['editrslist']['addRS'] = 'addRealServer';
 $ophandler['ipv4rspool']['editrslist']['delRS'] = 'tableHandler';
 $ophandler['ipv4rspool']['editrslist']['updRS'] = 'updateRealServer';
index 2020957..2699547 100644 (file)
@@ -2772,6 +2772,18 @@ function deleteVlan()
        return buildRedirectURL ('vlandomain', 'default', array ('vdom_id' => $vdom_id));
 }
 
+function cloneRSPool()
+{
+       assertUIntArg ('pool_id');
+       $pool = spotEntity ('ipv4rspool', $_REQUEST['pool_id']);
+       $rs_list = getRSListInPool ($pool['id']);
+       $new_id = commitCreateRSPool ($pool['name'] . ' (copy)', $pool['vsconfig'], $pool['rsconfig'], $pool['etags']);
+       foreach ($rs_list as $rs)
+               addRStoRSPool ($new_id, $rs['rsip'], $rs['rsport'], $rs['inservice'], $rs['rsconfig'], $rs['comment']);
+       showSuccess ("Created a copy of pool <a href='" . makeHref (array ('page' => 'ipv4rspool', 'tab' => 'default', 'pool_id' => $pool['id'])) . "'>${pool['name']}</a>");
+       return buildRedirectURL ('ipv4rspool', 'default', array ('pool_id' => $new_id));
+}
+
 function tableHandler()
 {
        $opspec = getOpspec();
index 26f66f0..7546a2f 100644 (file)
@@ -581,6 +581,10 @@ function renderEditRSPool ($pool_id)
        printImageHREF ('SAVE', 'Save changes', TRUE);
        echo "</td></tr>\n";
        echo "</table></form>\n";
+       echo '<div style="text-align: center; margin-top: 1em">';
+       printOpFormIntro ('cloneIPv4RSP');
+       printImageHREF ('COPY', 'clone RS Pool', TRUE);
+       echo '</form></div>';
 }
 
 function renderEditVService ($vsid)
index 719c0f0..97de7a2 100644 (file)
@@ -418,7 +418,8 @@ function commitUpdateVS ($vsid = 0, $vip = '', $vport = 0, $proto = '', $name =
 
 function commitCreateRSPool ($name = '', $vsconfig = '', $rsconfig = '', $taglist = array())
 {
-       usePreparedInsertBlade
+       $new_pool_id = FALSE;
+       if (usePreparedInsertBlade
        (
                'IPv4RSPool',
                array
@@ -427,8 +428,10 @@ function commitCreateRSPool ($name = '', $vsconfig = '', $rsconfig = '', $taglis
                        'vsconfig' => (!strlen ($vsconfig) ? NULL : $vsconfig),
                        'rsconfig' => (!strlen ($rsconfig) ? NULL : $rsconfig)
                )
-       );
+       ))
+               $new_pool_id = lastInsertID();
        produceTagsForLastRecord ('ipv4rspool', $taglist);
+       return $new_pool_id;
 }
 
 function commitDeleteRSPool ($pool_id = 0)