Revert "- rebase against master branch"
authorDenis Ovsienko <infrastation@yandex.ru>
Mon, 18 Nov 2013 12:33:27 +0000 (16:33 +0400)
committerDenis Ovsienko <infrastation@yandex.ru>
Mon, 18 Nov 2013 12:33:27 +0000 (16:33 +0400)
This reverts commit 6a40d076dea1442abe4f32bd48b9534e2029e7b0.

Conflicts:
ChangeLog
wwwroot/inc/upgrade.php

ChangeLog
README
README.patchpanel [new file with mode: 0644]
wwwroot/inc/popup.php
wwwroot/inc/upgrade.php

index 7dbb38add550f7a8a23ccf5c1bf9cd76a3f8eeca..bc4e3bfb0daf4a998f2ca64018d7e7d0f6b3b36a 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -40,7 +40,6 @@
        update: add resource pool info to the Virtual Resources cluster portlet (#915)
        update: remove the 'unmounted' autotag from objects inside a container (#1061)
        update: virtual objects may use 'asset tag' and 'visible label' attributes (#1069)
-       new feature: port tracing (#333)
        new feature: bulk selection and deslection of object rackspace checkboxes by Matthew Kelch
 0.20.5 2013-06-23
        bugfix: 500 server error if protocol was not specified in
diff --git a/README b/README
index f26555c8aeca2fcdbac0797d36c2207e0a3d2181..781f8c099e56576957420867ccdca5ca1ede4637 100644 (file)
--- a/README
+++ b/README
@@ -99,14 +99,14 @@ and initialize the application.
 *                                                     *
 *******************************************************
 
-*** Upgrading to 0.20.6 ***
+*** Upgrading to 0.21.0 ***
 
 This release uses database triggers for consistency measures.  The database
 user account must have the 'TRIGGER' privilege, which was introduced in
 MySQL 5.1.7.
 
 Cable paths can be traced and displayed in a graphical format. This requires
-the Image_GraphViz PEAR module (http://pear.php.net/package/Image_GraphViz).
+the Image_GraphViz  PEAR module (http://pear.php.net/package/Image_GraphViz).
 
 New MGMT_PROTOS configuration option replaces the TELNET_OBJS_LISTSRC,
 SSH_OBJS_LISTSRC and RDP_OBJS_LISTSRC options (converting existing settings as
diff --git a/README.patchpanel b/README.patchpanel
new file mode 100644 (file)
index 0000000..4fc51fc
--- /dev/null
@@ -0,0 +1,70 @@
+OVERVIEW
+The patchpanel branch was created by adoom42. It adds support for linking ports 
+multiple times and tracing cable paths.  Several people have created patches 
+for this already.  I haven't seen one which handles all potential use cases.  
+
+Generally speaking, a port is linked to one other port, but there are 
+exceptions.
+1.  Patch panels.  The front of the port is linked to an object's port.  The 
+back of the port is usually linked to the back of a port on another patch panel.
+2.  "Y" power cables and other splitters.  Example: the male end connects to an 
+outlet, and each female end connects to an object's power supply.  The cable 
+has a varying number of female ends (my personal favorite is the 'octo-cable').
+3.  Multi-point wireless links.  Although less common in data centers, they are
+used in areas such as college campuses.  An access point is mounted in a central
+location and multiple buildings have client units, with multiple clients 
+associating to the same AP.
+
+CHANGELOG
+The installer & upgrader check for the GraphViz PEAR module.  A non-blocking 
+warning is displayed if it is not found.
+
+The port linker pop-up includes a checkbox which allows already-linked ports to 
+be linked again.
+
+Triggers are used to prevent duplicate links.  They ensure that the value of 
+portb is always greater than porta, which forces the UNIQUE KEY (porta,portb) 
+to take effect.  They also ensure that porta is compatible with portb.
+
+The (porta,portb) primary key was removed from the Link table.  An 
+auto-increment id column was added to uniquely identify links.  This results in
+less PHP code.  For example, assume that rows exist where porta > portb 
+(they were entered manually before the triggers were installed).  In that case,
+all update and delete operations would need to identify a specific row using 
+something like ((porta = X AND portb = Y) OR (porta = Y AND portb = X)).  Now 
+such operations can identify the row using a single id.
+
+Triggers are used to maintain integrity of the PortCompat table.  Without them,
+you would be able to add a compatibility rule, link ports using that rule, then
+delete the rule without warning.  The ports would still be linked, even though
+they are now incompatible.  The trigger checks for the existence of such links
+before allowing rules to be updated or deleted.  MySQL doesn't support trigger
+exceptions, so I used a workaround to display a more meaningful error message:
+UPDATE `Cannot update: rule still used` SET x = 1.
+
+
+HELP/FEEDBACK REQUESTED
+fetchPortList() has been modified to include all links as a nested array.  The
+SQL query works but is not optimal.  Performance tips would be appreciated.
+
+A new pop-up provides the ability to link two patch panels.  The link is only
+displayed for objects of the type "PatchPanel".  The list includes all patch
+panels with the same number of ports.  It doesn't check for port compatibility.
+When the form is submitted, the handler function adds a link for each port.
+The handler function does check for port compatibility.  If any port is
+incompatible, the entire linking operation is rolled back.  Ideally, the pop-up
+would only list panels which are fully compatible.  SQL help in this area would
+also be appreciated.  It should be possible using a single query, but I'm not
+sure how to do it.
+
+A common usage scenario involves connecting an object's port to patch panel A,
+which is connected to patch panel B, which is then connected to another
+object's port.  When the patch panel A's ports are linked to patch panel B's,
+the ports will be excluded from the 'Link this port' pop-up unless you check
+the 'Include linked ports' box.  Patch panel ports which are linked less than
+twice should be included without having to check the 'Include linked ports'
+box.  I'm not sure how to deal with this efficiently.
+
+MISC. NOTES
+This branch should only be tested in a development environment.  It sets the
+RackTables version to 0.21.0 which will break any future upgrades to 0.20.x.
\ No newline at end of file
index 1b20ae30bf38c0d87ba0e605432b572728b901d2..333d82db980242917f5435902c42bc95a3e42315 100644 (file)
@@ -632,7 +632,7 @@ function renderPopupTraceRoute ()
                if (!array_key_exists ($object_id, $objects))
                {
                        $objects[$object_id] = $port_details['object_name'];
-                       $graph->addCluster("${object_id}Cluster", $port_details['object_name'], array ('URL' => "index.php?module=popup&helper=traceroute&object_id=${object_id}"));
+                       $graph->addCluster("${object_id}Cluster", $port_details['object_name'], array ('URL' => "index.php?page=object&object_id=${object_id}"));
                }
        }
 
@@ -640,7 +640,7 @@ function renderPopupTraceRoute ()
        foreach ($port_data as $port_id => $port_details)
        {
                $object_id = $port_details['object_id'];
-               $graph->addNode("${port_id}Node", array ('fontsize' => 8, 'label' => $port_details['port_name'], 'tooltip' => $port_details['port_name'], 'URL' => "index.php?module=popup&helper=traceroute&port=${port_id}"), "${object_id}Cluster");
+               $graph->addNode("${port_id}Node", array ('fontsize' => 8, 'label' => $port_details['port_name'], 'tooltip' => $port_details['port_name']), "${object_id}Cluster");
        }
 
        // identify the links
index 2097f3758dba0a826426c1546956c51523bae7ec..2dd28b06b0427c8b4c3b2b08311ac19bc8534e9b 100644 (file)
@@ -183,13 +183,6 @@ ENDOFTEXT
 ,
 
        '0.20.6' => <<<ENDOFTEXT
-This release uses database triggers for consistency measures.  The database
-user account must have the 'TRIGGER' privilege, which was introduced in
-MySQL 5.1.7.
-
-Cable paths can be traced and displayed in a graphical format. This requires
-the Image_GraphViz PEAR module (http://pear.php.net/package/Image_GraphViz).
-
 New MGMT_PROTOS configuration option replaces the TELNET_OBJS_LISTSRC,
 SSH_OBJS_LISTSRC and RDP_OBJS_LISTSRC options (converting existing settings as
 necessary). MGMT_PROTOS allows to specify any management protocol for a
@@ -240,7 +233,7 @@ function getDBUpgradePath ($v1, $v2)
                '0.20.3',
                '0.20.4',
                '0.20.5',
-               '0.20.6',
+               '0.21.0',
        );
        if (!in_array ($v1, $versionhistory) or !in_array ($v2, $versionhistory))
                return NULL;
@@ -1352,7 +1345,7 @@ CREATE TABLE `VSEnabledPorts` (
                        $query[] = "ALTER TABLE `UserConfig` DROP FOREIGN KEY `UserConfig-FK-user`";
                        $query[] = "UPDATE Config SET varvalue = '0.20.5' WHERE varname = 'DB_VERSION'";
                        break;
-               case '0.20.6':
+               case '0.21.0':
                        if (!isInnoDBSupported ())
                        {
                                showUpgradeError ("Cannot upgrade because triggers are not supported by your MySQL server.", __FUNCTION__);
@@ -1438,7 +1431,7 @@ END;
 
                        $query[] = "ALTER TABLE `VSEnabledIPs` ADD CONSTRAINT `VSEnabledIPs-FK-object_id` FOREIGN KEY (`object_id`) REFERENCES `Object` (`id`) ON DELETE CASCADE";
 
-                       $query[] = "UPDATE Config SET varvalue = '0.20.6' WHERE varname = 'DB_VERSION'";
+                       $query[] = "UPDATE Config SET varvalue = '0.21.0' WHERE varname = 'DB_VERSION'";
                        break;
                case 'dictionary':
                        $query = reloadDictionary();