r1605 + split IPv4 space and IPv4 SLB into 2 distinct pages
authorDenis Ovsienko <infrastation@yandex.ru>
Mon, 28 Jan 2008 22:45:16 +0000 (22:45 +0000)
committerDenis Ovsienko <infrastation@yandex.ru>
Mon, 28 Jan 2008 22:45:16 +0000 (22:45 +0000)
+ move help content to wiki and hide help page completely

inc/help.php
inc/interface.php
inc/navigation.php
pix/slb.png [new file with mode: 0644]

index ac64b698aeeba277ad804b5b667cb080881e52a6..73ef1fbef1f60dad01f337b0f26d43139ed086b2 100644 (file)
@@ -31,207 +31,11 @@ function renderHelpTab ($tabno)
 {
        switch ($tabno)
        {
-//------------------------------------------------------------------------
-               case 'default':
-                       startPortlet ('Hello there!');
-                       echo '
-This is the help system of a working RackTables installation. Select one of the
-tabs above to find information on specific topics. If you are new to this
-software, just follow to the next tab.
-';
-                       finishPortlet();
-                       break;
-//------------------------------------------------------------------------
-               case 'quickstart':
-                       startPortlet ('The 1st rack');
-                       echo
-'
-<div class=helptext>
-The datacenter world is built up from resources. The first resource to start
-with is rackspace, which in turn is built up from racks. To create your first
-rack, open Configuration->Dictionary page and go to "Edit words" tab.
-<p>
-Here you see a bunch of portlets, each holding some odd data. The one you need
-right now is called "RackRow (3)". The only thing you need to do now is to think
-about the name you want to assign to the first group of your racks and to type
-it into the form and press OK. This can be changed later, so a simple "server
-room" is Ok.
-<p>
-Now get back to the main page and head into Rackspace page. You will see you
-rack row with zero racks. Click it and go to "Add new rack" tab. This is the
-moment where you create the rack itself, supplying its name and height. The rack
-is empty.
-</div>
-';
-                       finishPortlet();
-                       startPortlet ('The 1st object');
-                       echo
-'
-<div class=helptext>
-To populate the rack, you need some stuff called objects. Let\'s assume you
-have a server.
-</div>
-';
-                       finishPortlet();
-                       break;
-//------------------------------------------------------------------------
-               case 'rackspace':
-                       startPortlet ('Rack design');
-                       echo
-                               '<div class=helptext>' .
-                               "Rack design defines the physical layout of a rack cabinet. " .
-                               "Most common reason to use the tab is absence of back rails, although " .
-                               "any other design can be defined.<p>" .
-                               "In this tab you can change mounting atoms' state between 'free' and 'absent'.<br>" .
-                               "A selected checkbox means atom presence." .
-                               '</div>';
-                       finishPortlet();
-                       startPortlet ('Rackspace problems');
-                       echo
-                               '<div class=helptext>' .
-                               "Rack problems prevent free rackspace from being used for mounting. Such rackspace is considered " .
-                               "unusable. After the problem is gone, the atom can become free again. " .
-                               "In this tab you can change atoms' state from free to unusable and back.<br>" .
-                               "A selected checkbox means a problem." .
-                               '</div>';
-                       finishPortlet();
-                       break;
-//------------------------------------------------------------------------
-               case 'nets':
-                       startPortlet ('IP Range');
-                       echo
-                               '<div class=helptext>' .
-                               "This tab manages IPv4 resources. All IPv4 addresses are grouped to subnets. Subnets are flat and don't make a hierarchy. " .
-                               "In other words, the whole IPv4 range you have can be divided into subnets. " .
-                               "Every IPv4 address there must belong to one and only one subnetwork." .
-                               '</div>';
-                       finishPortlet();
-                       startPortlet ('IP Address');
-                       echo 
-                               '<div class=helptext>' .
-                               "Every IP address can be either bound to an interface or free. On the other hand, it can " .
-                               "be either reserved or not. That makes 4 possible states: bound - reserved, bound - unreserved, free - reserved ".
-                               "free - unreserved. The first state is considered as \"conflicting\" and will be shown red-highlited. ".
-                               "An IP address may have a \"Name\" assigned to it, which is intended to be used as a short comment. ".
-                               "An example would be \"The default GW\" or \"Reserved for field engineer\" ".
-                               "Binding an address to an interface is called \"allocation\". The interface is a rack object plus an interface name. " .
-                               "The interface name can be the same as a physical port label on that box or something else. " .
-                               "If you are binding it to a linux box with 2 physical ports, you might want to name interfaces as " .
-                               "eth0, eth1, eth0:4, eth1.110, etc, whereas your physical port names will be eth1 and eth2 " .
-                               "The difference between ports and interfaces is that say a switch may have 24 ports and only 1 interface, ".
-                               "which is accessable from any of those ports. Generally, one IP address can be bound only to one interface, ".
-                               "otherwise it's considered as a \"collision\". However, there are exceptions and a tool to mark ".
-                               "those exceptions. There is a \"bond type\" or \"interface type\", which can be either \"Regular\" ".
-                               "or \"Shared\" or \"Virtual\". Shared means that 2 or more peers share the same IP address ".
-                               "like it's done in VRRP or HSRP. Usually, there is only one box possessing it at a time ".
-                               "but when it dies, another one will have it. Shared bonds will not conflict with each other, ".
-                               "but will conflict with regular bindings of the same IP address. Virtual interface is ".
-                               "an assignment that usually don't broadcast itself through the network, but will allow ".
-                               "the OS to accept packets with that IP address sent to the box. This is widely used ".
-                               "in loadbalancing technics where loadbalancers simply do ARP proxy; they rewrite L2 address ".
-                               "in L2 frames with target's address and resend them back to the network. Virtual interfaces ".
-                               "do not conflict with any other interface types. Note: do not use virtual interfaces if ".
-                               "your loadbalancer uses NAT. There is a NAT tab for that instead." .
-                               '</div>';
-                       finishPortlet();
-                       startPortlet ('NATv4');
-                       echo
-                               '<div class=helptext>' .
-                               "Boxes can translate their own L4 addresses to other L4 addresses on other boxes. This is called ".
-                               "NAT. In protocol selection box you can choose 2 protocols so far, UDP and TCP. Source is one of ".
-                               "IP addresses assigned to the box and after a colon is a box for numerical port. As a target you ".
-                               "have to choose a target IP address and port it will be translated to. Add a decription if you like. ".
-                               "After submitting the form you will find that if there was an object assined to the target IP address ".
-                               "it will be shown as well. A single source IP address/port can be assigned to multiple target IP ".
-                               "addresses/ports. That will represent an L4 loadbalancing. And vice versa, multiple sources can be ".
-                               "translated to one target" .
-                               '</div>';
-                       finishPortlet();
-                       break;
-//------------------------------------------------------------------------
-               case 'ports':
-                       startPortlet ('Ports');
-                       echo
-                               '<div class=helptext>' .
-                               "A port or physical interface is a small thingy on your box you can connect a cable to. ".
-                               "So far this software can only handle network ports. No power outlets yet. Each port can ".
-                               "have a local name, that is how this port is visible from the OS point of view. For linux box ".
-                               "that will be eth0, eth1, etc. Visible lable is what is written on the port on the box ".
-                               "Depending on the manufacturer you may observe labels as \"1\", \"2\", etc or something else. ".
-                               "Port type is an essential property that allows port connections to be properly arranged. ".
-                               "It lets you know that you won't be able to connect optical and copper ports together with one cable. ".
-                               "Some ports have an L2 address. It's helpful to populate those, as you may find it handy to ".
-                               "find ports by L2 addresses while investigating your STP tree. Now you can link or reserve ports ".
-                               "Reserving a port is simply adding a comment to it, thus preventing it to be linked. ".
-                               "A good reservation can be \"Reserved for a field engineer laptop\". Linking ports is creating ".
-                               "a connection between them. That is plugging a cable to them. Only ports with compatible ".
-                               "types can be linked. Say, RJ-45/100-Base TX can be linked to RJ-45/1000-Base TX, but can't ".
-                               "be linked to LC/100-BASE FX. In many cases you'll need to add a bunch of ports from a switch. ".
-                               "In this case there is a text area and a format selector. Just choose your device and format, ".
-                               "paste the output to the textarea and click \"Parse output\" button. Also, you need to ".
-                               "choose which port type is to be used, since it's not possible to guess that from the output." .
-                               '</div>';
-                       finishPortlet();
-                       break;
-//------------------------------------------------------------------------
-               case 'workflow':
-                       startPortlet ('People');
-                       echo
-'
-<div class=helptext>
-<ul>
-       <li>Datacenter engineers</li>
-       <li>System administrators</li>
-       <li>Network administrators</li>
-       <li>Helpdesk</li>
-</ul>
-</div>
-';
-                       finishPortlet();
-                       startPortlet ('Common tasks');
-                       echo
-'
-<div class=helptext>
-<ul>
-       <li>Resource allocation</li>
-       <li>Search</li>
-       <li>Changes tracking</li>
-</ul>
-</div>
-';
-                       finishPortlet();
-                       startPortlet ('Effective collaboration and best practices');
-                       echo
-'
-<div class=helptext>
-BCP go here.
-</div>
-';
-                       finishPortlet();
-                       break;
-//------------------------------------------------------------------------
-               case 'objects':
-                       startPortlet ('Object life cycle');
-                       echo
-'
-<div class=helptext>
-<ul>
-       <li>Creation</li>
-       <li>Resource allocation</li>
-       <li>Possible changes</li>
-       <li>Retiring</li>
-</ul>
-</div>
-';
-                       finishPortlet();
-                       break;
-//------------------------------------------------------------------------
                default:
                        startPortlet ('Oops!');
                        echo __FUNCTION__ . ": There was no help text found for help tab '${tabno}'";
                        finishPortlet();
                        break;
-//------------------------------------------------------------------------
        }
 }
 
