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 homebase/valida ...
Date: 23 Jan 2008 04:34:26 -0000	[thread overview]
Message-ID: <20080123043426.845.qmail@sourceware.org> (raw)

CVSROOT:	/cvs/cluster
Module name:	conga
Changes by:	rmccabe at sourceware.org	2008-01-23 04:34:24

Modified files:
	luci/cluster   : form-macros 
	luci/homebase  : validate_cluster_add_initial.js 
	luci/plone-custom: clusterportlet.css 
	luci/site/luci/Extensions: LuciClusterActions.py 
	                           LuciValidation.py ResourceHandler.py 
	                           RicciQueries.py cluster_adapters.py 
	                           homebase_adapters.py 
	luci/site/luci/var: Data.fs 
Added files:
	luci/plone-custom: clusterbanner.png 

Log message:
	sync some odds and ends

Patches:
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/luci/cluster/form-macros.diff?cvsroot=cluster&r1=1.219&r2=1.220
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/luci/homebase/validate_cluster_add_initial.js.diff?cvsroot=cluster&r1=1.5&r2=1.6
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/luci/plone-custom/clusterbanner.png.diff?cvsroot=cluster&r1=NONE&r2=1.1
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/luci/plone-custom/clusterportlet.css.diff?cvsroot=cluster&r1=1.1&r2=1.2
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/luci/site/luci/Extensions/LuciClusterActions.py.diff?cvsroot=cluster&r1=1.8&r2=1.9
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/luci/site/luci/Extensions/LuciValidation.py.diff?cvsroot=cluster&r1=1.5&r2=1.6
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/luci/site/luci/Extensions/ResourceHandler.py.diff?cvsroot=cluster&r1=1.5&r2=1.6
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/luci/site/luci/Extensions/RicciQueries.py.diff?cvsroot=cluster&r1=1.9&r2=1.10
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/luci/site/luci/Extensions/cluster_adapters.py.diff?cvsroot=cluster&r1=1.279&r2=1.280
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/luci/site/luci/Extensions/homebase_adapters.py.diff?cvsroot=cluster&r1=1.56&r2=1.57
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/luci/site/luci/var/Data.fs.diff?cvsroot=cluster&r1=1.27&r2=1.28

--- conga/luci/cluster/form-macros	2008/01/22 15:02:33	1.219
+++ conga/luci/cluster/form-macros	2008/01/23 04:34:09	1.220
@@ -1071,13 +1071,12 @@
 		set_page_title('Luci ??? cluster ??? Add a new cluster node');
 	</script>
 
-	<script type="text/javascript"
-		src="/luci/homebase/homebase_common.js">
+	<script type="text/javascript" src="/luci/homebase/homebase_common.js">
 	</script>
-
-	<script type="text/javascript"
-		src="/luci/homebase/validate_cluster_add.js">
+	<script type="text/javascript" src="/luci/homebase/validate_cluster_add.js">
 	</script>
+	<script type="text/javascript" src="conga_ajax.js"></script>
+	<script type="text/javascript" src="update_hostinfo.js"></script>
 
 	<form name="add_node" action="" method="post"
 		tal:define="
@@ -1194,17 +1193,10 @@
 									name python: '__SYSTEM%d:Passwd' % cur_sysnum" />
 						</tal:block>
 					</td>
-					<td tal:condition="add_cluster" class="systemsTable">
-						<img
-							tal:attributes="
-								src python: 'trusted' in sys and 'lock-ok.png' or ('fp' in sys and 'lock-closed.png' or 'lock-open.png');
-								title sys/fp | string:no key fingerprint available" />
-						<input type="hidden"
-							tal:condition="exists: sys/fp"
-							tal:attributes="
-								id python: '__SYSTEM%dFingerprint' % cur_sysnum;
-								name python: '__SYSTEM%dFingerprint' % cur_sysnum;
-								value sys/fp | nothing" />
+					<td class="systemsTable">
+						<img tal:attributes="
+							src python: sys and sys.has_key('trusted') and 'lock-ok.png' or (sys and sys.has_key('fp') and 'lock-closed.png' or 'lock-open.png');
+							title sys/fp | string:no key fingerprint available" />
 					</td>
 					<td tal:condition="add_cluster" class="systemsTable">
 						<input type="checkbox" tal:attributes="
