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 luci/cluster/form-macros luci/cluster/in ...
Date: 27 Jul 2007 16:49:10 -0000	[thread overview]
Message-ID: <20070727164910.28065.qmail@sourceware.org> (raw)

CVSROOT:	/cvs/cluster
Module name:	conga
Changes by:	rmccabe at sourceware.org	2007-07-27 16:43:47

Modified files:
	luci/cluster   : form-macros index_html validate_fence.js 
	luci/homebase  : validate_cluster_add.js 
	luci/site/luci/Extensions: FenceHandler.py LuciClusterActions.py 
	                           LuciClusterInfo.py LuciDB.py 
	                           LuciZope.py PropsObject.py 
	                           RicciQueries.py StorageReport.py 
	                           cluster_adapters.py 
	                           conga_constants.py 
	ricci/common   : XML.cpp 
	ricci/test_suite/cluster: generate_xvm_key.xml 

Log message:
	Fixes from the RHEL5 branch

Patches:
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/luci/cluster/form-macros.diff?cvsroot=cluster&r1=1.204&r2=1.205
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/luci/cluster/index_html.diff?cvsroot=cluster&r1=1.36&r2=1.37
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/luci/cluster/validate_fence.js.diff?cvsroot=cluster&r1=1.10&r2=1.11
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/luci/homebase/validate_cluster_add.js.diff?cvsroot=cluster&r1=1.10&r2=1.11
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/luci/site/luci/Extensions/FenceHandler.py.diff?cvsroot=cluster&r1=1.20&r2=1.21
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/luci/site/luci/Extensions/LuciClusterActions.py.diff?cvsroot=cluster&r1=1.3&r2=1.4
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/luci/site/luci/Extensions/LuciClusterInfo.py.diff?cvsroot=cluster&r1=1.7&r2=1.8
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/luci/site/luci/Extensions/LuciDB.py.diff?cvsroot=cluster&r1=1.5&r2=1.6
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/luci/site/luci/Extensions/LuciZope.py.diff?cvsroot=cluster&r1=1.2&r2=1.3
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/luci/site/luci/Extensions/PropsObject.py.diff?cvsroot=cluster&r1=1.6&r2=1.7
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/luci/site/luci/Extensions/RicciQueries.py.diff?cvsroot=cluster&r1=1.4&r2=1.5
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/luci/site/luci/Extensions/StorageReport.py.diff?cvsroot=cluster&r1=1.24&r2=1.25
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/luci/site/luci/Extensions/cluster_adapters.py.diff?cvsroot=cluster&r1=1.262&r2=1.263
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/luci/site/luci/Extensions/conga_constants.py.diff?cvsroot=cluster&r1=1.41&r2=1.42
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/ricci/common/XML.cpp.diff?cvsroot=cluster&r1=1.9&r2=1.10
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/ricci/test_suite/cluster/generate_xvm_key.xml.diff?cvsroot=cluster&r1=1.1&r2=1.2

--- conga/luci/cluster/index_html	2007/07/12 02:42:42	1.36
+++ conga/luci/cluster/index_html	2007/07/27 16:43:47	1.37
@@ -44,7 +44,7 @@
 			<tal:block tal:condition="firsttime">
 				<tal:block tal:define="global busywaiting python:True" />
 				<meta http-equiv="refresh"
-					tal:attributes="content isBusy/refreshurl | python:'3%surl=/luci/cluster' % chr(0x3b)" />
+					tal:attributes="content isBusy/refreshurl | python:'5%surl=/luci/cluster' % chr(0x3b)" />
 			</tal:block>
 
 			<tal:block tal:define="global busy isBusy/busy | nothing" />
@@ -52,7 +52,7 @@
 			<tal:block tal:condition="busy">
 				<tal:block tal:define="global busywaiting python:True" />
 				<meta http-equiv="refresh"
-					tal:attributes="content isBusy/refreshurl | python:'3%surl=/luci/cluster' % chr(0x3b)" />
+					tal:attributes="content isBusy/refreshurl | python:'5%surl=/luci/cluster' % chr(0x3b)" />
 			</tal:block>
 		</tal:block>
     </metal:headslot>
