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/clu_portlet_fetcher cluster ...
Date: 7 Jun 2007 06:41:10 -0000	[thread overview]
Message-ID: <20070607064110.21662.qmail@sourceware.org> (raw)

CVSROOT:	/cvs/cluster
Module name:	conga
Branch: 	EXPERIMENTAL
Changes by:	rmccabe at sourceware.org	2007-06-07 06:41:06

Modified files:
	luci/cluster   : clu_portlet_fetcher form-macros index_html 
	                 resource-form-macros resource_form_handlers.js 
	luci/homebase  : form-macros portlet_homebase 
	luci/site/luci/Extensions: LuciClusterInfo.py LuciDB.py 
	                           LuciZope.py RicciQueries.py 
	                           cluster_adapters.py 
	                           conga_constants.py 
	luci/site/luci/Extensions/ClusterModel: ModelBuilder.py 

Log message:
	Various fixes and cleanups

Patches:
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/luci/cluster/clu_portlet_fetcher.diff?cvsroot=cluster&only_with_tag=EXPERIMENTAL&r1=1.2&r2=1.2.8.1
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/luci/cluster/form-macros.diff?cvsroot=cluster&only_with_tag=EXPERIMENTAL&r1=1.198.2.3&r2=1.198.2.4
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/luci/cluster/index_html.diff?cvsroot=cluster&only_with_tag=EXPERIMENTAL&r1=1.32&r2=1.32.2.1
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/luci/cluster/resource-form-macros.diff?cvsroot=cluster&only_with_tag=EXPERIMENTAL&r1=1.37.2.2&r2=1.37.2.3
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/luci/cluster/resource_form_handlers.js.diff?cvsroot=cluster&only_with_tag=EXPERIMENTAL&r1=1.34&r2=1.34.2.1
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/luci/homebase/form-macros.diff?cvsroot=cluster&only_with_tag=EXPERIMENTAL&r1=1.56.2.1&r2=1.56.2.2
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/luci/homebase/portlet_homebase.diff?cvsroot=cluster&only_with_tag=EXPERIMENTAL&r1=1.8&r2=1.8.4.1
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/luci/site/luci/Extensions/LuciClusterInfo.py.diff?cvsroot=cluster&only_with_tag=EXPERIMENTAL&r1=1.1.2.7&r2=1.1.2.8
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/luci/site/luci/Extensions/LuciDB.py.diff?cvsroot=cluster&only_with_tag=EXPERIMENTAL&r1=1.1.2.14&r2=1.1.2.15
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/luci/site/luci/Extensions/LuciZope.py.diff?cvsroot=cluster&only_with_tag=EXPERIMENTAL&r1=1.1.2.8&r2=1.1.2.9
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/luci/site/luci/Extensions/RicciQueries.py.diff?cvsroot=cluster&only_with_tag=EXPERIMENTAL&r1=1.1.2.6&r2=1.1.2.7
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/luci/site/luci/Extensions/cluster_adapters.py.diff?cvsroot=cluster&only_with_tag=EXPERIMENTAL&r1=1.255.2.12&r2=1.255.2.13
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/luci/site/luci/Extensions/conga_constants.py.diff?cvsroot=cluster&only_with_tag=EXPERIMENTAL&r1=1.39.2.7&r2=1.39.2.8
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/luci/site/luci/Extensions/ClusterModel/ModelBuilder.py.diff?cvsroot=cluster&only_with_tag=EXPERIMENTAL&r1=1.1.2.6&r2=1.1.2.7

--- conga/luci/cluster/clu_portlet_fetcher	2006/09/27 22:24:11	1.2
+++ conga/luci/cluster/clu_portlet_fetcher	2007/06/07 06:41:04	1.2.8.1
@@ -4,39 +4,26 @@
 <body>
 
 <metal:leftcolumn define-macro="left_column">
-<!-- unchecked_clusystems are all clusters...the check_clusters call filters list through user permissions -->
-<span tal:define="global unchecked_clusystems root/luci/systems/cluster/objectItems"/>
-<span tal:define="global clusystems python:here.check_clusters(request,unchecked_clusystems)"/>
-<div tal:omit-tag="" metal:use-macro="here/portlet_cluconfig/macros/cluchooseportlet" />
-<span tal:omit-tag="" tal:define="global hasclustername request/clustername |nothing"/>
-<span tal:omit-tag="" tal:condition="hasclustername">
-<div tal:omit-tag="" metal:use-macro="here/portlet_cluconfig/macros/cluconfigportlet" />
-</span>
+	<tal:comment tal:replace=nothing>
+		unchecked_clusystems are all clusters...
+		the check_clusters call filters list through user permissions
+	</tal:comment>
+
+	<tal:block
+		tal:define="unchecked_clusystems /root/luci/systems/cluster/objectItems">
+		<tal:block
+			tal:define="global clusystems python:here.check_clusters(unchecked_clusystems)" />
+	</tal:block>
+
+	<tal:block
+		metal:use-macro="here/portlet_cluconfig/macros/cluchooseportlet" />
+	<tal:block
+		tal:define="global hasclustername request/clustername | nothing" />
+	<tal:block tal:condition="hasclustername">
+		<tal:block
+			metal:use-macro="here/portlet_cluconfig/macros/cluconfigportlet" />
+	</tal:block>
 </metal:leftcolumn>
 
-<!--
-
-<metal:rightcolumn define-macro="right_column"
-   tal:define="Iterator python:modules['Products.CMFPlone'].IndexIterator;
-               tabindex python:Iterator(pos=20000);"
-   tal:condition="sr">
-
-    <metal:block tal:repeat="slot sr">
-        <tal:dontcrash tal:on-error="python:context.plone_log('Error %s on %s while rendering portlet %s'%(error.type, error.value, slot[0]))"
-                       tal:define="pathexpr python:slot[0];
-                                   usemacro python:slot[1];">
-
-        <tal:block tal:condition="usemacro">
-            <metal:block metal:use-macro="python:path(pathexpr)" />
-        </tal:block>
-
-        <span tal:condition="not: usemacro"
-              tal:replace="structure python:path(pathexpr)" />
-
-        </tal:dontcrash>
-    </metal:block>
-</metal:rightcolumn>
--->
-
 </body>
 </html>
--- conga/luci/cluster/form-macros	2007/05/30 05:54:01	1.198.2.3
+++ conga/luci/cluster/form-macros	2007/06/07 06:41:04	1.198.2.4
@@ -4413,6 +4413,12 @@
 	<tal:block tal:condition="python: type == 'tomcat-5'">
 		<div metal:use-macro="here/resource-form-macros/macros/tomcat-5_macro" />
 	</tal:block>
+	<tal:block tal:condition="python: type == 'SAPInstance'">
+		<div metal:use-macro="here/resource-form-macros/macros/SAPInstance_macro" />
+	</tal:block>
+	<tal:block tal:condition="python: type == 'SAPDatabase'">
+		<div metal:use-macro="here/resource-form-macros/macros/SAPDatabase_macro" />
+	</tal:block>
 </div>
 
 <div metal:define-macro="service-config-head-macro" tal:omit-tag="">