@@ -1239,6 +1231,10 @@
 							id="__SYSTEM0:Passwd" name="__SYSTEM0:Passwd" />
 					</td>
 					<td class="systemsTable">
+						<img src="lock-open.png" id="__SYSTEM0Fingerprint"
+							title="no key fingerprint available" />
+					</td>
+					<td class="systemsTable">
 						<img src="delete-row.png" class="deleteRow"
 							title="delete this row"
 							onclick="delete_element_id('__SYSTEM_ROW_0')" />
@@ -1251,6 +1247,12 @@
 		<input name="numStorage" id="numStorage" type="hidden"
 			tal:attributes="value cur_sysnum" />
 
+		<div class="hbSubmit">
+			<input type="button" name="View SSL cert fingerprints"
+				value="View SSL cert fingerprints"
+				onclick="get_system_info('retmsgsdiv', 'errmsgsdiv', 1)" />
+		</div>
+
 		<div class="hbSubmit" id="hbSubmit">
 			<input type="button" name="Submit" value="Submit"
 				onClick="validateForm(this.form)" />
--- conga/luci/homebase/validate_cluster_add_initial.js	2008/01/22 15:02:32	1.5
+++ conga/luci/homebase/validate_cluster_add_initial.js	2008/01/23 04:34:09	1.6
@@ -92,14 +92,12 @@
 	if (ret_status !== true) {
 		/* A communication error occurred. */
 		alert(obj);
-		form_elem.submit();
 		return;
 	}
 
 	var err = get_ricci_response_status(obj.responseXML);
 	if (err !== null && err.length > 0) {
 		alert(err.join('\n'));
-		form_elem.submit();
 		return;
 	}
 
@@ -107,7 +105,6 @@
 		obj = obj.responseXML.getElementsByTagName('dict')[0];
 	} catch (e) {
 		alert('Received a malformed response from the luci server.');
-		form_elem.submit();
 		return;
 	}
 
@@ -115,7 +112,6 @@
 	var query_host_elem = document.getElementById('__SYSTEM0:Addr');
 	if (!query_host_elem || str_is_blank(query_host_elem.value)) {
 		alert('No node was entered.');
-		form_elem.submit();
 		return;
 	}
 	query_host = query_host_elem.value;
/cvs/cluster/conga/luci/plone-custom/clusterbanner.png,v  -->  standard output
revision 1.1
Binary files /cvs/cluster/conga/luci/plone-custom/clusterbanner.png and - differ
co: output error: Broken pipe
co aborted
--- conga/luci/plone-custom/clusterportlet.css	2007/09/25 04:00:23	1.1
+++ conga/luci/plone-custom/clusterportlet.css	2008/01/23 04:34:09	1.2
@@ -173,7 +173,7 @@
 .cluConfigTreeLevel5 { margin-left: 0.75em; }
 
 #main-portal-logo {
-    background: url(./clusterbanner.png) no-repeat;
+    background: url(clusterbanner.png) no-repeat;
     border: 0;
     margin: 0.75em 0em 0.75em 1.5em;
     padding: 0;
--- conga/luci/site/luci/Extensions/LuciClusterActions.py	2007/10/09 21:41:46	1.8
+++ conga/luci/site/luci/Extensions/LuciClusterActions.py	2008/01/23 04:34:09	1.9
@@ -1,4 +1,4 @@
-# Copyright (C) 2006-2007 Red Hat, Inc.
+# Copyright (C) 2006-2008 Red Hat, Inc.
 #
 # This program is free software; you can redistribute
 # it and/or modify it under the terms of version 2 of the
