[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]

[Cluster-devel] conga ./conga.spec.in.in luci/cluster/resource ...



CVSROOT:	/cvs/cluster
Module name:	conga
Branch: 	RHEL5
Changes by:	rmccabe sourceware org	2008-02-07 06:53:23

Modified files:
	.              : conga.spec.in.in 
	luci/cluster   : resource_form_handlers.js 
	                 validate_config_multicast.js 
	luci/homebase  : form-macros validate_cluster_add_initial.js 
	                 validate_user_add.js 
	luci/init.d    : luci 
	luci/plone-custom: conga.js footer luci.css 
	luci/site/luci/Extensions: LuciDB.py LuciValidation.py 
	                           LuciZopeAsync.py homebase_adapters.py 
	luci/site/luci/Extensions/ClusterModel: ClusterNode.py 
	                                        ModelBuilder.py 
	luci/site/luci/var: Data.fs 
	make           : version.in 

Log message:
	backport fixes from HEAD for 431105

Patches:
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/conga.spec.in.in.diff?cvsroot=cluster&only_with_tag=RHEL5&r1=1.45.2.66&r2=1.45.2.67
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/luci/cluster/resource_form_handlers.js.diff?cvsroot=cluster&only_with_tag=RHEL5&r1=1.20.2.13&r2=1.20.2.14
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/luci/cluster/validate_config_multicast.js.diff?cvsroot=cluster&only_with_tag=RHEL5&r1=1.3.2.3&r2=1.3.2.4
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/luci/homebase/form-macros.diff?cvsroot=cluster&only_with_tag=RHEL5&r1=1.44.2.12&r2=1.44.2.13
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/luci/homebase/validate_cluster_add_initial.js.diff?cvsroot=cluster&only_with_tag=RHEL5&r1=1.1.2.2&r2=1.1.2.3
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/luci/homebase/validate_user_add.js.diff?cvsroot=cluster&only_with_tag=RHEL5&r1=1.3.2.2&r2=1.3.2.3
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/luci/init.d/luci.diff?cvsroot=cluster&only_with_tag=RHEL5&r1=1.11.2.3&r2=1.11.2.4
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/luci/plone-custom/conga.js.diff?cvsroot=cluster&only_with_tag=RHEL5&r1=1.3.2.4&r2=1.3.2.5
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/luci/plone-custom/footer.diff?cvsroot=cluster&only_with_tag=RHEL5&r1=1.2.2.3&r2=1.2.2.4
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/luci/plone-custom/luci.css.diff?cvsroot=cluster&only_with_tag=RHEL5&r1=1.4.2.1&r2=1.4.2.2
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/luci/site/luci/Extensions/LuciDB.py.diff?cvsroot=cluster&only_with_tag=RHEL5&r1=1.1.4.7&r2=1.1.4.8
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/luci/site/luci/Extensions/LuciValidation.py.diff?cvsroot=cluster&only_with_tag=RHEL5&r1=1.6.2.1&r2=1.6.2.2
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/luci/site/luci/Extensions/LuciZopeAsync.py.diff?cvsroot=cluster&only_with_tag=RHEL5&r1=1.1.2.3&r2=1.1.2.4
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/luci/site/luci/Extensions/homebase_adapters.py.diff?cvsroot=cluster&only_with_tag=RHEL5&r1=1.34.2.15&r2=1.34.2.16
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/luci/site/luci/Extensions/ClusterModel/ClusterNode.py.diff?cvsroot=cluster&only_with_tag=RHEL5&r1=1.1.4.2&r2=1.1.4.3
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/luci/site/luci/Extensions/ClusterModel/ModelBuilder.py.diff?cvsroot=cluster&only_with_tag=RHEL5&r1=1.1.4.6&r2=1.1.4.7
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/luci/site/luci/var/Data.fs.diff?cvsroot=cluster&only_with_tag=RHEL5&r1=1.15.2.27&r2=1.15.2.28
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/make/version.in.diff?cvsroot=cluster&only_with_tag=RHEL5&r1=1.21.2.31&r2=1.21.2.32