index ee8c2c05016eeccd09b88921d41a8e7459a2bd04..dadc18f4477bdfde2c35a994548bcd19d3798121 100644 (file)
@@ -45,8 +45,8 @@ function renderIndex ()
                                                <?php printImageHREF ('reports'); ?></a></h1>
                                        </td>
                                        <td>
-                                               <h1><a href='<?php echo $root; ?>?page=help'>Help<br>
-                                               <?php printImageHREF ('help'); ?></a></h1>
+                                               <h1><a href='<?php echo $root; ?>?page=ipv4slb'>IPv4 SLB<br>
+                                               <?php printImageHREF ('ipv4slb'); ?></a></h1>
                                        </td>
                                </tr>
                        </table>
@@ -1651,7 +1651,6 @@ function renderRackspaceHistory ()
 function renderAddressspace ()
 {
        global $root, $page;
-       echo '<table border=0 class=objectview cellspacing=0 cellpadding=0><tr><td class=pcleft>';
 
        startPortlet ('Subnets');
        echo "<table class='widetable' border=0 cellpadding=10 cellspacing=0 align='center'>\n";
@@ -1669,8 +1668,11 @@ function renderAddressspace ()
        }
        echo "</table>\n";
        finishPortlet();
+}
 
-       echo "</td>\n<td class=pcright>";
+function renderIPv4SLB ()
+{
+       global $root, $page;
 
        startPortlet ('SLB configuration');
        echo "<table border=0 width='100%'><tr>";
@@ -1729,8 +1731,6 @@ function renderAddressspace ()
                echo "</table>\n";
        }
        finishPortlet ();
