cluster-devel.redhat.com archive mirror
 help / color / mirror / Atom feed
From: rmccabe@sourceware.org <rmccabe@sourceware.org>
To: cluster-devel.redhat.com
Subject: [Cluster-devel] conga/luci cluster/form-macros site/luci/Exten ...
Date: 15 Feb 2007 22:44:03 -0000	[thread overview]
Message-ID: <20070215224403.12145.qmail@sourceware.org> (raw)

CVSROOT:	/cvs/cluster
Module name:	conga
Changes by:	rmccabe at sourceware.org	2007-02-15 22:44:03

Modified files:
	luci/cluster   : form-macros 
	luci/site/luci/Extensions: ModelBuilder.py cluster_adapters.py 

Log message:
	Support modifying cluster totem parameters

Patches:
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/luci/cluster/form-macros.diff?cvsroot=cluster&r1=1.188&r2=1.189
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/luci/site/luci/Extensions/ModelBuilder.py.diff?cvsroot=cluster&r1=1.23&r2=1.24
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/luci/site/luci/Extensions/cluster_adapters.py.diff?cvsroot=cluster&r1=1.238&r2=1.239

--- conga/luci/cluster/form-macros	2007/02/14 15:04:34	1.188
+++ conga/luci/cluster/form-macros	2007/02/15 22:44:02	1.189
@@ -755,6 +755,16 @@
 
 						<tr class="systemsTable">
 							<td class="systemsTable">
+								<a class="cluster_help" href="javascript:popup_window('/luci/doc/config_rhel5#send_join', 55, 65);">Maximum time to wait before sending a join message</a> (ms)
+							</td>
+							<td class="systemsTable">
+								<input type="text" size="10" name="send_join"
+									tal:attributes="value string:0" />
+							</td>
+						</tr>
+
+						<tr class="systemsTable">
+							<td class="systemsTable">
 								<a class="cluster_help" href="javascript:popup_window('/luci/doc/config_rhel5#consensus', 55, 65);">Consensus Timeout</a> (ms)
 							</td>
 							<td class="systemsTable">
--- conga/luci/site/luci/Extensions/ModelBuilder.py	2007/02/15 18:55:34	1.23
+++ conga/luci/site/luci/Extensions/ModelBuilder.py	2007/02/15 22:44:02	1.24
@@ -813,6 +813,12 @@
   def getGULMPtr(self):
     return self.GULM_ptr
 
+  def getCMANPtr(self):
+    return self.CMAN_ptr
+
+  def getTotemPtr(self):
+    return self.TOTEM_ptr
+
   def getLockServer(self, name):
     children = self.GULM_ptr.getChildren()
     for child in children:
--- conga/luci/site/luci/Extensions/cluster_adapters.py	2007/02/13 19:50:58	1.238
+++ conga/luci/site/luci/Extensions/cluster_adapters.py	2007/02/15 22:44:02	1.239
@@ -34,6 +34,7 @@
 from clusterOS import resolveOSType
 from Fence import Fence
 from Method import Method
+from Totem import Totem
 from Device import Device
 from FenceHandler import validateNewFenceDevice, FENCE_OPTS, validateFenceDevice, validate_fenceinstance
 from GeneralError import GeneralError
@@ -1183,6 +1184,376 @@
 			luci_log.debug_verbose('unable to update general properties: %s' % str(e))
 			errors.append('Unable to update the cluster configuration.')
 
