All of lore.kernel.org
 help / color / mirror / Atom feed
From: rmccabe@sourceware.org <rmccabe@sourceware.org>
To: cluster-devel.redhat.com
Subject: [Cluster-devel] conga/luci/cluster form-macros resource-form-m ...
Date: 29 Aug 2006 23:23:00 -0000	[thread overview]
Message-ID: <20060829232300.15128.qmail@sourceware.org> (raw)

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>



             reply	other threads:[~2006-08-29 23:23 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2006-08-29 23:23 rmccabe [this message]
  -- strict thread matches above, loose matches on Subject: below --
2006-10-02 20:21 [Cluster-devel] conga/luci/cluster form-macros resource-form-m rmccabe
2006-09-22 21:59 rmccabe
2006-09-22 18:22 rmccabe
2006-09-06 22:13 rmccabe
2006-08-10 23:06 shuennek

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