@@ -19,11 +19,21 @@
 from conga_constants import CLUSTER_CONFIG, LUCI_DEBUG_MODE, \
 	NODE_DELETE, NODE_FORCE_DELETE, CLUSTER_DELETE, CLUSTERLIST, \
 	NODE_FENCE, NODE_JOIN_CLUSTER, NODE_LEAVE_CLUSTER, NODE_REBOOT, \
-	RESOURCE_ADD, RESOURCE_CONFIG, RESOURCE_REMOVE, \
-	SERVICE_DELETE, SERVICE_RESTART, SERVICE_START, SERVICE_STOP
+	RESOURCE_REMOVE, SERVICE_DELETE, SERVICE_RESTART, \
+	SERVICE_START, SERVICE_STOP
 
 luci_log = get_logger()
 
+def getRicciAgentForCluster(self, req):
+	from LuciZope import GetReqVars
+	fvar = GetReqVars(req, [ 'clustername' ])
+	clustername = fvar['clustername']
+	if clustername is None:
+		if LUCI_DEBUG_MODE is True:
+			luci_log.debug('GRAFC0: no cluster name was found')
+		return None
+	return getRicciAgent(self, clustername)
+
 #
 # Cluster service tasks
 #
@@ -184,45 +194,6 @@
 	if ret[0] is False:
 		return ret
 
-def AddResource(self, rc, model, res):
-	resname = None
-	try:
-		resname = res.getName()
-		model.getResourcesPtr().addChild(res)
-	except Exception, e:
-		if LUCI_DEBUG_MODE is True:
-			luci_log.debug_verbose('AddResource0: %r %s' % (e, str(e)))
-		if resname is not None:
-			errstr = 'Unable to add new resource "%s"' % resname
-		else:
-			errstr = 'Unable to add this new resource'
-		return (False, { 'errors': [ errstr ] })
-
-	ret = propagateClusterConfAsync(self, model, rc, RESOURCE_ADD,
-			'Creating new cluster resource "%s"' % resname)
-	if ret[0] is False:
-		return ret
-
-def EditResource(self, rc, model, res):
-	resname = None
-	try:
-		resname = res.getName()
-		model.getResourcesPtr().addChild(res)
-	except Exception, e:
-		if LUCI_DEBUG_MODE is True:
-			luci_log.debug_verbose('EditResource0: %r %s' % (e, str(e)))
-		if resname is not None:
-			errstr = 'Unable to edit cluster resource "%s"' % resname
-		else:
-			errstr = 'Unable to edit this cluster resource'
-		return (False, { 'errors': [ errstr ] })
-
-	ret = propagateClusterConfAsync(self, model, rc, RESOURCE_CONFIG,
-				'Configuring cluster resource "%s"' % resname)
-
-	if ret[0] is False:
-		return ret
-
 #
 # Cluster node membership-related tasks
 #
--- conga/luci/site/luci/Extensions/LuciValidation.py	2008/01/22 15:05:17	1.5
+++ conga/luci/site/luci/Extensions/LuciValidation.py	2008/01/23 04:34:09	1.6
@@ -473,10 +473,11 @@
 			luci_log.debug_verbose('VRA0: type is blank')
 		return (False, { 'errors': [ 'No resource type was given']})
 
+	res = None
 	try:
 		res = create_resource(res_type, request.form, model)
 	except Exception, e:
-		return (False, { 'errors': e } )
+		return (False, { 'errors': e[0] } )
 
 	resname = ''
 	try:
--- conga/luci/site/luci/Extensions/ResourceHandler.py	2008/01/02 21:00:31	1.5
+++ conga/luci/site/luci/Extensions/ResourceHandler.py	2008/01/23 04:34:09	1.6
@@ -756,6 +756,7 @@
 }
 
 def create_resource(res_type, form, model):