+	try:
+		cluster_version = form['cluster_version'].strip()
+		if cluster_version != 'rhel5':
+			raise Exception, 'not rhel5'
+	except:
+		if len(errors) > 0:
+			return (False, {'errors': errors})
+		return (True, {})
+
+	totem = model.getTotemPtr()
+	if totem is None:
+		cp = model.getClusterPtr()
+		totem = Totem()
+		cp.addChild(totem)
+
+	if form.has_key('secauth'):
+		totem.addAttribute('secauth', '1')
+	else:
+		totem.addAttribute('secauth', '0')
+
+	try:
+		rrp_mode = form['rrp_mode'].strip().lower()
+		if not rrp_mode:
+			raise KeyError, 'rrp_mode'
+		if rrp_mode != 'none' and rrp_mode != 'active' and 'rrp_mode' != 'passive':
+			raise Exception, '%s is an invalid value for redundant ring protocol mode' % rrp_mode
+		totem.addAttribute('rrp_mode', str(rrp_mode))
+	except KeyError, e:
+		try:
+			totem.removeAttribute('rrp_mode')
+		except:
+			pass
+	except Exception, e:
+		errors.append(str(e))
+
+	try:
+		net_mtu = form['net_mtu'].strip()
+		if not net_mtu:
+			raise KeyError, 'net_mtu'
+		net_mtu = int(net_mtu)
+		if net_mtu < 1:
+			raise ValueError, '%d is an invalid value for network MTU' % net_mtu
+		totem.addAttribute('net_mtu', str(net_mtu))
+	except KeyError, e:
+		try:
+			totem.removeAttribute('net_mtu')
+		except:
+			pass
+	except Exception, e:
+		errors.append(str(e))
+
+	try:
+		threads = form['threads'].strip()
+		if not threads:
+			raise KeyError, 'threads'
+		threads = int(threads)
+		if threads < 0:
+			raise ValueError, '%d is an invalid value for number of threads' % threads
+		totem.addAttribute('threads', str(threads))
+	except KeyError, e:
+		try:
+			totem.removeAttribute('threads')
+		except:
+			pass
+	except Exception, e:
+		errors.append(str(e))
+
+	try:
+		vsftype = form['vsftype'].strip().lower()
+		if not vsftype:
+			raise KeyError, 'vsftype'
+		if vsftype != 'none' and vsftype != 'ykd':
+			raise ValueError, '%s is an invalid value for virtual synchrony type' % vsftype
+		totem.addAttribute('vsftype', str(vsftype))
+	except KeyError, e:
+		try:
+			totem.removeAttribute('vsftype')
+		except:
+			pass
+	except Exception, e:
+		errors.append(str(e))
+
+	try:
+		token = form['token'].strip()
+		if not token:
+			raise KeyError, 'token'
+		token = int(token)
+		if token < 1:
+			raise ValueError, '%d is an invalid value for token timeout' % token
+		totem.addAttribute('token', str(token))
+	except KeyError, e:
+		try:
+			totem.removeAttribute('token')
+		except:
+			pass
+	except Exception, e:
+		errors.append(str(e))
+
+	try:
+		token_retransmit = form['token_retransmit'].strip()
+		if not token_retransmit:
+			raise KeyError, 'token_retransmit'
+		token_retransmit = int(token_retransmit)
+		if token_retransmit < 1:
+			raise ValueError, '%d is an invalid value for token retransmit' % token_retransmit
+		totem.addAttribute('token_retransmit', str(token_retransmit))
+	except KeyError, e:
+		try:
+			totem.removeAttribute('token_retransmit')
+		except:
+			pass
+	except Exception, e:
+		errors.append(str(e))
+
+	try:
+		hold = form['hold'].strip()
+		if not hold:
+			raise KeyError, 'hold'
+		hold = int(hold)
+		if hold < 1:
+			raise ValueError, '%d is not a valid value for hold token timeout' % hold
+		totem.addAttribute('hold', str(hold))
+	except KeyError, e:
+		try:
+			totem.removeAttribute('hold')
+		except:
+			pass
+	except Exception, e:
+		errors.append(str(e))
+
+	try:
+		retransmits_before_loss = form['retransmits_before_loss'].strip()
+		if not retransmits_before_loss:
+			raise KeyError, 'retransmits_before_loss'
+		retransmits_before_loss = int(retransmits_before_loss)
+		if retransmits_before_loss < 1:
+			raise ValueError, '%d is an invalid value for number of retransmits before loss' % retransmits_before_loss
+		totem.addAttribute('retransmits_before_loss', str(retransmits_before_loss))
+	except KeyError, e:
+		try:
+			totem.removeAttribute('retransmits_before_loss')
+		except:
+			pass
+	except Exception, e:
+		errors.append(str(e))
+
+	try:
+		join = form['join'].strip()
+		if not join:
+			raise KeyError, 'join'
+		join = int(join)
+		if join < 1:
+			raise ValueError, '%d is an invalid value for join timeout' % join
+		totem.addAttribute('join', str(join))
+	except KeyError, e:
+		try:
+			totem.removeAttribute('join')
+		except:
+			pass
+	except Exception, e:
+		errors.append(str(e))
+
+	try:
+		send_join = form['send_join'].strip()
+		if not send_join:
+			raise KeyError, 'send_join'
+		send_join = int(send_join)
+		if send_join < 0:
+			raise ValueError, '%d is an invalid value for time to wait before sending a join message' % send_join
+		totem.addAttribute('send_join', str(send_join))
+	except KeyError, e:
+		try:
+			totem.removeAttribute('send_join')
+		except:
+			pass
+	except Exception, e:
+		errors.append(str(e))
+
+	try:
+		consensus = form['consensus'].strip()
+		if not consensus:
+			raise KeyError, 'consensus'
+		consensus = int(consensus)
+		if consensus < 1:
+			raise ValueError, '%d is an invalid value for consensus timeout' % consensus
+		totem.addAttribute('consensus', str(consensus))
+	except KeyError, e:
+		try:
+			totem.removeAttribute('consensus')
+		except:
+			pass
+	except Exception, e:
+		errors.append(str(e))
+
+	try:
+		merge = form['merge'].strip()
+		if not merge:
+			raise KeyError, 'merge'
+		merge = int(merge)
+		if merge < 1:
+			raise ValueError, '%d is an invalid value for merge detection timeout' % merge
+		totem.addAttribute('merge', str(merge))
+	except KeyError, e:
+		try:
+			totem.removeAttribute('merge')
+		except:
+			pass
+	except Exception, e:
+		errors.append(str(e))
+
+	try:
+		downcheck = form['downcheck'].strip()
+		if not downcheck:
+			raise KeyError, 'downcheck'
+		downcheck = int(downcheck)
+		if downcheck < 1:
+			raise ValueError, '%d is an invalid value for interface down check timeout' % downcheck
+		totem.addAttribute('downcheck', str(downcheck))
+	except KeyError, e:
+		try:
+			totem.removeAttribute('downcheck')
+		except:
+			pass
+	except Exception, e:
+		errors.append(str(e))
+
+	try:
+		fail_to_recv_const = form['fail_to_recv_const'].strip()
+		if not fail_to_recv_const:
+			raise KeyError, 'fail_to_recv_const'
+		fail_to_recv_const = int(fail_to_recv_const)
+		if fail_to_recv_const < 1:
+			raise ValueError, '%d is an invalid value for fail to receive constant' % fail_to_recv_const
+		totem.addAttribute('fail_to_recv_const', str(fail_to_recv_const))
+	except KeyError, e:
+		try:
+			totem.removeAttribute('fail_to_recv_const')
+		except:
+			pass
+	except Exception, e:
+		errors.append(str(e))
+
+	try:
+		seqno_unchanged_const = form['seqno_unchanged_const'].strip()
+		if not seqno_unchanged_const:
+			raise KeyError, 'seqno_unchanged_const'
+		seqno_unchanged_const = int(seqno_unchanged_const)
+		if seqno_unchanged_const < 1:
+			raise ValueError, '%d is an invalid value for rotations with no multicast traffic before merge detection timeout started' % seqno_unchanged_const
+		totem.addAttribute('seqno_unchanged_const', str(seqno_unchanged_const))
+	except KeyError, e:
+		try:
+			totem.removeAttribute('seqno_unchanged_const')
+		except:
+			pass
+	except Exception, e:
+		errors.append(str(e))
+
+	try:
+		heartbeat_failures_allowed = form['heartbeat_failures_allowed'].strip()
+		if not heartbeat_failures_allowed:
+			raise KeyError, 'heartbeat_failures_allowed'
+		heartbeat_failures_allowed = int(heartbeat_failures_allowed)
+		if heartbeat_failures_allowed < 0:
+			raise ValueError, '%d is an invalid value for number of heartbeat failures allowed' % heartbeat_failures_allowed
+		totem.addAttribute('heartbeat_failures_allowed', str(heartbeat_failures_allowed))
+	except KeyError, e:
+		try:
+			totem.removeAttribute('heartbeat_failures_allowed')
+		except:
+			pass
+	except Exception, e:
+		errors.append(str(e))
+
+	try:
+		max_network_delay = form['max_network_delay'].strip()
+		if not max_network_delay:
+			raise KeyError, 'max_network_delay'
+		max_network_delay = int(max_network_delay)
+		if max_network_delay < 1:
+			raise ValueError, '%d is an invalid value for maximum network delay' % max_network_delay
+		totem.addAttribute('max_network_delay', str(max_network_delay))
+	except KeyError, e:
+		try:
+			totem.removeAttribute('max_network_delay')
+		except:
+			pass
+	except Exception, e:
+		errors.append(str(e))
+
+	try:
+		window_size = form['window_size'].strip()
+		if not window_size:
+			raise KeyError, 'window_size'
+		window_size = int(window_size)
+		if window_size < 1:
+			raise ValueError, '%d is an invalid value for window size' % window_size
+		totem.addAttribute('window_size', str(window_size))
+	except KeyError, e:
+		try:
+			totem.removeAttribute('window_size')
+		except:
+			pass
+	except Exception, e:
+		errors.append(str(e))
+
+	try:
+		max_messages = form['max_messages'].strip()
+		if not max_messages:
+			raise KeyError, 'max_messages'
+		max_messages = int(max_messages)
+		if max_messages < 1:
+			raise ValueError, '%d is an invalid value for maximum messages' % max_messages
+		totem.addAttribute('max_messages', str(max_messages))
+	except KeyError, e:
+		try:
+			totem.removeAttribute('max_messages')
+		except:
+			pass
+	except Exception, e:
+		errors.append(str(e))
+
+	try:
+		rrp_problem_count_timeout = form['rrp_problem_count_timeout'].strip()
+		if not rrp_problem_count_timeout:
+			raise KeyError, 'rrp_problem_count_timeout'
+		rrp_problem_count_timeout = int(rrp_problem_count_timeout)
+		if rrp_problem_count_timeout < 1:
+			raise ValueError, '%d is an invalid value for RRP problem count timeout' % rrp_problem_count_timeout
+		totem.addAttribute('rrp_problem_count_timeout', str(rrp_problem_count_timeout))
+	except KeyError, e:
+		try:
+			totem.removeAttribute('rrp_problem_count_timeout')
+		except:
+			pass
+	except Exception, e:
+		errors.append(str(e))
+
+	try:
+		rrp_problem_count_threshold = form['rrp_problem_count_threshold'].strip()
+		if not rrp_problem_count_threshold:
+			raise KeyError, 'rrp_problem_count_threshold'
+		rrp_problem_count_threshold = int(rrp_problem_count_threshold)
+		if rrp_problem_count_threshold < 1:
+			raise ValueError, '%d is an invalid value for RRP problem count threshold' % rrp_problem_count_threshold
+		totem.addAttribute('rrp_problem_count_threshold', str(rrp_problem_count_threshold))
+	except KeyError, e:
+		try:
+			totem.removeAttribute('rrp_problem_count_threshold')
+		except:
+			pass
+	except Exception, e:
+		errors.append(str(e))
+
+	try:
+		rrp_token_expired_timeout = form['rrp_token_expired_timeout'].strip()
+		if not rrp_token_expired_timeout:
+			raise KeyError, 'rrp_token_expired_timeout'
+		rrp_token_expired_timeout = int(rrp_token_expired_timeout)
+		if rrp_token_expired_timeout < 1:
+			raise ValueError, '%d is an invalid value for RRP token expired timeout' % rrp_token_expired_timeout
+		totem.addAttribute('rrp_token_expired_timeout', str(rrp_token_expired_timeout))
+	except KeyError, e:
+		try:
+			totem.removeAttribute('rrp_token_expired_timeout')
+		except:
+			pass
+	except Exception, e:
+		errors.append(str(e))
+
 	if len(errors) > 0:
 		return (False, {'errors': errors})
 	return (True, {})
