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 2016/10/21 15:12:06 UTC

svn commit: r1766041 - in /vcl/trunk/web: .ht-inc/addomain.php .ht-inc/privileges.php .ht-inc/utils.php js/resources/addomain.js

Author: jfthomps
Date: Fri Oct 21 15:12:06 2016
New Revision: 1766041

URL: http://svn.apache.org/viewvc?rev=1766041&view=rev
Log:
VCL-277 - Add support for images to join Active Directory domains
VCL-867 - Active Directory Authentication for Windows VM's

addomain.php:
-modified AJsaveResource, AJeditResource, and validateResourceData: commented out code for logindescription
-modified addResource: commented out code for logindescription; modified INSERT query for resource table to have a subselect to get resourcetype.id based on the type name addomain instead of having 19 hard coded
-modified addEditDialogHTML: added helpIcons for several input fields and corresponding tooltips - still need to fill in the content of the tooltips
-removed 2nd definition of checkResourceInUse (I think I had copied it from the image code to modify but then wrote it separately)

privileges.php:
-modified getResourcePrivRowHTML: added addomain exception to not print checkboxes for available and manageMapping
-modified jsonGetResourceGroupMembers: modified if/elseif conditionals that set $field to have an else to handle setting $field to 'name' and removed specific elseif's that set it to 'name'

utils.php:
-modified getResourceGroupMembers: changed hard coded resource type ids to be subselects to get the id based on the resource type name
-modified isAvailable and debugIsAvailable: found 2 locations calling debugIsAvailable with $loc being the same number (19), changed the 2nd one to be 22
-modified getADdomains: commented out code for logindescription

addomain.js:
-modified addNewResource: set password and password2 to be required
-modified inlineEditResourceCB: set password and password2 to not be required; commented out code for logindescription
-modified resetEditResource, saveResource, and saveResourceCB: commented out code for logindescription

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

