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

rmccabe at sourceware.org rmccabe at sourceware.org
Tue Aug 29 23:23:00 UTC 2006


CVSROOT:	/cvs/cluster
Module name:	conga
Changes by:	rmccabe at sourceware.org	2006-08-29 23:23:00

Modified files:
	luci/cluster   : form-macros resource-form-macros 

Log message:
	more ui work

Patches:
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/luci/cluster/form-macros.diff?cvsroot=cluster&r1=1.51&r2=1.52
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/luci/cluster/resource-form-macros.diff?cvsroot=cluster&r1=1.4&r2=1.5

--- conga/luci/cluster/form-macros	2006/08/28 23:04:59	1.51
+++ conga/luci/cluster/form-macros	2006/08/29 23:22:59	1.52
@@ -1,9 +1,9 @@
-<html>	
-		
-<head>	
+<html>
+
+<head>
 		<title tal:content="template/title">The title</title>
-</head>	
-	
+</head>
+
 <body>
 
 <div metal:define-macro="entry-form">
@@ -21,19 +21,16 @@
 		<tr><td>
 			<h2><span tal:content="isBusy/desc" /></h2>
 		</td></tr>
-
 	</table>
 </div>
 
 <div metal:define-macro="clusters-form">
-
 <div id="cluster_list">
-
 <div class="cluster" tal:repeat="clu clusystems">
 	<tal:block
-		tal:define="ragent python:here.getRicciAgent(clu);
-			global stat python:here.getClusterStatus(ragent);
-			global cstatus python:here.getClustersInfo(stat,request);
+		tal:define="ragent python: here.getRicciAgent(clu);
+			global stat python: here.getClusterStatus(ragent);
+			global cstatus python: here.getClustersInfo(stat,request);
 			global cluster_status python: 'cluster ' + (cstatus['running'] == 'true' and 'running' or 'stopped');"
  	/>
 
@@ -51,7 +48,7 @@
 			<form method="post" onSubmit="return dropdown(this.gourl)">
 				<select name="gourl" id="cluster_action" class="cluster">
 					<option tal:condition="python: cstatus['running'] != 'true'" value="" class="cluster running">Start this cluster</option>
-					<option tal:condition="python:cstatus['running'] == 'true'" value="" class="cluster stopped">Stop this cluster</option>
+					<option tal:condition="python: cstatus['running'] == 'true'" value="" class="cluster stopped">Stop this cluster</option>
 					<option value="" class="cluster">Restart this cluster</option>
 				</select>
 				<input class="cluster" type="submit" value="Go" />
@@ -86,10 +83,10 @@
 			</ul>
 		</td>
 
-		<td class="cluster_services">
-			<strong class="cluster">Services</strong>
-			<ul class="cluster">
-			<tal:block tal:condition="python:len(cstatus['currentservices']) < 1">
+		<td class="cluster service cluster_services">
+			<strong class="cluster service">Services</strong>
+			<ul class="cluster service">
+			<tal:block tal:condition="python: len(cstatus['currentservices']) < 1">
 				<li>No Services Defined</li>
 			</tal:block>
 
@@ -124,7 +121,7 @@
 	</script>
 
 	<tal:block tal:omit-tag=""
-		tal:define="global sessionObj python:request.SESSION.get('checkRet')" />
+		tal:define="global sessionObj python: request.SESSION.get('checkRet')" />
 
 	<form name="adminform" action="" method="post">
 		<input name="pagetype" id="pagetype" type="hidden" value="6" />
@@ -267,11 +264,11 @@
 
 <div metal:define-macro="clusterconfig-form">
 	<tal:comment tal:replace="nothing">
-		<span tal:define="global ricci_agent python:here.getRicciAgentForCluster(request)"/>
+		<span tal:define="global ricci_agent python: here.getRicciAgentForCluster(request)"/>
 	</tal:comment>
 
 	<tal:block
-		tal:define="global clusterinfo python:here.getClusterInfo(modelb, request)" /> 
+		tal:define="global clusterinfo python: here.getClusterInfo(modelb, request)" />
 
 	<span tal:omit-tag="" tal:define="global configTabNum python: 'tab' in request and int(request['tab']) or 1" />
 
@@ -307,7 +304,7 @@
 		<script type="text/javascript" src="/luci/cluster/validate_config_general.js"></script>
 		<form name="basecluster" action="" method="post">
 		<table id="systemsTable" class="systemsTable" border="0" cellspacing="0">
-			<thead class="systemsTable"> 
+			<thead class="systemsTable">
 				<tr class="systemsTable"><td class="systemsTable" colspan="1">
 					<div class="systemsTableTop">
 						<strong>General Properties</strong>
@@ -348,7 +345,7 @@
 		<script type="text/javascript" src="/luci/homebase/homebase_common.js"></script>
 		<script type="text/javascript" src="/luci/cluster/validate_config_fence.js"></script>
 		<table id="systemsTable" class="systemsTable" border="0" cellspacing="0">
-			<thead class="systemsTable"> 
+			<thead class="systemsTable">
 				<tr class="systemsTable"><td class="systemsTable" colspan="1">
 					<div class="systemsTableTop">
 						<strong>Fence Daemon Properties</strong>
@@ -390,7 +387,7 @@
 
 		<form name="multicast" action="" method="post">
 		<table id="systemsTable" class="systemsTable" border="0" cellspacing="0">
-			<thead class="systemsTable"> 
+			<thead class="systemsTable">
 				<tr class="systemsTable"><td class="systemsTable" colspan="1">
 					<div class="systemsTableTop">
 						<strong>Multicast Configuration</strong>
@@ -403,7 +400,7 @@
 					<td class="systemsTable">
 						<input type="radio" name="mcast" value="False"
 							onClick="disable_mcast('mcast_address');"
-							tal:attributes="checked python:clusterinfo['is_mcast'] != 'True'"
+							tal:attributes="checked python: clusterinfo['is_mcast'] != 'True'"
 						/>
 						Let cluster choose the multicast address
 					</td>
@@ -413,8 +410,8 @@
 					<td class="systemsTable">
 						<input type="radio" name="mcast" value="True"
 							onClick="enable_mcast('mcast_address');"
-							tal:attributes="checked python:clusterinfo['is_mcast'] == 'True'"
-						
+							tal:attributes="checked python: clusterinfo['is_mcast'] == 'True'"
+
 						/>
 						Specify the multicast address manually
 					</td>
@@ -451,7 +448,7 @@
 			/>
 		<div class="configTabContent">
 		<table id="systemsTable" class="systemsTable" border="0" cellspacing="0">
-			<thead class="systemsTable"> 
+			<thead class="systemsTable">
 				<tr class="systemsTable"><td class="systemsTable" colspan="1">
 					<div class="systemsTableTop">
 						<strong>Quorum Partition Configuration</strong>
@@ -463,14 +460,14 @@
 				<tr class="systemsTable" id="st_row"><td class="systemsTable" id="st_col">
 					<input type="radio" name="quorumd" value="False"
 						onClick="disableChildrenInput('quorumdisk');"
-						tal:attributes="checked python:clusterinfo['is_quorumd'] != 'True'"/>
+						tal:attributes="checked python: clusterinfo['is_quorumd'] != 'True'"/>
 					Do not use a Quorum Partition
 				</td></tr>
 
 				<tr class="systemsTable"><td class="systemsTable">
 					<input type="radio" name="quorumd" value="True"
 						onClick="enableChildrenInput('quorumdisk');"
-						tal:attributes="checked python:clusterinfo['is_quorumd'] == 'True'"/>
+						tal:attributes="checked python: clusterinfo['is_quorumd'] == 'True'"/>
 						Use a Quorum Partition
 				</td></tr>
 			</tbody>
@@ -534,7 +531,7 @@
 
 		<div class="configTabContent">
 		<table name="qdiskheur" class="systemsTable">
-			<thead class="systemsTable"> 
+			<thead class="systemsTable">
 				<tr class="systemsTable"><td class="systemsTable" colspan="1">
 					<div class="systemsTableTop">
 						<strong>Heuristics</strong>
@@ -635,7 +632,7 @@
 				onClick="validate_form(this.form);"
 			>
 		</div>
-			<script tal:condition="python:clusterinfo['is_quorumd'] != 'True'">
+			<script tal:condition="python: clusterinfo['is_quorumd'] != 'True'">
 				disableChildrenInput('quorumdisk');
 			</script>
 		</form>
@@ -643,8 +640,8 @@
 </div>
 
 <div metal:define-macro="clusterprocess-form">
-	<span tal:define="global r_agent python:here.getRicciAgentForCluster(request)"/> 
-	<span tal:define="res python:here.processClusterProps(r_agent, request)"/>
+	<span tal:define="global r_agent python: here.getRicciAgentForCluster(request)"/>
+	<span tal:define="res python: here.processClusterProps(r_agent, request)"/>
 </div>
 
 <div metal:define-macro="node-form">
@@ -655,9 +652,9 @@
 	</tal:comment>
 
 	<tal:block tal:define="
-		global ricci_agent python:here.getRicciAgentForCluster(request);
-		global nodestatus python:here.getClusterStatus(ricci_agent);
-		global nodeinfo python:here.getNodeInfo(modelb, nodestatus, request);
+		global ricci_agent python: here.getRicciAgentForCluster(request);
+		global nodestatus python: here.getClusterStatus(ricci_agent);
+		global nodeinfo python: here.getNodeInfo(modelb, nodestatus, request);
 		global status_class python: 'node_' + (nodeinfo['nodestate'] == '0' and 'active' or (nodeinfo['nodestate'] == '1' and 'inactive' or 'unknown'));
 		global cluster_node_status_str python: (nodeinfo['nodestate'] == '0' and 'Cluster member' or (nodeinfo['nodestate'] == '1' and 'Currently not a cluster participant' or 'This node is not responding'));"
 	/>
@@ -701,9 +698,10 @@
 
 		</tr>
 
-		<tr class="cluster node info_bottom">
+		<tr class="cluster node info_bottom"
+			tal:condition="python: nodeinfo['nodestate'] == '0' or nodeinfo['nodestate'] == '1'">
 			<td class="cluster node node_log" colspan="2">
-			     <a class="cluster node"
+				<a class="cluster node"
 					tal:attributes="href nodeinfo/logurl" onClick="return popup_log(this, 'notes')">
 					Show recent log activity for this node
 				</a>
@@ -711,7 +709,10 @@
 		</tr>
 	</table>
 
-    <hr/>
+	<hr/>
+
+	<tal:block
+		tal:condition="python: nodeinfo['nodestate'] == '0' or nodeinfo['nodestate'] == '1'">
 
 	<h3>Cluster daemons running on this node</h3>
 	<form name="daemon_form">
@@ -744,29 +745,28 @@
 		</tbody>
 	</table>
 	</form>
-
-    <hr/>
+	<hr/>
+	</tal:block>
 
 	<div>