@@ -4430,10 +4436,10 @@
 		global global_resources python: here.getResourcesInfo(modelb, request);
 		global sstat python: here.getClusterStatus(request, ricci_agent);
 		global sinfo python: here.getServiceInfo(sstat, modelb, request);
-		global running sinfo/running | nothing;" />
+		global running sinfo/running | nothing" />
 
 	<tal:block tal:replace="structure python: '<script type='+chr(0x22)+'text/javascript'+chr(0x22)+'>'" />
-		var uuid_list = <tal:block tal:replace="sinfo/uuid_list" />;
+		var uuid_list = <tal:block tal:replace="sinfo/uuid_list | nothing" />;
 		var global_resources = <tal:block tal:replace="python: map(lambda x: str(x['name']), global_resources) or 'null'" />;
 		var active_resources = <tal:block tal:replace="python: map(lambda x: str(x['name']), sinfo['resource_list']) or 'null'" />;
 		var resource_names = <tal:block tal:replace="python: (map(lambda x: str(x['name']), global_resources) + map(lambda x: str(x['name']), sinfo['resource_list'])) or 'null'" />;
--- conga/luci/cluster/index_html	2007/03/01 22:19:10	1.32
+++ conga/luci/cluster/index_html	2007/06/07 06:41:05	1.32.2.1
@@ -26,7 +26,7 @@
       <metal:headslot define-slot="head_slot" />
 	    <tal:block tal:define="
 			global sinfo nothing;
-			global hascluster request/clustername |nothing;
+			global hascluster request/clustername | nothing;
 			global isBusy python: False;
 			global firsttime nothing;
 			global ri_agent nothing;
@@ -39,7 +39,7 @@
 				global isVirtualized resmap/isVirtualized | nothing;
 				global os_version resmap/os | nothing;
 				global isBusy python:here.isClusterBusy(request);
-				global firsttime request/busyfirst |nothing" />
+				global firsttime request/busyfirst | nothing" />
 
 			<tal:block tal:condition="firsttime">
 				<tal:block tal:define="global busywaiting python:True" />
@@ -47,7 +47,7 @@
 					tal:attributes="content isBusy/refreshurl | string:." />
 			</tal:block>
 
-			<tal:block tal:define="global busy isBusy/busy |nothing"/>
+			<tal:block tal:define="global busy isBusy/busy | nothing" />
 
 			<tal:block tal:condition="busy">
 				<tal:block tal:define="global busywaiting python:True" />
--- conga/luci/cluster/resource-form-macros	2007/05/30 22:39:28	1.37.2.2
+++ conga/luci/cluster/resource-form-macros	2007/06/07 06:41:05	1.37.2.3
@@ -145,6 +145,8 @@
 		<div metal:use-macro="here/resource-form-macros/macros/openldap_macro" />
 		<div metal:use-macro="here/resource-form-macros/macros/postgres-8_macro" />
 		<div metal:use-macro="here/resource-form-macros/macros/tomcat-5_macro" />
+		<div metal:use-macro="here/resource-form-macros/macros/SAPInstance_macro" />
+		<div metal:use-macro="here/resource-form-macros/macros/SAPDatabase_macro" />
 	</div>
 </div>
 
@@ -213,6 +215,8 @@
 		<div metal:use-macro="here/resource-form-macros/macros/openldap_macro" />
 		<div metal:use-macro="here/resource-form-macros/macros/postgres-8_macro" />
 		<div metal:use-macro="here/resource-form-macros/macros/tomcat-5_macro" />
+		<div metal:use-macro="here/resource-form-macros/macros/SAPInstance_macro" />
+		<div metal:use-macro="here/resource-form-macros/macros/SAPDatabase_macro" />
 	</div>
 </div>
 
@@ -1170,6 +1174,14 @@
 	</form>
 </div>
 
+<div class="rescfg" name="SAPInstance"
+	tal:attributes="id res/name | nothing" metal:define-macro="SAPInstance_macro">
+</div>
+
+<div class="rescfg" name="SAPDatabase"
+	tal:attributes="id res/name | nothing" metal:define-macro="SAPDatabase_macro">
+</div>
+
 <div class="rescfg" name="MYSQL"
 	tal:attributes="id res/name | nothing" metal:define-macro="mysql_macro">
 	<p class="reshdr">MySQL Configuration</p>
--- conga/luci/cluster/resource_form_handlers.js	2007/03/15 22:08:42	1.34
+++ conga/luci/cluster/resource_form_handlers.js	2007/06/07 06:41:05	1.34.2.1
@@ -233,6 +233,16 @@
 	return (errors);
 }
 
+function validate_sapinstance(form) {
+	var errors = new Array();
+	return (errors);
+}
+
+function validate_sapinstance(form) {
+	var errors = new Array();
+	return (errors);
+}
+
 var required_children = new Array();
 required_children['nfsx'] = [ 'nfsc' ];
 
@@ -256,6 +266,8 @@
 form_validators['openldap'] = validate_openldap;
 form_validators['mysql'] = validate_mysql;
 form_validators['lvm'] = validate_lvm;