--- conga/conga.spec.in.in	2008/01/29 22:02:12	1.45.2.66
+++ conga/conga.spec.in.in	2008/02/07 06:52:55	1.45.2.67
@@ -292,6 +292,9 @@
 
 ###  changelog ###
 %changelog
+* Wed Feb 06 2008 Ryan McCabe <rmccabe redhat com> 0.12.0-3
+- Fix bz431105 (IP Address Resource configuration: cannot enter fully qualified hostname)
+
 * Mon Jan 28 2008 Ryan McCabe <rmccabe redhat com> 0.12.0-2
 - Fix bz430737 (Conga should install the 'cmirror' package when clustered storage is requested)
 
--- conga/luci/cluster/resource_form_handlers.js	2008/01/23 04:44:30	1.20.2.13
+++ conga/luci/cluster/resource_form_handlers.js	2008/02/07 06:52:55	1.20.2.14
@@ -101,12 +101,13 @@
 	}
 
 	var ipstr =	form.ip_address.value;
-	var err = isValidHost(ipstr);
+	var err = isValidHost(ipstr, true);
 	if (err) {
 		errors.push('Error: \"' + ipstr + '\": ' + err);
 		set_form_err(form.ip_address);
-	} else
+	} else {
 		clr_form_err(form.ip_address);
+	}
 
 	return (errors);
 }