--- conga/luci/cluster/validate_fence.js	2007/07/23 18:53:08	1.10
+++ conga/luci/cluster/validate_fence.js	2007/07/27 16:43:47	1.11
@@ -51,12 +51,22 @@
 }
 
 function validate_field_passwd(form, form_elem) {
+	var errors = [];
 	if (form_elem.disabled) {
 		clr_form_err(form_elem);
 		return (null);
 	}
 
-	var errors = validate_field_str(form, form_elem);
+	if (!form_elem || !form_elem.value) {
+		if (!form_elem) {
+			errors.push('No value was given for this field.');
+		} else {
+			set_form_err(form_elem);
+			errors.push(form_elem.name + ' values must not be empty.');
+		}
+		return (errors);
+	}
+
 	if (errors && errors.length > 0 && form.passwd_script && !str_is_blank(form.passwd_script.value))
 	{
 		clr_form_err(form_elem);
--- conga/luci/homebase/validate_cluster_add.js	2007/07/11 22:47:07	1.10
+++ conga/luci/homebase/validate_cluster_add.js	2007/07/27 16:43:47	1.11
@@ -43,9 +43,13 @@
 	if (!view_certs || !view_certs.checked) {
 		var confirm_str = '';
 		if (form.addnode) {
-			confirm_str = 'Add ' + (added_storage.length > 1 ? 'these nodes' : 'this node') + ' to the \"' + clustername + '\" cluster?';
+			confirm_str = 'Add ' + (added_storage.length > 1 ? 'these nodes' : 'this node') + ' to the \"' + clustername + '\" cluster?\nEach node added will be rebooted during this process.';
 		} else {
-			confirm_str = 'Add the cluster \"' + clustername + '\" to the Luci management interface?';
+			if (form.cluster_create) {
+				confirm_str = 'All nodes added to this cluster will be rebooted as part of this process.\n\nCreate cluster \"' + clustername + '\"?';
+			} else {
+				confirm_str = 'Add the cluster \"' + clustername + '\" to the Luci management interface?';
+			}
 		}
 
 		if (confirm(confirm_str)) {
--- conga/luci/site/luci/Extensions/FenceHandler.py	2007/07/12 15:44:43	1.20
+++ conga/luci/site/luci/Extensions/FenceHandler.py	2007/07/27 16:43:47	1.21
@@ -772,7 +772,12 @@
 	try:
 		pwd = form['passwd'].strip()
 		if not pwd:
-			raise Exception, 'blank'
+			if form['passwd']:
+				# allow passwords consisting of nothing but whitespace
+				fencedev.addAttribute('passwd', form['passwd'])
+			else:
+				raise Exception, 'blank'
+
 		fencedev.addAttribute('passwd', pwd)
 		has_passwd = True
 	except Exception, e:
@@ -1152,6 +1157,11 @@
 	fenceinst = Device()
 	fenceinst.addAttribute('name', parent_name)
 
+	if form.has_key('option'):
+		option = form['option'].strip()
+		if option:
+			fenceinst.addAttribute('option', option)
+
 	try:
 		ret = FI_VALIDATE[fence_agent](form, fenceinst)
 		if len(ret) > 0:
--- conga/luci/site/luci/Extensions/LuciClusterActions.py	2007/06/25 16:11:30	1.3
+++ conga/luci/site/luci/Extensions/LuciClusterActions.py	2007/07/27 16:43:47	1.4
@@ -245,7 +245,11 @@
 		return None
 	return True
 
-def NodeLeaveCluster(self, rc, clustername, nodename_resolved):
+def NodeLeaveCluster(	self,
+						rc,
+						clustername,
+						nodename_resolved,
+						stop_cluster=False):
 	reported_cluname = None
 	try:
 		cluster_info = rc.cluster_info()
@@ -266,7 +270,7 @@
 				% nodename_resolved)
 		return None
 
-	batch_number, result = rq.nodeLeaveCluster(rc)
+	batch_number, result = rq.nodeLeaveCluster(rc, cluster_shutdown=stop_cluster)
 	if batch_number is None or result is None:
 		if LUCI_DEBUG_MODE is True:
 			luci_log.debug_verbose('NLC2: %s: batch_number or result is None' \
@@ -367,7 +371,7 @@
 	# First, delete cluster.conf from node to be deleted.
 	# next, have node leave cluster.
 
-	batch_number, result = rq.nodeLeaveCluster(rc, purge=False)
+	batch_number, result = rq.nodeLeaveCluster(rc, purge=True)
 	if batch_number is None or result is None:
 		if LUCI_DEBUG_MODE is True:
 			luci_log.debug_verbose('ND5: batch_number and/or result is None')
@@ -505,7 +509,8 @@
 					luci_log.debug_verbose('CStop1: [1] nodeDelete failed')
 				errors += 1
 		else:
-			ret = NodeLeaveCluster(self, rc, clustername, nodename_resolved)
+			ret = NodeLeaveCluster(self, rc, clustername,
+					nodename_resolved, stop_cluster=True)
 			if ret is None:
 				if LUCI_DEBUG_MODE is True:
 					luci_log.debug_verbose('CStop2: [0] nodeLeave %s' \
--- conga/luci/site/luci/Extensions/LuciClusterInfo.py	2007/07/12 22:35:40	1.7
+++ conga/luci/site/luci/Extensions/LuciClusterInfo.py	2007/07/27 16:43:47	1.8
@@ -817,22 +817,19 @@
 	found = False
 	for item in status:
 		if (item['type'] == 'node') and (item['name'] == nodename):
+			if item['online'] == 'false':
+				nodestate = NODE_UNKNOWN
+			elif item['clustered'] == 'true':
+				nodestate = NODE_ACTIVE
+			else:
+				nodestate = NODE_INACTIVE
 			found = True
 			break
 
 	if found is False:
-		item = {}
 		if LUCI_DEBUG_MODE is True:
-			luci_log.debug_verbose('getNodeInfo1: Unable to resolve node name in cluster status')
-		return item
-
-	# Now determine state of node...
-	if item['online'] == 'false':
+			luci_log.debug_verbose('getNodeInfo1: Unable to find node "%s" in cluster status' % nodename)
 		nodestate = NODE_UNKNOWN
-	elif item['clustered'] == 'true':
-		nodestate = NODE_ACTIVE
-	else:
-		nodestate = NODE_INACTIVE
 
 	infohash['nodestate'] = nodestate
 	infohash['nodename'] = nodename
@@ -899,12 +896,10 @@
 
 	infohash['fdoms'] = fdom_dict_list
 
-	# return infohash
 	infohash['d_states'] = None
-
 	nodename_resolved = resolve_nodename(self, clustername, nodename)
+
 	if nodestate == NODE_ACTIVE or nodestate == NODE_INACTIVE:
-	# call service module on node and find out which daemons are running
 		try:
 			rc = RicciCommunicator(nodename_resolved)
 			if not rc:
@@ -916,6 +911,7 @@
 				% (nodename_resolved, str(e)))
 
 		if rc is not None:
+			# call service module on node and find out which daemons are running
 			dlist = list()
 			dlist.append('ccsd')
 			if not gulm_cluster:
--- conga/luci/site/luci/Extensions/LuciDB.py	2007/07/12 22:35:40	1.5
+++ conga/luci/site/luci/Extensions/LuciDB.py	2007/07/27 16:43:47	1.6
@@ -825,6 +825,7 @@
 				if LUCI_DEBUG_MODE is True:
 					luci_log.debug_verbose('GRA8: cluster name is none for %s' \
 						% ricci_hostname)
+				raise Exception, '%s not in a cluster' % ricci_hostname
 
 			cur_alias = str(clu_info[1]).strip().lower()
 			if not cur_alias:
@@ -931,7 +932,7 @@
 			luci_log.debug_verbose('GCF0: cluster %s [%s] folder missing: %r %s -- returning empty map' % (cluname, path, e, str(e)))
 	return None
 
-def getClusterStatusDB(self, clustername, errmsg=None):
+def getClusterStatusDB(self, clustername):
 	results = list()
 	vals = {}
 
@@ -942,8 +943,6 @@
 	vals['quorate'] = '[unknown]'
 	vals['votes'] = '[unknown]'
 	vals['minQuorum'] = '[unknown]'
-	if errmsg:
-		vals['errmsg'] = errmsg
 	results.append(vals)
 
 	nodelist = getClusterDBNodes(self, clustername)
--- conga/luci/site/luci/Extensions/LuciZope.py	2007/06/25 16:03:38	1.2
+++ conga/luci/site/luci/Extensions/LuciZope.py	2007/07/27 16:43:47	1.3
@@ -128,11 +128,11 @@
 	ret = {}
 	for i in varlist:
 		pval = None
-		if req.has_key(i):
+		if req and req.has_key(i):
 			pval = req[i].strip()
 			if not pval:
 				pval = None
-		if pval is None:
+		if req and pval is None:
 			if req.form and req.form.has_key(i):
 				pval = req.form[i].strip()
 				if not pval:
--- conga/luci/site/luci/Extensions/PropsObject.py	2007/07/12 22:35:40	1.6
+++ conga/luci/site/luci/Extensions/PropsObject.py	2007/07/27 16:43:47	1.7
@@ -7,6 +7,7 @@
 
 from Variable import parse_variable
 from ricci_defines import PROPS_TAG
+import xml
 import xml.dom
 
 class PropsObject:
@@ -26,7 +27,7 @@
         return self.__vars
 
     def export_xml(self, doc, parent_node):
-        props = doc.createElement(PROPS_TAG)
+        props = doc.createElement(str(PROPS_TAG))
         parent_node.appendChild(props)
         for var in self.__vars:
             props.appendChild(self.__vars[var].export_xml(doc))
@@ -36,7 +37,7 @@
         props = None
         for node in parent_node.childNodes:
             if node.nodeType == xml.dom.Node.ELEMENT_NODE:
-                if node.nodeName == PROPS_TAG:
+                if node.nodeName == str(PROPS_TAG):
                     props = node
         if props is None:
             return self
@@ -47,3 +48,4 @@
             except:
                 continue
         return self
+
--- conga/luci/site/luci/Extensions/RicciQueries.py	2007/07/12 22:35:40	1.4
+++ conga/luci/site/luci/Extensions/RicciQueries.py	2007/07/27 16:43:47	1.5
@@ -701,17 +701,19 @@
 
 	try:
 		ret = rc.process_batch(batch)
+		if not ret:
+			raise Exception, 'no XML response'
 	except Exception, e:
 		if LUCI_DEBUG_MODE is True:
 			luci_log.debug_verbose('GCC1: process_batch error for %s: %r %s' \
 				% (system_info, e, str(e)))
 		return None
 
-	if not ret:
-		return None
-
 	var_nodes = ret.getElementsByTagName('var')
 	for i in var_nodes:
 		if i.getAttribute('name') == 'cluster.conf':
 			return i.childNodes[0]
+
+	if LUCI_DEBUG_MODE is True:
+		luci_log.debug_verbose('GCC2: no conf node found')
 	return None
--- conga/luci/site/luci/Extensions/StorageReport.py	2007/06/25 16:03:38	1.24
+++ conga/luci/site/luci/Extensions/StorageReport.py	2007/07/27 16:43:47	1.25
@@ -2000,7 +2000,7 @@
                                            'id'   : '%s_origin' % bd['path'],
                                            'type' : 'snapshot-origin'})
                 for snap in bd['snapshots']:
-                    high_list[d['id']].append('%s_snapshot', snap['path'])
+                    high_list[d['id']].append('%s_snapshot' % snap['path'])
 
 
 
--- conga/luci/site/luci/Extensions/cluster_adapters.py	2007/07/23 18:53:08	1.262
+++ conga/luci/site/luci/Extensions/cluster_adapters.py	2007/07/27 16:43:47	1.263
@@ -1749,7 +1749,7 @@
 
 	ret = propagateClusterConfAsync(self, model, None, FENCEDEV_NODE_CONFIG,
 			'Updating fence configuration for node "%s"' % fvar['nodename'])
-	if ret[1] is not True:
+	if ret[0] is not True:
 		return ret
 
 	request.RESPONSE.redirect('%s?pagetype=%s&clustername=%s&nodename=%s&busyfirst=true' % (baseurl, NODE, clustername, nodename))
@@ -2123,10 +2123,18 @@
 		% (baseurl, SERVICES, clustername))
 
 def process_cluster_conf_editor(self, req):
-	clustername = req['clustername']
+	if req.has_key('clustername'):
+		clustername = req['clustername'].strip() or None
+	else:
+		clustername = None
+
+	if clustername is None:
+		return { 'msg': 'No cluster name was given', 'cluster_conf': '' }
+
 	msg_list = list(('\n'))
-	cc = ''
-	if 'new_cluster_conf' in req:
+
+	cc = None
+	if req.has_key('new_cluster_conf'):
 		cc = req['new_cluster_conf']
 		msg_list.append('Checking if valid XML - ')
 		cc_xml = None
@@ -2147,12 +2155,10 @@
 				msg_list.append('Fix the error and try again:\n')
 			else:
 				msg_list.append('PASSED\n')
-
-				msg_list.append('Incrementing the cluster version number - ')
 				model.setModified(True)
 				msg_list.append('DONE\n')
-
 				msg_list.append('Propagating the new cluster.conf')
+
 				rc = getRicciAgent(self, clustername)
 				if not rc:
 					if LUCI_DEBUG_MODE is True:
--- conga/luci/site/luci/Extensions/conga_constants.py	2007/06/25 16:11:30	1.41
+++ conga/luci/site/luci/Extensions/conga_constants.py	2007/07/27 16:43:47	1.42
@@ -134,7 +134,7 @@
 	'A problem occurred when starting this node: %s'
 ]
 