+form_validators['SAPInstance'] = validate_sapinstance;
+form_validators['SAPDatabase'] = validate_sapdatabase;
 
 function check_form(form) {
 	var valfn = form_validators[form.type.value];
--- conga/luci/homebase/form-macros	2007/05/18 02:36:59	1.56.2.1
+++ conga/luci/homebase/form-macros	2007/06/07 06:41:05	1.56.2.2
@@ -67,9 +67,6 @@
 		<input name="pagetype" type="hidden"
 			tal:attributes="value request/form/pagetype | request/pagetype | nothing" />
 
-		<input name="absoluteURL" type="hidden"
-			tal:attributes="value python:data['children'][data['curIndex']]['absolute_url']" />
-
 		<div class="hbSubmit" tal:condition="python:userList" id="hbSubmit">
 			<input name="Submit" type="button" value="Delete This User"
 				onClick="validateForm(this.form)" />
@@ -137,9 +134,6 @@
 		<input name="pagetype" type="hidden"
 			tal:attributes="value request/form/pagetype | request/pagetype | nothing" />
 
-		<input name="absoluteURL" type="hidden"
-			tal:attributes="value python:data['children'][data['curIndex']]['absolute_url']" />
-
 		<div class="hbSubmit" id="hbSubmit">
 			<input name="Submit" type="button" value="Submit"
 				onClick="validateForm(this.form)" />
@@ -168,12 +162,12 @@
 
 	<script type="text/javascript" src="/luci/homebase/validate_perm.js">
 	</script>
+
 	<script type="text/javascript">
 		set_page_title('Luci ??? homebase ??? Set Luci user permissions');
 	</script>
 
-	<span
-		tal:omit-tag=""
+	<tal:block
 		tal:define="global perms python:here.getUserPerms();
 					global systems python:here.getSystems();
 					global num_clusters python:-1;
@@ -188,25 +182,22 @@
 
 		<h2 class="homebase">User Permissions</h2>
 
-		<input name="absoluteURL" type="hidden"
-			tal:attributes="value python:data['children'][data['curIndex']]['absolute_url']" />
-		<input name="baseURL" type="hidden"
-			tal:attributes="value python:data['children'][data['curIndex']]['base_url']" />
-
 		<input name="pagetype" type="hidden"
 			tal:attributes="value request/form/pagetype | request/pagetype | nothing" />
 
-		<span tal:condition="python:perms" tal:content="string:Select a User" /><br/>
-
-		<select tal:omit-tag="python: not perms" class="homebase" name="userList" onChange="document.location = this.form.baseURL.value + '&user=' + this.form.userList.options[this.form.userList.selectedIndex].text">
-			<tal:block tal:define="userlist python: perms.keys().sort()">
-			<tal:block tal:repeat="user userlist">
-				<option class="homebase"
-					tal:content="python:user"
-					tal:attributes="value python:user;
-									selected python:user == curUser"
-				/>
-			</tal:block>
+		<tal:block tal:condition="python:perms">
+		<span tal:content="string:Select a User" /><br/>
+		
+		<select class="homebase" name="userList"
+			onChange="document.location = '/luci/homebase/?pagetype=3&user=' + this.form.userList.options[this.form.userList.selectedIndex].text">
+			<tal:block tal:define="userlist python: perms">
+				<tal:block tal:repeat="user userlist">
+					<option class="homebase"
+						tal:content="python:user"
+						tal:attributes="value python:user;
+										selected python:user == curUser"
+					/>
+				</tal:block>
 			</tal:block>
 		</select>
 
@@ -231,7 +222,7 @@
 			</div>
 		</tal:block>
 
-		<div tal:omit-tag="" tal:condition="python: systems[1] and len(systems[1]) > 0">
+		<tal:block tal:condition="python: systems[1] and len(systems[1]) > 0">
 			<h3 class="homebase">Storage Systems</h3>
 
 			<div class="hbcheckdiv" tal:repeat="s python: systems[1]">
@@ -245,7 +236,7 @@
 				/>
 				<span class="hbText" tal:omit-tag="" tal:content="python:s"/>
 			</div>
-		</div>
+		</tal:block>
 
 		<input type="hidden" id="numStorage"
 			tal:attributes="value python: num_systems + 1" />
@@ -254,9 +245,12 @@
 			tal:attributes="value python: num_clusters + 1" />
 
 		<div class="hbSubmit" id="hbSubmit">
-			<input type="button" name="Update Permissions" value="Update Permissions"
+			<input type="button" name="Update Permissions"
+				value="Update Permissions"
 				onClick="validateForm(this.form)" />
 		</div>
+
+		</tal:block>
 	</form>
 
 	<div tal:condition="python: blankForm">
@@ -593,9 +587,6 @@
 		<input name="pagetype" type="hidden"
 			tal:attributes="value request/form/pagetype | request/pagetype | nothing" />
 
-		<input name="absoluteURL" type="hidden"
-			tal:attributes="value python:data['children'][data['curIndex']]['absolute_url']" />
-
 		<table id="systemsTable" class="systemsTable" border="0" cellspacing="0"
 			tal:define="
 				new_systems request/SESSION/add_systems | nothing;
@@ -774,9 +765,6 @@
 		<input name="pagetype" type="hidden"
 			tal:attributes="value request/form/pagetype | request/pagetype | nothing" />
 
-		<input name="absoluteURL" type="hidden"
-			tal:attributes="value python:data['children'][data['curIndex']]['absolute_url']" />
-
 		<input name="pass" type="hidden"
 			tal:attributes="value add_cluster/pass | string:0" />
 
@@ -937,8 +925,6 @@
 		<input name="pagetype" type="hidden"
 			tal:attributes="value request/form/pagetype | request/pagetype | nothing" />
 
-		<input name="absoluteURL" type="hidden"
-			tal:attributes="value python:data['children'][data['curIndex']]['absolute_url']" />
 		<h2 class="homebase">Add an Existing Cluster</h2>
 
 		<p class="hbText">Enter one node from the cluster you wish to add to the Luci management interface.</p>
--- conga/luci/homebase/portlet_homebase	2006/11/01 23:04:17	1.8
+++ conga/luci/homebase/portlet_homebase	2007/06/07 06:41:05	1.8.4.1
@@ -13,21 +13,21 @@
 	<dd class="portletItemSingle">
 	<ul class="portletCluConfigTree cluConfigTreeLevel0">
 		<tal:portal repeat="c python:data.get('children',[])">
-			<li tal:condition="not: c/currentItem" class="cluConfigTreeItem visualNoMarker">
-			<div tal:condition="not: c/currentItem">
-				<a class="visualIconPadding"
-					tal:attributes="href c/absolute_url;
-						title c/Description |nothing"
-					tal:content="c/Title|nothing">Title</a>
-			</div>
+			<li tal:condition="not:exists:c/currentItem" class="cluConfigTreeItem visualNoMarker">
+				<div>
+					<a class="visualIconPadding"
+						tal:attributes="href c/absolute_url | nothing;
+							title c/Description | nothing"
+						tal:content="c/Title | nothing">Title</a>
+				</div>
 			</li>
 
-			<li tal:condition="c/currentItem" class="cluConfigTreeCurrentItem visualNoMarker">
-				<div tal:condition="c/currentItem">
+			<li tal:condition="exists:c/currentItem" class="cluConfigTreeCurrentItem visualNoMarker">
+				<div>
 					<a class="visualIconPadding"
-						tal:attributes="href c/absolute_url;
-							title c/Description |nothing"
-						tal:content="c/Title|nothing">Title</a>
+						tal:attributes="href c/absolute_url | nothing;
+							title c/Description | nothing"
+						tal:content="c/Title| nothing">Title</a>
 				</div>
 			</li>
 		</tal:portal>
--- conga/luci/site/luci/Extensions/Attic/LuciClusterInfo.py	2007/05/30 22:06:24	1.1.2.7
+++ conga/luci/site/luci/Extensions/Attic/LuciClusterInfo.py	2007/06/07 06:41:05	1.1.2.8
@@ -13,8 +13,9 @@
 from FenceHandler import FENCE_OPTS
 from LuciSyslog import get_logger
 from LuciDB import resolve_nodename
+from LuciZope import GetReqVars
 
-from conga_constants import CLUNAME, CLUSTER_CONFIG, CLUSTER_DELETE, \
+from conga_constants import CLUSTER_CONFIG, CLUSTER_DELETE, \
 	CLUSTER_PROCESS, CLUSTER_RESTART, CLUSTER_START, CLUSTER_STOP, \
 	FDOM, FDOM_CONFIG, FENCEDEV, NODE, NODE_ACTIVE, \
 	NODE_ACTIVE_STR, NODE_DELETE, NODE_FENCE, NODE_INACTIVE, \
@@ -23,7 +24,8 @@
 	PROP_FENCE_TAB, PROP_GENERAL_TAB, PROP_GULM_TAB, PROP_MCAST_TAB, \
 	PROP_QDISK_TAB, RESOURCE, RESOURCE_CONFIG, RESOURCE_REMOVE, \
 	SERVICE, SERVICE_DELETE, SERVICE_MIGRATE, SERVICE_RESTART, \
-	SERVICE_START, SERVICE_STOP, VM_CONFIG, LUCI_DEBUG_MODE
+	SERVICE_START, SERVICE_STOP, VM_CONFIG, LUCI_DEBUG_MODE, \
+	LUCI_CLUSTER_BASE_URL
 
 luci_log = get_logger()
 
@@ -207,27 +209,15 @@
 def getServicesInfo(self, status, model, req):
 	svc_map = {}
 	maplist = list()
+	fvars = GetReqVars(req, [ 'clustername', 'URL' ])
 
-	try:
-		baseurl = req['URL']
-		if not baseurl:
-			raise KeyError, 'is blank'
-	except:
-		baseurl = '/luci/cluster/index_html'
+	baseurl = fvars['URL'] or LUCI_CLUSTER_BASE_URL
 
-	try:
-		nodes = model.getNodes()
-		cluname = req['clustername']
-		if not cluname:
-			raise KeyError, 'is blank'
-	except:
-		try:
-			cluname = req.form['clustername']
-			if not cluname:
-				raise KeyError, 'is blank'
-		except:
-			cluname = '[error retrieving cluster name]'
+	cluname = fvars['clustername']
+	if cluname is None:
+		cluname = model.getClusterName()
 
+	nodes = model.getNodes()
 	for item in status:
 		if item['type'] == 'service':
 			itemmap = {}
@@ -329,44 +319,38 @@
 
 
 def getServiceInfo(self, status, model, req):
-	#set up struct for service config page
-	hmap = {}
 	root_uuid = 'toplevel'
 
-	try:
-		baseurl = req['URL']
-		if not baseurl:
-			raise KeyError, 'is blank'
-	except:
-		baseurl = '/luci/cluster/index_html'
+	fvars = GetReqVars(req, [ 'clustername', 'servicename', 'URL' ])
+
+	baseurl = fvars['URL'] or LUCI_CLUSTER_BASE_URL
+	if not model:
+		if LUCI_DEBUG_MODE is True:
+			luci_log.debug_verbose('getServiceInfo0: no model: %r' % model)
+		return {}
+
+	#set up struct for service config page
+	hmap = {}
 
 	try:
+		cluname = fvars['clustername'] or model.getClusterName()
 		hmap['fdoms'] = get_fdom_names(model)
-	except:
+	except Exception, e:
+		if LUCI_DEBUG_MODE is True:
+			luci_log.debug_verbose('getServiceInfo1: %r %s' % (e, str(e)))
 		hmap['fdoms'] = list()
 
-	try:
-		cluname = req['clustername']
-		if not cluname:
-			raise KeyError, 'is blank'
-	except KeyError, e:
-		try:
-			cluname = req.form['clustername']
-			if not cluname:
-				raise
-		except:
-			cluname = '[error retrieving cluster name]'
-
 	hmap['root_uuid'] = root_uuid
 	# uuids for the service page needed when new resources are created
 	hmap['uuid_list'] = map(lambda x: make_uuid('resource'), xrange(30))
 
-	try:
-		servicename = req['servicename']
-	except KeyError, e:
-		hmap['resource_list'] = {}
+	servicename = fvars['servicename']
+	if servicename is None:
 		return hmap
 
+	if len(status) > 0:
+		nodenames = model.getNodeNames()
+
 	for item in status:
 		innermap = {}
 		if item['type'] == 'service':
@@ -384,19 +368,17 @@
 					innermap['restarturl'] = '%s?clustername=%s&servicename=%s&pagetype=%s' % (baseurl, cluname, servicename, SERVICE_RESTART)
 					innermap['delurl'] = '%s?clustername=%s&servicename=%s&pagetype=%s' % (baseurl, cluname, servicename, SERVICE_DELETE)
 
-					#In this case, determine where it can run...
-					nodes = model.getNodes()
-					for node in nodes:
-						if node.getName() != nodename:
+					# In this case, determine where it can run...
+					for node in nodenames:
+						if node != nodename:
 							starturl = {}
-							cur_nodename = node.getName()
-							starturl['nodename'] = cur_nodename
-							starturl['url'] = '%s?clustername=%s&servicename=%s&pagetype=%s&nodename=%s' % (baseurl, cluname, servicename, SERVICE_START, cur_nodename)
+							starturl['nodename'] = node 
+							starturl['url'] = '%s?clustername=%s&servicename=%s&pagetype=%s&nodename=%s' % (baseurl, cluname, servicename, SERVICE_START, node)
 							starturls.append(starturl)
 
 							if item.has_key('is_vm') and item['is_vm'] is True:
-								migrate_url = { 'nodename': cur_nodename }
-								migrate_url['url'] = '%s?clustername=%s&servicename=%s&pagetype=%s&nodename=%s' % (baseurl, cluname, servicename, SERVICE_MIGRATE, cur_nodename)
+								migrate_url = { 'nodename': node }
+								migrate_url['url'] = '%s?clustername=%s&servicename=%s&pagetype=%s&nodename=%s' % (baseurl, cluname, servicename, SERVICE_MIGRATE, node)
 								migrate_url['migrate'] = True
 								starturls.append(migrate_url)
 					innermap['links'] = starturls
@@ -406,26 +388,25 @@
 					innermap['enableurl'] = '%s?clustername=%s&servicename=%s&pagetype=%s' % (baseurl, cluname, servicename, SERVICE_START)
 					innermap['delurl'] = '%s?clustername=%s&servicename=%s&pagetype=%s' % (baseurl, cluname, servicename, SERVICE_DELETE)
 
-					nodes = model.getNodes()
 					starturls = list()
-					for node in nodes:
+					for node in nodenames:
 						starturl = {}
-						cur_nodename = node.getName()
 
-						starturl['nodename'] = cur_nodename
-						starturl['url'] = '%s?clustername=%s&servicename=%s&pagetype=%s&nodename=%s' % (baseurl, cluname, servicename, SERVICE_START, cur_nodename)
+						starturl['nodename'] = node
+						starturl['url'] = '%s?clustername=%s&servicename=%s&pagetype=%s&nodename=%s' % (baseurl, cluname, servicename, SERVICE_START, node)
 						starturls.append(starturl)
 
 						if item.has_key('is_vm') and item['is_vm'] is True:
-							migrate_url = { 'nodename': cur_nodename }
-							migrate_url['url'] = '%s?clustername=%s&servicename=%s&pagetype=%s&nodename=%s' % (baseurl, cluname, servicename, SERVICE_MIGRATE, cur_nodename)
+							migrate_url = { 'nodename': node }
+							migrate_url['url'] = '%s?clustername=%s&servicename=%s&pagetype=%s&nodename=%s' % (baseurl, cluname, servicename, SERVICE_MIGRATE, node)
 							migrate_url['migrate'] = True
 							starturls.append(migrate_url)
 					innermap['links'] = starturls
 				hmap['innermap'] = innermap
 
-	#Now build hashes for resources under service.
-	#first get service by name from model
+	# Now build hashes for resources under service.
+	# first get service by name from model
+
 	svc = model.getService(servicename)
 	try:
 		hmap['domain'] = svc.getAttribute('domain')
@@ -461,13 +442,12 @@
 
 	try:
 		fdom = model.getFailoverDomainByName(request['fdomname'])
+		fhash['name'] = fdom.getName()
 	except Exception, e:
 		if LUCI_DEBUG_MODE is True:
 			luci_log.debug_verbose('getFdomInfo0: %r %s' % (e, str(e)))
 		return fhash
 
-	fhash['name'] = fdom.getName()
-
 	ordered_attr = fdom.getAttribute('ordered')
 	if ordered_attr is not None and (ordered_attr == 'true' or ordered_attr == '1'):
 		fhash['prioritized'] = '1'
@@ -490,22 +470,23 @@
 	return fhash
 
 def getFdomsInfo(self, model, request, clustatus):
+	fvars = GetReqVars(request, [ 'clustername', 'URL' ])
+
+	baseurl = fvars['URL'] or LUCI_CLUSTER_BASE_URL
+	clustername = fvars['clustername']
+	if clustername is None:
+		return {}
+
 	slist = list()
 	nlist = list()
-	fdomlist = list()
-
 	for item in clustatus:
 		if item['type'] == 'node':
 			nlist.append(item)
 		elif item['type'] == 'service':
 			slist.append(item)
 
-	clustername = request['clustername']
-	baseurl = request['URL']
-	fdoms = model.getFailoverDomains()
-	svcs = model.getServices()
-
-	for fdom in fdoms:
+	fdomlist = list()
+	for fdom in model.getFailoverDomains():
 		fdom_map = {}
 		fdom_name = fdom.getName()
 		fdom_map['name'] = fdom_name
@@ -524,9 +505,8 @@
 		else:
 			fdom_map['restricted'] = False
 
-		nodes = fdom.getChildren()
 		nodelist = list()
-		for node in nodes:
+		for node in fdom.getChildren():
 			nodesmap = {}
 			ndname = node.getName()
 
@@ -548,7 +528,7 @@
 		fdom_map['nodeslist'] = nodelist
 
 		svclist = list()
-		for svc in svcs:
+		for svc in model.getServices():
 			svcname = svc.getName()
 			for sitem in slist:
 				if sitem['name'] == svcname:
@@ -557,8 +537,7 @@
 						svcmap = {}
 						svcmap['name'] = svcname
 						svcmap['status'] = sitem['running']
-						svcmap['svcurl'] = '%s?pagetype=%s&clustername=%s&servicename=%s' \
-							% (baseurl, SERVICE, clustername, svcname)
+						svcmap['svcurl'] = '%s?pagetype=%s&clustername=%s&servicename=%s' % (baseurl, SERVICE, clustername, svcname)
 						svcmap['location'] = sitem['nodename']
 						svclist.append(svcmap)
 		fdom_map['svclist'] = svclist
@@ -567,21 +546,17 @@
 	return fdomlist
 
 def getClusterInfo(self, model, req):
-	try:
-		cluname = req[CLUNAME]
-	except:
-		try:
-			cluname = req.form['clustername']
-		except:
-			try:
-				cluname = req.form['clustername']
-			except:
-				if LUCI_DEBUG_MODE is True:
-					luci_log.debug_verbose('GCI0: unable to determine cluster name')
-				return {}
+	fvars = GetReqVars(req, [ 'clustername', 'URL' ])
+
+	baseurl = fvars['URL'] or LUCI_CLUSTER_BASE_URL
+	cluname = fvars['clustername']
+	if cluname is None:
+		if LUCI_DEBUG_MODE is True:
+			luci_log.debug_verbose('GCI0: unable to determine cluster name')
+		return {}
 
 	clumap = {}
-	if model is None:
+	if not model:
 		try:
 			model = getModelForCluster(self, cluname)
 			if not model:
@@ -597,20 +572,22 @@
 			clumap['totem'] = totem.getAttributes()
 
 	prop_baseurl = '%s?pagetype=%s&clustername=%s&' \
-	% (req['URL'], CLUSTER_CONFIG, cluname)
+		% (baseurl, CLUSTER_CONFIG, cluname)
 	basecluster_url = '%stab=%s' % (prop_baseurl, PROP_GENERAL_TAB)
-	#needed:
+	# needed:
 	clumap['basecluster_url'] = basecluster_url
-	#name field
+	# name field
 	clumap['clustername'] = model.getClusterAlias()
-	#config version
+	# config version
 	cp = model.getClusterPtr()
 	clumap['config_version'] = cp.getConfigVersion()
+
+	# xvmd info
+	clumap['fence_xvmd'] = model.hasFenceXVM()
+
 	#-------------
 	#new cluster params - if rhel5
 	#-------------
-
-	clumap['fence_xvmd'] = model.hasFenceXVM()
 	gulm_ptr = model.getGULMPtr()
 	if not gulm_ptr:
 		#Fence Daemon Props
@@ -643,7 +620,8 @@
 		clumap['gulm'] = False
 	else:
 		#-------------
-		#GULM params (rhel4 only)
+		# GULM params (RHEL4 only)
+		#-------------
 		lockserv_list = list()
 		clunodes = model.getNodes()
 		gulm_lockservs = map(lambda x: x.getName(), gulm_ptr.getChildren())
@@ -657,7 +635,8 @@
 		clumap['gulm_lockservers'] = lockserv_list
 
 	#-------------
-	#quorum disk params
+	# quorum disk params
+	#-------------
 	quorumd_url = '%stab=%s' % (prop_baseurl, PROP_QDISK_TAB)
 	clumap['quorumd_url'] = quorumd_url
 	is_quorumd = model.isQuorumd()
@@ -669,9 +648,8 @@
 	clumap['device'] = ''
 	clumap['label'] = ''
 
-	#list struct for heuristics...
+	# list struct for heuristics...
 	hlist = list()
-
 	if is_quorumd:
 		qdp = model.getQuorumdPtr()
 		interval = qdp.getAttribute('interval')
@@ -699,7 +677,6 @@
 			clumap['label'] = label
 
 		heuristic_kids = qdp.getChildren()
-
 		for kid in heuristic_kids:
 			hmap = {}
 			hprog = kid.getAttribute('program')
@@ -760,25 +737,25 @@
 	clu_map['minquorum'] = clu['minQuorum']
 
 	clu_map['clucfg'] = '%s?pagetype=%s&clustername=%s' \
-	% (baseurl, CLUSTER_CONFIG, clustername)
+		% (baseurl, CLUSTER_CONFIG, clustername)
 
 	clu_map['restart_url'] = '%s?pagetype=%s&clustername=%s&task=%s' \
-	% (baseurl, CLUSTER_PROCESS, clustername, CLUSTER_RESTART)
+		% (baseurl, CLUSTER_PROCESS, clustername, CLUSTER_RESTART)
 	clu_map['stop_url'] = '%s?pagetype=%s&clustername=%s&task=%s' \
-	% (baseurl, CLUSTER_PROCESS, clustername, CLUSTER_STOP)
+		% (baseurl, CLUSTER_PROCESS, clustername, CLUSTER_STOP)
 	clu_map['start_url'] = '%s?pagetype=%s&clustername=%s&task=%s' \
-	% (baseurl, CLUSTER_PROCESS, clustername, CLUSTER_START)
+		% (baseurl, CLUSTER_PROCESS, clustername, CLUSTER_START)
 	clu_map['delete_url'] = '%s?pagetype=%s&clustername=%s&task=%s' \
-	% (baseurl, CLUSTER_PROCESS, clustername, CLUSTER_DELETE)
+		% (baseurl, CLUSTER_PROCESS, clustername, CLUSTER_DELETE)
 
 	svc_dict_list = list()
 	for svc in svclist:
 		svc_dict = {}
-		svc_dict['nodename'] = svc['nodename']
 		svcname = svc['name']
 		svc_dict['name'] = svcname
-		svc_dict['srunning'] = svc['running']
 		svc_dict['servicename'] = svcname
+		svc_dict['nodename'] = svc['nodename']
+		svc_dict['srunning'] = svc['running']
 
 		if svc.has_key('is_vm') and svc['is_vm'] is True:
 			target_page = VM_CONFIG
@@ -798,7 +775,7 @@
 		name = item['name']
 		nmap['nodename'] = name
 		cfgurl = '%s?pagetype=%s&clustername=%s&nodename=%s' \
-		% (baseurl, NODE, clustername, name)
+			% (baseurl, NODE, clustername, name)
 		nmap['configurl'] = cfgurl
 		if item['clustered'] == 'true':
 			nmap['status'] = NODE_ACTIVE
@@ -815,6 +792,7 @@
 	infohash = {}
 	item = None
 	baseurl = request['URL']
+
 	nodestate = NODE_ACTIVE
 	svclist = list()
 	for thing in status:
@@ -899,13 +877,14 @@
 			infohash['gulm_lockserver'] = model.isNodeLockserver(nodename)
 		except:
 			infohash['gulm_lockserver'] = False
+
 		# next is faildoms
 		fdoms = model.getFailoverDomainsForNode(nodename)
 		for fdom in fdoms:
 			fdom_dict = {}
 			fdom_dict['name'] = fdom.getName()
 			fdomurl = '%s?pagetype=%s&clustername=%s&fdomname=%s' \
-		% (baseurl, FDOM_CONFIG, clustername, fdom.getName())
+				% (baseurl, FDOM_CONFIG, clustername, fdom.getName())
 			fdom_dict['fdomurl'] = fdomurl
 			fdom_dict_list.append(fdom_dict)
 	else:
@@ -917,7 +896,6 @@
 	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:
@@ -985,6 +963,7 @@
 		nl_map = {}
 		name = item['name']
 		nl_map['nodename'] = name
+
 		try:
 			nl_map['gulm_lockserver'] = model.isNodeLockserver(name)
 		except:
@@ -1012,9 +991,9 @@
 		nodename_resolved = resolve_nodename(self, clustername, name)
 
 		nl_map['logurl'] = '/luci/logs?nodename=%s&clustername=%s' \
-		% (nodename_resolved, clustername)
+			% (nodename_resolved, clustername)
 
-		#set up URLs for dropdown menu...
+		# set up URLs for dropdown menu...
 		if nl_map['status'] == NODE_ACTIVE:
 			nl_map['jl_url'] = '%s?pagetype=%s&task=%s&nodename=%s&clustername=%s' \
 				% (baseurl, NODE_PROCESS, NODE_LEAVE_CLUSTER, name, clustername)
@@ -1037,7 +1016,7 @@
 			nl_map['fence_it_url'] = '%s?pagetype=%s&task=%s&nodename=%s&clustername=%s' \
 				% (baseurl, NODE_PROCESS, NODE_FENCE, name, clustername)
 
-		#figure out current services running on this node
+		# figure out current services running on this node
 		svc_dict_list = list()
 		for svc in svclist:
 			if svc['nodename'] == name:
@@ -1050,19 +1029,20 @@
 				svc_dict_list.append(svc_dict)
 
 		nl_map['currentservices'] = svc_dict_list
-		#next is faildoms
 
+		# next is faildoms
 		if model:
 			fdoms = model.getFailoverDomainsForNode(name)
 		else:
 			nl_map['ricci_error'] = True
 			fdoms = list()
+
 		fdom_dict_list = list()
 		for fdom in fdoms:
 			fdom_dict = {}
 			fdom_dict['name'] = fdom.getName()
 			fdomurl = '%s?pagetype=%s&clustername=%s&fdomname=%s' \
-		% (baseurl, FDOM_CONFIG, clustername, fdom.getName())
+				% (baseurl, FDOM_CONFIG, clustername, fdom.getName())
 			fdom_dict['fdomurl'] = fdomurl
 			fdom_dict_list.append(fdom_dict)
 
@@ -1079,6 +1059,7 @@
 
 	fence_map = {}
 	fencename = request['fencename']
+
 	fencedevs = model.getFenceDevices()
 	for fencedev in fencedevs:
 		if fencedev.getName().strip() == fencename:
@@ -1090,14 +1071,15 @@
 				fence_map['pretty_name'] = fencedev.getAgentType()
 
 			nodes_used = list()
-			nodes = model.getNodes()
-			for node in nodes:
+			for node in model.getNodes():
 				flevels = node.getFenceLevels()
-				for flevel in flevels: #These are the method blocks...
+				for flevel in flevels:
+					# These are the method blocks...
 					kids = flevel.getChildren()
-					for kid in kids: #These are actual devices in each level
+					for kid in kids:
+						# These are actual devices in each level
 						if kid.getName().strip() == fencedev.getName().strip():
-							#See if this fd already has an entry for this node
+							# See if this fd already has an entry for this node
 							found_duplicate = False
 							for item in nodes_used:
 								if item['nodename'] == node.getName().strip():
@@ -1122,7 +1104,6 @@
 	for fd in fds:
 		if fd.getName().strip() == name:
 			return fd
-
 	raise
 
 def getFenceInfo(self, model, request):
@@ -1194,19 +1175,25 @@
 	if len_levels >= 1:
 		first_level = levels[0]
 		kids = first_level.getChildren()
-		last_kid_fd = None	#This is a marker for allowing multi instances
-												#beneath a fencedev
+
+		# This is a marker for allowing multi instances
+		# beneath a fencedev
+		last_kid_fd = None
+
 		for kid in kids:
 			instance_name = kid.getName().strip()
 			try:
 				fd = getFDForInstance(fds, instance_name)
 			except:
-				fd = None #Set to None in case last time thru loop
+				# Set to None in case last time thru loop
+				fd = None
 				continue
 
 			if fd is not None:
-				if fd.isShared() is False:	#Not a shared dev...build struct and add
+				if fd.isShared() is False:
+					# Not a shared dev... build struct and add
 					fencedev = {}
+
 					try:
 						fencedev['prettyname'] = FENCE_OPTS[fd.getAgentType()]
 					except:
@@ -1223,30 +1210,37 @@
 					kees = kidattrs.keys()
 					for kee in kees:
 						if kee == 'name':
-							continue #Don't duplicate name attr
+							# Don't duplicate name attr
+							continue
 						fencedev[kee] = kidattrs[kee]
-					#This fencedev struct is complete, and needs to be placed on the
-					#level1 Q. Because it is non-shared, we should set last_kid_fd
-					#to none.
+
+					# This fencedev struct is complete, and needs
+					# to be placed on the level1 Q. Because it is
+					# non-shared, we should set last_kid_fd to none.
 					last_kid_fd = None
 					level1.append(fencedev)
-				else:	#This dev is shared
-					if (last_kid_fd is not None) and (fd.getName().strip() == last_kid_fd['name'].strip()):	#just append a new instance struct to last_kid_fd
+				else:
+					# This dev is shared
+					if (last_kid_fd is not None) and (fd.getName().strip() == last_kid_fd['name'].strip()):
+						# just append a new instance struct to last_kid_fd
 						instance_struct = {}
 						instance_struct['id'] = str(minor_num)
 						minor_num = minor_num + 1
 						kidattrs = kid.getAttributes()
 						kees = kidattrs.keys()
+
 						for kee in kees:
-							if kee == 'name':
-								continue
-							instance_struct[kee] = kidattrs[kee]
-						#Now just add this struct to last_kid_fd and reset last_kid_fd
+							if kee != 'name':
+								instance_struct[kee] = kidattrs[kee]
+
+						# Now just add this struct to last_kid_fd
+						# and reset last_kid_fd
 						ilist = last_kid_fd['instance_list']
 						ilist.append(instance_struct)
-						#last_kid_fd = fd
 						continue
-					else: #Shared, but not used above...so we need a new fencedev struct
+					else:
+						# Shared, but not used above...so we need
+						# a new fencedev struct
 						fencedev = {}
 						try:
 							fencedev['prettyname'] = FENCE_OPTS[fd.getAgentType()]
@@ -1268,16 +1262,17 @@
 						kidattrs = kid.getAttributes()
 						kees = kidattrs.keys()
 						for kee in kees:
-							if kee == 'name':
-								continue
-							instance_struct[kee] = kidattrs[kee]
+							if kee != 'name':
+								instance_struct[kee] = kidattrs[kee]
+
 						inlist.append(instance_struct)
 						level1.append(fencedev)
 						last_kid_fd = fencedev
 						continue
 		fence_map['level1'] = level1
 
-		#level1 list is complete now, but it is still necessary to build shared1
+		# level1 list is complete now, but it is still
+		# necessary to build shared1
 		for fd in fds:
 			isUnique = True
 			if fd.isShared() is False:
@@ -1299,7 +1294,7 @@
 				shared1.append(shared_struct)
 		fence_map['shared1'] = shared1
 
-	#YUK: This next section violates the DRY rule, :-(
+	# YUK: This next section violates the DRY rule, :-(
 	if len_levels >= 2:
 		second_level = levels[1]
 		kids = second_level.getChildren()
@@ -1475,33 +1470,28 @@
 
 def getVMInfo(self, model, request):
 	vm_map = {}
+	fvars = GetReqVars(request, [ 'clustername', 'servicename', 'URL' ])
 
-	try:
-		clustername = request['clustername']
-	except Exception, e:
-		try:
-			clustername = model.getName()
-		except:
-			return vm_map
+	baseurl = fvars['URL'] or LUCI_CLUSTER_BASE_URL
 
-	svcname = None
-	try:
-		svcname = request['servicename']
-	except Exception, e:
-		try:
-			vmname = request.form['servicename']
-		except Exception, e:
-			return vm_map
+	clustername = fvars['clustername']
+	if clustername is None:
+		clustername = model.getName()
+
+	svcname = fvars['servicename']
+	if svcname is None:
+		if LUCI_DEBUG_MODE is True:
+			luci_log.debug_verbose('getVMInfo0: no service name')
+		return vm_map
 
 	vm_map['formurl'] = '%s?clustername=%s&pagetype=29&servicename=%s' \
-		% (request['URL'], clustername, svcname)
+		% (baseurl, clustername, svcname)
 
 	try:
-		vm = model.retrieveVMsByName(vmname)
-	except:
+		vm = model.retrieveVMsByName(svcname)
+	except Exception, e:
 		if LUCI_DEBUG_MODE is True:
-			luci_log.debug('An error occurred while attempting to get VM %s' \
-				% vmname)
+			luci_log.debug('getVMInfo1: %s: %r %s' % (svcname, e, str(e)))
 		return vm_map
 
 	attrs = vm.getAttributes()
@@ -1511,19 +1501,16 @@
 
 	return vm_map
 
-def getResourcesInfo(model, request):
+def getResourcesInfo(self, model, request):
 	resList = list()
-	baseurl = request['URL']
+	fvars = GetReqVars(request, [ 'clustername', 'URL' ])
+
+	baseurl = fvars['URL'] or LUCI_CLUSTER_BASE_URL
+	if fvars['clustername'] is None:
+		if LUCI_DEBUG_MODE is True:
+			luci_log.debug_verbose('getResourcesInfo missing cluster name')
+		return resList
 
-	try:
-		cluname = request['clustername']
-	except:
-		try:
-			cluname = request.form['clustername']
-		except:
-			if LUCI_DEBUG_MODE is True:
-				luci_log.debug_verbose('getResourcesInfo missing cluster name')
-			return resList
 	#CALL LUCICLUSTERINFO
 	return resList
 
--- conga/luci/site/luci/Extensions/Attic/LuciDB.py	2007/05/30 22:06:24	1.1.2.14
+++ conga/luci/site/luci/Extensions/Attic/LuciDB.py	2007/06/07 06:41:05	1.1.2.15
@@ -669,7 +669,7 @@
 				% (clustername, e, str(e)))
 		return None
 