+	errors = list()
 	if not resource_table.has_key(res_type):
 		raise Exception, [ 'Unknown resource type: "%s"' % res_type ]
 
@@ -785,14 +786,20 @@
 	else:
 		rname = form['ip_address'].strip()
 
+	if not form.has_key('edit'):
+		try:
+			dummy = getResourceForEdit(model, rname)
+			if dummy:
+				errors.append('A resource named "%s" already exists.' % rname)
+		except:
+			pass
+
+	if len(errors) > 0:
+		raise Exception, errors
+
 	errors = resource_table[res_type][0](res, rname, form, model)
-	try:
-		dummy = getResourceForEdit(model, rname)
-		if dummy:
-			errors.append('A resource named "%s" already exists.' % rname)
-	except:
-		pass
 
 	if len(errors) > 0:
 		raise Exception, errors
+
 	return res
--- conga/luci/site/luci/Extensions/RicciQueries.py	2007/10/09 20:20:02	1.9
+++ conga/luci/site/luci/Extensions/RicciQueries.py	2008/01/23 04:34:09	1.10
@@ -1,4 +1,4 @@
-# Copyright (C) 2006-2007 Red Hat, Inc.
+# Copyright (C) 2006-2008 Red Hat, Inc.
 #
 # This program is free software; you can redistribute
 # it and/or modify it under the terms of version 2 of the
@@ -10,6 +10,8 @@
 from LuciSyslog import get_logger
 from conga_constants import LUCI_DEBUG_MODE
 
+
+
 luci_log = get_logger()
 
 def addClusterNodeBatch(cluster_name,
@@ -18,11 +20,10 @@
 						install_shared_storage,
 						install_LVS,
 						upgrade_rpms,
-						gulm):
+						gulm,
+						reboot_nodes=False):
 	batch = list()
 
-	batch.append('<?xml version="1.0" ?>')
-	batch.append('<batch>')
 	batch.append('<module name="rpm">')
 	batch.append('<request API_version="1.0">')
 	batch.append('<function_call name="install">')
@@ -67,7 +68,7 @@
 	batch.append('</request>')
 	batch.append('</module>')
 
-	need_reboot = install_base or install_services or install_shared_storage or install_LVS
+	need_reboot = reboot_nodes or install_base or install_services or install_shared_storage or install_LVS
 	if need_reboot:
 		batch.append('<module name="reboot">')
 		batch.append('<request API_version="1.0">')
@@ -118,9 +119,9 @@
 	batch.append('</function_call>')
 	batch.append('</request>')
 	batch.append('</module>')
-	batch.append('</batch>')
 
-	return minidom.parseString(''.join(batch)).firstChild
+	return ''.join(batch)
+##	return minidom.parseString(''.join(batch)).firstChild
 
 def createClusterBatch( os_str,
 						cluster_name,
@@ -131,12 +132,10 @@
 						install_shared_storage,
 						install_LVS,
 						upgrade_rpms,
-						gulm_lockservers):
+						gulm_lockservers,
+						reboot_nodes=False):
 
 	batch = list()
-	batch.append('<?xml version="1.0" ?>')
-	batch.append('<batch>')
-
 	batch.append('<module name="rpm">')
 	batch.append('<request API_version="1.0">')
 	batch.append('<function_call name="install">')
@@ -184,7 +183,7 @@
 	batch.append('</request>')
 	batch.append('</module>')
 
-	need_reboot = install_base or install_services or install_shared_storage or install_LVS
+	need_reboot = reboot_nodes or install_base or install_services or install_shared_storage or install_LVS
 	if need_reboot:
 		batch.append('<module name="reboot">')
 		batch.append('<request API_version="1.0">')
@@ -253,9 +252,7 @@
 	batch.append('</function_call>')
 	batch.append('</request>')
 	batch.append('</module>')
-	batch.append('</batch>')
-
-	return minidom.parseString(''.join(batch)).firstChild
+	return ''.join(batch)
 
 def batchAttemptResult(doc):
 	if not doc:
@@ -689,17 +686,7 @@
 	if rc is None:
 		return None
 
-	doc = minidom.Document()
-	batch = doc.createElement('batch')
-	module = doc.createElement('module')
-	module.setAttribute('name', 'cluster')
-	request = doc.createElement('request')
-	request.setAttribute('API_version', '1.0')
-	call = doc.createElement('function_call')
-	call.setAttribute('name', 'get_cluster.conf')
-	request.appendChild(call)
-	module.appendChild(request)
-	batch.appendChild(module)
+	batch_str = '<module name="cluster"><request API_version="1.0"><function_call name="get_cluster.conf"/></request></module>'
 
 	# temporary workaround for ricci bug
 	system_info = rc.hostname()
@@ -714,9 +701,9 @@
 		return None
 	# end workaround
 
+	ricci_xml = rc.batch_run(batch_str, async=False)
 	try:
-		ret = rc.process_batch(batch)
-		if not ret:
+		if not ricci_xml:
 			raise Exception, 'no XML response'
 	except Exception, e:
 		if LUCI_DEBUG_MODE is True:
@@ -724,6 +711,7 @@
 				% (system_info, e, str(e)))
 		return None
 
+	ret = ricci_xml
 	var_nodes = ret.getElementsByTagName('var')
 	for i in var_nodes:
 		if i.getAttribute('name') == 'cluster.conf':
@@ -739,3 +727,22 @@
 	batch_str = '<module name="cluster"><request API_version="1.0"><function_call name="set_xvm_key"><var mutable="false" name="key_base64" type="string" value="%s"/></function_call></request></module>' % key_base64
 	ricci_xml = rc.batch_run(batch_str)
 	return batchAttemptResult(ricci_xml)
+
+def create_cluster(	rc, 
+					os_str,
+					cluster_name,
+					cluster_alias,
+					nodeList,
+					install_base,
+					install_services,
+					install_shared_storage,
+					install_LVS,
+					upgrade_rpms,
+					gulm_lockservers):
+
+	batch_str = createClusterBatch(os_str, cluster_name, cluster_alias,
+                        nodeList, install_base, install_services,
+                        install_shared_storage, install_LVS, upgrade_rpms,
+                        gulm_lockservers)
+	ricci_xml = rc.batch_run(batch_str)
+	return batchAttemptResult(ricci_xml)
--- conga/luci/site/luci/Extensions/cluster_adapters.py	2008/01/22 15:05:17	1.279
+++ conga/luci/site/luci/Extensions/cluster_adapters.py	2008/01/23 04:34:09	1.280
@@ -83,6 +83,8 @@
 	except:
 		shared_storage = False
 
+	reboot_nodes = request.form.has_key('reboot_nodes')
+
 	same_node_passwds = False
 	try:
 		same_node_passwds = request.form.has_key('allSameCheckBox')
@@ -95,7 +97,8 @@
 		'download_pkgs': download_pkgs,
 		'cluster_os': cluster_os,
 		'identical_passwds': same_node_passwds,
-		'check_certs': check_certs
+		'check_certs': check_certs,
+		'reboot_nodes': reboot_nodes
 	}
 
 	system_list, incomplete, errors, messages = parseHostForm(request, check_certs)
@@ -277,7 +280,7 @@
 	ret = send_batch_to_hosts(node_list, 10, rq.create_cluster, 
 			add_cluster['cluster_os'], clustername, clustername,
 			node_list, True, True, add_cluster['shared_storage'], False,
-			add_cluster['download_pkgs'], lockservers)
+			add_cluster['download_pkgs'], lockservers, add_cluster['reboot_nodes'])
 
 	batch_id_map = {}
 	for i in ret.iterkeys():
@@ -320,6 +323,8 @@
 	except:
 		download_pkgs = 1
 