-
-       echo '</td></tr></table>';
 }
 
 function renderAddNewRange ()
@@ -2945,6 +2945,9 @@ function printImageHREF ($tag, $title = '', $do_input = FALSE, $tabindex = 0)
        $image['ipv4space']['path'] = 'pix/addressspace.png';
        $image['ipv4space']['width'] = 218;
        $image['ipv4space']['height'] = 200;
+       $image['ipv4slb']['path'] = 'pix/slb.png';
+       $image['ipv4slb']['width'] = 218;
+       $image['ipv4slb']['height'] = 200;
        $image['config']['path'] = 'pix/configuration.png';
        $image['config']['width'] = 218;
        $image['config']['height'] = 200;
index 903525728718b7e4d0995e752f7a1147236272f2..ac05116a509084ae5d54a0f22e2eca935c4b33fa 100644 (file)
@@ -55,8 +55,6 @@ $tabhandler['rack']['default'] = 'renderRackPage';
 $tabhandler['rack']['edit'] = 'renderEditRackForm';
 $tabhandler['rack']['design'] = 'renderRackDesign';
 $tabhandler['rack']['problems'] = 'renderRackProblems';
-$helptab['rack']['design'] = 'rackspace';
-$helptab['rack']['problems'] = 'rackspace';
 
 $page['objgroup']['title_handler'] = 'dynamic_title_objgroup';
 $page['objgroup']['handler'] = 'handler_objgroup';
@@ -85,10 +83,6 @@ $tabhandler['object']['portfwrd'] = 'renderIPAddressPortForwarding';
 $tabhandler['object']['switchvlans'] = 'renderVLANMembership';
 $tabhandler['object']['snmpportfinder'] = 'renderSNMPPortFinder';
 $tabhandler['object']['lvsconfig'] = 'renderLVSConfig';
-$helptab['object']['network'] = 'nets';
-$helptab['object']['ports'] = 'ports';
-$helptab['object']['portfwrd'] = 'nets';
-$helptab['object']['rackspace'] = 'rackspace';
 $trigger['object']['network'] = 'trigger_ipv4';
 $trigger['object']['portfwrd'] = 'trigger_natv4';
 $trigger['object']['switchvlans'] = 'trigger_switchvlans';
@@ -114,8 +108,6 @@ $page['ipv4space']['title'] = 'IPv4 space';
 $page['ipv4space']['parent'] = 'index';
 $tab['ipv4space']['default'] = 'Browse';
 $tab['ipv4space']['newrange'] = 'Subnets';