-		<h3>Services on this Node:</h3>
+		<h3>Services on this Node</h3>
 		<ul class="cluster node">
-			<tal:block tal:condition="python:len(nodeinfo['currentservices']) == 0">
+			<tal:block tal:condition="python: len(nodeinfo['currentservices']) == 0">
 				<li>No cluster services are currently running here</li>
 			</tal:block>
 			<li class="cluster node cluster_service" tal:repeat="svc nodeinfo/currentservices">
-				<a tal:attributes="href svc/svcurl">
-					<font color="green"><span tal:replace="svc/servicename"/></font>
-				</a>
+				<a class="running" tal:attributes="href svc/svcurl"
+					tal:content="svc/servicename" />
 			</li>
 		</ul>
 	</div>
 
 	<hr/>
 
-    <div class="fdomblock">
+	<div class="fdomblock">
 		<h3>Failover Domain Membership</h3>
 		<ul class="cluster node">
-			<tal:block tal:condition="python:len(nodeinfo['fdoms']) == 0">
+			<tal:block tal:condition="python: len(nodeinfo['fdoms']) == 0">
 				<li>This node has no failover domain membership</li>
 			</tal:block>
 			<li class="cluster node node_fdom" tal:repeat="fdom nodeinfo/fdoms">
@@ -794,9 +794,9 @@
 
 <div metal:define-macro="nodes-form">
 <div id="node_list" tal:define="
-	global ricci_agent python:here.getRicciAgentForCluster(request);
-	global status python:here.getClusterStatus(ricci_agent);
-	global nds python:here.getNodesInfo(modelb,status,request)">
+	global ricci_agent python: here.getRicciAgentForCluster(request);
+	global status python: here.getClusterStatus(ricci_agent);
+	global nds python: here.getNodesInfo(modelb,status,request)">
 
 	<div tal:repeat="nd nds">
 		<tal:block
@@ -842,7 +842,7 @@
 				<td class="node node_services">
 					<strong class="cluster node">Services on this Node:</strong>
 					<ul class="cluster node">
-						<li tal:condition="python:len(nd['currentservices']) == 0">
+						<li tal:condition="python: len(nd['currentservices']) == 0">
 							No cluster services are currently running here
 						</li>
 						<li class="cluster_service cluster node"
@@ -904,9 +904,8 @@
 
 <div metal:define-macro="nodelogs-form">
 	<h2>Recent Log Activity for <span tal:replace="request/nodename"/></h2>
-  ---------------------------------------------------------------------------------------
-  <br/>
-  <span tal:replace="python:here.getLogsForNode(request)"/>
+	<hr/>
+	<span tal:replace="python: here.getLogsForNode(request)"/>
 </div>
 
 <div metal:define-macro="nodeadd-form">
@@ -974,7 +973,8 @@
 </div>
 
 <div metal:define-macro="nodeprocess-form">
-      <span tal:define="result python:here.nodeTaskProcess(modelb, request)"/>
+	<tal:block
+		tal:define="result python: here.nodeTaskProcess(modelb, request)"/>
 	<h2>Node Process Form</h2>
 </div>
 
@@ -985,9 +985,9 @@
 <div metal:define-macro="servicelist-form">
 	<tal:block tal:omit-tag=""
 		tal:define="
-			global ricci_agent python:here.getRicciAgentForCluster(request);
-			global svcstatus python:here.getClusterStatus(ricci_agent);
-			global svcinf python:here.getServicesInfo(svcstatus,modelb,request);
+			global ricci_agent python: here.getRicciAgentForCluster(request);
+			global svcstatus python: here.getClusterStatus(ricci_agent);
+			global svcinf python: here.getServicesInfo(svcstatus,modelb,request);
 			global svcs svcinf/services" />
 
 	<tal:block tal:repeat="svc svcs">
@@ -1015,7 +1015,7 @@
 			</tr>
 
 			<tr class="cluster service info_middle">
-				<td class="cluster service service_nodename"> 
+				<td class="cluster service service_nodename">
 					<div class="cluster service service_status">
 						<strong class="cluster service service_name">Status:</strong>
 						<tal:block tal:condition="running">
@@ -1046,29 +1046,29 @@
 </div>
 
 <div metal:define-macro="servicestart">
-	<span tal:define="global ricci_agent python:here.getRicciAgentForCluster(request)"/>
-	<span tal:define="result python:here.serviceStart(ricci_agent, request)"/>
+	<span tal:define="global ricci_agent python: here.getRicciAgentForCluster(request)"/>
+	<span tal:define="result python: here.serviceStart(ricci_agent, request)"/>
 	<!-- <span metal:use-macro="here/form-macros/macros/serviceconfig-form"/> -->
 </div>
 
 
 <div metal:define-macro="servicerestart">
-	<span tal:define="global ricci_agent python:here.getRicciAgentForCluster(request)"/>
-	<span tal:define="result python:here.serviceRestart(ricci_agent, request)"/>
+	<span tal:define="global ricci_agent python: here.getRicciAgentForCluster(request)"/>
+	<span tal:define="result python: here.serviceRestart(ricci_agent, request)"/>
 	<!-- <span metal:use-macro="here/form-macros/macros/serviceconfig-form"/> -->
 </div>
 
 <div metal:define-macro="servicestop">
-	<span tal:define="global ricci_agent python:here.getRicciAgentForCluster(request)"/>
-	<span tal:define="result python:here.serviceStop(ricci_agent,request)"/>
+	<span tal:define="global ricci_agent python: here.getRicciAgentForCluster(request)"/>
+	<span tal:define="result python: here.serviceStop(ricci_agent,request)"/>
 	<!-- <span metal:use-macro="here/form-macros/macros/serviceconfig-form"/> -->
 </div>
 
 <div metal:define-macro="serviceconfig-form">
 	<tal:block tal:define="
-		global ricci_agent python:here.getRicciAgentForCluster(request);
-		global sstat python:here.getClusterStatus(ricci_agent);
-		global sinfo python:here.getServiceInfo(sstat, modelb,request);
+		global ricci_agent python: here.getRicciAgentForCluster(request);
+		global sstat python: here.getClusterStatus(ricci_agent);
+		global sinfo python: here.getServiceInfo(sstat, modelb,request);
 		global running sinfo/running | nothing;" />
 
 	<table class="cluster service" width="100%">
@@ -1115,7 +1115,7 @@
 	<br/>
 	<h2>Service Composition</h2>
 	<ul tal:define="global svc_rcs sinfo/resource_list">
-	    <li tal:repeat="res svc_rcs">
+		<li tal:repeat="res svc_rcs">
 			<ul tal:define="
 				global type res/type;
 				global ref res/ref_object | nothing">
@@ -1124,29 +1124,29 @@
 					<span tal:omit-tag="" tal:define="global shared string:true"/>
 				</tal:block>
 
-				<div class="" tal:attributes="class python:'rc_indent' + str(res['indent_ctr'])">
-					<span tal:omit-tag="" tal:condition="python:type == 'IP Address: '">
+				<div class="" tal:attributes="class python: 'rc_indent' + str(res['indent_ctr'])">
+					<span tal:omit-tag="" tal:condition="python: type == 'IP Address: '">
 						<li metal:use-macro="here/resource-form-macros/macros/ip_macro"/>
 					</span>
-					<span tal:omit-tag="" tal:condition="python:type == 'fs'">
+					<span tal:omit-tag="" tal:condition="python: type == 'fs'">
 						<li metal:use-macro="here/resource-form-macros/macros/fs_macro"/>
 					</span>
-					<span tal:omit-tag="" tal:condition="python:type == 'gfs'">
+					<span tal:omit-tag="" tal:condition="python: type == 'gfs'">
 						<li metal:use-macro="here/resource-form-macros/macros/gfs_macro"/>
 					</span>
-					<span tal:omit-tag="" tal:condition="python:type == 'nfsm'">
+					<span tal:omit-tag="" tal:condition="python: type == 'nfsm'">
 						<li metal:use-macro="here/resource-form-macros/macros/nfsm_macro"/>
 					</span>
-					<span tal:omit-tag="" tal:condition="python:type == 'nfsx'">
+					<span tal:omit-tag="" tal:condition="python: type == 'nfsx'">
 						<li metal:use-macro="here/resource-form-macros/macros/nfsx_macro"/>
 					</span>
-					<span tal:omit-tag="" tal:condition="python:type == 'nfsc'">
+					<span tal:omit-tag="" tal:condition="python: type == 'nfsc'">
 						<li metal:use-macro="here/resource-form-macros/macros/nfsc_macro"/>
 					</span>
-					<span tal:omit-tag="" tal:condition="python:type == 'smb'">
+					<span tal:omit-tag="" tal:condition="python: type == 'smb'">
 						<li metal:use-macro="here/resource-form-macros/macros/smb_macro" />
 					</span>
-					<span tal:omit-tag="" tal:condition="python:type == 'Script: '">
+					<span tal:omit-tag="" tal:condition="python: type == 'Script: '">
 						<li metal:use-macro="here/resource-form-macros/macros/scr_macro" />
 					</span>
 				</div>
@@ -1192,68 +1192,69 @@
 </div>
 
 <div metal:define-macro="fdomlist-form">