-	if isAdmin(self) or cluster_permission_check(self, cluster_obj):
+	if cluster_permission_check(self, cluster_obj):
 		return cluster_obj
 	return None
 
@@ -713,10 +713,19 @@
 	return allowed_systems(storage)
 
 def check_clusters(self, clusters):
-	user = getSecurityManager().getUser()
-	return filter(lambda x: user.has_permission('View', x[1]), clusters)
+	ret = []
+	try:
+		user = getSecurityManager().getUser()
+		ret = filter(lambda x: user.has_permission('View', x[1]), clusters)
+	except Exception, e:
+		if LUCI_DEBUG_MODE is True:
+			luci_log.debug_verbose('CC0: %r %s' % (e, str(e)))
+	return ret
+
+def cluster_permission_check(self, cluster):
+	if isAdmin(self):
+		return True
 
-def cluster_permission_check(cluster):
 	try:
 		user = getSecurityManager().getUser()
 		if user.has_permission('View', cluster[1]):
@@ -736,8 +745,11 @@
 
 def getRicciAgent(self, clustername, exclude_names=None, exclude_busy=False):
 	try:
-		perm = cluster_permission_check(clustername)
+		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:
--- conga/luci/site/luci/Extensions/Attic/LuciZope.py	2007/05/30 22:06:24	1.1.2.8
+++ conga/luci/site/luci/Extensions/Attic/LuciZope.py	2007/06/07 06:41:05	1.1.2.9
@@ -123,7 +123,6 @@
 		if LUCI_DEBUG_MODE is True:
 			luci_log.debug_verbose('Appending model to request failed: %r %s' \
 				% (e, str(e)))