Modified: vcl/trunk/web/.ht-inc/addomain.php
URL: http://svn.apache.org/viewvc/vcl/trunk/web/.ht-inc/addomain.php?rev=1766041&r1=1766040&r2=1766041&view=diff
==============================================================================
--- vcl/trunk/web/.ht-inc/addomain.php (original)
+++ vcl/trunk/web/.ht-inc/addomain.php Fri Oct 21 15:12:06 2016
@@ -202,10 +202,10 @@ class ADdomain extends Resource {
 			if($data['domaincontrollers'] != $olddata['domaincontrollers'])
 				$updates[] = "domainControllers = '{$data['domaincontrollers']}'";
 			# logindescription
-			if($data['logindescription'] != $olddata['logindescription']) {
+			/*if($data['logindescription'] != $olddata['logindescription']) {
 				$esc_desc = mysql_real_escape_string($data['logindescription']);
 				$updates[] = "logindescription = '$esc_desc'";
-			}
+			}*/
 			if(count($updates)) {
 				$query = "UPDATE addomain SET "
 				       . implode(', ', $updates)
@@ -261,8 +261,8 @@ class ADdomain extends Resource {
 		$args['rscid'] = $rscid;
 		$tmp = $this->getData($args);
 		$data = $tmp[$rscid];
-		$login = preg_replace("/<br>/", "\n", $data['logindescription']);
-		$data['logindescription'] = htmlspecialchars_decode($login);
+		/*$login = preg_replace("/<br>/", "\n", $data['logindescription']);
+		$data['logindescription'] = htmlspecialchars_decode($login);*/
 		$cdata = $this->basecdata;
 		$cdata['rscid'] = $rscid;
 		$cdata['olddata'] = $data;
@@ -298,27 +298,27 @@ class ADdomain extends Resource {
 
 		$ownerid = getUserlistID($data['owner']);
 		$esc_pass = mysql_real_escape_string($data['password']);
-		$esc_desc = mysql_real_escape_string($data['logindescription']);
+		#$esc_desc = mysql_real_escape_string($data['logindescription']);
 	
 		$query = "INSERT INTO addomain"
-				.	"(name,"
-				.	"ownerid,"
-				.	"domainDNSName,"
-				.	"domainNetBIOSName,"
-				.	"username,"
-				.	"password,"
-				.	"dnsServers,"
-				.	"domainControllers,"
-				.	"logindescription)"
-				.	"VALUES ('{$data['name']}',"
-				.	"$ownerid,"
-				.	"'{$data['domaindnsname']}',"
-				.	"'{$data['domainnetbiosname']}',"
-				.	"'{$data['username']}',"
-				.	"'$esc_pass',"
-				.	"'{$data['dnsservers']}',"
-				.	"'{$data['domaincontrollers']}',"
-				.	"'$esc_desc')";
+				.	"(name, "
+				.	"ownerid, "
+				.	"domainDNSName, "
+				.	"domainNetBIOSName, "
+				.	"username, "
+				.	"password, "
+				.	"dnsServers, "
+				#.	"logindescription, "
+				.	"domainControllers) "
+				.	"VALUES ('{$data['name']}', "
+				.	"$ownerid, "
+				.	"'{$data['domaindnsname']}', "
+				.	"'{$data['domainnetbiosname']}', "
+				.	"'{$data['username']}', "
+				.	"'$esc_pass', "
+				.	"'{$data['dnsservers']}', "
+				#.	"'$esc_desc', "
+				.	"'{$data['domaincontrollers']}')";
 		doQuery($query);
 
 		$rscid = dbLastInsertID();
@@ -329,7 +329,7 @@ class ADdomain extends Resource {
 		$query = "INSERT INTO resource "
 				 .        "(resourcetypeid, "
 				 .        "subid) "
-				 . "VALUES (19, "
+				 . "VALUES ((SELECT id FROM resourcetype WHERE name = 'addomain'), "
 				 .        "$rscid)";
 		doQuery($query);
 		return $rscid;
@@ -359,8 +359,6 @@ class ADdomain extends Resource {
 		# id
 		$h .= "<input type=\"hidden\" id=\"editresid\">\n";
 
-		# todo consider adding help icons with popups
-
 		$h .= "<div style=\"text-align: center;\">\n";
 		# name
 		$errmsg = i("Name cannot contain single (') or double (&quot;) quotes, less than (&lt;), or greater than (&gt;) and can be from 2 to 30 characters long");
@@ -377,18 +375,17 @@ class ADdomain extends Resource {
 		$hostbase = '([A-Za-z0-9]{1,63})(\.[A-Za-z0-9-_]+)*(\.?[A-Za-z0-9])';
 		$errmsg = i("Domain DNS Name should be in the format domain.tld and can only contain letters, numbers, dashes(-), periods(.), and underscores(_) (e.g. myuniversity.edu)");
 		$h .= labeledFormItem('domaindnsname', i('Domain DNS Name'), 'text', "^$hostbase$",
-		                      1, '', $errmsg, '', '', '200px'); 
+		                      1, '', $errmsg, '', '', '200px', helpIcon('domaindnsnamehelp')); 
 		# domain netbios name
 		$errmsg = i("Domain NetBIOS Name can only contain letters, numbers, dashes(-), periods(.), and underscores(_) and can be up to 15 characters long");
 		$h .= labeledFormItem('domainnetbiosname', i('Domain NetBIOS Name'), 'text', '^[a-zA-Z0-9_][-a-zA-Z0-9_\.]{0,14}$',
-		                      1, '', $errmsg, '', '', '200px'); 
+		                      1, '', $errmsg, '', '', '200px', helpIcon('domainnetbiosnamehelp')); 
 		$h .= "<br>\n";
 		# username
 		$errmsg = i("Username cannot contain single (') or double (&quot;) quotes, less than (&lt;), or greater than (&gt;) and can be from 2 to 64 characters long");
-		$h .= labeledFormItem('username', i('Username'), 'text', '^([A-Za-z0-9-!@#$%^&\*\(\)_=\+\[\]{}\\\|:;,\./\?~` ]){2,30}$',
-		                      1, '', $errmsg, '', '', '200px'); 
+		$h .= labeledFormItem('username', i('Username'), 'text', '^([A-Za-z0-9-!@#$%^&\*\(\)_=\+\[\]{}\\\|:;,\./\?~` ]){2,64}$',
+		                      1, '', $errmsg, '', '', '200px', helpIcon('usernamehelp')); 
 		# password
-		# todo make required for adding
 		$errmsg = i("Password must be at least 4 characters long");
 		$h .= labeledFormItem('password', i('Password'), 'password', '^.{4,256}$', 0, '', $errmsg, '', '', '200px'); 
 		# confirm password
@@ -399,15 +396,15 @@ class ADdomain extends Resource {
 		$reg = "^($ipreg,)*($ipreg)$";
 		$errmsg = i("Invalid IP address specified - must be a valid IPV4 address");
 		$h .= labeledFormItem('dnsservers', i('DNS Server(s)'), 'text', $reg, 0, '', $errmsg,
-		                      '', '', '300px'); 
+		                      '', '', '300px', helpIcon('dnsservershelp')); 
 		# domain controllers list
 		$reg = "$hostbase(,$hostbase){0,4}";
 		$errmsg = i("Invalid Domain Controller specified. Must be comma delimited list of hostnames or IP addresses, with up to 5 allowed");
 		$h .= labeledFormItem('domaincontrollers', i('Domain Controller(s)'), 'text', $reg, 0, '', $errmsg,
-		                      '', '', '300px'); 
+		                      '', '', '300px', helpIcon('domaincontrollershelp')); 
 		# login description
-		$h .= labeledFormItem('logindescription', i('Login Description'), 'textarea', '',
-		                      1, '', '', '', '', '300px'); 
+		/*$h .= labeledFormItem('logindescription', i('Login Description'), 'textarea', '',
+		                      1, '', '', '', '', '300px', helpIcon('logindescriptionhelp'));*/
 
 		$h .= "</div>\n"; # center
 		$h .= "</div>\n"; # addomaindlgcontent
@@ -446,6 +443,16 @@ class ADdomain extends Resource {
 		$h .= "</div>\n"; # btn div
 		$h .= "</div>\n"; # groupdlg
 
+		$h .= "<div id=\"tooltips\">\n";
+		# todo fill in all help contents
+		$h .= helpTooltip('domaindnsnamehelp', i(""));
+		$h .= helpTooltip('domainnetbiosnamehelp', i(""));
+		$h .= helpTooltip('usernamehelp', i("These credentials will be used to register reserved computers with AD."));
+		$h .= helpTooltip('dnsservershelp', i(""));
+		$h .= helpTooltip('domaincontrollershelp', i(""));
+		#$h .= helpTooltip('logindescriptionhelp', i(""));
+		$h .= "</div>\n"; # tooltips
+
 		return $h;
 	}
 
@@ -482,12 +489,12 @@ class ADdomain extends Resource {
 		$return["password2"] = processInputVar("password2", ARG_STRING);
 		$return["dnsservers"] = processInputVar("dnsservers", ARG_STRING);
 		$return["domaincontrollers"] = processInputVar("domaincontrollers", ARG_STRING);
-		$return["logindescription"] = processInputVar("logindescription", ARG_STRING);
+		/*$return["logindescription"] = processInputVar("logindescription", ARG_STRING);
 
 		$return['logindescription'] = preg_replace("/[\n\s]*$/", '', $return['logindescription']);
 		$return['logindescription'] = preg_replace("/\r/", '', $return['logindescription']);
 		$return['logindescription'] = htmlspecialchars($return['logindescription']);
-		$return['logindescription'] = preg_replace("/\n/", '<br>', $return['logindescription']);
+		$return['logindescription'] = preg_replace("/\n/", '<br>', $return['logindescription']);*/
 
 		if(! preg_match("/^([A-Za-z0-9-!@#$%^&\*\(\)_=\+\[\]{}\\\|:;,\.\/\?~` ]){2,30}$/", $return['name'])) {
 			$return['error'] = 1;
@@ -511,7 +518,7 @@ class ADdomain extends Resource {
 			$errormsg[] = i("Domain NetBIOS Name can only contain letters, numbers, dashes(-), periods(.), and underscores(_) and can be up to 15 characters long");
 		}
 
-		if(! preg_match('/^([A-Za-z0-9-!@#$%^&\*\(\)_=\+\[\]{}\\\|:;,\.\/\?~` ]){2,30}$/', $return['username'])) {
+		if(! preg_match('/^([A-Za-z0-9-!@#$%^&\*\(\)_=\+\[\]{}\\\|:;,\.\/\?~` ]){2,64}$/', $return['username'])) {
 			$return['error'] = 1;
 			$errormsg[] = i("Username cannot contain single (') or double (&quot;) quotes, less than (&lt;), or greater than (&gt;) and can be from 2 to 64 characters long");
 		}
@@ -590,64 +597,6 @@ class ADdomain extends Resource {
 
 		return $msg;
 	}
-
-	/////////////////////////////////////////////////////////////////////////////
-	///
-	/// \fn checkResourceInUse($rscid)
-	///
-	/// \param $rscid - id of resource
-	///
-	/// \return empty string if not being used; string of where resource is
-	/// being used if being used
-	///
-	/// \brief checks to see if resource is being used
-	///
-	/////////////////////////////////////////////////////////////////////////////
-	function checkResourceInUse($rscid) {
-		$msgs = array();
-
-		/*
-		# check reservations
-		$query = "SELECT rq.end "
-		       . "FROM request rq, "
-		       .      "reservation rs "
-		       . "WHERE rs.requestid = rq.id AND "
-		       .       "rs.imageid = $rscid AND "
-		       .       "rq.stateid NOT IN (1, 12) AND "
-		       .       "rq.end > NOW() "
-		       . "ORDER BY rq.end DESC "
-		       . "LIMIT 1";
-		$qh = doQuery($query);
-		if($row = mysql_fetch_assoc($qh))
-			$msgs[] = sprintf(i("There is at least one <strong>reservation</strong> for this image. The latest end time is %s."), prettyDatetime($row['end'], 1));;
-
-		# check blockComputers
-		$query = "SELECT br.name, "
-		       .        "bt.end " 
-		       . "FROM blockRequest br, " 
-		       .      "blockTimes bt, "
-		       .      "blockComputers bc "
-		       . "WHERE bc.imageid = $rscid AND "
-		       .       "bc.blockTimeid = bt.id AND "
-		       .       "bt.blockRequestid = br.id AND "
-		       .       "bt.end > NOW() AND "
-		       .       "bt.skip = 0 AND "
-		       .       "br.status = 'accepted' "
-		       . "ORDER BY bt.end DESC "
-		       . "LIMIT 1";
-		$qh = doQuery($query);
-		if($row = mysql_fetch_assoc($qh))
-			$msgs[] = sprintf(i("There is at least one <strong>Block Allocation</strong> with computers currently allocated with this image. Block Allocation %s has the latest end time which is %s."), $row['name'], prettyDatetime($row['end'], 1));
-
-		if(empty($msgs))
-			return '';
-
-		$msg = i("The selected AD Domain is currently being used in the following ways and cannot be deleted at this time.") . "<br><br>\n";
-		$msg .= implode("<br><br>\n", $msgs) . "<br><br>\n";
-		return $msg;
-		*/
-		return '';
-	}
 }
 
 ?>

Modified: vcl/trunk/web/.ht-inc/privileges.php
URL: http://svn.apache.org/viewvc/vcl/trunk/web/.ht-inc/privileges.php?rev=1766041&r1=1766040&r2=1766041&view=diff
==============================================================================
--- vcl/trunk/web/.ht-inc/privileges.php (original)
+++ vcl/trunk/web/.ht-inc/privileges.php Fri Oct 21 15:12:06 2016
@@ -2285,9 +2285,11 @@ function getResourcePrivRowHTML($privnam
 			$text .= "<TD><img src=images/blank.gif></TD>\n";
 		}
 		// if group type is schedule, don't print available or manageMapping checkboxes
+		// if group type is addomain, don't print available or manageMapping checkboxes
 		// if group type is managementnode, don't print available checkbox
 		// if group type is serverprofile, don't print manageMapping checkbox
 		elseif(($grptype == 'schedule' && ($type == 'available' || $type == 'manageMapping')) ||
+		      ($grptype == 'addomain' && ($type == 'available' || $type == 'manageMapping')) ||
 		      ($grptype == 'managementnode' && $type == 'available') ||
 		      ($grptype == 'serverprofile' && $type == 'manageMapping')) {
 			$text .= "<TD><img src=images/blank.gif></TD>\n";
@@ -2335,9 +2337,7 @@ function jsonGetResourceGroupMembers() {
 			$field = 'hostname';
 		elseif($type == 'image')
 			$field = 'prettyname';
-		elseif($type == 'schedule')
-			$field = 'name';
-		elseif($type == 'serverprofile')
+		else
 			$field = 'name';
 		$query = "SELECT t.$field AS item "
 		       . "FROM $type t, "

Modified: vcl/trunk/web/.ht-inc/utils.php
URL: http://svn.apache.org/viewvc/vcl/trunk/web/.ht-inc/utils.php?rev=1766041&r1=1766040&r2=1766041&view=diff
==============================================================================
--- vcl/trunk/web/.ht-inc/utils.php (original)
+++ vcl/trunk/web/.ht-inc/utils.php Fri Oct 21 15:12:06 2016
@@ -2985,31 +2985,31 @@ function getResourceGroupMembers($type="
 
 	if($type == "computer") {
 		$names = "c.hostname AS computer, c.deleted ";
-		$joins = "LEFT JOIN computer c ON (r.subid = c.id AND r.resourcetypeid = 12) ";
+		$joins = "LEFT JOIN computer c ON (r.subid = c.id AND r.resourcetypeid = (SELECT id FROM resourcetype WHERE name = 'computer')) ";
 		$orders = "c.hostname";
 		$types = "'computer'";
 	}
 	elseif($type == "image") {
 		$names = "i.prettyname AS image, i.deleted ";
-		$joins = "LEFT JOIN image i ON (r.subid = i.id AND r.resourcetypeid = 13) ";
+		$joins = "LEFT JOIN image i ON (r.subid = i.id AND r.resourcetypeid = (SELECT id FROM resourcetype WHERE name = 'image')) ";
 		$orders = "i.prettyname";
 		$types = "'image'";
 	}
 	elseif($type == "schedule") {
 		$names = "s.name AS schedule ";
-		$joins = "LEFT JOIN schedule s ON (r.subid = s.id AND r.resourcetypeid = 15) ";
+		$joins = "LEFT JOIN schedule s ON (r.subid = s.id AND r.resourcetypeid = (SELECT id FROM resourcetype WHERE name = 'schedule')) ";
 		$orders = "s.name";
 		$types = "'schedule'";
 	}
 	elseif($type == "managementnode") {
 		$names = "m.hostname AS managementnode ";
-		$joins = "LEFT JOIN managementnode m ON (r.subid = m.id AND r.resourcetypeid = 16) ";
+		$joins = "LEFT JOIN managementnode m ON (r.subid = m.id AND r.resourcetypeid = (SELECT id FROM resourcetype WHERE name = 'managementnode')) ";
 		$orders = "m.hostname";
 		$types = "'managementnode'";
 	}
 	elseif($type == "addomain") {
 		$names = "ad.name AS addomain ";
-		$joins = "LEFT JOIN addomain ad ON (r.subid = ad.id AND r.resourcetypeid = 19) ";
+		$joins = "LEFT JOIN addomain ad ON (r.subid = ad.id AND r.resourcetypeid = (SELECT id FROM resourcetype WHERE name = 'addomain')) ";
 		$orders = "ad.name";
 		$types = "'addomain'";
 	}
@@ -3021,11 +3021,11 @@ function getResourceGroupMembers($type="
 		       . "s.name AS schedule, "
 		       . "m.hostname AS managementnode, "
 		       . "ad.name AS addomain ";
-		$joins = "LEFT JOIN computer c ON (r.subid = c.id AND r.resourcetypeid = 12) "
-		       . "LEFT JOIN image i ON (r.subid = i.id AND r.resourcetypeid = 13) "
-		       . "LEFT JOIN schedule s ON (r.subid = s.id AND r.resourcetypeid = 15) "
-		       . "LEFT JOIN managementnode m ON (r.subid = m.id AND r.resourcetypeid = 16) "
-		       . "LEFT JOIN addomain ad ON (r.subid = ad.id AND r.resourcetypeid = 19) ";
+		$joins = "LEFT JOIN computer c ON (r.subid = c.id AND r.resourcetypeid = (SELECT id FROM resourcetype WHERE name = 'computer')) "
+		       . "LEFT JOIN image i ON (r.subid = i.id AND r.resourcetypeid = (SELECT id FROM resourcetype WHERE name = 'image')) "
+		       . "LEFT JOIN schedule s ON (r.subid = s.id AND r.resourcetypeid = (SELECT id FROM resourcetype WHERE name = 'schedule')) "
+		       . "LEFT JOIN managementnode m ON (r.subid = m.id AND r.resourcetypeid = (SELECT id FROM resourcetype WHERE name = 'managementnode')) "
+		       . "LEFT JOIN addomain ad ON (r.subid = ad.id AND r.resourcetypeid = (SELECT id FROM resourcetype WHERE name = 'addomain')) ";
 		$orders = "c.hostname, "
 		        . "i.prettyname, "
 		        . "s.name, "
@@ -4475,7 +4475,7 @@ function isAvailable($images, $imageid,
 			$cnt = mysql_num_rows($qh);
 			if($cnt > 1) {
 				if($now)
-					return debugIsAvailable(-4, 19, $start, $end, $imagerevisionid, $computerids, $currentids, $blockids, array(), $virtual);
+					return debugIsAvailable(-4, 22, $start, $end, $imagerevisionid, $computerids, $currentids, $blockids, array(), $virtual);
 				$requestInfo['ipwarning'] = 1;
 			}
 			elseif($cnt == 1) {
@@ -4625,7 +4625,7 @@ function debugIsAvailable($rc, $loc, $st
 		case "18":
 			$msg = "requested IP address in use by another computer";
 			break;
-		case "19":
+		case "22":
 			$msg = "at least 2 computers have the requested IP address assigned to them";
 			break;
 		case "11":
@@ -8861,8 +8861,8 @@ function getADdomains($addomainid=0) {
 	       .        "ad.domainNetBIOSName AS domainnetbiosname, "
 	       .        "ad.username, "
 	       .        "ad.dnsServers AS dnsservers, "
-	       .        "ad.domainControllers AS domaincontrollers, "
-	       .        "ad.logindescription "
+	       #.        "ad.logindescription, "
+	       .        "ad.domainControllers AS domaincontrollers "
 	       . "FROM addomain ad, "
 	       .      "affiliation a, "
 	       .      "user u, "

Modified: vcl/trunk/web/js/resources/addomain.js
URL: http://svn.apache.org/viewvc/vcl/trunk/web/js/resources/addomain.js?rev=1766041&r1=1766040&r2=1766041&view=diff
==============================================================================
--- vcl/trunk/web/js/resources/addomain.js (original)
+++ vcl/trunk/web/js/resources/addomain.js Fri Oct 21 15:12:06 2016
@@ -37,6 +37,8 @@ function addNewResource(title) {
 	dijit.byId('addeditbtn').set('label', title);
 	dojo.byId('editresid').value = 0;
 	resetEditResource();
+	dijit.byId('password').set('required', true);
+	dijit.byId('password2').set('required', true);
 	dijit.byId('addeditdlg').show();
 }
 
@@ -54,7 +56,10 @@ function inlineEditResourceCB(data, ioAr
 		dijit.byId('username').set('value', data.items.data.username);
 		dijit.byId('dnsservers').set('value', data.items.data.dnsservers);
 		dijit.byId('domaincontrollers').set('value', data.items.data.domaincontrollers);
-		dijit.byId('logindescription').set('value', data.items.data.logindescription);
+		//dijit.byId('logindescription').set('value', data.items.data.logindescription);
+
+		dijit.byId('password').set('required', false);
+		dijit.byId('password2').set('required', false);
 
 		dojo.byId('addeditdlgerrmsg').innerHTML = '';
 		dijit.byId('addeditdlg').show();
@@ -65,7 +70,7 @@ function inlineEditResourceCB(data, ioAr
 }
 
 function resetEditResource() {
-	var fields = ['name', 'owner', 'domaindnsname', 'domainnetbiosname', 'username', 'password', 'password2', 'dnsservers', 'domaincontrollers', 'logindescription'];
+	var fields = ['name', 'owner', 'domaindnsname', 'domainnetbiosname', 'username', 'password', 'password2', 'dnsservers', 'domaincontrollers'/*, 'logindescription'*/];
 	for(var i = 0; i < fields.length; i++) {
 		dijit.byId(fields[i]).reset();
 	}
@@ -74,7 +79,7 @@ function resetEditResource() {
 
 function saveResource() {
 	var errobj = dojo.byId('addeditdlgerrmsg');
-	var fields = ['name', 'owner', 'domaindnsname', 'domainnetbiosname', 'username', 'password', 'password2', 'dnsservers', 'domaincontrollers', 'logindescription'];
+	var fields = ['name', 'owner', 'domaindnsname', 'domainnetbiosname', 'username', 'password', 'password2', 'dnsservers', 'domaincontrollers'/*, 'logindescription'*/];
 
 	if(dojo.byId('editresid').value == 0)
 		var data = {continuation: dojo.byId('addresourcecont').value};
@@ -126,7 +131,7 @@ function saveResourceCB(data, ioArgs) {
 			resourcegrid.store.fetch({
 				query: {id: data.items.data.id},
 				onItem: function(item) {
-					var fields = ['name', 'owner', 'domaindnsname', 'domainnetbiosname', 'username','dnsservers', 'domaincontrollers', 'logindescription'];
+					var fields = ['name', 'owner', 'domaindnsname', 'domainnetbiosname', 'username','dnsservers', 'domaincontrollers'/*, 'logindescription'*/];
 					for(var i = 0; i < fields.length; i++) {
 						dijit.byId(fields[i]).reset();
 						resourcegrid.store.setValue(item, fields[i], data.items.data[fields[i]]);