-REDIRECT_SEC = 3
+REDIRECT_SEC = 5
 
 # cluster/node create error status messages
 PRE_INSTALL = 'The install state is not yet complete.'
--- conga/ricci/common/XML.cpp	2007/06/25 16:03:42	1.9
+++ conga/ricci/common/XML.cpp	2007/07/27 16:43:47	1.10
@@ -119,15 +119,15 @@
     xml += " " + name + "=\"" + value + "\"";
   }
   if (children().empty())
-    xml += "/>";
+    xml += "/>\n";
   else {
-    xml += ">";
+    xml += ">\n";
     for (list<XMLObject>::const_iterator iter = children().begin();
 	 iter != children().end();
 	 iter++) {
-      iter->generate_xml(xml, indent);
+      iter->generate_xml(xml, indent + "\t");
     }
-    xml += indent + "</" + _tag + ">";
+    xml += indent + "</" + _tag + ">\n";
   }
 }
 
--- conga/ricci/test_suite/cluster/generate_xvm_key.xml	2007/07/23 18:47:51	1.1
+++ conga/ricci/test_suite/cluster/generate_xvm_key.xml	2007/07/27 16:43:47	1.2
@@ -4,7 +4,9 @@
 
 <module name="cluster">
 <request sequence="1254" API_version="1.0">
-<function_call name="generate_xvm_key" />
+<function_call name="generate_xvm_key">
+	<var mutable="false" name="size" type="int" value="4096" />
+</function_call>
 </request>
 </module>
 



             reply	other threads:[~2007-07-27 16:49 UTC|newest]

Thread overview: 2+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2007-07-27 16:49 rmccabe [this message]
  -- strict thread matches above, loose matches on Subject: below --
2007-06-25 16:11 [Cluster-devel] conga luci/cluster/form-macros luci/cluster/in 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=20070727164910.28065.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.