All of lore.kernel.org
 help / color / mirror / Atom feed
From: rmccabe@sourceware.org <rmccabe@sourceware.org>
To: cluster-devel.redhat.com
Subject: [Cluster-devel] conga ./conga.spec.in.in luci/cluster/resource ...
Date: 7 Feb 2008 06:53:28 -0000	[thread overview]
Message-ID: <20080207065328.7693.qmail@sourceware.org> (raw)

CVSROOT:	/cvs/cluster
Module name:	conga
Branch: 	RHEL5
Changes by:	rmccabe at 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@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@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



             reply	other threads:[~2008-02-07  6:53 UTC|newest]

Thread overview: 7+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2008-02-07  6:53 rmccabe [this message]
  -- strict thread matches above, loose matches on Subject: below --
2008-05-12 17:37 [Cluster-devel] conga ./conga.spec.in.in luci/cluster/resource rmccabe
2008-04-18  4:19 rmccabe
2008-04-18  4:15 rmccabe
2007-11-06 23:05 rmccabe
2007-10-09 20:24 rmccabe
2007-09-20 21:03 rmccabe

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20080207065328.7693.qmail@sourceware.org \
    --to=rmccabe@sourceware.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.