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

[Cluster-devel] conga luci/cluster/form-macros luci/cluster/in ...



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


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