@@ -2200,7 +2571,7 @@
 	try:
 		vm_path = request.form['vmpath'].strip()
 		if not vm_path:
-			raise 'blank'
+			raise Exception, 'blank'
 	except Exception, e:
 		luci_log.debug_verbose('validateVM1: no vm path: %s' % str(e))
 		errors.append('No path to the virtual machine configuration file was given.')



             reply	other threads:[~2007-02-15 22:44 UTC|newest]

Thread overview: 39+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2007-02-15 22:44 rmccabe [this message]
  -- strict thread matches above, loose matches on Subject: below --
2007-09-21  3:11 [Cluster-devel] conga/luci cluster/form-macros site/luci/Exten rmccabe
2007-06-19 15:54 rmccabe
2007-05-03 20:16 rmccabe
2007-03-15 16:41 rmccabe
2007-03-14 22:38 rmccabe
2007-03-14 22:37 rmccabe
2007-03-05 16:50 rmccabe
2007-03-05 16:50 rmccabe
2007-03-05 16:49 rmccabe
2007-02-08  3:46 rmccabe
2007-02-07 17:02 rmccabe
2007-02-07 16:55 rmccabe
2007-02-02  4:34 rmccabe
2007-02-02  0:11 rmccabe
2007-02-01 20:49 rmccabe
2007-01-31 23:36 rmccabe
2007-01-31  5:26 rmccabe
2007-01-23 13:53 rmccabe
2007-01-15 18:21 rmccabe
2007-01-11 19:11 rmccabe
2007-01-10 21:40 rmccabe
2007-01-06  3:29 rmccabe
2006-12-14 23:14 rmccabe
2006-12-14 18:22 rmccabe
2006-12-11 22:42 rmccabe
2006-12-11 21:51 rmccabe
2006-12-06 22:11 rmccabe
2006-12-06 21:16 rmccabe
2006-11-13 21:40 rmccabe
2006-11-12  2:10 rmccabe
2006-11-09 20:32 rmccabe
2006-11-03 22:48 rmccabe
2006-10-25  1:53 rmccabe
2006-10-25  1:11 rmccabe
2006-10-13 21:25 rmccabe
2006-08-03 18:36 shuennek
2006-07-21 14:49 rmccabe
2006-07-20 16:59 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=20070215224403.12145.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).