-		return 'An error occurred while storing the cluster model'
 
 def GetReqVars(req, varlist):
 	ret = {}
--- conga/luci/site/luci/Extensions/Attic/RicciQueries.py	2007/05/30 05:54:02	1.1.2.6
+++ conga/luci/site/luci/Extensions/Attic/RicciQueries.py	2007/06/07 06:41:05	1.1.2.7
@@ -743,12 +743,8 @@
 	if not ret:
 		return None
 
-	cur = ret
-	while len(cur.childNodes) > 0:
-		for i in cur.childNodes:
-			if i.nodeType == xml.dom.Node.ELEMENT_NODE:
-				if i.nodeName == 'var' and i.getAttribute('name') == 'cluster.conf':
-					return i.childNodes[1].cloneNode(True)
-				else:
-					cur = i
+	var_nodes = ret.getElementsByTagName('var')
+	for i in var_nodes:
+		if i.getAttribute('name') == 'cluster.conf':
+			return i.childNodes[0]
 	return None
--- conga/luci/site/luci/Extensions/cluster_adapters.py	2007/05/30 22:06:24	1.255.2.12
+++ conga/luci/site/luci/Extensions/cluster_adapters.py	2007/06/07 06:41:05	1.255.2.13
@@ -93,16 +93,18 @@
 
 	same_node_passwds = False
 	try:
-		same_node_passwds = 'allSameCheckBox' in request.form
+		same_node_passwds = request.form.has_key('allSameCheckBox')
 	except:
 		same_node_passwds = False
 
-	add_cluster = { 'name': clustername,
-					'shared_storage': shared_storage,
-					'download_pkgs': download_pkgs,
-					'cluster_os': cluster_os,
-					'identical_passwds': same_node_passwds,
-					'check_certs': check_certs }
+	add_cluster = {
+		'name': clustername,
+		'shared_storage': shared_storage,
+		'download_pkgs': download_pkgs,
+		'cluster_os': cluster_os,
+		'identical_passwds': same_node_passwds,
+		'check_certs': check_certs
+	}
 
 	system_list, incomplete, errors, messages = parseHostForm(request, check_certs)
 	add_cluster['nodes'] = system_list
@@ -288,7 +290,8 @@
 		errors.append('Unable to generate cluster creation ricci command')
 		return (False, { 'errors': errors, 'messages': messages })
 
-	error = manageCluster(self, clustername, add_cluster['nodes'], add_cluster['cluster_os'])
+	error = manageCluster(self, clustername,
+				add_cluster['nodes'], add_cluster['cluster_os'])
 	if error:
 		errors.append('Unable to create the cluster Luci database objects')
 		request.SESSION.set('create_cluster', add_cluster)