--- conga/luci/cluster/validate_config_multicast.js	2008/01/23 04:44:30	1.3.2.3
+++ conga/luci/cluster/validate_config_multicast.js	2008/02/07 06:52:55	1.3.2.4
@@ -74,9 +74,9 @@
 			errors.push('No multicast address was given.');
 			set_form_err(form.mcast_address);
 		} else {
-			var err = isValidHost(form.mcast_address.value);
+			var err = isValidHost(form.mcast_address.value, true);
 			if (err) {
-				errors.push(err);
+				errors.push('Error: \"' + form.mcast_address.value + '\": ' + err);
 				set_form_err(form.mcast_address);
 			}
 			clr_form_err(form.mcast_address);
--- conga/luci/homebase/form-macros	2008/01/23 04:44:31	1.44.2.12
+++ conga/luci/homebase/form-macros	2008/02/07 06:52:56	1.44.2.13
@@ -219,7 +219,7 @@
 					tal:define="cfname python: here.strFilter('[^0-9A-Za-z_-]', '_', c)"
 					tal:attributes="id python: cfname">
 
-				<input type="checkbox" class="homebase"
+				<input type="checkbox" class="blank"
 					tal:define="global num_clusters python:num_clusters + 1"
 					tal:attributes="
 						checked python:perms[curUser]['cluster'][c] and 'checked' or None;
@@ -235,7 +235,7 @@
 			<h3 class="homebase">Storage Systems</h3>
 
 			<div class="hbcheckdiv" tal:repeat="s python: systems[1]">
-				<input type="checkbox" class="homebase"
+				<input type="checkbox" class="blank"
 					tal:define="global num_systems python:num_systems + 1"
 					tal:attributes="
 						checked python:perms[curUser]['storage'][s] and 'checked' or None;
@@ -243,7 +243,7 @@
 						id python:'__SYSTEM' + str(num_systems);
 						value python:s"
 				/>
-				<span class="hbText" tal:omit-tag="" tal:content="python:s"/>
+				<span class="hbText" tal:content="python:s"/>
 			</div>
 		</tal:block>
 
--- conga/luci/homebase/validate_cluster_add_initial.js	2008/01/23 04:44:31	1.1.2.2
+++ conga/luci/homebase/validate_cluster_add_initial.js	2008/02/07 06:52:56	1.1.2.3
@@ -32,7 +32,9 @@
 
 	if (form.pagetype.value == 7) {
 		if (confirm('Retrieve cluster information from ' + added_storage[0] + '?')) {
-			get_cluster_members();
+			form.pagetype.value = 1000;
+			get_cluster_members(form);
+			form.pagetype.value = 7;
 		}
 	} else if (form.pagetype.value == 6) {
 		if (confirm('Add this cluster?')) {
@@ -62,7 +64,7 @@
 	return false;
 }
 
-function get_cluster_members() {
+function get_cluster_members(form) {
 	var url = '/luci/cluster?pagetype=1000';
 	var node_num = 0;
 
@@ -73,9 +75,9 @@
 	}
 
 	if (!node_num) {
-		alert('No node names were entered');
+		alert('No node hostname was entered');
 	} else {
-		initiate_async_get(url, cluster_member_callback);
+		initiate_async_post(form, url, cluster_member_callback);
 	}
 }
 
--- conga/luci/homebase/validate_user_add.js	2008/01/23 04:44:31	1.3.2.2
+++ conga/luci/homebase/validate_user_add.js	2008/02/07 06:52:56	1.3.2.3
@@ -34,8 +34,8 @@
 		if (str_is_blank(form.newPassword.value)) {
 			errors.push('Passwords may not be blank.');
 			set_form_err(form.newPassword);
-		} else if (form.newPassword.value.length < 5) {
-			errors.push('Passwords must be at least five characters long.');
+		} else if (form.newPassword.value.length < 6) {
+			errors.push('Passwords must be at least six characters long.');
 			set_form_err(form.newPassword);
 		}
 
--- conga/luci/init.d/luci	2008/01/23 04:44:31	1.11.2.3
+++ conga/luci/init.d/luci	2008/02/07 06:52:56	1.11.2.4
@@ -73,12 +73,12 @@
 	old_umask=`umask`
 	umask 077
 
-	rm -f "$HTTPS_PRIVKEY" "$HTTPS_PUBKEY"
+	rm -f -- "$HTTPS_PRIVKEY" "$HTTPS_PUBKEY"
 	/usr/bin/openssl genrsa -out "$HTTPS_PRIVKEY" "$KEY_BITS" >&/dev/null
 	/usr/bin/openssl req -new -x509 -key "$HTTPS_PRIVKEY" -out "$HTTPS_PUBKEY" -days "$KEY_LIFE_DAYS" -config /var/lib/luci/var/certs/cacert.config
-	/bin/chmod 600 "$HTTPS_PRIVKEY"
-	/bin/chmod 644 "$HTTPS_PUBKEY"
-	/bin/chown $LUCI_USER:$LUCI_GROUP "$HTTPS_PRIVKEY" "$HTTPS_PUBKEY"
+	/bin/chmod -- 600 "$HTTPS_PRIVKEY"
+	/bin/chmod -- 644 "$HTTPS_PUBKEY"
+	/bin/chown -- $LUCI_USER:$LUCI_GROUP "$HTTPS_PRIVKEY" "$HTTPS_PUBKEY"
 	ret=$?
 
 	umask $old_umask
@@ -88,7 +88,7 @@
 
 stop_luci()
 {
-	pid_num=`cat $PIDFILE 2>/dev/null`
+	pid_num=`cat -- $PIDFILE 2>/dev/null`
 	ret=$?
 	if [ $ret -eq 0 ]; then
 		kill $pid_num >& /dev/null
@@ -96,7 +96,7 @@
 	fi
 
 	if [ $ret -ne 0 ]; then
-		pkill -u "$LUCI_USER" python >&/dev/null
+		pkill -u "$LUCI_USER" -- python >&/dev/null
 		ret=$?
 	fi
 	return $ret
@@ -104,7 +104,7 @@
 
 stop_stunnel()
 {
-	pid_num=`cat $STUNNEL_PID 2>/dev/null`
+	pid_num=`cat -- $STUNNEL_PID 2>/dev/null`
 	ret=$?
 	if [ $ret -eq 0 ]; then
 		kill $pid_num >& /dev/null
@@ -112,7 +112,7 @@
 	fi
 
 	if [ $ret -ne 0 ]; then
-		pkill -u "$LUCI_USER" stunnel >&/dev/null
+		pkill -u "$LUCI_USER" -- stunnel >&/dev/null
 		ret=$?
 	fi
 	return $ret
@@ -121,11 +121,34 @@
 stop()
 {
 	stop_stunnel
+	max_wait=5
+	cur_wait=0
+	while [ $cur_wait -lt $max_wait ]; do
+		sleep 1
+		cur_wait=`expr $cur_wait + 1`
+		stunnel_running
+		if [ $? -eq 0 ]; then
+			break
+		fi
+	done
+
 	if [ $? -ne 0 ]; then
 		errmsg='Failed to stop stunnel'
 		return 1
 	fi
+
 	stop_luci
+	max_wait=10
+	cur_wait=0
+	while [ $cur_wait -lt $max_wait ]; do
+		sleep 1
+		cur_wait=`expr $cur_wait + 1`
+		luci_running
+		if [ $? -eq 0 ]; then
+			break
+		fi
+	done
+
 	if [ $? -ne 0 ]; then
 		errmsg='Failed to stop luci'
 		return 1
@@ -145,43 +168,83 @@
 	fi
 
 	sh $LUCID >&/dev/null &
-	sleep 4
+
+	cur_wait=0
+	max_wait=10
+	luci_running
+	ret=$?
+	while [ $ret -ne 1 ] && [ $cur_wait -lt $max_wait ]; do
+		sleep 1
+		cur_wait=`expr $cur_wait + 1`
+		luci_running
+		ret=$?
+	done
+
+	if [ $ret -ne 1 ]; then
+		errmsg='An error occurred while starting luci'
+		stop_luci
+		return 1
+	fi
 
 	sed -e s,\\\(^accept.*=\ \\\)\\\(.*\\\),\\\1$LUCI_HTTPS_PORT, $STUNNEL_CONF | $STUNNEL_D -fd 0
 	if [ $? -ne 0 ]; then
 		errmsg='An error occurred while starting stunnel'
-		stop_luci
+		stop_luci >& /dev/null
+		return 1
+	fi
+
+	max_wait=5
+	cur_wait=0
+	stunnel_running
+	ret=$?
+	while [ $ret -ne 2 ] && [ $cur_wait -lt $max_wait ]; do
+		sleep 1
+		cur_wait=`expr $cur_wait + 1`
+		stunnel_running
+		ret=$?
+	done
+
+	if [ $ret -ne 2 ]; then
+		errmsg='An error occurred while starting stunnel'
+		stop_luci >& /dev/null
+		stop_stunnel >& /dev/null 
 		return 1
 	fi
+
 	return 0
 }
 
 luci_running()
 {
 	LUCI_UP=1
-	pgrep -u "$LUCI_USER" python >&/dev/null
-	if [ $? -ne 0 ]; then
+
+	test -f "$PIDFILE"
+	LUCI_PID_EXISTS=$?
+	if [ "$LUCI_PID_EXISTS" -eq 0 ]; then
+		pgrep -u "$LUCI_USER" -- python >&/dev/null
+		if [ $? -ne 0 ]; then
+			LUCI_UP=0
+			# remove stale pidfile
+			rm -f -- "$PIDFILE" >& /dev/null
+		fi
+	else
 		LUCI_UP=0
 	fi
 
-	if [ -f "$PIDFILE" ] && [ $LUCI_UP -eq 0 ]; then
-		# stale pidfile
-		rm -f "$PIDFILE" >& /dev/null
-	fi
 	return $LUCI_UP
 }
 
 stunnel_running()
 {
 	ST_UP=2
-	pgrep -u "$LUCI_USER" stunnel >&/dev/null
+	pgrep -u "$LUCI_USER" -- stunnel >&/dev/null
 	if [ $? -ne 0 ]; then
 		ST_UP=0
 	fi
 
 	if [ -f "$STUNNEL_PID" ] && [ $ST_UP -eq 0 ]; then
 		# stale pidfile
-		rm -f "$STUNNEL_PID"
+		rm -f -- "$STUNNEL_PID"
 	fi
 	return $ST_UP
 }
@@ -227,7 +290,7 @@
 			echo "The admin user password must be set before the luci can start"
 			echo "To set it, execute (as root): "
 			echo -e "\tluci_admin password\n"
-			/usr/bin/logger -t "$ID" "Luci startup failed: admin password not set (execute 'luci_admin password')"
+			/usr/bin/logger -t "$ID" -- "Luci startup failed: admin password not set (execute 'luci_admin password')"
 			exit 6
 		fi
 
@@ -243,24 +306,24 @@
 			exit 0
 		elif [ $ret -gt 2 ]; then
 			# one of the two processes was running and couldn't be stopped.
-			/usr/bin/logger -t "$ID" "Luci startup failed: $errmsg"
+			/usr/bin/logger -t "$ID" -- "Luci startup failed: $errmsg"
 			exit 1
 		fi
 
 		system_running
 		if [ $? -eq 1 ]; then
 			echo_success
-			cat "$PIDFILE" > "$GLOB_PIDFILE"
-			touch "$GLOB_LOCKFILE"
-			/usr/bin/logger -t "$ID" "Luci startup succeeded"
-			/usr/bin/logger -t "$ID" "Listening on port $LUCI_HTTPS_PORT; accessible via URL $LUCI_URL"
+			cat -- "$PIDFILE" > "$GLOB_PIDFILE"
+			touch -- "$GLOB_LOCKFILE"
+			/usr/bin/logger -t "$ID" -- "Luci startup succeeded"
+			/usr/bin/logger -t "$ID" -- "Listening on port $LUCI_HTTPS_PORT; accessible via URL $LUCI_URL"
 			echo; echo
 			echo "Point your web browser to $LUCI_URL to access luci"
 			echo
 			exit 0
 		else
 			echo_failure
-			/usr/bin/logger -t "$ID" "Luci startup failed $errmsg"
+			/usr/bin/logger -t "$ID" -- "Luci startup failed $errmsg"
 			echo
 			exit 1
 		fi
@@ -269,7 +332,7 @@
 	restart)
 		$0 stop
 		rtrn=$?
-		if [ $rtrn -eq 0 ] || [ $rtrn -eq 7 ]; then
+		if [ $rtrn -eq 0 ];  then
 			$0 start
 			rtrn=$?
 		fi
@@ -302,16 +365,16 @@
 		if [ $rtrn -eq 1 ]; then
 			stop
 			if [ $? -eq 0 ]; then
-				rm -f "$GLOB_PIDFILE"
-				rm -f "$GLOB_LOCKFILE"
-				/usr/bin/logger -t "$ID" "Luci shutdown succeeded"
+				rm -f -- "$GLOB_PIDFILE"
+				rm -f -- "$GLOB_LOCKFILE"
+				/usr/bin/logger -t "$ID" -- "Luci shutdown succeeded"
 				rtrn=0
 			else
-				/usr/bin/logger -t "$ID" "Luci shutdown failed"
+				/usr/bin/logger -t "$ID" -- "Luci shutdown failed"
 				rtrn=1
 			fi
 		elif [ $rtrn -eq 0 ]; then
-			rtrn=7
+			rtrn=0
 		else
 			rtrn=1
 		fi
@@ -324,6 +387,10 @@
 		echo
 	;;
 
+	try-restart)
+		rtrn=3
+	;;
+
 	reload)
 		rtrn=3
 	;;
--- conga/luci/plone-custom/conga.js	2008/01/23 04:44:31	1.3.2.4
+++ conga/luci/plone-custom/conga.js	2008/02/07 06:52:56	1.3.2.5
@@ -196,18 +196,22 @@
 	}
 }
 