-   <span tal:define="ragent python:here.getRicciAgentForCluster(request);
-              global sta python:here.getClusterStatus(ragent);
-              global fdominfo python:here.getFdomsInfo(modelb, request, sta);">
-   <span tal:repeat="fdom fdominfo">
-    <div class="fdomname">
-     <img src="fDom.png"/><h2>Failover Domain Name: <font color="blue"><a href="" tal:attributes="href fdom/cfgurl"><span tal:content="fdom/name"/></a></font></h2>
-    </div>
-    <div class="fdomordered">
-    <span tal:condition="python:fdom['ordered'] == True">
-     <h4>This Failover Domain is <i>Ordered</i></h4>
-    </span>
-    <span tal:condition="python:fdom['ordered'] == False">
-     <h4>This Failover Domain is <i>Unordered</i></h4>
-    </span>
-    </div>
-    <div class="fdomrestricted">
-    <span tal:condition="python:fdom['restricted'] == True">
-     <h4>This Failover Domain is <i>Restricted</i></h4>
-    </span>
-    <span tal:condition="python:fdom['restricted'] == False">
-     <h4>This Failover Domain is <i>Unrestricted</i></h4>
-    </span>
-    </div>
-    <div class="fdommembers">
-    <h3>Members of this Failover Domain</h3>
-    <ul>
-     <span tal:repeat="node fdom/nodeslist">
-        <li style="list-style-image: url(small_node_active.png);" tal:condition="python:node['status'] == '0'">
-         <a href="" tal:attributes="href node/nodecfgurl"><font color="green"><span tal:content="node/nodename"/></font></a>
-        </li>
-        <li style="list-style-image: url(small_node_inactive.png);" tal:condition="python:node['status'] == '1'">
-         <a href="" tal:attributes="href node/nodecfgurl"><font color="red"><span tal:content="node/nodename"/></font></a>
-        </li>
-        <li style="list-style-image: url(small_node_unknown.png);" tal:condition="python:node['status'] == '2'">
-         <a href="" tal:attributes="href node/nodecfgurl"><font color="gray"><span tal:content="node/nodename"/></font></a>
-        </li>
-     </span>
-    </ul>
-    </div>
-    <div class="fdomservice">
-      <h2>Services employing this Failover Domain: </h2>
-        <ul>
-          <span tal:condition="python:len(fdom['svclist']) < 1">
-           <li><i>No Services Defined</i></li>
-          </span>
-          <span tal:repeat="svc fdom/svclist">
-            <span tal:condition="python:svc['status'] == 'true'">
-             <li style="list-style-image:url(small_svc.png);">
-              <a href="" tal:attributes="href svc/svcurl"><font color="green"><span tal:content="svc/name"/></font></a> Running On Node <span tal:content="svc/location"/>
-             </li>
-            </span>
-            <span tal:condition="python:svc['status'] != 'true'">
-             <li style="list-style-image:url(small_svc_stopped.png);">
-              <a href="" tal:attributes="href svc/svcurl"><font color="red"><span tal:content="svc/name"/></font></a> Not Running
-             </li>
-            </span>
-        </span>
-       </ul>
-    </div>
-   </span>
-   <hr/>
-  </span>
+	<tal:block
+		tal:define="
+			global ragent python: here.getRicciAgentForCluster(request);
+			global sta python: here.getClusterStatus(ragent);
+			global fdominfo python: here.getFdomsInfo(modelb, request, sta);" />
+
+	<div class="cluster fdom" tal:repeat="fdom fdominfo">
+	<div class="cluster fdom fdomname">
+		<img src="fDom.png"/>
+		<strong class="cluster fdom">Failover Domain Name<strong>:
+		<a class="cluster fdom_link"
+			tal:attributes="href fdom/cfgurl"
+			tal:content="fdom/name" />
+	</div>
+
+	<div class="fdomordered">
+		<h4>This Failover Domain is
+		<strong>
+			<span tal:replace="python: fdom['ordered'] == True and 'Ordered' or 'Unordered'" />
+		</strong>
+	</div>
+
+	<div class="fdomrestricted">
+		<h4>This Failover Domain is <span tal:replace="python: fdom['restricted'] == True and 'Restricted' or 'Unrestricted'"/></h4>
+	</div>
+
+	<div class="fdommembers">
+		<h3>Members of this Failover Domain</h3>
+		<ul class="cluster node">
+			<tal:block tal:repeat="node fdom/nodeslist">
+				<tal:block
+					tal:define="global nodeclass python: 'cluster ' + (node['status'] == '0' and 'node_active' or (node['status'] == '1' and 'node_inactive' or 'node_unknown'));" />
+				<li tal:attributes="class python: nodeclass">
+					<a tal:content="node/nodename"
+						tal:attributes="
+							href node/configurl;
+							class python: nodeclass;" />
+				</li>
+			</tal:block>
+		</ul>
+	</div>
+
+	<div class="fdomservice">
+		<h2>Services employing this Failover Domain: </h2>
+		<ul>
+			<tal:block tal:condition="python: len(fdom['svclist']) < 1">
+				<li>No Services Defined</li>
+			</tal:block>
+			<tal:block tal:repeat="svc fdom/svclist">
+				<tal:block
+					tal:define="global svcclass python: svc['status'] == 'true' and 'running' or 'stopped'" />
+
+				<li tal:attributes="class python: 'cluster cluster_service ' + svcclass">
+					<a tal:content="python: svc['name'] + ' ' + (svcclass == 'running' and ('Running on node ' + svc['location']) or 'Not running')"
+						tal:attributes="href svc/svcurl;
+							class python: 'cluster cluster_service ' + svcclass" />
+				</li>
+			</tal:block>
+		</ul>
+		<hr/>
+	</div>
+
+	</div>
 </div>
 
 <div metal:define-macro="fdomadd-form">
--- conga/luci/cluster/resource-form-macros	2006/08/10 23:06:20	1.4
+++ conga/luci/cluster/resource-form-macros	2006/08/29 23:22:59	1.5
@@ -1,692 +1,909 @@
 <html>
-  <head>
-    <title tal:content="template/title">The title</title>
-  </head>
-  <body>
-  <div metal:define-macro="resources-form">
-    <h2>
-    Resources for <span tal:content="request/clustername" />
-    </h2>
-    <span tal:define="global rescInf python:here.getResourcesInfo(modelb, request)"/>
-    <span tal:define="msg python:here.appendModel(request, modelb)"/>
-    <table id="systemsTable" class="systemsTable" border="0" cellspacing="0">
-      <thead>
-        <tr border="0" cellspacing="5" align="left">
-          <th width="100">Resource Name</th>
-          <th width="100">Type</th>
-          <th width="75">Link</th>
-          <th width="75">Configure</th>
-          <th width="75">Delete</th>
-        </tr>
-      </thead>
-      <span tal:repeat="rs rescInf">
-        <tr border="0" cellspacing="5">
-          <td tal:content="rs/name" />
-          <td tal:content="rs/type" />
-          <td>
-            <a href="" tal:attributes="HREF rs/url" />
-            details
-          </td>
-          <td>
-            <a href="" tal:attributes="HREF rs/cfgurl" />
-            configure
-          </td>
-          <td>
-            <a href="" tal:attributes="HREF rs/delurl" />
-            delete
-          </td>
-        </tr>
-      </span>
-    </table>
-  </div>
-  <div metal:define-macro="resourceslist-form">
-   <h2>Resources List Form</h2>
-  </div>
-  <div metal:define-macro="resourceremove-form">
-   <h2>Resources Remove Form</h2>
-   <span tal:define="global cluname request/clustername;
-                     global ragent python:here.getRicciAgentForCluster(request);"/>
-   <span tal:define="global edited request/edit|nothing" />
-   <span tal:define="global msg python:here.delResource(request, ragent)" />
-   <div tal:condition="msg" tal:content="msg">Something returned from delResource().</div>
-  </div>
-  <div metal:define-macro="resourceadd-form">
-      <script type="text/javascript" src="luci/cluster/resource_form_handlers.js" />  
-      <h2>Add a Resource</h2>
-      <strong>Select Resource Type:</strong><br/>
-      <form name="filler">
-	<select name="select_div" onChange="swap_div('container', filler.select_div.options[filler.select_div.selectedIndex].value);">
-	  <option name="blank" value="blank">Select a resource type</option>
-	  <option name="IP" value="IP">IP Resource</option>
-	  <option name="FS" value="FS">FS Resource</option>
-	  <option name="GFS" value="GFS">GFS Resource</option>
-	  <option name="NFSM" value="NFSM">NFS Mount Resource</option>
-	  <option name="NFSC" value="NFSC">NFS Client Resource</option>
-	  <option name="NFSX" value="NFSX">NFS Export Resource</option>
-	  <option name="SCR" value="SCR">Script Resource</option>
-	  <option name="SMB" value="SMB">Samba Resource</option>
+<head>
+	<title tal:content="template/title">The title</title>
+</head>
+<body>
+
+
+<div metal:define-macro="resources-form">
+	<h2>Resources for <span tal:replace="request/clustername" /></h2>
+
+	<tal:block
+		tal:define="
+			global rescInf python: here.getResourcesInfo(modelb, request);
+			global msg python: here.appendModel(request, modelb)" />
+
+	<table id="systemsTable" class="systemsTable" border="0" cellspacing="0">
+		<thead class="systemsTable">
+			<tr class="systemsTable">
+				<th class="systemsTable" width="100">Resource Name</th>
+				<th class="systemsTable" width="100">Type</th>
+				<th class="systemsTable" width="75">Link</th>
+				<th class="systemsTable" width="75">Configure</th>
+				<th class="systemsTable" width="75">Delete</th>
+			</tr>
+		</thead>
+
+		<tr class="systemsTable" tal:repeat="rs rescInf">
+			<td class="systemsTable" tal:content="rs/name" />
+			<td class="systemsTable" tal:content="rs/type" />
+			<td class="systemsTable">
+				<a class="cluster resource"
+					tal:content="string: details"
+					tal:attributes="href rs/url" />
+			</td>
+			<td class="systemsTable">
+				<a class="cluster resource"
+					tal:content="string: configure"
+					tal:attributes="href rs/cfgurl" />
+			</td>
+			<td class="systemsTable">
+				<a class="cluster resource"
+					tal:content="string: delete"
+					tal:attributes="href rs/delurl" />
+			</td>
+		</tr>
+	</table>
+</div>
+
+
+<div metal:define-macro="resourceslist-form">
+	<h2>Resources List Form</h2>
+</div>
+
+
+<div metal:define-macro="resourceremove-form">
+	<h2>Resources Remove Form</h2>
+
+	<tal:block
+		tal:define="
+				global cluname request/clustername;
+				global ragent python: here.getRicciAgentForCluster(request);
+				global edited request/edit | nothing;
+				global msg python: here.delResource(request, ragent)" />
+
+	<div tal:condition="msg" tal:content="msg" />
+</div>
+
+<div metal:define-macro="resourceadd-form">
+	<script type="text/javascript"
+		src="/luci/cluster/resource_form_handlers.js">
+	</script>
+
+	<h2>Add a Resource</h2>
+	<strong>Select Resource Type</strong><br/>
+
+	<form name="filler">
+	<select name="select_div"
+		onChange="swap_div('container', filler.select_div.options[filler.select_div.selectedIndex].value);">
+
+		<option name="blank" value="blank">Select a resource type</option>
+		<option name="IP" value="IP">IP Resource</option>
+		<option name="FS" value="FS">FS Resource</option>
+		<option name="GFS" value="GFS">GFS Resource</option>
+		<option name="NFSM" value="NFSM">NFS Mount Resource</option>
+		<option name="NFSC" value="NFSC">NFS Client Resource</option>
+		<option name="NFSX" value="NFSX">NFS Export Resource</option>
+		<option name="SCR" value="SCR">Script Resource</option>
+		<option name="SMB" value="SMB">Samba Resource</option>
 	</select>