@@ -305,6 +308,7 @@
 			errors.append(msg)
 			if LUCI_DEBUG_MODE is True:
 				luci_log.debug_verbose(msg)
+
 			if len(batch_id_map) == 0:
 				request.SESSION.set('create_cluster', add_cluster)
 				return (False, { 'errors': errors, 'messages': messages })
@@ -416,20 +420,21 @@
 	except:
 		same_node_passwds = False
 
-	add_cluster = { 'name': clustername,
-					'shared_storage': shared_storage,
-					'download_pkgs': download_pkgs,
-					'cluster_os': cluster_os,
-					'identical_passwds': same_node_passwds,
-					'check_certs': check_certs }
+	add_cluster = {
+		'name': clustername,
+		'shared_storage': shared_storage,
+		'download_pkgs': download_pkgs,
+		'cluster_os': cluster_os,
+		'identical_passwds': same_node_passwds,
+		'check_certs': check_certs
+	}
 
 	system_list, incomplete, errors, messages = parseHostForm(request, check_certs)
 	add_cluster['nodes'] = system_list
-
 	for i in system_list:
 		cur_system = system_list[i]
 
-		cur_host_trusted = 'trusted' in cur_system
+		cur_host_trusted = cur_system.has_key('trusted')
 		cur_host = cur_system['host']
 
 		try:
@@ -595,7 +600,8 @@
 						luci_log.debug_verbose('VACN12: %s: %r %s' \
 							% (cur_host, e, str(e)))
 
-				errors.append('Unable to initiate cluster join for node "%s"' % cur_host)
+				errors.append('Unable to initiate cluster join for node "%s"' \
+					% cur_host)
 				if LUCI_DEBUG_MODE is True:
 					luci_log.debug_verbose('VACN13: %s: %r %s' \
 						% (cur_host, e, str(e)))
@@ -879,7 +885,8 @@
 				return (False, {'errors': [ 'A service with the name %s already exists' % service_name ]})
 		else:
 			if LUCI_DEBUG_MODE is True:
-				luci_log.debug_verbose('vSA4a: unknown action %s' % request.form['action'])
+				luci_log.debug_verbose('vSA4a: unknown action %s' \
+					% request.form['action'])
 			return (False, {'errors': [ 'An unknown action was specified' ]})
 	except Exception, e:
 		if LUCI_DEBUG_MODE is True:
@@ -3174,12 +3181,8 @@
 		if LUCI_DEBUG_MODE is True:
 			luci_log.debug_verbose('GRI1: missing res name')
 		return {}
-
-	#cluname = fvars['clustername']
-	#baseurl = fvars['URL']
-	#CALL
-	return {}
-
+	from LuciClusterInfo import getResourceInfo as gri
+	return gri(model, name)
 
 def serviceRestart(self, rc, req):
 	from LuciClusterActions import RestartCluSvc
--- conga/luci/site/luci/Extensions/conga_constants.py	2007/06/05 05:37:01	1.39.2.7
+++ conga/luci/site/luci/Extensions/conga_constants.py	2007/06/07 06:41:05	1.39.2.8
@@ -100,6 +100,7 @@
 PLONE_ROOT = 'luci'
 CLUSTER_FOLDER_PATH = '/luci/systems/cluster/'
 STORAGE_FOLDER_PATH = '/luci/systems/storage/'
+LUCI_CLUSTER_BASE_URL = '/luci/cluster/index_html'
 
 # Node states
 NODE_ACTIVE		= '0'
--- conga/luci/site/luci/Extensions/ClusterModel/Attic/ModelBuilder.py	2007/05/30 05:54:02	1.1.2.6
+++ conga/luci/site/luci/Extensions/ClusterModel/Attic/ModelBuilder.py	2007/06/07 06:41:05	1.1.2.7
@@ -505,6 +505,9 @@
     #Find the clusternodes obj and return get_children
     return self.clusternodes_ptr.getChildren()
 
+  def getNodeNames(self):
+    return map(lambda x: x.getName(), self.clusternodes_ptr.getChildren())
+
   def addNode(self, clusternode):
     self.clusternodes_ptr.addChild(clusternode)
     if self.usesMulticast is True:



                 reply	other threads:[~2007-06-07  6:41 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=20070607064110.21662.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.