-function isValidHost(str) {
+function isValidHost(str, iponly) {
 	var i = str.split('.');
 
 	if (i.length === 1) {
-		return ('Hostnames must be fully qualified.');
+		if (iponly) {
+			return ('You must enter an IP address in quad-dot notation.');
+		} else {
+			return ('Hostnames must be fully qualified.');
+		}
 	}
 
-	if (i.length === 4 && !isNaN(parseInt(i[3]))) {
-		var o1 = parseInt(i[0]);
-		var o2 = parseInt(i[1]);
-		var o3 = parseInt(i[2]);
-		var o4 = parseInt(i[3]);
+	if (i.length === 4 && !isNaN(parseInt(i[3], 10))) {
+		var o1 = parseInt(i[0], 10);
+		var o2 = parseInt(i[1], 10);
+		var o3 = parseInt(i[2], 10);
+		var o4 = parseInt(i[3], 10);
 
 		if (isNaN(o1) || isNaN(o2) || isNaN(o3) ||
 			((o1 & 0xff) !== o1) ||
@@ -215,17 +219,21 @@
 			((o3 & 0xff) !== o3) ||
 			((o4 & 0xff) !== o4))
 		{
-			return ('Invalid IP Address.');
+			return ('Invalid IP address.');
 		}
 
 		return (null);
 	}
 
-	if (!isNaN(parseInt(i[i.length - 1]))) {
-		return ('Invalid IP Address.');
+	if (!isNaN(parseInt(i[i.length - 1], 10))) {
+		return ('Invalid IP address.');
+	}
+
+	if (iponly) {
+		return ('You must enter an IP address in quad-dot notation.');
 	}
 
-	if (!str.match(/^[0-9A-Za-z][0-9A-Za-z.-]*$/)) {
+	if (!str.match(/^[0-9A-Za-z][0-9A-Za-z.\-]*$/)) {
 		return ('Hostnames can contain only alphanumeric characters and hyphens.');
 	}
 
--- conga/luci/plone-custom/footer	2008/01/23 04:44:31	1.2.2.3
+++ conga/luci/plone-custom/footer	2008/02/07 06:52:56	1.2.2.4
@@ -10,13 +10,7 @@
 				Conga Cluster and Storage Management System</a>
 		</span>
 		is Copyright
-		<acronym title="Copyright" i18n:name="copyright" i18n:attributes="title title_copyright;">
-			&copy;
-		</acronym>
-		2000&#8212;<span
-			i18n:name="current_year"
-			tal:define="now modules/DateTime/DateTime"
-			tal:content="now/year" />
+		<acronym title="Copyright" i18n:name="copyright" i18n:attributes="title title_copyright;">&copy;</acronym> 2000&#8211;2008
 		<a href="http://www.redhat.com/";>Red Hat, Inc.</a>
 	</span>
 </p>
--- conga/luci/plone-custom/luci.css	2008/01/23 04:44:31	1.4.2.1
+++ conga/luci/plone-custom/luci.css	2008/02/07 06:52:56	1.4.2.2
@@ -32,6 +32,10 @@
 	margin-right: +.3333em;
 }
 
+input.blank {
+	margin: 0px .3333em 0px .3333em ! important;
+}
+
 td.pad_right {
 	padding-right: +.6666em;
 }
--- conga/luci/site/luci/Extensions/LuciDB.py	2008/01/25 17:18:38	1.1.4.7
+++ conga/luci/site/luci/Extensions/LuciDB.py	2008/02/07 06:52:56	1.1.4.8
@@ -384,7 +384,7 @@
 
 	try:
 		newCluster.manage_acquiredPermissions([])
-		newCluster.manage_role('View', ['Access Contents Information', 'View'])
+		newCluster.manage_role('View', ['Access contents information', 'View'])
 	except Exception, e:
 		if LUCI_DEBUG_MODE is True:
 			luci_log.debug_verbose('MC3: %s: %r %s' % (clustername, e, str(e)))
@@ -773,7 +773,7 @@
 
 	try:
 		user = getSecurityManager().getUser()
-		if user.has_permission('View', cluster[1]):
+		if user.has_permission('View', cluster):
 			return True
 	except Exception, e:
 		if LUCI_DEBUG_MODE is True:
@@ -789,28 +789,29 @@
 	return allowed.has_key(hostname)
 
 def getRicciAgent(self, clustername, exclude_names=None, exclude_busy=False):
-	try:
-		perm = cluster_permission_check(self, clustername)
-		if not perm:
-			if LUCI_DEBUG_MODE is True:
-				luci_log.debug_verbose('GRA0: no permission for %s' \
-					% clustername)
-			return None
-	except Exception, e:
-		if LUCI_DEBUG_MODE is True:
-			luci_log.debug_verbose('GRA0: %r %s' % (e, str(e)))
-		return None
-
 	clusterfolder = None
 	try:
 		path = str('%s%s' % (CLUSTER_FOLDER_PATH, clustername))
 		clusterfolder = self.restrictedTraverse(path)
 		if not clusterfolder:
 			if LUCI_DEBUG_MODE is True:
-				luci_log.debug('GRA1: cluster folder %s for %s is missing' \
+				luci_log.debug('GRA0: cluster folder %s for %s is missing' \
 					% (path, clustername))
 			return None
 
+		try:
+			perm = cluster_permission_check(self, clusterfolder)
+			if not perm:
+				if LUCI_DEBUG_MODE is True:
+					luci_log.debug_verbose('GRA1: no permission for %s' \
+						% clustername)
+				return None
+		except Exception, e1:
+			if LUCI_DEBUG_MODE is True:
+				luci_log.debug_verbose('GRA2: %s: %r %s' \
+					% (clustername, e1, str(e1)))
+			return None
+
 		nodes = clusterfolder.objectItems('Folder')
 		if len(nodes) < 1:
 			if LUCI_DEBUG_MODE is True:
--- conga/luci/site/luci/Extensions/LuciValidation.py	2008/01/23 04:44:32	1.6.2.1
+++ conga/luci/site/luci/Extensions/LuciValidation.py	2008/02/07 06:52:56	1.6.2.2
@@ -81,12 +81,12 @@
 
 	levels = node.getFenceLevels()
 	try:
-		method_id = levels[fence_level - 1].getAttribute('name')
+		method_id = levels[min(1, fence_level - 1)].getAttribute('name')
 		if not method_id:
 			raise Exception, 'No method ID'
 		fence_method = Method()
 		fence_method.addAttribute('name', str(method_id))
-		levels[fence_level - 1] = fence_method
+		levels[min(1, fence_level - 1)] = fence_method
 	except Exception, e:
 		method_id = fence_level
 		fence_method = Method()
@@ -102,7 +102,7 @@
 				break
 		if delete_target is not None:
 			try:
-				node.getChildren()[0].removeChild(delete_target)
+				node.getFenceNode().removeChild(delete_target)
 			except Exception, e:
 				if LUCI_DEBUG_MODE is True:
 					luci_log.debug_verbose('vNFC9: %s: %r %s' \
@@ -251,23 +251,17 @@
 				continue
 			fence_method.addChild(retobj)
 
-		if len(node.getChildren()) > 0:
-			# There's already a <fence> block
-			found_target = False
-			for idx in xrange(len(levels)):
-				if levels[idx].getAttribute('name') == method_id:
-					found_target = True
-					break
-
-			if found_target is False:
-				# There's a fence block, but no relevant method
-				# block
-				node.getChildren()[0].addChild(fence_method)
-		else:
-			# There is no <fence> tag under the node yet.
-			fence_node = Fence()
+		fence_node = node.getFenceNode()
+		found_target = False
+		for idx in xrange(len(levels)):
+			if levels[idx].getAttribute('name') == method_id:
+				found_target = True
+				break
+
+		if found_target is False:
+			# There's a fence block, but no relevant method
+			# block
 			fence_node.addChild(fence_method)
-			node.addChild(fence_node)
 
 	if len(errors) > 0:
 		return (False, {'errors': errors })
--- conga/luci/site/luci/Extensions/LuciZopeAsync.py	2008/01/23 04:44:32	1.1.2.3
+++ conga/luci/site/luci/Extensions/LuciZopeAsync.py	2008/02/07 06:52:56	1.1.2.4
@@ -96,13 +96,21 @@
 	from LuciClusterInfo import getClusterConfNodes
 	from RicciQueries import getClusterConf
 
-	fvars = GetReqVars(request, [ 'QUERY_STRING' ])
+	fvars = GetReqVars(request, [ 'QUERY_STRING', '__SYSTEM0' ])
 	if fvars['QUERY_STRING'] is None:
 		if LUCI_DEBUG_MODE is True:
 			luci_log.debug_verbose('GCNA0: No query string was given')
 		write_err_async(request, 'No node names were given')
 		return None
 
+	conf_node_pair = fvars['__SYSTEM0']
+	if conf_node_pair is not None and len(conf_node_pair) == 2:
+		conf_node = conf_node_pair[0]
+		conf_node_passwd = conf_node_pair[1]
+	else:
+		conf_node = None
+		conf_node_passwd = None
+
 	try:
 		nodes = fvars['QUERY_STRING'].split('&')
 		node_list = map(lambda x: x[1], filter(lambda x: x[0][:4] == 'node', map(lambda x: x.split('='), nodes)))
@@ -118,7 +126,15 @@
 	ret = {}
 	for node_host in node_list:
 		try:
-			rc = RicciCommunicator(node_host)
+			if node_host == conf_node:
+				rc = RicciCommunicator(node_host, enforce_trust=False)
+				rc.trust()
+				rc.auth(conf_node_passwd)
+				if not rc.authed():
+					errors.append('Authentication to node %s failed' % conf_node)
+					break
+			else:
+				rc = RicciCommunicator(node_host)
 			cluster_name = rc.cluster_info()[0]
 			if not cluster_name:
 				errors.append('%s is not a member of a cluster' \
--- conga/luci/site/luci/Extensions/homebase_adapters.py	2008/01/23 04:44:32	1.34.2.15
+++ conga/luci/site/luci/Extensions/homebase_adapters.py	2008/02/07 06:52:56	1.34.2.16
@@ -133,6 +133,9 @@
 	passwd = request.form['newPassword']
 	pwconfirm = request.form['newPasswordConfirm']
 
+	if len(passwd) < 6:
+		return (False, { 'errors': [ 'Passwords must be at least six characters long.' ] })
+
 	if passwd != pwconfirm:
 		return (False, { 'errors': [ 'The passwords given do not match' ]})
 
--- conga/luci/site/luci/Extensions/ClusterModel/ClusterNode.py	2008/01/23 04:44:33	1.1.4.2
+++ conga/luci/site/luci/Extensions/ClusterModel/ClusterNode.py	2008/02/07 06:52:56	1.1.4.3
@@ -6,6 +6,7 @@
 # Free Software Foundation.
 
 from TagObject import TagObject
+from Fence import Fence
 
 TAG_NAME = "clusternode"
 
@@ -14,16 +15,21 @@
     TagObject.__init__(self)
     self.TAG_NAME = TAG_NAME
 
+  def getFenceNode(self):
+    ret = None
+    for child in self.getChildren():
+        if child.getTagName() == 'fence':
+            ret = child
+            break
+    if ret is None:
+        ret = Fence()
+        self.addChild(ret)
+    return ret
+
   def getFenceLevels(self):
-    #under this node will be a 'fence' block, then 0 or more 'method'  blocks.
-    #This method returns the set of 'method' objs. 'method' blocks represent
-    #fence levels
-    child = self.getChildren()
-    if len(child) > 0:
-      return child[0].getChildren()
-    else:
-      retval = list()
-      return retval
+    # This method returns the set of 'method' objs. 'method' blocks represent
+    # fence levels
+    return self.getFenceNode().getChildren()
 
   def getMulticastNode(self):
     children = self.getChildren()
--- conga/luci/site/luci/Extensions/ClusterModel/ModelBuilder.py	2008/01/23 04:44:33	1.1.4.6
+++ conga/luci/site/luci/Extensions/ClusterModel/ModelBuilder.py	2008/02/07 06:52:56	1.1.4.7
@@ -981,13 +981,6 @@
       mcast = self.mcast_ptr
 
     mcast.addAttribute('addr', mcast_addr)
-    if mcast_if is not None:
-      mcast.addAttribute('interface', mcast_if)
-    else:
-      try:
-        mcast.removeAttribute('interface')
-      except:
-        pass
     self.mcast_address = mcast_addr
     self.mcast_interface = mcast_if
     self.usesMulticast = True
Binary files /cvs/cluster/conga/luci/site/luci/var/Data.fs	2008/01/25 17:18:38	1.15.2.27 and /cvs/cluster/conga/luci/site/luci/var/Data.fs	2008/02/07 06:52:56	1.15.2.28 differ
rcsdiff: /cvs/cluster/conga/luci/site/luci/var/Data.fs: diff failed
--- conga/make/version.in	2008/01/29 22:02:12	1.21.2.31
+++ conga/make/version.in	2008/02/07 06:53:23	1.21.2.32
@@ -1,2 +1,2 @@
 VERSION=0.12.0
-RELEASE=2
+RELEASE=3


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]