r3599 Bulk port form (#321)
authorRyan Farrington <gwyden@dreamflyght.com>
Fri, 14 May 2010 01:19:12 +0000 (01:19 +0000)
committerRyan Farrington <gwyden@dreamflyght.com>
Fri, 14 May 2010 01:19:12 +0000 (01:19 +0000)
ChangeLog
inc/interface.php
inc/navigation.php
inc/ophandlers.php
install/init-dictbase.sql
upgrade.php

index fdcc0b2..42bde62 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,6 @@
 0.17.11
        update: usual SNMP updates
+       update: Bulk port form (#321)
        bugfix: updateObject() saves DB records for dict values when not set. (#273)
 0.17.10 2010-05-05
        update: make object form messages consistent (by Tyler J. Wagner)
index 01ba957..1fc8328 100644 (file)
@@ -1208,12 +1208,30 @@ function renderPortsForObject ($object_id)
                printImageHREF ('add', 'add a port', TRUE, 104);
                echo "</td></tr></form>";
        }
-       if (getConfigVar('ENABLE_MULTIPORT_FORM') == 'yes')
+       if (getConfigVar('ENABLE_MULTIPORT_FORM') == 'yes' || getConfigVar('ENABLE_BULKPORT_FORM') == 'yes' )
                startPortlet ('Ports and interfaces');
        else
                echo '<br>';
        $object = spotEntity ('object', $object_id);
        amplifyCell ($object);
+       if (getConfigVar ('ADDNEW_AT_TOP') == 'yes' && getConfigVar('ENABLE_BULKPORT_FORM') == 'yes'){
+               echo "<table cellspacing=0 cellpadding='5' align='center' class='widetable'>\n";
+               echo "<tr><th>&nbsp;</th><th class=tdleft>Local name</th><th class=tdleft>Visible label</th><th class=tdleft>Interface</th><th class=tdleft>Start Number</th>";
+               echo "<th class=tdleft>Count</th><th>&nbsp;</th></tr>\n";
+               printOpFormIntro ('addBulkPorts');
+               echo "<tr><td>";
+               printImageHREF ('add', 'add ports', TRUE);
+               echo "</td><td><input type=text size=8 name=port_name tabindex=105></td>\n";
+               echo "<td><input type=text name=port_label tabindex=106></td><td>";
+               printNiftySelect (getNewPortTypeOptions(), array ('name' => 'port_type_id', 'tabindex' => 107), $prefs['selected']);
+               echo "<td><input type=text name=port_numbering_start tabindex=108 size=3 maxlength=3></td>\n";
+               echo "<td><input type=text name=port_numbering_count tabindex=109 size=3 maxlength=3></td>\n";
+               echo "<td>&nbsp;</td><td>";
+               printImageHREF ('add', 'add ports', TRUE, 110);
+               echo "</td></tr></form>";
+               echo "</table><br>\n";
+       }
+       
        echo "<table cellspacing=0 cellpadding='5' align='center' class='widetable'>\n";
        echo "<tr><th>&nbsp;</th><th class=tdleft>Local name</th><th class=tdleft>Visible label</th><th class=tdleft>Interface</th><th class=tdleft>L2 address</th>";
        echo "<th class=tdcenter colspan=2>Remote object and port</th><th class=tdcenter>(Un)link or (un)reserve</th><th>&nbsp;</th></tr>\n";
@@ -1306,6 +1324,23 @@ function renderPortsForObject ($object_id)
        if (getConfigVar ('ADDNEW_AT_TOP') != 'yes')
                printNewItemTR ($prefs);
        echo "</table><br>\n";
+       if (getConfigVar ('ADDNEW_AT_TOP') != 'yes' && getConfigVar('ENABLE_BULKPORT_FORM') == 'yes'){
+               echo "<table cellspacing=0 cellpadding='5' align='center' class='widetable'>\n";
+               echo "<tr><th>&nbsp;</th><th class=tdleft>Local name</th><th class=tdleft>Visible label</th><th class=tdleft>Interface</th><th class=tdleft>Start Number</th>";
+               echo "<th class=tdleft>Count</th><th>&nbsp;</th></tr>\n";
+               printOpFormIntro ('addBulkPorts'); 
+               echo "<tr><td>";
+               printImageHREF ('add', 'add ports', TRUE);
+               echo "</td><td><input type=text size=8 name=port_name tabindex=105></td>\n";
+               echo "<td><input type=text name=port_label tabindex=106></td><td>";
+               printNiftySelect (getNewPortTypeOptions(), array ('name' => 'port_type_id', 'tabindex' => 107), $prefs['selected']);
+               echo "<td><input type=text name=port_numbering_start tabindex=108 size=3 maxlength=3></td>\n";
+               echo "<td><input type=text name=port_numbering_count tabindex=109 size=3 maxlength=3></td>\n";
+               echo "<td>&nbsp;</td><td>";
+               printImageHREF ('add', 'add ports', TRUE, 110);
+               echo "</td></tr></form>";
+               echo "</table><br>\n";
+       }
        if (getConfigVar('ENABLE_MULTIPORT_FORM') == 'yes')
                finishPortlet();
        if (getConfigVar('ENABLE_MULTIPORT_FORM') != 'yes')
@@ -1534,7 +1569,7 @@ function showMessageOrError ()
                                79 => array ('code' => 'success', 'format' => 'Rack "%s" was deleted successfully'),
                                80 => array ('code' => 'success', 'format' => "Added new object '%s'"),
                                81 => array ('code' => 'success', 'format' => "SNMP: completed '%s' work"),
-
+                               82 => array ('code' => 'success', 'format' => "Bulk port creation was successful. %u ports created, %u failed"),
 // records 100~199 with fatal error messages
                                100 => array ('code' => 'error', 'format' => '%s'),
                                101 => array ('code' => 'error', 'format' => 'Port name cannot be empty'),
@@ -1628,6 +1663,7 @@ function showMessageOrError ()
                                189 => array ('code' => 'error', 'format' => "Unknown OID '%s'"),
                                190 => array ('code' => 'error', 'format' => "Invalid VLAN ID '%s'"),
                                191 => array ('code' => 'error', 'format' => "deploy was blocked due to conflicting configuration versions"),
+                               192 => array ('code' => 'error', 'format' => "You have to supply all the information for the bulk port function to be successful."), 
 
 // records 200~299 with warnings
                                200 => array ('code' => 'warning', 'format' => '%s'),
index ef7dc92..cc46bd1 100644 (file)
@@ -128,6 +128,7 @@ $ophandler['object']['ports']['editPort'] = 'editPortForObject';
 $ophandler['object']['ports']['linkPort'] = 'linkPortForObject';
 $ophandler['object']['ports']['unlinkPort'] = 'unlinkPortForObject';
 $ophandler['object']['ports']['addMultiPorts'] = 'addMultiPorts';
+$ophandler['object']['ports']['addBulkPorts'] = 'addBulkPorts';
 $ophandler['object']['ports']['useup'] = 'useupPort';
 $ophandler['object']['ipv4']['updIPv4Allocation'] = 'updIPv4Allocation';
 $ophandler['object']['ipv4']['addIPv4Allocation'] = 'addIPv4Allocation';
index e7f6c3b..d4ac50d 100644 (file)
@@ -354,6 +354,43 @@ http://www.cisco.com/en/US/products/hw/routers/ps274/products_tech_note09186a008
        return buildRedirectURL (__FUNCTION__, 'OK', array ($added_count, $updated_count, $error_count));
 }
 
+$msgcode['addBulkPorts']['OK'] = 82;
+$msgcode['addBulkPorts']['ERR'] = 192;
+
+function addBulkPorts ()
+{
+       assertUIntArg ('object_id', __FUNCTION__);
+       assertStringArg ('port_name', __FUNCTION__, TRUE);
+       assertStringArg ('port_label', __FUNCTION__, TRUE);
+       assertUIntArg('port_numbering_start', __FUNCTION__);
+       assertUIntArg('port_numbering_count', __FUNCTION__);
+       
+       $object_id = $_REQUEST['object_id'];
+       $port_name = $_REQUEST['port_name'];
+       $port_type_id = $_REQUEST['port_type_id'];
+       $port_label = $_REQUEST['port_label'];
+       $port_numbering_start = $_REQUEST['port_numbering_start'];
+       $port_numbering_count = $_REQUEST['port_numbering_count'];
+       
+       if ($object_id == 0 or $port_type_id == 0 or $port_name == '' or $port_numbering_count == 0)
+       {
+               return buildRedirectURL (__FUNCTION__, 'ERR');
+       }
+       $added_count = $error_count = 0;
+       if(strrpos($port_name, "%u") === false )
+               $port_name .= '%u';
+       for ($i=0,$c=$port_numbering_start; $i<=$port_numbering_count; $i++,$c++)
+       {
+               $ret = commitAddPort ($object_id, @sprintf($port_name,$c), $port_type_id, @sprintf($port_label,$c), '');
+               if ($result == '')
+                       $added_count++;
+               else
+                       $error_count++;
+       }
+       return buildRedirectURL (__FUNCTION__, 'OK', array ($added_count, $error_count));
+}
+
+
 $msgcode['updIPv4Allocation']['OK'] = 12;
 $msgcode['updIPv4Allocation']['ERR'] = 100;
 function updIPv4Allocation ()
index 9be576b..e23ea36 100644 (file)
@@ -398,7 +398,9 @@ INSERT INTO `Config` (varname, varvalue, vartype, emptyok, is_hidden, is_userdef
 ('DEFAULT_VDOM_ID','','uint','yes','no','yes','Default VLAN domain ID'),
 ('DEFAULT_VST_ID','','uint','yes','no','yes','Default VLAN switch template ID'),
 ('DB_VERSION','0.17.10','string','no','yes','no','Database version.'),
-('STATIC_FILTER','yes','string','no','no','yes','Enable Filter Caching');
+('STATIC_FILTER','yes','string','no','no','yes','Enable Filter Caching'),
+('ENABLE_BULKPORT_FORM','yes','string','no','no','yes','Enable "Bulk Port" form'),
+;
 
 INSERT INTO `Script` VALUES ('RackCode','allow {$userid_1}');
 
index 8e3ccc2..a5bb3e0 100644 (file)
@@ -479,6 +479,10 @@ CREATE TABLE `UserConfig` (
                        $query[] = "ALTER TABLE MountOperation ADD KEY (object_id)";
                        $query[] = "INSERT INTO `Config` (varname, varvalue, vartype, emptyok, is_hidden, is_userdefined, description) VALUES ('STATIC_FILTER','yes','string','no','no','yes','Enable Filter Caching');";
                        $query[] = "UPDATE Config SET varvalue = '0.17.10' WHERE varname = 'DB_VERSION'";
+               case '0.17.11':
+                       $query = array_merge ($query, reloadDictionary ($batchid));
+                       $query[] = "INSERT INTO `Config` (varname, varvalue, vartype, emptyok, is_hidden, is_userdefined, description) VALUES ('ENABLE_BULKPORT_FORM','yes','string','no','no','yes','Enable \"Bulk Port\" form');";
+                       $query[] = "UPDATE Config SET varvalue = '0.17.11' WHERE varname = 'DB_VERSION'";
                case '0.18.0':
                        $query = array_merge ($query, reloadDictionary ($batchid));
                        $query[] = "INSERT INTO `Config` (varname, varvalue, vartype, emptyok, is_hidden, description) VALUES ('VLANSWITCH_LISTSRC', '', 'string', 'yes', 'no', 'List of VLAN running switches')";