-      </form>
-      <table class="systemsTable" border="0" cellspacing="1">
-      <tr><td id="container" width="400">	  
-	&nbsp
-      </td></tr>
-      </table>
-      <div id="invisible" style="display: none">
-        <div id="blank">&nbsp</div>
-  	<div metal:use-macro="here/resource-form-macros/macros/ip_macro"/>
-	<div metal:use-macro="here/resource-form-macros/macros/fs_macro"/>
-	<div metal:use-macro="here/resource-form-macros/macros/gfs_macro"/>
-	<div metal:use-macro="here/resource-form-macros/macros/nfsm_macro"/>
-        <div metal:use-macro="here/resource-form-macros/macros/nfsx_macro"/>
-        <div metal:use-macro="here/resource-form-macros/macros/nfsc_macro"/>
-        <div metal:use-macro="here/resource-form-macros/macros/smb_macro"/>
-        <div metal:use-macro="here/resource-form-macros/macros/scr_macro"/>
-      </div>
-    </div>
-
-  <div metal:define-macro="resource-form">
-    <span tal:define="global res python:here.getResourceInfo(modelb, request)"/>
-    <h2>Resource details for <span tal:content="res/name" /></h2>
-    <table class="systemsTable" border="0" cellspacing="5">
-      <thead  align="left">
-        <th width="100">Name</th>
-        <th width="100">Type</th>
-        <th width="75">Configure</th>
-      </thead>
-      <tr align="left">
-        <td tal:content="res/name" />
-        <td tal:content="res/tag_name" />
-        <td>
-        <a href="" tal:attributes="HREF res/cfgurl" />
-        configure
-        </td>
-      </tr>
-    </table>
-  </div>
-
-
-  <div metal:define-macro="resourceprocess-form">
-   <span tal:define="global cluname request/clustername;
-                     global ragent python:here.getRicciAgentForCluster(request);"/>
-   <span tal:define="global edited request/edit|nothing" />
-   <h2 tal:condition="not: edited">Resource Added</h2>
-   <h2 tal:condition="edited">Resource Edited</h2>
-   <span tal:define="global msg python:here.addResource(request, ragent)" />
-   <div tal:condition="msg" tal:content="msg">Something returned from addResource.</div>
-  </div>
-
-  <div metal:define-macro="resourceconfig-form">
-    <script type="text/javascript" src="luci/cluster/resource_form_handlers.js" />
-    <span tal:define="msg python:here.appendModel(request, modelb)"/>
-    <span tal:define="global restoedit request/resourcename|nothing"/>
-    <span tal:condition="restoedit">
-      <span tal:define="global res python:here.getResourceInfo(modelb, request)" />
-      <span tal:define="global type res/tag_name" />
-      <h2>Configure <span tal:content="res/name" /></h2>
-      <span tal:omit-tag="" tal:condition="python:type == 'ip'">
-       <div metal:use-macro="here/resource-form-macros/macros/ip_macro"/>
-      </span>
-      <span tal:omit-tag="" tal:condition="python:type == 'fs'">
-        <div metal:use-macro="here/resource-form-macros/macros/fs_macro"/>
-      </span>
-      <span tal:omit-tag="" tal:condition="python:type == 'gfs'">
-        <div metal:use-macro="here/resource-form-macros/macros/gfs_macro"/>
-      </span>
-      <span tal:omit-tag="" tal:condition="python:type == 'nfsm'">
-        <div metal:use-macro="here/resource-form-macros/macros/nfsm_macro"/>
-      </span>
-      <span tal:omit-tag="" tal:condition="python:type == 'nfsx'">
-        <div metal:use-macro="here/resource-form-macros/macros/nfsx_macro"/>
-      </span>
-      <span tal:omit-tag="" tal:condition="python:type == 'nfsc'">
-        <div metal:use-macro="here/resource-form-macros/macros/nfsc_macro"/>
-      </span>
-      <span tal:omit-tag="" tal:condition="python:type == 'smb'">
-        <div metal:use-macro="here/resource-form-macros/macros/smb_macro" />
-      </span>
-      <span tal:omit-tag="" tal:condition="python:type == 'script'">
-        <div metal:use-macro="here/resource-form-macros/macros/scr_macro" />
-      </span>
-    </span>
-  </div>
-
-  <div id="IP" metal:define-macro="ip_macro">
-    <span tal:condition="python:ptype == '33' or ptype == '24'">
-      <span tal:define="
-        global edit python:True;
-        global resName res/name;
-        global address python:resName.split('.');
-        global ip1 python:address[0];
-        global ip2 python:address[1];
-        global ip3 python:address[2];
-        global ip4 python:address[3];
-	global monitor_link res/attrs/monitor_link|nothing;
-        global cluname request/clustername;
-        tmp_URL context/cluster/index_html/absolute_url;
-        global processURL python:tmp_URL+'?pagetype=35&clustername='+cluname+'&edit=1'"/>
-    </span>
-
-    <span tal:condition="python:ptype != '33'">
-      <span tal:define="
-            global edit python:False;
-	    global monitor_link string:1;
-            global cluname request/clustername;
-            tmp_URL context/cluster/index_html/absolute_url;
-            global processURL python:tmp_URL+'?pagetype=35&clustername='+cluname" />
-    </span>
-    <strong>IP Address Resource Configuration</strong>
-    <form name="ip_form" id="ip_form" method="get" tal:attributes="action processURL">
-      <input name="pagetype" type="hidden" value="35"/>
-      <input name="clustername" type="hidden" tal:attributes="value cluname"/>
-      <input name="oldname" type="hidden"
-             tal:attributes="value res/name"
-             tal:condition="python:edit == True" />
-      <input name="edit" type="hidden" value="1"
-             tal:condition="python:edit == True" />
-     <input name="type" type="hidden" value="ip"/>
-      <table id="ipResourceTable" border="0" cellspacing="0" width="200" style="background-color: #dee7ec">
-        <tr>
-          <div>
-    	    <strong>IP:</strong>
-    	    <input size="3" name="ip1" type="text" maxlength="3" tal:attributes="VALUE ip1|nothing"/>.
-            <input size="3" name="ip2" type="text" maxlength="3" tal:attributes="VALUE ip2|nothing"/>.
-            <input size="3" name="ip3" type="text" maxlength="3" tal:attributes="VALUE ip3|nothing"/>.
-            <input size="3" name="ip4" type="text" maxlength="3" tal:attributes="VALUE ip4|nothing"/>
-          </div>
-          <div>
-    	    <strong>Monitor Link</strong>
-	    <span tal:condition="python: monitor_link == '1'">
-	      <input type="checkbox" name="monitorLink" checked >
-	    </span>
-	    <span tal:condition="python: monitor_link == '0'">
-	      <input type="checkbox" name="monitorLink">
-	    </span>
-          </div>
-        </tr>
-      </table>
-    </form>
-    <input name="submitButton" type="button" value="Submit" onClick="validate(ip_form);" />
-  </div>
-  <div id="FS" metal:define-macro="fs_macro">
-    <span tal:condition="python:ptype == '33' or ptype == '24'">
-      <span tal:define="
-        global edit python:True;
-        global resName res/name;
-        global mountPoint res/attrs/mountpoint;
-        global device res/attrs/device;
-        global fstype res/attrs/fstype;
-        global opt res/attrs/options;
-        global fsid res/attrs/fsid;
-        global force_unmount res/attrs/force_unmount;
-        global reboot_fail res/attrs/self_fence;
-        global fscheck res/attrs/force_fsck;
-        global cluname request/clustername;
-        tmp_URL context/cluster/index_html/absolute_url;
-        global processURL python:tmp_URL+'?pagetype=35&clustername='+cluname+'&edit=1'"/>
-    </span>
-    <span tal:condition="python:ptype != '33'">
-      <span tal:define="
-        global edit python:False;
-        global force_unmount string:0;
-        global reboot_fail string:0;
-	global fstype string:0;
-        global fscheck string:0;
-        global cluname request/clustername;
-        tmp_URL context/cluster/index_html/absolute_url;
-        global processURL python:tmp_URL+'?pagetype=35&clustername='+cluname" />
-    </span>
-    <strong>File System Resource Configuration</strong>
-      <form name="fs_form" action="" method="get" tal:attributes="action processURL">
-      <input name="pagetype" type="hidden" value="35"/>
-      <input name="clustername" type="hidden" tal:attributes="value cluname"/>
-      <input name="oldname" type="hidden"
-             tal:attributes="value res/name"
-             tal:condition="python:edit == True" />
-      <input name="edit" type="hidden" value="1"
-             tal:condition="python:edit == True" />
-     <input name="type" type="hidden" value="fs"/>
-      <table id="fileSystemTable" border="0" cellspacing="0">
-        <tr>
-          <div>
-	    <strong>Resource Name:</strong>
-    	    <input type="text" size="20" id="resourceName" name="resourceName" tal:attributes="value resName|nothing"/>
-          </div>
-        </tr>
-        <tr>
-          <div>
-	    <strong>File System Type:</strong>
-	    <select id="fstype" name="fstype">
-	      <span tal:condition="python: edit == nothing or fstype == 'ext2'">
-    	        <option name="ext2" value="ext2">ext2</option>
-                <option name="ext3" value="ext3" selected>ext3</option>
-	      </span>
-	      <span tal:condition="python: edit == True and fstype != 'ext3'">
-    	        <option name="ext2" value="ext2" selected>ext2</option>
-                <option name="ext3" value="ext3">ext3</option>
-	      </span>
-	    </select>
-          </div>
-        </tr>
-        <tr>
-          <div>
-	    <strong>Mount Point:</strong>
-	    <input type="text" size="20" id="mountpoint" name="mountpoint" tal:attributes="value mountPoint|nothing"/>
-          </div>
-        </tr>
-        <tr>
-          <div>
-	    <strong>Device:</strong>
-	    <input type="text" size="20" id="device" name="device" tal:attributes="value device|nothing"/>
-          </div>
-        </tr>
-        <tr>
-          <div>
-	    <strong>Options:</strong>
-	    <input type="text" size="20" id="options" name="options" tal:attributes="value opt|nothing"/>
-          </div>
-        </tr>
-        <tr>
-          <div>
-	    <strong>File System ID:</strong>
-    	    <input type="text" size="20" id="fsid" name="fsid" tal:attributes="value fsid|nothing"/>
-          </div>
-        </tr>
-        <tr>
-          <div>
-	    <input type="checkbox" id="forceunmount" name="forceunmount" checked 
-                   tal:condition="python:force_unmount == '1'"/>
-	    <input type="checkbox" id="forceunmount" name="forceunmount"
-                   tal:condition="python:force_unmount != '1'"/>
-	    <strong>Force unmount</strong>
-          </div>
-        </tr>
-        <tr>
-          <div>
-	    <input type="checkbox" id="selffence" name="selffence" 
-                   tal:condition="not: reboot_fail| python:reboot_fail == '1'"/>
-	    <input type="checkbox" id="selffence" name="selffence" 
-                   tal:condition="python:reboot_fail != '1'"/>
-	    <strong>Reboot host node if unmount fails</strong>
-          </div>
-        </tr>
-        <tr>
-          <div>
-	    <input type="checkbox" id="checkfs" name="checkfs" checked
-                   tal:condition="python:fscheck == '1'"/>
-	    <input type="checkbox" id="checkfs" name="checkfs"
-                   tal:condition="python:fscheck != '1'"/>
-    	    <strong>Check file system before mounting</strong>
-          </div>
-        </tr>	    	    
-      </table>
-    </form>
-    <input type="button" value="Submit" onClick="validate(fs_form);"/>
-  </div>
-  <div id="GFS" metal:define-macro="gfs_macro">
-    <span tal:condition="python:ptype == '33' or ptype =='24'">
-      <span tal:define="
-        global edit python:True;
-        global resName res/name;
-        global mountPoint res/attrs/mountpoint;
-        global device res/attrs/device;
-        global fstype res/attrs/fstype;
-        global opt res/attrs/options;
-        global fsid res/attrs/fsid;
-        global force_unmount res/attrs/force_unmount;
-        global cluname request/clustername;
-        tmp_URL context/cluster/index_html/absolute_url;
-        global processURL python:tmp_URL+'?pagetype=35&clustername='+cluname+'&edit=1'"/>
-    </span>
-    <span tal:condition="python:ptype != '33'">
-      <span tal:define="
-        global edit python:False;
-        global force_unmount string:0;
-        global cluname request/clustername;
-        tmp_URL context/cluster/index_html/absolute_url;
-        global processURL python:tmp_URL+'?pagetype=35&clustername='+cluname" />
-    </span>
-    <strong>GFS Resource Configuration</strong>
-    <form name="gfs_form" action="" method="post" tal:attributes="action processURL">
-      <input name="pagetype" type="hidden" value="35"/>
-      <input name="clustername" type="hidden" tal:attributes="value cluname"/>
-      <input name="oldname" type="hidden"
-             tal:attributes="value res/name"
-             tal:condition="python:edit == True" />
-      <input name="edit" type="hidden" value="1"
-             tal:condition="python:edit == True" />
-     <input name="type" type="hidden" value="gfs"/>
-      <table id="gfsTable" border="0" cellspacing="0">
-        <tr>
-          <div>
-	    <strong>Resource Name:</strong>
-    	    <input type="text" size="20" id="resourceName" name="resourceName"
-                   tal:attributes="value resName|nothing"/>
-          </div>
-        </tr>
-        <tr>
-          <div>
-	    <strong>Mount Point:</strong>
-	    <input type="text" size="20" id="mountPoint" name="mountpoint" 
-                   tal:attributes="value mountpoint|nothing"/>
-          </div>
-        </tr>
-        <tr>
-          <div>
-	    <strong>Device:</strong>
-	    <input type="text" size="20" id="device" name="device" 
-                   tal:attributes="value device|nothing"/>
-          </div>
-        </tr>
-        <tr>
-          <div>
-	    <strong>Options:</strong>
-	    <input type="text" size="20" id="options" name="options" 
-                   tal:attributes="value opt|nothing"/>
-          </div>
-        </tr>
-        <tr>
-          <div>
-	    <strong>File System ID:</strong>
-    	    <input type="text" size="20" id="fsid" name="fsid" 
-                   tal:attributes="value fsid|nothing"/>
-          </div>
-        </tr>
-        <tr>
-          <div>
-	    <input type="checkbox" id="forceunmount" name="forceunmount" checked 
-                   tal:condition="python:force_unmount == '1'"/>
-	    <input type="checkbox" id="forceunmount" name="forceunmount"
-                   tal:condition="python:force_unmount != '1'"/>
-	    <strong>Force unmount</strong>
-          </div>
-        </tr>
-      </table>
-    </form>
-    <input type="button" value="Submit" onclick="validate(gfs_form);"/>
-    </div>
-
-  <div id="NFSM" metal:define-macro="nfsm_macro">
-    <span tal:condition="python:ptype == '33' or ptype =='24'">
-      <span tal:define="
-        global edit python:True;
-        global resName res/name;
-        global mountpoint res/attrs/mountpoint;
-        global opt res/attrs/options;
-        global expath res/attrs/export;
-        global nfstype res/attrs/fstype;
-        global hostname res/attrs/host;
-        global force_unmount res/attrs/force_unmount;
-        global cluname request/clustername;
-        tmp_URL context/cluster/index_html/absolute_url;
-        global processURL python:tmp_URL+'?pagetype=35&clustername='+cluname+'&edit=1'"/>
-    </span>
-    <span tal:condition="python:ptype != '33'">
-      <span tal:define="
-        global edit python:False;
-        global force_unmount string:0;
-        global cluname request/clustername;
-        tmp_URL context/cluster/index_html/absolute_url;
-        global processURL python:tmp_URL+'?pagetype=35&clustername='+cluname" />
-    </span>
-  <strong>NFS Mount Resource Configuration</strong>
-  <form name="nfsm_form" action="" method="post">
-    <form name="gfs_form" action="" method="post" tal:attributes="action processURL">
-      <input name="pagetype" type="hidden" value="35"/>
-      <input name="clustername" type="hidden" tal:attributes="value cluname"/>
-      <input name="oldname" type="hidden"
-             tal:attributes="value res/name"
-             tal:condition="python:edit == True" />
-      <input name="edit" type="hidden" value="1"
-             tal:condition="python:edit == True" />
-      <input name="type" type="hidden" value="nfsm"/>
-      <table id="nfsMountTable" border="0" cellspacing="0">
-        <tr>
-          <div>
-	    <strong>Resource Name:</strong>
-    	    <input type="text" size="20" id="resourceName" name="resourceName"
-                   tal:attributes="value resName|nothing"/>
-          </div>
-        </tr>
-        <tr>
-          <div>
-	    <strong>Mount Point:</strong>
-	    <input type="text" size="20" id="mountpoint" name="mountpoint" 
-                   tal:attributes="value mountpoint|nothing"/>
-          </div>
-        </tr>
-        <tr>
-          <div>
-	    <strong>Host:</strong>
-	    <input type="text" size="20" id="host" name="host" 
-                   tal:attributes="value hostname|nothing"/>
-          </div>
-        </tr>
-        <tr>
-          <div>
-	    <strong>Export Path:</strong>
-    	    <input type="text" size="20" id="exportpath" name="exportpath"
-                   tal:attributes="value expath|nothing"/>
-          </div>
-        </tr>
-        <tr>
-          <div>
-	    <span tal:condition="python: edit == nothing or nfstype == 'nfs'">
-    	      <input type="radio" name="nfstype" value="nfs" checked>NFS
-	      <input type="radio" name="nfstype" value="nfs4">NFS4
-	    </span>
-	    <span tal:condition="python: edit == True and nfstype != 'nfs4'">
-    	      <input type="radio" name="nfstype" value="nfs">NFS
-	      <input type="radio" name="nfstype" value="nfs4" checked>NFS4
-	    </span>
-          </div>
-        </tr>
-        <tr>
-          <div>
-	    <strong>Options:</strong>
-	    <input type="text" size="20" id="options" name="options" 
-                   tal:attributes="value opt|nothing"/>
-          </div>
-        </tr>
-        <tr>
-          <div>
-	    <input type="checkbox" id="forceunmount" name="forceunmount" checked 
-                   tal:condition="python:force_unmount == '1'"/>
-	    <input type="checkbox" id="forceunmount" name="forceunmount"
-                   tal:condition="python:force_unmount != '1'"/>
-	    <strong>Force unmount</strong>
-          </div>
-        </tr>
-      </table>
-    </form>
-    <input type="button" value="Submit" onclick="validate(nfsm_form);"/>
-  </div>
-
-  <div id="NFSC" metal:define-macro="nfsc_macro">
-    <span tal:condition="python:ptype == '33' or ptype == '24'">
-      <span tal:define="
-        global edit python:True;
-        global resName res/name;
-        global target res/attrs/target;
-        global opt res/attrs/options;
-        global expath res/attrs/readOnly|nothing;
-        global cluname request/clustername;
-        tmp_URL context/cluster/index_html/absolute_url;
-        global processURL python:tmp_URL+'?pagetype=35&clustername='+cluname+'&edit=1'"/>
-    </span>
-    <span tal:condition="python:ptype != '33'">
-      <span tal:define="
-        global edit python:False;
-        global cluname request/clustername;
-        tmp_URL context/cluster/index_html/absolute_url;
-        global processURL python:tmp_URL+'?pagetype=35&clustername='+cluname" />
-    </span>
-    <strong>NFS Client Resource Configuration</strong>
-    <form name="nfsc_form" action="" method="post" tal:attributes="action processURL">
-      <input name="pagetype" type="hidden" value="35"/>
-      <input name="clustername" type="hidden" tal:attributes="value cluname"/>
-      <input name="oldname" type="hidden"
-             tal:attributes="value res/name"
-             tal:condition="python:edit == True" />
-      <input name="edit" type="hidden" value="1"
-             tal:condition="python:edit == True" />
-      <input name="type" type="hidden" value="nfsc"/>
-      <table id="nfsClientTable" border="0" cellspacing="0">
-        <tr>
-          <div>
-	    <strong>Resource Name:</strong>
-    	    <input type="text" size="20" id="resourceName" name="resourceName"
-                   tal:attributes="value resName|nothing"/>
-          </div>
-        </tr>
-        <tr>
-          <div>
-	    <strong>Target:</strong>
-	    <input type="text" size="20" id="target" name="target" 
-                   tal:attributes="value target|nothing"/>
-          </div>
-        </tr>
-        <tr>
-          <div>
-	    <strong>Options:</strong>
-	    <input type="text" size="20" id="options" name="options" 
-                   tal:attributes="value opt|nothing"/>
-          </div>
-        </tr>
-      </table>
-    </form>
-    <input type="button" value="Submit" onclick="validate(nfsc_form);"/>
-  </div>
+	</form>
+
+	<table class="systemsTable">
+		<tr class="systemsTable">
+			<td class="systemsTable" id="container" width="400">
+				&nbsp
+			</td></tr>
+	</table>
+
+	<div id="invisible" style="display: none">
+		<div id="blank">&nbsp</div>
+		<div metal:use-macro="here/resource-form-macros/macros/ip_macro"/>
+		<div metal:use-macro="here/resource-form-macros/macros/fs_macro"/>
+		<div metal:use-macro="here/resource-form-macros/macros/gfs_macro"/>
+		<div metal:use-macro="here/resource-form-macros/macros/nfsm_macro"/>
+		<div metal:use-macro="here/resource-form-macros/macros/nfsx_macro"/>
+		<div metal:use-macro="here/resource-form-macros/macros/nfsc_macro"/>
+		<div metal:use-macro="here/resource-form-macros/macros/smb_macro"/>
+		<div metal:use-macro="here/resource-form-macros/macros/scr_macro"/>
+	</div>
+</div>
+
+<div metal:define-macro="resource-form">
+	<tal:block
+		tal:define="global res python: here.getResourceInfo(modelb, request)" />
+
+	<h2>Resource details for <span tal:replace="res/name" /></h2>
+
+	<table class="systemsTable">
+		<thead class="systemsTable">
+			<th class="systemsTable" width="100">Name</th>
+			<th class="systemsTable" width="100">Type</th>
+			<th class="systemsTable" width="75">Configure</th>
+		</thead>
+		<tr class="systemsTable">
+			<td class="systemsTable" tal:content="res/name" />
+			<td class="systemsTable" tal:content="res/tag_name" />
+			<td>
+				<a class="cluster resource"
+					tal:content="string: configure"
+					tal:attributes="href res/cfgurl" />
+			</td>
+		</tr>
+	</table>
+</div>
+
+
+<div metal:define-macro="resourceprocess-form">
+	<tal:block
+		tal:define="
+			global cluname request/clustername;
+			global edited request/edit | nothing;
+			global ragent python: here.getRicciAgentForCluster(request)" />
+
+	<h2>Resource <span tal:replace="python: request['edit'] and 'Edited' or 'Added'" /></h2>
+
+	<tal:block
+		tal:define="global msg python: here.addResource(request, ragent)" />
+	<div tal:condition="msg" tal:content="msg" />
+</div>
+
+<div metal:define-macro="resourceconfig-form">
+	<script type="text/javascript"
+		src="luci/cluster/resource_form_handlers.js">
+	</script>
+
+	<tal:block tal:define="
+		global msg python: here.appendModel(request, modelb);
+		global restoedit request/resourcename | nothing" />
+
+	<tal:block tal:condition="restoedit">
+		tal:define="
+			global res python: here.getResourceInfo(modelb, request);
+			global type res/tag_name">
+
+		<h2>Configure <span tal:replace="res/name"/></h2>
+
+		<span tal:omit-tag="" tal:condition="python: type == 'ip'">
+			<div metal:use-macro="here/resource-form-macros/macros/ip_macro"/>
+		</span>
+
+		<span tal:omit-tag="" tal:condition="python: type == 'fs'">
+			<div metal:use-macro="here/resource-form-macros/macros/fs_macro"/>
+		</span>
+
+		<span tal:omit-tag="" tal:condition="python: type == 'gfs'">
+			<div metal:use-macro="here/resource-form-macros/macros/gfs_macro"/>
+		</span>
+
+		<span tal:omit-tag="" tal:condition="python: type == 'nfsm'">
+			<div metal:use-macro="here/resource-form-macros/macros/nfsm_macro"/>
+		</span>
+
+		<span tal:omit-tag="" tal:condition="python: type == 'nfsx'">
+			<div metal:use-macro="here/resource-form-macros/macros/nfsx_macro"/>
+		</span>
+
+		<span tal:omit-tag="" tal:condition="python: type == 'nfsc'">
+			<div metal:use-macro="here/resource-form-macros/macros/nfsc_macro"/>
+		</span>
+
+		<span tal:omit-tag="" tal:condition="python: type == 'smb'">
+			<div metal:use-macro="here/resource-form-macros/macros/smb_macro" />
+		</span>
+
+		<span tal:omit-tag="" tal:condition="python: type == 'script'">
+			<div metal:use-macro="here/resource-form-macros/macros/scr_macro" />
+		</span>
+	</tal:block>
+</div>
+
+<div id="IP" metal:define-macro="ip_macro">
+
+<tal:block tal:condition="python: ptype == '33' or ptype == '24'"
+	tal:define="
+		global edit python: True;
+		global resName res/name;
+		global address python: resName.split('.');
+		global ip1 python: address[0];
+		global ip2 python: address[1];
+		global ip3 python: address[2];
+		global ip4 python: address[3];
+		global monitor_link res/attrs/monitor_link | nothing;
+		global cluname request/clustername;
+		tmp_URL context/cluster/index_html/absolute_url;
+		global processURL python: tmp_URL+'?pagetype=35&clustername='+cluname+'&edit=1'" />
+
+<tal:block
+	tal:condition="python: ptype != '33'"
+	tal:define="
+		global edit python: False;
+		global monitor_link string:1;
+		global cluname request/clustername;
+		tmp_URL context/cluster/index_html/absolute_url;
+		global processURL python: tmp_URL+'?pagetype=35&clustername='+cluname" />
+
+	<strong>IP Address Resource Configuration</strong>
+
+	<form name="ip_form" id="ip_form" method="get"
+		tal:attributes="action processURL">
+
+	<input name="pagetype" type="hidden" value="35"/>
+
+	<input name="clustername" type="hidden" tal:attributes="value cluname"/>
+
+	<input name="oldname" type="hidden"
+		tal:attributes="value res/name"
+		tal:condition="python: edit == True" />
+
+	<input name="edit" type="hidden" value="1"
+		tal:condition="python: edit == True" />
+
+	<input name="type" type="hidden" value="ip"/>
+
+	<table id="ipResourceTable" class="systemsTable">
+		<tr class="systemsTable">
+			<td class="systemsTable">
+				<strong>IP</strong>
+			</td>
+			<td class="systemsTable">
+				<input size="3" name="ip1" type="text" maxlength="3" tal:attributes="value ip1 | nothing"/>.
+				<input size="3" name="ip2" type="text" maxlength="3" tal:attributes="value ip2 | nothing"/>.
+				<input size="3" name="ip3" type="text" maxlength="3" tal:attributes="value ip3 | nothing"/>.
+				<input size="3" name="ip4" type="text" maxlength="3" tal:attributes="value ip4 | nothing"/>
+			</td>
+
+			<td class="systemsTable">
+				<strong>Monitor Link</strong>
+			</td>
+			<td class="systemsTable">
+				<input type="checkbox" name="monitorLink"
+					tal:attributes="
+						checked python: monitor_link == '1' and 'checked'" />
+			</td>
+		</tr>
+	</table>
+
+	<input class="hbSubmit" name="submit" type="button" value="Submit"
+		onClick="validate(this.form);" />
+	</form>
+</div>
+
+<div id="FS" metal:define-macro="fs_macro">
+<tal:block tal:condition="python: ptype == '33' or ptype == '24'"
+	tal:define="
+		global edit python: True;
+		global resName res/name;
+		global mountPoint res/attrs/mountpoint;
+		global device res/attrs/device;
+		global fstype res/attrs/fstype;
+		global opt res/attrs/options;
+		global fsid res/attrs/fsid;
+		global force_unmount res/attrs/force_unmount;
+		global reboot_fail res/attrs/self_fence;
+		global fscheck res/attrs/force_fsck;
+		global cluname request/clustername;
+		tmp_URL context/cluster/index_html/absolute_url;
+		global processURL python: tmp_URL+'?pagetype=35&clustername='+cluname+'&edit=1'" />
+
+<tal:block tal:condition="python: ptype != '33'"
+	tal:define="
+		global edit python: False;
+		global force_unmount string:0;
+		global reboot_fail string:0;
+		global fstype string:0;
+		global fscheck string:0;
+		global cluname request/clustername;
+		tmp_URL context/cluster/index_html/absolute_url;
+		global processURL python: tmp_URL+'?pagetype=35&clustername='+cluname" />
+
+	<strong>File System Resource Configuration</strong>
+
+	<form name="fs_form" method="get" tal:attributes="action processURL">
+
+	<input name="pagetype" type="hidden" value="35" />
+
+	<input name="clustername" type="hidden" tal:attributes="value cluname" />
+
+	<input name="oldname" type="hidden"
+		tal:condition="python: edit == True"
+		tal:attributes="value res/name" />
+
+	<input name="edit" type="hidden" value="1"
+		tal:condition="python: edit == True" />
+
+	<input name="type" type="hidden" value="fs" />
+
+	<table id="fileSystemTable" class="systemsTable">
+		<tr class="systemsTable">
+			<td class="systemsTable">
+				<strong>Resource Name</strong>
+			</td>
+			<td class="systemsTable">
+				<input type="text" size="20"
+					id="resourceName" name="resourceName"
+					tal:attributes="value resName | nothing"/>
+			</td>
+		</tr>
+
+		<tr class="systemsTable">
+			<td class="systemsTable">
+				<strong>File System Type</strong>
+			</td>
+			<td class="systemsTable">
+				<select id="fstype" name="fstype">
+					<option name="ext3" value="ext3"
+						tal:content="string: ext3"
+						tal:attributes="checked python: (edit == nothing or fstype == 'ext3') and 'checked'" />
+					<option name="ext2" value="ext2"
+						tal:content="string: ext2"
+						tal:attributes="checked python: (edit == True and fstype == 'ext2') and 'checked'" />
+				</select>
+			</td>
+		</tr>
+
+		<tr class="systemsTable">
+			<td class="systemsTable">
+				<strong>Mount Point</strong>
+			</td>
+			<td class="systemsTable">
+				<input type="text" size="20" id="mountpoint" name="mountpoint"
+					tal:attributes="value mountPoint | nothing"/>
+			</td>
+		</tr>
+
+		<tr class="systemsTable">
+			<td class="systemsTable">
+				<strong>Device</strong>
+			</td>
+			<td class="systemsTable">
+				<input type="text" size="20" id="device" name="device"
+					tal:attributes="value device | nothing"/>
+			</td>
+		</tr>
+
+		<tr class="systemsTable">
+			<td class="systemsTable">
+				<strong>Options</strong>
+			</td>
+			<td class="systemsTable">
+				<input type="text" size="20" id="options" name="options"
+					tal:attributes="value opt | nothing"/>
+			</td>
+		</tr>
+
+		<tr class="systemsTable">
+			<td class="systemsTable">
+				<strong>File System ID</strong>
+			</td>
+			<td class="systemsTable">
+				<input type="text" size="20" id="fsid" name="fsid"
+					tal:attributes="value fsid | nothing"/>
+			</td>
+		</tr>
+
+		<tr class="systemsTable">
+			<td class="systemsTable">
+				<strong>Force unmount</strong>
+			</td>
+			<td class="systemsTable">
+				<input type="checkbox" id="forceunmount" name="forceunmount"
+					tal:attributes="checked python: force_unmount == '1' and 'checked'" />
+			</td>
+		</tr>
+
+		<tr class="systemsTable">
+			<td class="systemsTable">
+				<strong>Reboot host node if unmount fails</strong>
+			</td>
+			<td class="systemsTable">
+				<input type="checkbox" id="selffence" name="selffence"
+					tal:attributes="
+						checked python: reboot_fail == '1' and 'checked'" />
+			</td>
+		</tr>
+
+		<tr class="systemsTable">
+			<td class="systemsTable">
+				<strong>Check file system before mounting</strong>
+			</td>
+			<td class="systemsTable">
+				<input type="checkbox" id="checkfs" name="checkfs"
+					tal:attributes="
+						checked python: fscheck == '1' and 'checked'" />
+			</td>
+		</tr>
+	</table>
+
+	<input class="hbSubmit" type="button" value="Submit"
+		onClick="validate(this.form);" />
+
+	</form>
+</div>
+
+<div id="GFS" metal:define-macro="gfs_macro">
+<tal:block tal:condition="python: ptype == '33' or ptype =='24'"
+	tal:define="
+		global edit python: True;
+		global resName res/name;
+		global mountPoint res/attrs/mountpoint;
+		global device res/attrs/device;
+		global fstype res/attrs/fstype;
+		global opt res/attrs/options;
+		global fsid res/attrs/fsid;
+		global force_unmount res/attrs/force_unmount;
+		global cluname request/clustername;
+		tmp_URL context/cluster/index_html/absolute_url;
+		global processURL python: tmp_URL+'?pagetype=35&clustername='+cluname+'&edit=1'" />
+
+<tal:block tal:condition="python: ptype != '33'"
+	tal:define="
+		global edit python: False;
+		global force_unmount string:0;
+		global cluname request/clustername;
+		tmp_URL context/cluster/index_html/absolute_url;
+		global processURL python: tmp_URL+'?pagetype=35&clustername='+cluname" />
+
+	<strong>GFS Resource Configuration</strong>
+	<form name="gfs_form" method="get" tal:attributes="action processURL">
+
+	<input name="pagetype" type="hidden" value="35" />
+
+	<input name="clustername" type="hidden"
+		tal:attributes="value cluname" />
+
+	<input name="oldname" type="hidden"
+		tal:condition="python: edit == True"
+		tal:attributes="value res/name" />
+
+	<input name="edit" type="hidden" value="1"
+		tal:condition="python: edit == True" />
+
+	<input name="type" type="hidden" value="gfs" />
+
+	<table id="gfsTable" class="systemsTable">
+		<tr class="systemsTable">
+			<td class="systemsTable">
+				<strong>Resource Name</strong>
+			</td>
+			<td class="systemsTable">
+				<input type="text" size="20"
+					id="resourceName" name="resourceName"
+					tal:attributes="value resName | nothing" />
+			</td>
+		</tr>
+
+		<tr class="systemsTable">
+			<td class="systemsTable">
+				<strong>Mount Point</strong>
+			</td>
+
+			<td class="systemsTable">
+				<input type="text" size="20" id="mountPoint" name="mountpoint"
+					tal:attributes="value mountpoint | nothing" />
+			</td>
+		</tr>
+
+		<tr class="systemsTable">
+			<td class="systemsTable">
+				<strong>Device</strong>
+			</td>
+			<td class="systemsTable">
+				<input type="text" size="20" id="device" name="device"
+					tal:attributes="value device | nothing"/>
+			</td>
+		</tr>
+
+		<tr class="systemsTable">
+			<td class="systemsTable">
+				<strong>Options</strong>
+			</td>
+			<td class="systemsTable">
+				<input type="text" size="20" id="options" name="options"
+					tal:attributes="value opt | nothing" />
+			</td>
+		</tr>
+
+		<tr class="systemsTable">
+			<td class="systemsTable">
+				<strong>File System ID</strong>
+			</td>
+			<td class="systemsTable">
+				<input type="text" size="20" id="fsid" name="fsid"
+					tal:attributes="value fsid | nothing" />
+			</td>
+		</tr>
+
+		<tr class="systemsTable">
+			<td class="systemsTable">
+				<strong>Force unmount</strong>
+			</td>
+			<td class="systemsTable">
+				<input type="checkbox" id="forceunmount" name="forceunmount"
+					tal:attributes="
+						checked python: force_unmount == '1' and 'checked'" />
+			</td>
+		</tr>
+	</table>
+
+	<input type="button" value="Submit" class="hbSubmit"
+		onclick="validate(gfs_form);" />
+
+	</form>
+</div>
+
+<div id="NFSM" metal:define-macro="nfsm_macro">
+<tal:block tal:condition="python: ptype == '33' or ptype =='24'"
+	tal:define="
+		global edit python: True;
+		global resName res/name;
+		global mountpoint res/attrs/mountpoint;
+		global opt res/attrs/options;
+		global expath res/attrs/export;
+		global nfstype res/attrs/fstype;
+		global hostname res/attrs/host;
+		global force_unmount res/attrs/force_unmount;
+		global cluname request/clustername;
+		tmp_URL context/cluster/index_html/absolute_url;
+		global processURL python: tmp_URL+'?pagetype=35&clustername='+cluname+'&edit=1'" />
+
+<tal:block tal:condition="python: ptype != '33'"
+	tal:define="
+		global edit python: False;
+		global force_unmount string:0;
+		global cluname request/clustername;
+		tmp_URL context/cluster/index_html/absolute_url;
+		global processURL python: tmp_URL+'?pagetype=35&clustername='+cluname" />
+	<form name="nfsm_form" method="get" tal:attributes="action processURL">
+
+	<strong>NFS Mount Resource Configuration</strong>
+
+	<input name="pagetype" type="hidden" value="35" />
+
+	<input name="clustername" type="hidden" tal:attributes="value cluname"/>
+
+	<input name="oldname" type="hidden"
+		tal:condition="python: edit == True"
+		tal:attributes="value res/name" />
+
+	<input name="edit" type="hidden" value="1"
+		tal:condition="python: edit == True" />
+
+	<input name="type" type="hidden" value="nfsm" />
+
+	<table id="nfsMountTable" class="systemsTable">
+		<tr class="systemsTable">
+			<td class="systemsTable">
+				<strong>Resource Name</strong>
+			</td>
+			<td class="systemsTable">
+				<input type="text" size="20"
+					id="resourceName" name="resourceName"
+					tal:attributes="value resName | nothing" />
+			</td>
+		</tr>
+
+		<tr class="systemsTable">
+			<td class="systemsTable">
+				<strong>Mount Point</strong>
+			</td>
+			<td class="systemsTable">
+				<input type="text" size="20" id="mountpoint" name="mountpoint"
+					tal:attributes="value mountpoint | nothing" />
+			</td>
+		</tr>
+
+		<tr class="systemsTable">
+			<td class="systemsTable">
+				<strong>Host</strong>
+			</td>
+			<td class="systemsTable">
+				<input type="text" size="20" id="host" name="host"
+					tal:attributes="value hostname | nothing" />
+			</td>
+		</tr>
+
+		<tr class="systemsTable">
+			<td class="systemsTable">
+				<strong>Export Path</strong>
+			</td>
+			<td class="systemsTable">
+				<input type="text" size="20" id="exportpath" name="exportpath"
+					tal:attributes="value expath | nothing"/>
+			</td>
+		</tr>
+
+		<tr class="systemsTable">
+			<td class="systemsTable">
+				<strong>NFS Type</strong>
+			</td>
+			<td class="systemsTable">
+				<input type="radio" name="nfstype" value="nfs"
+					tal:attributes="checked python: (edit == nothing or nfstype == 'nfs') and 'checked'" />
+				NFS (version 3)
+				<br/>
+				<input type="radio" name="nfstype" value="nfs4"
+					tal:attributes="checked python: (edit == True and nfstype == 'nfs4') and 'checked'">
+				NFS4
+			</td>
+		</tr>
+
+		<tr class="systemsTable">
+			<td class="systemsTable">
+				<strong>Options</strong>
+			</td>
+			<td class="systemsTable">
+				<input type="text" size="20" id="options" name="options"
+					tal:attributes="value opt | nothing"/>
+			</td>
+		</tr>
+
+		<tr class="systemsTable">
+			<td class="systemsTable">
+				<strong>Force unmount</strong>
+			</td>
+			<td class="systemsTable">
+				<input type="checkbox" id="forceunmount" name="forceunmount"
+					tal:attributes="
+						checked python: force_unmount == '1' and 'checked'" />
+			</td>
+		</tr>
+	</table>
+
+	<input type="button" value="Submit" class="hbSubmit"
+		onclick="validate(this.form);"/>
+
+	</form>
+</div>
+
+<div id="NFSC" metal:define-macro="nfsc_macro">
+<tal:block tal:condition="python: ptype == '33' or ptype == '24'"
+	tal:define="
+		global edit python: True;
+		global resName res/name;
+		global target res/attrs/target;
+		global opt res/attrs/options;
+		global expath res/attrs/readOnly | nothing;
+		global cluname request/clustername;
+		tmp_URL context/cluster/index_html/absolute_url;
+		global processURL python: tmp_URL+'?pagetype=35&clustername='+cluname+'&edit=1'" />
+
+<tal:block tal:condition="python: ptype != '33'"
+	tal:define="
+		global edit python: False;
+		global cluname request/clustername;
+		tmp_URL context/cluster/index_html/absolute_url;
+		global processURL python: tmp_URL+'?pagetype=35&clustername='+cluname" />
+
+	<strong>NFS Client Resource Configuration</strong>
+
+	<form name="nfsc_form" method="post" tal:attributes="action processURL">
+
+	<input name="pagetype" type="hidden" value="35" />
+
+	<input name="clustername" type="hidden" tal:attributes="value cluname" />
+
+	<input name="oldname" type="hidden"
+		tal:condition="python: edit == True"
+		tal:attributes="value res/name" />
+
+	<input name="edit" type="hidden" value="1"
+		tal:condition="python: edit == True" />
+
+	<input name="type" type="hidden" value="nfsc"/>
+
+	<table id="nfsClientTable" class="systemsTable">
+		<tr class="systemsTable">
+			<td class="systemsTable">
+				<strong>Resource Name</strong>
+			</td>
+			<td class="systemsTable">
+				<input type="text" size="20"
+					id="resourceName" name="resourceName"
+					tal:attributes="value resName | nothing" />
+			</td>
+		</tr>
+
+		<tr class="systemsTable">
+			<td class="systemsTable">
+				<strong>Target</strong>
+			</td>
+			<td class="systemsTable">
+				<input type="text" size="20" id="target" name="target"
+					tal:attributes="value target | nothing"/>
+			</td>
+		</tr>
+
+		<tr class="systemsTable">
+			<td class="systemsTable">
+				<strong>Options</strong>
+			</td>
+			<td class="systemsTable">
+				<input type="text" size="20" id="options" name="options"
+					tal:attributes="value opt | nothing"/>
+			</td>
+		</tr>
+	</table>
+
+	<input type="button" value="Submit" class="hbSubmit"
+		onclick="validate(this.form);" />
+
+	</form>
+</div>
 
 <div id="NFSX" metal:define-macro="nfsx_macro">