-$helptab['ipv4space']['default'] = 'nets';
-$helptab['ipv4space']['newrange'] = 'nets';
 $tabhandler['ipv4space']['default'] = 'renderAddressspace';
 $tabhandler['ipv4space']['newrange'] = 'renderAddNewRange';
 $ophandler['ipv4space']['newrange']['addRange'] = 'addNewrange';
@@ -126,8 +118,6 @@ $page['iprange']['parent'] = 'ipv4space';
 $page['iprange']['bypass'] = 'id';
 $tab['iprange']['default'] = 'Browse';
 $tab['iprange']['properties'] = 'Properties';
-$helptab['iprange']['default'] = 'nets';
-$helptab['iprange']['properties'] = 'nets';
 $tabhandler['iprange']['default'] = 'renderIPRange';
 $tabhandler['iprange']['properties'] = 'renderIPRangeProperties';
 $ophandler['iprange']['properties']['editRange'] = 'editRange';
@@ -138,9 +128,6 @@ $page['ipaddress']['bypass'] = 'ip';
 $tab['ipaddress']['default'] = 'Browse';
 $tab['ipaddress']['properties'] = 'Properties';
 $tab['ipaddress']['assignment'] = 'Allocation';
-$helptab['ipaddress']['default'] = 'nets';
-$helptab['ipaddress']['properties'] = 'nets';
-$helptab['ipaddress']['assignment'] = 'nets';
 $tabhandler['ipaddress']['default'] = 'renderIPAddress';
 $tabhandler['ipaddress']['properties'] = 'renderIPAddressProperties';
 $tabhandler['ipaddress']['assignment'] = 'renderIPAddressAssignment';
@@ -149,8 +136,12 @@ $ophandler['ipaddress']['assignment']['delIpAssignment'] = 'delIpAssignment';
 $ophandler['ipaddress']['assignment']['editBondForAddress'] = 'editIpAssignment';
 $ophandler['ipaddress']['assignment']['bindObjectToIp'] = 'addIpAssignment';
 
+$page['ipv4slb']['title'] = 'IPv4 SLB';
+$page['ipv4slb']['parent'] = 'index';
+$page['ipv4slb']['handler'] = 'renderIPv4SLB';
+
 $page['vservices']['title'] = 'Virtual services';
-$page['vservices']['parent'] = 'ipv4space';
+$page['vservices']['parent'] = 'ipv4slb';
 $tab['vservices']['default'] = 'View';
 $tab['vservices']['edit'] = 'Edit';
 $tabhandler['vservices']['default'] = 'renderVSList';
@@ -166,7 +157,7 @@ $page['vservice']['bypass_type'] = 'uint';
 $page['vservice']['handler'] = 'renderVirtualService';
 
 $page['rspools']['title'] = 'RS pools';
-$page['rspools']['parent'] = 'ipv4space';
+$page['rspools']['parent'] = 'ipv4slb';
 $tab['rspools']['default'] = 'View';
 $tab['rspools']['edit'] = 'Edit';
 $tabhandler['rspools']['default'] = 'renderRSPoolList';
@@ -197,11 +188,11 @@ $ophandler['rspool']['editlblist']['updLB'] = 'updateLoadBalancer';
 $ophandler['rspool']['rsinservice']['upd'] = 'updateRSInService';
 
 $page['rservers']['title'] = 'Real servers';
-$page['rservers']['parent'] = 'ipv4space';
+$page['rservers']['parent'] = 'ipv4slb';
 $page['rservers']['handler'] = 'renderRealServerList';
 
 $page['lbs']['title'] = 'Load balancers';
-$page['lbs']['parent'] = 'ipv4space';
+$page['lbs']['parent'] = 'ipv4slb';
 $page['lbs']['handler'] = 'renderLBList';
 
 $page['search']['title_handler'] = 'dynamic_title_search';
@@ -288,16 +279,6 @@ $tabhandler['reports']['default'] = 'renderReportSummary';
 $page['help']['title'] = 'Help';
 $page['help']['handler'] = 'renderHelpTab';
 $page['help']['parent'] = 'index';
-$tab['help']['default'] = 'Welcome';
-$tab['help']['quickstart'] = 'Quick start';
-$tab['help']['workflow'] = 'Workflow';
-$tab['help']['rackspace'] = 'Rackspace';
-$tab['help']['objects'] = 'Objects';
-$tab['help']['nets'] = 'Networking';
-$tab['help']['auth'] = '[ User accounts & permissions ]';
-$tab['help']['dict'] = '[ Dictionary ]';
-$tab['help']['ports'] = 'Ports and links';
-$tab['help']['hacking'] = '[ Hacker\'s guide ]';
 
 // This function returns array if page numbers leading to the target page
 // plus page number of target page itself. The first element is the target
diff --git a/pix/slb.png b/pix/slb.png
new file mode 100644 (file)
index 0000000..1184e27
Binary files /dev/null and b/pix/slb.png differ