You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@vcl.apache.org by jf...@apache.org on 2014/12/23 18:49:29 UTC

svn commit: r1647627 - in /vcl/trunk/web: .ht-inc/computer.php .ht-inc/utils.php js/resources/computer.js

Author: jfthomps
Date: Tue Dec 23 17:49:28 2014
New Revision: 1647627

URL: http://svn.apache.org/r1647627
Log:
VCL-174 - NAT - support for sites that have small IP address ranges

added code to dynamically manage list of computers that can be selected for use as a nat host in the add/edit dialog

computer.php: modified addEditDialogHTML: changed select for nathostid to specify 'selectonly'

utils.php: modified getComputers: added nathostenabledid to returned data

computer.js: modified saveResourceCB: add/remove computer from nathostid select for add/edit dialog if submitted computer has nathostenabled changed

Modified:
    vcl/trunk/web/.ht-inc/computer.php
    vcl/trunk/web/.ht-inc/utils.php
    vcl/trunk/web/js/resources/computer.js

Modified: vcl/trunk/web/.ht-inc/computer.php
URL: http://svn.apache.org/viewvc/vcl/trunk/web/.ht-inc/computer.php?rev=1647627&r1=1647626&r2=1647627&view=diff
==============================================================================
--- vcl/trunk/web/.ht-inc/computer.php (original)
+++ vcl/trunk/web/.ht-inc/computer.php Tue Dec 23 17:49:28 2014
@@ -694,7 +694,7 @@ class Computer extends Resource {
 		$h .= labeledFormItem('natenabled', 'Connect Using NAT', 'check', '', '', '1', '', '', $extra);
 		# which NAT host
 		$nathosts = getNAThosts(0, 1);
-		$h .= labeledFormItem('nathostid', 'NAT Host', 'select', $nathosts);
+		$h .= labeledFormItem('nathostid', 'NAT Host', 'selectonly', $nathosts);
 		$h .= "</div>\n"; # NAT
 
 		# NAT Host

Modified: vcl/trunk/web/.ht-inc/utils.php
URL: http://svn.apache.org/viewvc/vcl/trunk/web/.ht-inc/utils.php?rev=1647627&r1=1647626&r2=1647627&view=diff
==============================================================================
--- vcl/trunk/web/.ht-inc/utils.php (original)
+++ vcl/trunk/web/.ht-inc/utils.php Tue Dec 23 17:49:28 2014
@@ -8221,7 +8221,8 @@ function getComputers($sort=0, $included
 	       .        "c.predictivemoduleid, "
 	       .        "m.prettyname AS predictivemodule, "
 	       .        "nh.id AS nathostid, "
-	       .        "nh2.publicIPaddress AS natpublicIPaddress, "
+	       .        "nh2.id AS nathostenabledid, "
+	       .        "COALESCE(nh2.publicIPaddress, '') AS natpublicIPaddress, "
 	       .        "COALESCE(nh2.internalIPaddress, '') AS natinternalIPaddress "
 	       . "FROM state st, "
 	       .      "platform p, "
@@ -8263,10 +8264,8 @@ function getComputers($sort=0, $included
 			$row['natenabled'] = 1;
 			$row['nathost'] = $nathosts[$row['nathostid']]['hostname'];
 		}
-		if(is_null($row['natpublicIPaddress'])) {
+		if(is_null($row['nathostenabledid']))
 			$row['nathostenabled'] = 0;
-			$row['natpublicIPaddress'] = '';
-		}
 		else
 			$row['nathostenabled'] = 1;
 		$return[$row['id']] = $row;

Modified: vcl/trunk/web/js/resources/computer.js
URL: http://svn.apache.org/viewvc/vcl/trunk/web/js/resources/computer.js?rev=1647627&r1=1647626&r2=1647627&view=diff
==============================================================================
--- vcl/trunk/web/js/resources/computer.js (original)
+++ vcl/trunk/web/js/resources/computer.js Tue Dec 23 17:49:28 2014
@@ -850,6 +850,8 @@ function saveResourceCB(data, ioArgs) {
 				if(typeof resourcegrid !== 'undefined') {
 					resourcegrid.store.newItem(data.items.data);
 					resourcegrid.sort();
+					if(data.items.data.nathostenabled)
+						dijit.byId('nathostid').addOption({label: data.items.data.hostname, value: data.items.data.nathostenabledid});
 				}
 				dojo.forEach(dijit.findWidgets(dojo.byId('groupdlgcontent')), function(w) {
 					w.destroyRecursive();
@@ -893,6 +895,7 @@ function saveResourceCB(data, ioArgs) {
 			resourcegrid.store.fetch({
 				query: {id: data.items.data.id},
 				onItem: function(item) {
+					var washost = resourcegrid.store.getValue(item, 'nathostenabled');
 					resourcegrid.store.setValue(item, 'name', data.items.data.hostname);
 					resourcegrid.store.setValue(item, 'owner', data.items.data.owner);
 					resourcegrid.store.setValue(item, 'state', data.items.data.state);
@@ -920,6 +923,18 @@ function saveResourceCB(data, ioArgs) {
 					resourcegrid.store.setValue(item, 'nathostenabled', data.items.data.nathostenabled);
 					resourcegrid.store.setValue(item, 'natpublicIPaddress', data.items.data.natpublicIPaddress);
 					resourcegrid.store.setValue(item, 'natinternalIPaddress', data.items.data.natinternalIPaddress);
+					if(data.items.data.nathostenabled) {
+						if(washost == 0)
+							dijit.byId('nathostid').addOption({label: data.items.data.hostname, value: data.items.data.nathostenabledid});
+					}
+					else {
+						dijit.byId('nathostid').options.forEach(
+							function(node, index, nodelist) {
+								if(node.label == data.items.data.hostname)
+									dijit.byId('nathostid').removeOption({value: node.value});
+							}
+						);
+					}
 				},
 				onComplete: function(items, result) {
 					// when call resourcegrid.sort directly, the table contents disappear; not sure why