-    <span tal:condition="python:ptype == '33' or ptype == '24'">
-      <span tal:define="
-        global edit python:True;
-        global resName res/name;
-        global cluname request/clustername;
-        tmp_URL context/cluster/index_html/absolute_url;
-        global processURL python:tmp_URL+'?pagetype=35&clustername='+cluname+'&edit=1'"/>
-    </span>
-    <span tal:condition="python:ptype != '33'">
-      <span tal:define="
-        global cluname request/clustername;
-        tmp_URL context/cluster/index_html/absolute_url;
-        global processURL python:tmp_URL+'?pagetype=35&clustername='+cluname" />
-    </span>
-    <strong>NFS Export Resource Configuration</strong>
-    <form name="nfsx_form" action="" method="post" tal:attributes="action processURL">
-      <input name="pagetype" type="hidden" value="35"/>
-      <input name="clustername" type="hidden" tal:attributes="value cluname"/>
-      <input name="oldname" type="hidden"
-             tal:attributes="value res/name"
-             tal:condition="python:edit == True" />
-      <input name="edit" type="hidden" value="1"
-             tal:condition="python:edit == True" />
-      <input name="type" type="hidden" value="nfsx"/>
-      <table id="nfsExportTable" border="0" cellspacing="0">
-        <tr>
-          <div>
-    	    <strong>Name:</strong>
-	    <input type="text" size="20" id="resourceName" name="resourceName" 
-                   tal:attributes="value resName|nothing"/>
-          </div>
-        </tr>
-      </table>
-    </form>
-    <input type="button" value="Submit" onclick="validate(nfsx_form);"/>
-  </div>
-
-  <div id="SCR" metal:define-macro="scr_macro">
-    <span tal:condition="python:ptype == '33' or ptype == '24'">
-      <span tal:define="
-        global edit string:true;
-        global resName res/name;
-        global filename res/attrs/file;
-        global cluname request/clustername;
-        tmp_URL context/cluster/index_html/absolute_url;
-        global processURL python:tmp_URL+'?pagetype=35&clustername='+cluname+'&edit=1'"/>
-    </span>
-    <span tal:condition="python:ptype != '33'">
-      <span tal:define="
-        global cluname request/clustername;
-        tmp_URL context/cluster/index_html/absolute_url;
-        global processURL python:tmp_URL+'?pagetype=35&clustername='+cluname"/>
-    </span>
-    <strong>Script Resource Configuration</strong>
-    <form name="scr_form" action="" method="post" tal:attributes="action processURL">
-      <input name="pagetype" type="hidden" value="35"/>
-      <input name="clustername" type="hidden" tal:attributes="value cluname"/>
-      <input name="oldname" type="hidden"
-             tal:attributes="value res/name"
-             tal:condition="python:edit == 'true'" />
-      <input name="edit" type="hidden" value="1"
-             tal:condition="python:edit == 'true'" />
-      <input name="type" type="hidden" value="scr"/>
-      <table id="scriptTable" border="0" cellspacing="0">
-        <tr>
-          <div>
-    	    <strong>Name:</strong>
-	    <input type="text" size="20" id="resourceName" name="resourceName"
-                   tal:attributes="value resName|nothing"/>
-          </div>
-        </tr>
-        <tr>
-          <div>
-	    <strong>File</strong> (with path):
-	    <input type="text" size="20" id="file" name="file"
-                   tal:attributes="value filename|nothing"/>
-          </div>
-        </tr>
-      </table>
-    </form>
-    <input type="button" value="Submit" onclick="validate(scr_form);"/>
-  </div>
-
-  <div id="SMB" metal:define-macro="smb_macro">
-    <span tal:condition="python:ptype == '33' or ptype == '24'">
-      <span tal:define="
-        global edit python:True;
-        global resName res/name;
-        global workgroup res/attrs/workgroup;
-        global cluname request/clustername;
-        tmp_URL context/cluster/index_html/absolute_url;
-        global processURL python:tmp_URL+'?pagetype=35&clustername='+cluname+'&edit=1'"/>
-    </span>
-    <span tal:condition="python:ptype != '33'">
-      <span tal:define="
-	global edit python:false;
-        global cluname request/clustername;
-        tmp_URL context/cluster/index_html/absolute_url;
-        global processURL python:tmp_URL+'?pagetype=35&clustername='+cluname"/>
-    </span>
-    <strong tal:condition="python:edit != 'true'">Samba Server Configuration</strong>
-    <form name="smb_form" action="" method="post" tal:attributes="action processURL">
-      <input name="pagetype" type="hidden" value="35"/>
-      <input name="clustername" type="hidden" tal:attributes="value cluname"/>
-      <input name="oldname" type="hidden"
-             tal:attributes="value res/name"
-             tal:condition="python:edit == True" />
-      <input name="edit" type="hidden" value="1"
-             tal:condition="python:edit == True" />
-      <input name="type" type="hidden" value="smb"/>
-      <table id="sambaTable" border="0" cellspacing="0">
-        <tr>
-          <div>
-	    <strong>Name:</strong>
-    	    <input type="text" size="20" id="resourceName" name="resourceName"
-                   tal:attributes="value resName|nothing"/>
-          </div>
-        </tr>
-        <tr>
-          <div>
-	    <strong>Workgroup:</strong>
-	    <input type="text" size="20" id="workgroup" name="workgroup"
-                   tal:attributes="value workgroup|nothing"/>
-          </div>
-        </tr>
-      </table>
-    </form>
-    <input type="button" value="Submit" onclick="validate(smb_form);"/>
-  </div> 
-  </body>
+<tal:block tal:condition="python: ptype == '33' or ptype == '24'"
+	tal:define="
+		global edit python: True;
+		global resName res/name;
+		global cluname request/clustername;
+		tmp_URL context/cluster/index_html/absolute_url;
+		global processURL python: tmp_URL+'?pagetype=35&clustername='+cluname+'&edit=1'" />
+
+<tal:block tal:condition="python: ptype != '33'"
+	tal:define="
+		global cluname request/clustername;
+		tmp_URL context/cluster/index_html/absolute_url;
+		global processURL python: tmp_URL+'?pagetype=35&clustername='+cluname" />
+
+	<strong>NFS Export Resource Configuration</strong>
+	<form name="nfsx_form" method="post" tal:attributes="action processURL">
+
+	<input name="pagetype" type="hidden" value="35" />
+
+	<input name="clustername" type="hidden" tal:attributes="value cluname" />
+
+	<input name="oldname" type="hidden"
+		tal:condition="python: edit == True"
+		tal:attributes="value res/name" />
+
+	<input name="edit" type="hidden" value="1"
+		tal:condition="python: edit == True" />
+
+	<input name="type" type="hidden" value="nfsx" />
+
+	<table id="nfsExportTable" class="systemsTable">
+		<tr class="systemsTable">
+			<td class="systemsTable">
+				<strong>Name</strong>
+			</td>
+			<td class="systemsTable">
+				<input type="text" size="20"
+					id="resourceName" name="resourceName"
+					tal:attributes="value resName | nothing" />
+			</td>
+		</tr>
+	</table>
+
+	<input type="button" value="Submit" class="hbSubmit"
+		onClick="validate(this.form);" />
+
+	</form>
+</div>
+
+<div id="SCR" metal:define-macro="scr_macro">
+<tal:block tal:condition="python: ptype == '33' or ptype == '24'"
+	tal:define="
+		global edit string:true;
+		global resName res/name;
+		global filename res/attrs/file;
+		global cluname request/clustername;
+		tmp_URL context/cluster/index_html/absolute_url;
+		global processURL python: tmp_URL+'?pagetype=35&clustername='+cluname+'&edit=1'" />
+
+<tal:block tal:condition="python: ptype != '33'"
+	tal:define="
+		global cluname request/clustername;
+		tmp_URL context/cluster/index_html/absolute_url;
+		global processURL python: tmp_URL+'?pagetype=35&clustername='+cluname" />
+
+	<strong>Script Resource Configuration</strong>
+	<form name="scr_form" method="post" tal:attributes="action processURL">
+
+	<input name="pagetype" type="hidden" value="35" />
+
+	<input name="clustername" type="hidden" tal:attributes="value cluname" />
+
+	<input name="oldname" type="hidden"
+		tal:condition="python: edit == 'true'"
+		tal:attributes="value res/name" />
+
+	<input name="edit" type="hidden" value="1"
+		tal:condition="python: edit == 'true'" />
+
+	<input name="type" type="hidden" value="scr" />
+
+	<table id="scriptTable" class="systemsTable">
+		<tr class="systemsTable">
+			<td class="systemsTable">
+				<strong>Name</strong>
+			</td>
+			<td class="systemsTable">
+				<input type="text" size="20"
+					id="resourceName" name="resourceName"
+					tal:attributes="value resName | nothing" />
+			</td>
+		</tr>
+
+		<tr class="systemsTable">
+			<td class="systemsTable">
+				<strong>Full path to script file</strong>
+			</td>
+			<td class="systemsTable">
+				<input type="text" size="20" id="file" name="file"
+					tal:attributes="value filename | nothing" />
+			</td>
+		</tr>
+	</table>
+
+	<input type="button" value="Submit" class="hbSubmit"
+		onClick="validate(scr_form);" />
+
+	</form>
+</div>
+
+<div id="SMB" metal:define-macro="smb_macro">
+<tal:block tal:condition="python: ptype == '33' or ptype == '24'"
+	tal:define="
+		global edit python: True;
+		global resName res/name;
+		global workgroup res/attrs/workgroup;
+		global cluname request/clustername;
+		tmp_URL context/cluster/index_html/absolute_url;
+		global processURL python: tmp_URL+'?pagetype=35&clustername='+cluname+'&edit=1'" />
+
+<tal:block tal:condition="python: ptype != '33'"
+	tal:define="
+		global edit python: false;
+		global cluname request/clustername;
+		tmp_URL context/cluster/index_html/absolute_url;
+		global processURL python: tmp_URL+'?pagetype=35&clustername='+cluname" />
+
+	<strong tal:condition="python: edit != 'true'">Samba Server Configuration</strong>
+
+	<form name="smb_form" method="post" tal:attributes="action processURL">
+
+	<input name="pagetype" type="hidden" value="35" />
+
+	<input name="clustername" type="hidden" tal:attributes="value cluname" />
+
+	<input name="oldname" type="hidden"
+		tal:condition="python: edit == True"
+		tal:attributes="value res/name" />
+
+	<input name="edit" type="hidden" value="1"
+		tal:condition="python: edit == True" />
+
+	<input name="type" type="hidden" value="smb" />
+
+	<table id="sambaTable" class="systemsTable">
+		<tr class="systemsTable">
+			<td class="systemsTable">
+				<strong>Name</strong>
+			</td>
+			<td class="systemsTable">
+				<input type="text" size="20"
+					id="resourceName" name="resourceName"
+					tal:attributes="value resName | nothing" />
+			</td>
+		</tr>
+
+		<tr class="systemsTable">
+			<td class="systemsTable">
+				<strong>Workgroup</strong>
+			</td>
+			<td class="systemsTable">
+				<input type="text" size="20" id="workgroup" name="workgroup"
+					tal:attributes="value workgroup | nothing"/>
+			</td>
+		</tr>
+	</table>
+
+	<input type="button" value="Submit" class="hbSubmit"
+		onClick="validate(smb_form);" />
+
+	</form>
+</div>
+
+</body>
 </html>




More information about the Cluster-devel mailing list