+	reboot_nodes = request.form.has_key('reboot_nodes')
+
 	cluster_os = None
 	try:
 		cluster_os = request.form['cluster_os'].strip()
@@ -394,7 +399,8 @@
 		'download_pkgs': download_pkgs,
 		'cluster_os': cluster_os,
 		'identical_passwds': same_node_passwds,
-		'check_certs': check_certs
+		'check_certs': check_certs,
+		'reboot_nodes': reboot_nodes
 	}
 
 	system_list, incomplete, errors, messages = parseHostForm(request, check_certs)
@@ -549,7 +555,8 @@
 								shared_storage,
 								False,
 								download_pkgs,
-								model.GULM_ptr is not None)
+								model.GULM_ptr is not None,
+								reboot_nodes)
 				if not batch_node:
 					raise Exception, 'batch is blank'
 				system_list[x]['batch'] = batch_node
@@ -1419,18 +1426,18 @@
 		return {}
 
 	fvars = GetReqVars(request,
-				[ 'resourcename', 'type', 'value', 'clustername', 'URL' ])
+				[ 'resourcename', 'type', 'ip_address', 'clustername', 'URL' ])
 
 	baseurl = fvars['URL'] or LUCI_CLUSTER_BASE_URL
 
-	name = fvars['resourcename']
-	if name is None:
-		if fvars['type'] == 'ip':
-			name = fvars['value']
+	if fvars['type'] == 'ip':
+		name = fvars['ip_address']
+	else:
+		name = fvars['resourcename']
 
 	if name is None:
 		if LUCI_DEBUG_MODE is True:
-			luci_log.debug_verbose('GRI1: missing res name')
+			luci_log.debug_verbose('GRI1: missing res name: %s' % str(request.form.items()))
 		return {}
 
 	from LuciClusterInfo import getResourceInfo as gri
--- conga/luci/site/luci/Extensions/homebase_adapters.py	2008/01/22 15:05:18	1.56
+++ conga/luci/site/luci/Extensions/homebase_adapters.py	2008/01/23 04:34:09	1.57
@@ -240,10 +240,6 @@
 				request.SESSION.set('add_cluster_initial', cur_entry)
 				luci_log.info('SECURITY: %s' % errmsg)
 				return (False, { 'errors': [ errmsg ] })
-#			if trust_shown is True and cur_host_trusted is False:
-#				errmsg = 'You must elect to trust "%s" or abort the addition of the cluster to Luci.' % cur_host
-#				request.SESSION.set('add_cluster_initial', cur_entry)
-#				return (False, { 'errors': [ errmsg ] })
 			rc.trust()
 		except Exception, e:
 			if LUCI_DEBUG_MODE is True:
@@ -496,15 +492,9 @@
 				if not rc:
 					raise Exception, 'rc is None'
 
-				if not rc.trusted() and (trust_shown is True and cur_set_trust is False):
-					incomplete = True
-					cur_system['error'] = True
-					errors.append('You must either trust "%s" or remove it.' % cur_host)
-				else:
-					# The user doesn't care. Trust the system.
-					rc.trust()
-					cur_system['trusted'] = True
-					cur_system['prev_auth'] = rc.authed()
+				rc.trust()
+				cur_system['trusted'] = True
+				cur_system['prev_auth'] = rc.authed()
 			except Exception, e:
 				incomplete = True
 				cur_system['error'] = True
Binary files /cvs/cluster/conga/luci/site/luci/var/Data.fs	2007/06/27 08:14:13	1.27 and /cvs/cluster/conga/luci/site/luci/var/Data.fs	2008/01/23 04:34:10	1.28 differ
rcsdiff: /cvs/cluster/conga/luci/site/luci/var/Data.fs: diff failed



                 reply	other threads:[~2008-01-23  4:34 UTC|newest]

Thread overview: [no followups] expand[flat|nested]  mbox.gz  Atom feed

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=20080123043426.845.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.